From 60823f21a618760fa82ac72ac6c6c4e2974d4e4d Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Thu, 13 Apr 2023 22:09:44 +0300 Subject: [PATCH] Streebog hash in .meta4 support --- handler.go | 8 ++++++++ meta4/parse.go | 12 +++++++++--- meta4/scheme.go | 10 ++++++---- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/handler.go b/handler.go index 75c98d5..e17583c 100644 --- a/handler.go +++ b/handler.go @@ -278,6 +278,14 @@ IndexLookuped: w.Header().Add("Digest", "SHA-512="+ base64.StdEncoding.EncodeToString(forHTTP.SHA512)) } + if forHTTP.Streebog256 != nil { + w.Header().Add("Digest", "Streebog-256="+ + base64.StdEncoding.EncodeToString(forHTTP.Streebog256)) + } + if forHTTP.Streebog512 != nil { + w.Header().Add("Digest", "Streebog-512="+ + base64.StdEncoding.EncodeToString(forHTTP.Streebog512)) + } } SkipMeta4: diff --git a/meta4/parse.go b/meta4/parse.go index bc83945..c816434 100644 --- a/meta4/parse.go +++ b/meta4/parse.go @@ -23,9 +23,11 @@ import ( ) type ForHTTP struct { - SHA256 []byte - SHA512 []byte - URLs []string + SHA256 []byte + SHA512 []byte + Streebog256 []byte + Streebog512 []byte + URLs []string } func Parse(fn string, data []byte) (*ForHTTP, error) { @@ -49,6 +51,10 @@ func Parse(fn string, data []byte) (*ForHTTP, error) { forHTTP.SHA256 = digest case HashSHA512: forHTTP.SHA512 = digest + case HashStreebog256: + forHTTP.Streebog256 = digest + case HashStreebog512: + forHTTP.Streebog512 = digest } } for _, u := range f.URLs { diff --git a/meta4/scheme.go b/meta4/scheme.go index 6bf4033..681bf4a 100644 --- a/meta4/scheme.go +++ b/meta4/scheme.go @@ -23,10 +23,12 @@ import ( ) const ( - HashSHA256 = "sha-256" - HashSHA512 = "sha-512" - Ext = ".meta4" - MaxSize = 1 << 16 + HashSHA256 = "sha-256" + HashSHA512 = "sha-512" + HashStreebog256 = "streebog-256" + HashStreebog512 = "streebog-512" + Ext = ".meta4" + MaxSize = 1 << 16 ) type Metalink struct { -- 2.44.0