7
7
"crypto/sha512"
8
8
"encoding/base64"
9
9
"encoding/hex"
10
+ "errors"
10
11
)
11
12
12
13
// common interface for user
@@ -51,11 +52,17 @@ func (u *md5User) auth(input string) bool {
51
52
return u .token == inputToken
52
53
}
53
54
54
- func newMd5User (encoded string ) * md5User {
55
- tokenSlice , _ := hex .DecodeString (encoded )
55
+ func newMd5User (encPass string ) (* md5User , error ) {
56
+ tokenSlice , err := hex .DecodeString (encPass )
57
+ if err != nil {
58
+ return nil , err
59
+ }
60
+ if len (tokenSlice ) != md5 .Size {
61
+ return nil , errors .New ("unrecognized hash" )
62
+ }
56
63
token := [md5 .Size ]byte {}
57
64
copy (token [:], tokenSlice )
58
- return & md5User {token }
65
+ return & md5User {token }, nil
59
66
}
60
67
61
68
// sha1 hashed password
@@ -68,11 +75,17 @@ func (u *sha1User) auth(input string) bool {
68
75
return u .token == inputToken
69
76
}
70
77
71
- func newSha1User (encPass string ) * sha1User {
72
- tokenSlice , _ := hex .DecodeString (encPass )
78
+ func newSha1User (encPass string ) (* sha1User , error ) {
79
+ tokenSlice , err := hex .DecodeString (encPass )
80
+ if err != nil {
81
+ return nil , err
82
+ }
83
+ if len (tokenSlice ) != sha1 .Size {
84
+ return nil , errors .New ("unrecognized hash" )
85
+ }
73
86
token := [sha1 .Size ]byte {}
74
87
copy (token [:], tokenSlice )
75
- return & sha1User {token }
88
+ return & sha1User {token }, nil
76
89
}
77
90
78
91
// sha256 hashed password
@@ -85,11 +98,17 @@ func (u *sha256User) auth(input string) bool {
85
98
return u .token == inputToken
86
99
}
87
100
88
- func newSha256User (encPass string ) * sha256User {
89
- tokenSlice , _ := hex .DecodeString (encPass )
101
+ func newSha256User (encPass string ) (* sha256User , error ) {
102
+ tokenSlice , err := hex .DecodeString (encPass )
103
+ if err != nil {
104
+ return nil , err
105
+ }
106
+ if len (tokenSlice ) != sha256 .Size {
107
+ return nil , errors .New ("unrecognized hash" )
108
+ }
90
109
token := [sha256 .Size ]byte {}
91
110
copy (token [:], tokenSlice )
92
- return & sha256User {token }
111
+ return & sha256User {token }, nil
93
112
}
94
113
95
114
// sha512 hashed password
@@ -102,9 +121,15 @@ func (u *sha512User) auth(input string) bool {
102
121
return u .token == inputToken
103
122
}
104
123
105
- func newSha512User (encPass string ) * sha512User {
106
- tokenSlice , _ := hex .DecodeString (encPass )
124
+ func newSha512User (encPass string ) (* sha512User , error ) {
125
+ tokenSlice , err := hex .DecodeString (encPass )
126
+ if err != nil {
127
+ return nil , err
128
+ }
129
+ if len (tokenSlice ) != sha512 .Size {
130
+ return nil , errors .New ("unrecognized hash" )
131
+ }
107
132
token := [sha512 .Size ]byte {}
108
133
copy (token [:], tokenSlice )
109
- return & sha512User {token }
134
+ return & sha512User {token }, nil
110
135
}
0 commit comments