Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // ErrSCRAMPasswordInvalid is returned when the password attributes are invalid ErrSCRAMPasswordInvalid = errors.New(`invalid password attributes. must provide "password"`) // ErrSCRAMSaltLengthInvalid is returned when the salt length is less than 1 ErrSCRAMSaltLengthInvalid = errors.New(`salt length must be at least 1`) )
var ( // ErrMD5PasswordInvalid is returned when the password attributes are invalid ErrMD5PasswordInvalid = errors.New(`invalid password attributes. must provide "username" and "password"`) )
var ( // ErrPasswordType is returned when a password type does not exist ErrPasswordType = errors.New("password type does not exist") )
Functions ¶
This section is empty.
Types ¶
type MD5Password ¶
type MD5Password struct {
// contains filtered or unexported fields
}
MD5Password implements the PostgresPassword interface for hashing passwords using the PostgreSQL MD5 method
func NewMD5Password ¶
func NewMD5Password(username, password string) *MD5Password
NewMD5Password constructs a new MD5Password struct
func (*MD5Password) Build ¶
func (m *MD5Password) Build() (string, error)
Build creates the MD5 password format for PostgreSQL which resembles "md5" + md5("password" + "username")
type PasswordType ¶
type PasswordType int
PasswordType helps to specify the type of password method (e.g. md5) to use
const ( // MD5 refers to the MD5Password method MD5 PasswordType = iota SCRAM )
The following constants are used to aid in the select of the types of PostgreSQL password generators
type PostgresPassword ¶
type PostgresPassword interface { // Build transforms any plaintext or other attributes that are provided by // the interface implementor and returns a password. If an error occurs in the // building process, it is returned. // // If the build does error, return an empty string Build() (string, error) }
PostgresPassword is the interface that defines the methods required to build a password for PostgreSQL in a desired format (e.g. MD5)
func NewPostgresPassword ¶
func NewPostgresPassword(passwordType PasswordType, username, password string) (PostgresPassword, error)
NewPostgresPassword accepts a type of password (e.g. md5) which is used to select the correct generation interface, as well as a username and password and returns the appropriate interface
An error is returned if the proper password generator cannot be found
type SCRAMPassword ¶
type SCRAMPassword struct { // Iterations is the number of iterations to run the PBKDF2 algorithm when // generating the hashed salted password. This defaults to 4096, which is the // PostgreSQL default Iterations int // SaltLength is the length of the generated salt that is used as part of the // PBKDF2 algorithm SaltLength int // contains filtered or unexported fields }
SCRAMPassword contains the building blocks to build a PostgreSQL SCRAM verifier. Implements the PostgresPassword interface
func NewSCRAMPassword ¶
func NewSCRAMPassword(password string) *SCRAMPassword
NewSCRAMPassword constructs a new SCRAMPassword struct with sane defaults
func (*SCRAMPassword) Build ¶
func (s *SCRAMPassword) Build() (string, error)
Build creates the SCRAM verifier, which follows the methods defined in the PostgreSQL source, i.e.
https://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/include/common/scram-common.h