26 lines
804 B
Go
26 lines
804 B
Go
package bcrypt
|
|
|
|
/*
|
|
BcryptPbkdf combines bcrypt hashing algorithm with PBKDF2 key derivation.
|
|
|
|
(bcrypt) https://www.usenix.org/legacy/events/usenix99/provos/provos_html/node1.html
|
|
(PBKDF2) https://datatracker.ietf.org/doc/html/rfc2898
|
|
http://www.tedunangst.com/flak/post/bcrypt-pbkdf
|
|
*/
|
|
type KDF struct {
|
|
// salt is used to salt the hash for each round in rounds.
|
|
salt []byte
|
|
// rounds controls how many iterations of salting/hashing is done.
|
|
rounds uint32
|
|
// keyLen is how long the derived key should be in bytes.
|
|
keyLen uint32
|
|
// secret is the "passphrase" used to seed the key creation.
|
|
secret []byte
|
|
// key is used to store the derived key.
|
|
key []byte
|
|
// hasSalt is true if a salt has been set.
|
|
hasSalt bool
|
|
// hasRounds is true if a number of rounds have been set.
|
|
hasRounds bool
|
|
}
|