...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package util
16
17 import (
18 "crypto"
19 "fmt"
20 "strings"
21 )
22
23
24 func PrefixSHA(sha string) string {
25 var prefix string
26 var components = strings.Split(sha, ":")
27
28 if len(components) == 2 {
29 return sha
30 }
31
32 switch len(sha) {
33 case 40:
34 prefix = "sha1:"
35 case 64:
36 prefix = "sha256:"
37 case 96:
38 prefix = "sha384:"
39 case 128:
40 prefix = "sha512:"
41 }
42
43 return fmt.Sprintf("%v%v", prefix, sha)
44 }
45
46 func UnprefixSHA(sha string) (crypto.Hash, string) {
47 components := strings.Split(sha, ":")
48
49 if len(components) == 2 {
50 prefix := components[0]
51 sha = components[1]
52
53 switch prefix {
54 case "sha1":
55 return crypto.SHA1, sha
56 case "sha256":
57 return crypto.SHA256, sha
58 case "sha384":
59 return crypto.SHA384, sha
60 case "sha512":
61 return crypto.SHA512, sha
62 default:
63 return crypto.Hash(0), ""
64 }
65 }
66
67 switch len(sha) {
68 case 40:
69 return crypto.SHA1, sha
70 case 64:
71 return crypto.SHA256, sha
72 case 96:
73 return crypto.SHA384, sha
74 case 128:
75 return crypto.SHA512, sha
76 }
77
78 return crypto.Hash(0), ""
79 }
80
View as plain text