X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=meta4%2Fparse.go;h=7659bc88a4841203076a7dfb33e8722638ea3fc7;hb=6720be1b80880c7b58a782ebef48956d050dbbfd;hp=b5f67baa7c5baabe2a1ea97d37d61911e4e69493;hpb=9bf140036f28476da2ed9a186854b00f7b3d2979;p=godlighty.git diff --git a/meta4/parse.go b/meta4/parse.go index b5f67ba..7659bc8 100644 --- a/meta4/parse.go +++ b/meta4/parse.go @@ -22,14 +22,21 @@ import ( "encoding/xml" ) +var KnownHashes = map[string]string{ + "blake3-256": "BLAKE3-256", + "sha-256": "SHA-256", + "sha-512": "SHA-512", + "shake128": "SHAKE128", + "shake256": "SHAKE256", + "skein-256": "Skein-256", + "skein-512": "Skein-512", + "streebog-256": "Streebog-256", + "streebog-512": "Streebog-512", +} + type ForHTTP struct { - SHA256 []byte - SHA512 []byte - Streebog256 []byte - Streebog512 []byte - SHAKE128 []byte - SHAKE256 []byte - URLs []string + Hashes map[string][]byte + URLs []string } func Parse(fn string, data []byte) (*ForHTTP, error) { @@ -42,26 +49,17 @@ func Parse(fn string, data []byte) (*ForHTTP, error) { if f.Name != fn { continue } - forHTTP := ForHTTP{} + forHTTP := ForHTTP{Hashes: make(map[string][]byte)} for _, h := range f.Hashes { + name := KnownHashes[h.Type] + if name == "" { + continue + } digest, err := hex.DecodeString(h.Hash) if err != nil { return nil, err } - switch h.Type { - case HashSHA256: - forHTTP.SHA256 = digest - case HashSHA512: - forHTTP.SHA512 = digest - case HashStreebog256: - forHTTP.Streebog256 = digest - case HashStreebog512: - forHTTP.Streebog512 = digest - case HashSHAKE128: - forHTTP.SHAKE128 = digest - case HashSHAKE256: - forHTTP.SHAKE256 = digest - } + forHTTP.Hashes[name] = digest } for _, u := range f.URLs { forHTTP.URLs = append(forHTTP.URLs, u.URL)