GeneratePasswordHash generates a secure hash of the password using bcrypt, returns hash and salt
(password string)
| 152 | |
| 153 | // GeneratePasswordHash generates a secure hash of the password using bcrypt, returns hash and salt |
| 154 | func GeneratePasswordHash(password string) (*PasswordData, error) { |
| 155 | // Generate a random salt |
| 156 | salt := make([]byte, 16) |
| 157 | if _, err := rand.Read(salt); err != nil { |
| 158 | return nil, err |
| 159 | } |
| 160 | |
| 161 | // Generate hash using bcrypt |
| 162 | hash, err := bcrypt.GenerateFromPassword([]byte(password+base64.StdEncoding.EncodeToString(salt)), bcrypt.DefaultCost) |
| 163 | if err != nil { |
| 164 | return nil, err |
| 165 | } |
| 166 | |
| 167 | return &PasswordData{ |
| 168 | Hash: base64.StdEncoding.EncodeToString(hash), |
| 169 | Salt: base64.StdEncoding.EncodeToString(salt), |
| 170 | }, nil |
| 171 | } |
| 172 | |
| 173 | // DeriveKeyFromPassword generates an encryption key from a password using Argon2 and a provided salt |
| 174 | func DeriveKeyFromPassword(password string, salt string) string { |
nothing calls this directly
no outgoing calls
no test coverage detected