1234567891011121314151617181920 |
- package migrations
-
- import (
- "golang.org/x/crypto/bcrypt"
- )
-
- // See the v12-to-v13 schema change. The format of this hash is:
- // 30 bytes of global salt, 30 bytes of per-passphrase salt, then the bcrypt hash
- func CheckOragonoPassphraseV0(hash, passphrase []byte) error {
- globalSalt := hash[:30]
- passphraseSalt := hash[30:60]
- bcryptHash := hash[60:]
- assembledPasswordBytes := make([]byte, 0, 60+len(passphrase)+2)
- assembledPasswordBytes = append(assembledPasswordBytes, globalSalt...)
- assembledPasswordBytes = append(assembledPasswordBytes, '-')
- assembledPasswordBytes = append(assembledPasswordBytes, passphraseSalt...)
- assembledPasswordBytes = append(assembledPasswordBytes, '-')
- assembledPasswordBytes = append(assembledPasswordBytes, passphrase...)
- return bcrypt.CompareHashAndPassword(bcryptHash, assembledPasswordBytes)
- }
|