77 "crypto/sha512"
88 "encoding/base64"
99 "encoding/hex"
10+ "errors"
1011)
1112
1213// common interface for user
@@ -51,11 +52,17 @@ func (u *md5User) auth(input string) bool {
5152 return u .token == inputToken
5253}
5354
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+ }
5663 token := [md5 .Size ]byte {}
5764 copy (token [:], tokenSlice )
58- return & md5User {token }
65+ return & md5User {token }, nil
5966}
6067
6168// sha1 hashed password
@@ -68,11 +75,17 @@ func (u *sha1User) auth(input string) bool {
6875 return u .token == inputToken
6976}
7077
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+ }
7386 token := [sha1 .Size ]byte {}
7487 copy (token [:], tokenSlice )
75- return & sha1User {token }
88+ return & sha1User {token }, nil
7689}
7790
7891// sha256 hashed password
@@ -85,11 +98,17 @@ func (u *sha256User) auth(input string) bool {
8598 return u .token == inputToken
8699}
87100
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+ }
90109 token := [sha256 .Size ]byte {}
91110 copy (token [:], tokenSlice )
92- return & sha256User {token }
111+ return & sha256User {token }, nil
93112}
94113
95114// sha512 hashed password
@@ -102,9 +121,15 @@ func (u *sha512User) auth(input string) bool {
102121 return u .token == inputToken
103122}
104123
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+ }
107132 token := [sha512 .Size ]byte {}
108133 copy (token [:], tokenSlice )
109- return & sha512User {token }
134+ return & sha512User {token }, nil
110135}
0 commit comments