/usr/share/gocode/src/pault.ag/go/debian/transput/hash.go is in golang-pault-go-debian-dev 0.5-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | package transput
import (
"fmt"
"hash"
"crypto/md5"
"crypto/sha1"
"crypto/sha256"
"crypto/sha512"
)
func GetHash(name string) (hash.Hash, error) {
switch name {
case "md5":
return md5.New(), nil
case "sha1":
return sha1.New(), nil
case "sha256":
return sha256.New(), nil
case "sha512":
return sha512.New(), nil
default:
return nil, fmt.Errorf("Unknown algorithm: %s", name)
}
}
func NewHasher(name string) (*Hasher, error) {
hash, err := GetHash(name)
if err != nil {
return nil, err
}
hw := Hasher{
name: name,
hash: hash,
size: 0,
}
return &hw, nil
}
type Hasher struct {
name string
hash hash.Hash
size int64
}
func (dh *Hasher) Name() string {
return dh.name
}
func (dh *Hasher) Write(p []byte) (int, error) {
n, err := dh.hash.Write(p)
dh.size += int64(n)
return n, err
}
func (dh *Hasher) Size() int64 {
return dh.size
}
func (dh *Hasher) Sum(b []byte) []byte {
return dh.hash.Sum(b)
}
|