crypt

package
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 25, 2020 License: Apache-2.0, BSD-2-Clause Imports: 3 Imported by: 0

Documentation

Overview

Package crypt provides interface for password crypt functions and collects common constants.

Index

Constants

This section is empty.

Variables

View Source
var ErrKeyMismatch = errors.New("hashed value is not the hash of the given password")

ErrKeyMismatch set the the authentication error message

Functions

func RegisterCrypt

func RegisterCrypt(c Crypt, f func() Crypter, prefix string)

RegisterCrypt registers a function that returns a new instance of the given crypt function. This is intended to be called from the init function in packages that implement crypt functions.

Types

type Crypt

type Crypt uint

Crypt identifies a crypt function that is implemented in another package.

const (
	// APR1 is the prefix for a apr1 hashed password
	APR1 Crypt = 1 + iota // import github.com/wolviecb/basic-auth/crypt/apr1_crypt
	// MD5 is the prefix for a md5 hashed password
	MD5 // import github.com/wolviecb/basic-auth/crypt/md5crypt

)

func (Crypt) Available

func (c Crypt) Available() bool

Available reports whether the Crypt c is available.

func (Crypt) New

func (c Crypt) New() Crypter

New returns new Crypter making the Crypt c. New panics if the Crypt c is unavailable.

type Crypter

type Crypter interface {
	// Generate performs the hashing algorithm, returning a full hash suitable
	// for storage and later password verification.
	//
	// If the salt is empty, a randomly-generated salt will be generated with a
	// length of SaltLenMax and number RoundsDefault of rounds.
	//
	// Any error only can be got when the salt argument is not empty.
	Generate(key, salt []byte) (string, error)

	// Verify compares a hashed key with its possible key equivalent.
	// Returns nil on success, or an error on failure; if the hashed key is
	// different, the error is "ErrKeyMismatch".
	Verify(hashedKey string, key []byte) error

	// Cost returns the hashing cost (in rounds) used to create the given hashed
	// key.
	//
	// When, in the future, the hashing cost of a key needs to be increased in
	// order to adjust for greater computational power, this function allows one
	// to establish which keys need to be updated.
	//
	// The algorithms based in MD5-crypt use a fixed value of rounds.
	Cost(hashedKey string) (int, error)

	// SetSalt sets a different salt. It is used to easily create derivated
	// algorithms, i.e. "apr1_crypt" from "md5_crypt".
	SetSalt(salt common.Salt)
}

Crypter is the common interface implemented by all crypt functions.

func New

func New(c Crypt) Crypter

New returns a new crypter.

func NewFromHash

func NewFromHash(hashedKey string) Crypter

NewFromHash returns a new Crypter using the prefix in the given hashed key.

Directories

Path Synopsis
Package apr1crypt implements the standard Unix MD5-crypt algorithm created by Poul-Henning Kamp for FreeBSD, and modified by the Apache project.
Package apr1crypt implements the standard Unix MD5-crypt algorithm created by Poul-Henning Kamp for FreeBSD, and modified by the Apache project.
Package common contains routines used by multiple password hashing algorithms.
Package common contains routines used by multiple password hashing algorithms.
Package md5crypt implements the standard Unix MD5-crypt algorithm created by Poul-Henning Kamp for FreeBSD.
Package md5crypt implements the standard Unix MD5-crypt algorithm created by Poul-Henning Kamp for FreeBSD.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL