diff options
| author | Jeff Carr <[email protected]> | 2025-10-13 01:03:25 -0500 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-10-13 03:29:12 -0500 |
| commit | c48a87214660ab91e97361e3d227c3bcd93da3f9 (patch) | |
| tree | 42547590b9d7f6fdf19c863b895ee339770c5d42 /makePackagesFile.go | |
| parent | d3278977a4b086dffe323a0870900a380f78a703 (diff) | |
make the checksums
Diffstat (limited to 'makePackagesFile.go')
| -rw-r--r-- | makePackagesFile.go | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/makePackagesFile.go b/makePackagesFile.go index c19081d..7c05fea 100644 --- a/makePackagesFile.go +++ b/makePackagesFile.go @@ -2,7 +2,13 @@ package main import ( "bufio" + "crypto/md5" + "crypto/sha1" + "crypto/sha256" "errors" + "fmt" + "io" + "os" "path/filepath" "strings" @@ -14,6 +20,7 @@ import ( ) func populateDebInfo(p *zoopb.Package) error { + // SIMPLE SANITY CHECKS if p.DebInfo != nil { // already added p.DebInfo return nil @@ -27,8 +34,31 @@ func populateDebInfo(p *zoopb.Package) error { if r.Exit != 0 { return errors.New("dpkg returned -1") } + filedata, err := os.Open(fullname) + if err != nil { + return err + } + defer filedata.Close() + // SIMPLE SANITY CHECKS END + + // SHA256 HASH p.DebInfo = new(zoopb.DebInfo) + hMD5 := md5.New() + hSHA1 := sha1.New() + hSHA256 := sha256.New() + + // TeeReader allows writing to multiple hashers at once + multiWriter := io.MultiWriter(hMD5, hSHA1, hSHA256) + if _, err := io.Copy(multiWriter, filedata); err != nil { + return err + } + p.DebInfo.SHA256 = fmt.Sprintf("%x", hSHA256.Sum(nil)) // should be the standard now + p.DebInfo.MD5SUM = fmt.Sprintf("%x", hMD5.Sum(nil)) // probably deprecate + // p.DebInfo.SHA1 = fmt.Sprintf("%x", hSHA1.Sum(nil)) // deprecated + // SHA256 HASH END + + // PARSE "dpkg -I moon-buggy.deb", then exit as we are done starting := true all := strings.Join(r.Stdout, "\n") scanner := bufio.NewScanner(strings.NewReader(all)) @@ -139,12 +169,13 @@ func populateDebInfo(p *zoopb.Package) error { } p.DebInfo.Description = description default: + // This forces me(it could be you!) to fix this parser varname2 := strings.TrimSuffix(varname, ":") log.Printf("UNKNOWN: varname:%s varval:%s varname2=%s\n", varname, varval, varname2) panic("fix mirrors populateDebInfo()") } } - // log.Info("Ran:", cmd, r, err) + // pb.DebInfo should be correctly populated. You can verify these with "mirrors --verify" return nil } |
