aboutsummaryrefslogtreecommitdiff
path: root/chksum/chksum.go
diff options
context:
space:
mode:
Diffstat (limited to 'chksum/chksum.go')
-rw-r--r--chksum/chksum.go34
1 files changed, 16 insertions, 18 deletions
diff --git a/chksum/chksum.go b/chksum/chksum.go
index 589c804..84b72b9 100644
--- a/chksum/chksum.go
+++ b/chksum/chksum.go
@@ -4,10 +4,7 @@ package chksum
import (
"bufio"
"bytes"
- "crypto/md5"
- "crypto/sha1"
- "crypto/sha256"
- "crypto/sha512"
+ "crypto"
"encoding/hex"
"errors"
"hash"
@@ -16,6 +13,12 @@ import (
"os"
"path"
"regexp"
+
+ // crypto.RegisterHash
+ _ "crypto/md5"
+ _ "crypto/sha1"
+ _ "crypto/sha256"
+ _ "crypto/sha512"
)
var (
@@ -38,18 +41,13 @@ type Checksum struct {
type Checklist []Checksum
-type hashDef struct {
- newHash func() hash.Hash
- decode func(string) ([]byte, error)
-}
-
-var hashes = map[string]hashDef{
- "SHA512/256": {sha512.New512_256, hex.DecodeString},
- "SHA512": {sha512.New, hex.DecodeString},
- "SHA256": {sha256.New, hex.DecodeString},
- "SHA1": {sha1.New, hex.DecodeString},
- "MD5": {md5.New, hex.DecodeString},
- "SIZE": {NewSize, ParseSize},
+// known hashes
+var hashes = map[string]crypto.Hash{
+ "MD5": crypto.MD5,
+ "SHA1": crypto.SHA1,
+ "SHA256": crypto.SHA256,
+ "SHA512": crypto.SHA512,
+ "SHA512/256": crypto.SHA512_256,
}
func ParseFile(fname string) (Checklist, error) {
@@ -81,14 +79,14 @@ func parse(r io.Reader) (Checklist, error) {
log.Println(match)
return nil, ErrHashAlg
}
- bytes, err := hash.decode(match[3])
+ bytes, err := hex.DecodeString(match[3])
if err != nil {
return nil, err
}
cs := Checksum{
FileName: path.Clean(match[2]),
Bytes: bytes,
- Hash: hash.newHash(),
+ Hash: hash.New(),
}
checklist = append(checklist, cs)
}