1 // meta4ra -- Metalink 4.0 utilities
2 // Copyright (C) 2021-2024 Sergey Matveev <stargrave@stargrave.org>
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, version 3 of the License.
8 // This program is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 // GNU General Public License for more details.
13 // You should have received a copy of the GNU General Public License
14 // along with this program. If not, see <http://www.gnu.org/licenses/>.
26 const BuiltinCmd = "builtin"
29 BuiltinHashes map[string]func() hash.Hash = map[string]func() hash.Hash{
30 "sha-256": sha256.New,
31 "sha-512": sha512.New,
33 HashesDefault = "sha-512:builtin,sha-256:builtin"
36 type BuiltinHasher struct {
41 func (h *BuiltinHasher) Write(p []byte) (int, error) {
45 func (h *BuiltinHasher) Read(p []byte) (int, error) {
49 if len(p) < 2*h.h.Size() {
50 panic("too small buffer for BuiltinHasher.h.Sum()")
52 hex.Encode(p, h.h.Sum(nil))
54 return hex.EncodedLen(h.h.Size()), nil
57 func (h *BuiltinHasher) Close() error {