const MinCost …
const MaxCost …
const DefaultCost …
var ErrMismatchedHashAndPassword …
var ErrHashTooShort …
type HashVersionTooNewError …
func (hv HashVersionTooNewError) Error() string { … }
type InvalidHashPrefixError …
func (ih InvalidHashPrefixError) Error() string { … }
type InvalidCostError …
func (ic InvalidCostError) Error() string { … }
const majorVersion …
const minorVersion …
const maxSaltSize …
const maxCryptedHashSize …
const encodedSaltSize …
const encodedHashSize …
const minHashSize …
var magicCipherData …
type hashed …
var ErrPasswordTooLong …
func GenerateFromPassword(password []byte, cost int) ([]byte, error) { … }
func CompareHashAndPassword(hashedPassword, password []byte) error { … }
func Cost(hashedPassword []byte) (int, error) { … }
func newFromPassword(password []byte, cost int) (*hashed, error) { … }
func newFromHash(hashedSecret []byte) (*hashed, error) { … }
func bcrypt(password []byte, cost int, salt []byte) ([]byte, error) { … }
func expensiveBlowfishSetup(key []byte, cost uint32, salt []byte) (*blowfish.Cipher, error) { … }
func (p *hashed) Hash() []byte { … }
func (p *hashed) decodeVersion(sbytes []byte) (int, error) { … }
func (p *hashed) decodeCost(sbytes []byte) (int, error) { … }
func (p *hashed) String() string { … }
func checkCost(cost int) error { … }