mirror of
https://github.com/ergochat/ergo.git
synced 2024-11-22 20:09:41 +01:00
28 lines
704 B
Go
28 lines
704 B
Go
|
// Copyright (c) 2018 Shivaram Lingamneni
|
||
|
|
||
|
package irc
|
||
|
|
||
|
import (
|
||
|
"encoding/base64"
|
||
|
"errors"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
errInvalidPasswordHash = errors.New("invalid password hash")
|
||
|
)
|
||
|
|
||
|
// Decode a hashed passphrase as it would appear in a config file,
|
||
|
// retaining compatibility with old versions of `oragono genpasswd`
|
||
|
// that used to apply a redundant layer of base64
|
||
|
func decodeLegacyPasswordHash(hash string) ([]byte, error) {
|
||
|
// a correctly formatted bcrypt hash is 60 bytes of printable ASCII
|
||
|
if len(hash) == 80 {
|
||
|
// double-base64, remove the outer layer:
|
||
|
return base64.StdEncoding.DecodeString(hash)
|
||
|
} else if len(hash) == 60 {
|
||
|
return []byte(hash), nil
|
||
|
} else {
|
||
|
return nil, errInvalidPasswordHash
|
||
|
}
|
||
|
}
|