Documentation
¶
Overview ¶
Package auth is a authentication helper that supports multiple types of applications.
Index ¶
- Constants
- Variables
- func CheckPbkdf2HS1(key []byte, derivedKey []byte, salt []byte, rounds int) error
- func CheckPbkdf2HS256(key []byte, derivedKey []byte, salt []byte, rounds int) error
- func CheckPbkdf2HS512(key []byte, derivedKey []byte, salt []byte, rounds int) error
- func Decode(f *EncodeIt, value string) ([]byte, error)
- func Digest(d DigestIt, data []byte, opts ...DigestOptions) ([]byte, error)
- func Encode(f *EncodeIt, data []byte) string
- func GetRandom(size int) ([]byte, error)
- func Pbkdf2HS1(key []byte, rounds int) (derivedKey []byte, salt []byte, err error)
- func Pbkdf2HS256(key []byte, rounds int) (derivedKey []byte, salt []byte, err error)
- func Pbkdf2HS512(key []byte, rounds int) (derivedKey []byte, salt []byte, err error)
- func RegisterDigestFunction(name string, f DigestIt)
- func RegisterEncoder(f *EncodeIt)
- func RegisterJwtMethod(name string, f func() JwtMethod)
- func UUIDv4() (string, error)
- type Auth
- type BcryptFn
- type DigestIt
- type DigestOptions
- type EncodeIt
- type HashFn
- type JwtAlgorithm
- type JwtAlgorithmOptions
- type JwtMethod
Constants ¶
const ( // BcryptDefaultCost is the Bcrypt Default Cost where the performace is optimal BcryptDefaultCost int = bcrypt.DefaultCost // BcryptMaxCost is the Bcrypt Maximum Cost with Longest Time BcryptMaxCost int = bcrypt.MaxCost // BcryptMinCost is the Bcrypt Minimum Cost with Shortest time BcryptMinCost int = bcrypt.MinCost )
const ( // Pbkdf2DefaultRounds Default number of rounds to be used for PBKDF2 Pbkdf2DefaultRounds int = 4096 // Pbkdf2MaxRounds Maximum number of rounds to be used for PBKDF2 Pbkdf2MaxRounds int = 8192 // Pbkdf2MinRounds Minimum number of rounds to be used for PBKDF2 Pbkdf2MinRounds int = 1024 )
const JWTDefaultDuration = 1 * time.Minute
JWTDefaultDuration defines the default duration for a Token
const JWTDefaultIDSize int = 32
JWTDefaultIDSize defines the default size for the JWT ID
const MethodPasswordHashBcrypt = "Password Hash using bcrypt"
MethodPasswordHashBcrypt defines password hash generation using bcrypt
const MethodPasswordHashPbkdf2HS256 = "Password Hash using pbkdf2 and HMAC-SHA256"
MethodPasswordHashPbkdf2HS256 defines password hash generation using pbkdf2 with HMAC-SHA256
const Pbkdf2RoundsSize int = 8
Pbkdf2RoundsSize is the Size of the Encoded number of rounds in a byte array
const Pbkdf2SaltSize int = 8
Pbkdf2SaltSize is the minimum recommended size of the Salt used for PBKDF2
Variables ¶
var ( Md5 *HashFn Sha1 *HashFn Sha224 *HashFn Sha256 *HashFn Sha384 *HashFn Sha512 *HashFn Bcrypt *BcryptFn )
List of Hash Functions
var ErrNotImplemented = fmt.Errorf("error functionality not implemented yet")
ErrNotImplemented occurs when an Un-implemented feature is called on
var ErrNotInitialized = fmt.Errorf("error this construct is not initialized")
ErrNotInitialized occurs when an Authentication process or function tries to access an un-initialized data parameter or construct.
var ErrParameter = fmt.Errorf("error in supplied parameters")
ErrParameter occurs when there are issues with the supplied parameter in any function.
Functions ¶
func CheckPbkdf2HS1 ¶ added in v0.0.5
CheckPbkdf2HS1 check the PBKDF2 HMAC-SHA1 Key with an derived key
func CheckPbkdf2HS256 ¶ added in v0.0.5
CheckPbkdf2HS256 check the PBKDF2 HMAC-SHA256 Key with an derived key
func CheckPbkdf2HS512 ¶ added in v0.0.5
CheckPbkdf2HS512 check the PBKDF2 HMAC-SHA512 Key with an derived key
func Decode ¶ added in v0.0.6
Decode is the Generic DecodeFromString function for all encoded values supported
func Digest ¶ added in v0.0.6
func Digest(d DigestIt, data []byte, opts ...DigestOptions) ([]byte, error)
Digest is the generic function for obtaining various type of HASH function operations on the data
func GetRandom ¶ added in v0.0.5
GetRandom returns a cryptographically safe randome numbers byte array with the size specified
func Pbkdf2HS256 ¶ added in v0.0.5
Pbkdf2HS256 perform PBKDF2 Key Derivation using HMAC-SHA256
func Pbkdf2HS512 ¶ added in v0.0.5
Pbkdf2HS512 perform PBKDF2 Key Derivation using HMAC-SHA512
func RegisterDigestFunction ¶ added in v0.0.6
RegisterDigestFunction adds the specific Hash generation functions in the global list. It is typically run during init() stage.
func RegisterEncoder ¶ added in v0.0.6
func RegisterEncoder(f *EncodeIt)
RegisterEncoder updates the list of Encoders available. This is typically called during init() stage.
func RegisterJwtMethod ¶ added in v0.0.6
RegisterJwtMethod registers a given Method name and a factory function for registering into the list JWT processing methods. This is only called during init.
Types ¶
type Auth ¶
type Auth interface {
// Create function generates the Authentication Entity by processing
// incoming data and the specific 'bias'.
Create(data []byte, bias interface{}) ([]byte, error)
// Verify function checks the Authentication Entity by processing
// it with the optional incoming 'bias'. It also recovers the original
// 'data' and 'bias' used to create the Authentication Entity.
Verify(value []byte, bias interface{}) ([]byte, interface{}, error)
// Set function configures the Authentication Entity creation and
// verification process. It also accepts the static "Key" that needs
// to be employed while processing the Authentication Entity.
Set(method string, key interface{}) error
}
Auth is the generic interface that would be implemented by the various authentication algorithms and classifications.
The term "Authentication Entity" refers to a token, pass, or a Unique piece of information that provides Identity, and Authorization status of the bearer.
func NewPasswordHash ¶ added in v0.0.2
NewPasswordHash Configures the respective password Hashing algorithm and returns the instance which implements the Auth Interface
type BcryptFn ¶ added in v0.0.6
type BcryptFn struct {
FnName string
}
BcryptFn implements the DigestIt interface but needs a special option to work
type DigestIt ¶ added in v0.0.6
type DigestIt interface {
// Name Returns the Name in String for the given Hash Function
Name() string
// Proc function takes in the byte array of arbitrary Size and
// process it into a digest of fix size
Proc([]byte) ([]byte, error)
}
DigestIt interface defines the way by which Hash function coverts byte array of arbitrary size to a byte array of a fixed size called the "hash value", "hash", or "message digest"
func GetDigestFunction ¶ added in v0.0.6
GetDigestFunction fetches the respective Hash generation function using its pre registed name.
type DigestOptions ¶ added in v0.0.6
DigestOptions provides a functional Option for attribute modification functions
func WithBcryptCost ¶ added in v0.0.6
func WithBcryptCost(cost int) DigestOptions
WithBcryptCost helps to implement Alternative Bcrypt operation
func WithBcryptDigest ¶ added in v0.0.6
func WithBcryptDigest(digest []byte) DigestOptions
WithBcryptDigest helps to implement Verification as part of Digest
func WithHMACKey ¶ added in v0.0.6
func WithHMACKey(key []byte) DigestOptions
WithHMACKey helps to implement HMAC operation
type EncodeIt ¶ added in v0.0.6
type EncodeIt struct {
Name string
// To(EncodeToString) converts the Supplied byte array to the specific
// encode Format string
To func(src []byte) string
// From(DecodeString) converts the Supplied string back to its byte array form
From func(s string) ([]byte, error)
}
EncodeIt is the String format encode function for byte Array encoders
func GetEncoder ¶ added in v0.0.6
GetEncoder fetches the specific encoder from the List of Encoders
type HashFn ¶ added in v0.0.6
HashFn function implements the DigestIt interface
func (*HashFn) HashFunc ¶ added in v0.0.6
HashFunc method returns the internal Hash Function unit of Crypto
type JwtAlgorithm ¶ added in v0.0.6
type JwtAlgorithm interface {
// CreateToken helps to Create a token using supplied data in the from of map of string
// and supplied options.
CreateToken(string, ...func(JwtAlgorithm) JwtAlgorithm) (string, error)
VerifyToken(string, ...func(JwtAlgorithm) JwtAlgorithm) (string, error)
}
JwtAlgorithm defines the way in which the JWT is calculated and verified
type JwtAlgorithmOptions ¶ added in v0.0.6
type JwtAlgorithmOptions func(JwtAlgorithm) JwtAlgorithm
JwtAlgorithmOptions is used to implement the JWT Option for Functional parameters of each Algorithm