gotp

package module
v0.0.0-...-7efec34 Latest Latest
Warning

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

Go to latest
Published: Dec 13, 2023 License: Apache-2.0 Imports: 10 Imported by: 0

README

GOTP - The Golang One-Time Password Package

License

GOTP is a Golang package for generating and verifying one-time passwords. It can be used to implement two-factor (2FA) or multi-factor (MFA) authentication methods anywhere users need to log in.

Documentation

Index

Constants

View Source
const (
	OtpTypeTotp = "totp"
	OtpTypeHotp = "hotp"
)

Variables

This section is empty.

Functions

func BuildUri

func BuildUri(otpType, secret, accountName, issuerName, algorithm string, initialCount, digits int, period int) string

Returns the provisioning URI for the OTP; works for either TOTP or HOTP. This can then be encoded in a QR Code and used to provision the Google Authenticator app. For module-internal use. See also:

https://github.com/google/google-authenticator/wiki/Key-Uri-Format

params:

otpType:     otp type, must in totp/hotp
secret:       the hotp/totp secret used to generate the URI
accountName:  name of the account
issuerName:   the name of the OTP issuer; this will be the organization title of the OTP entry in Authenticator
algorithm:    the algorithm used in the OTP generation
initialCount: starting counter value. Only works for hotp
digits:       the length of the OTP generated code.
period:       the number of seconds the OTP generator is set to expire every code.

returns: provisioning uri

func IsSecretValid

func IsSecretValid(secret string) bool

A non-panic way of seeing weather or not a given secret is valid

func Itob

func Itob(integer int64) []byte

integer to byte array

func RandomSecret

func RandomSecret(length int) string

RandomSecret generates a random secret of given length (number of bytes) returns empty string if something bad happened

Types

type HOTP

type HOTP struct {
	OTP
}

HMAC-based OTP counters.

func NewDefaultHOTP

func NewDefaultHOTP(secret string) *HOTP

func NewHOTP

func NewHOTP(secret string, digits int, hasher *Hasher) *HOTP

func (*HOTP) At

func (h *HOTP) At(count int) string

Generates the OTP for the given count.

func (*HOTP) ProvisioningUri

func (h *HOTP) ProvisioningUri(accountName, issuerName string, initialCount int) string

Returns the provisioning URI for the OTP. This can then be encoded in a QR Code and used to provision an OTP app like Google Authenticator.

See also:

https://github.com/google/google-authenticator/wiki/Key-Uri-Format

params:

accountName:  name of the account
issuerName:   the name of the OTP issuer; this will be the organization title of the OTP entry in Authenticator
initialCount: starting HMAC counter value

returns: provisioning URI

func (*HOTP) Verify

func (h *HOTP) Verify(otp string, count int) bool

Verify OTP.

params:

otp:   the OTP to check against
count: the OTP HMAC counter

type Hasher

type Hasher struct {
	HashName string
	Digest   func() hash.Hash
}

type OTP

type OTP struct {
	// contains filtered or unexported fields
}

func NewOTP

func NewOTP(secret string, digits int, hasher *Hasher) OTP

type TOTP

type TOTP struct {
	OTP
	// contains filtered or unexported fields
}

time-based OTP counters.

func NewDefaultTOTP

func NewDefaultTOTP(secret string) *TOTP

func NewTOTP

func NewTOTP(secret string, digits, interval int, hasher *Hasher) *TOTP

func (*TOTP) At

func (t *TOTP) At(timestamp int64) string

Generate time OTP of given timestamp

func (*TOTP) AtTime

func (t *TOTP) AtTime(timestamp time.Time) string

func (*TOTP) Now

func (t *TOTP) Now() string

Generate the current time OTP

func (*TOTP) NowWithExpiration

func (t *TOTP) NowWithExpiration() (string, int64)

Generate the current time OTP and expiration time

func (*TOTP) ProvisioningUri

func (t *TOTP) ProvisioningUri(accountName, issuerName string) string

Returns the provisioning URI for the OTP. This can then be encoded in a QR Code and used to provision an OTP app like Google Authenticator.

See also:

https://github.com/google/google-authenticator/wiki/Key-Uri-Format

params:

accountName: name of the account
issuerName:  the name of the OTP issuer; this will be the organization title of the OTP entry in Authenticator

returns: provisioning URI

func (*TOTP) Verify

func (t *TOTP) Verify(otp string, timestamp int64) bool

Verify OTP.

params:

otp:         the OTP to check against
timestamp:   time to check OTP at

func (*TOTP) VerifyTime

func (t *TOTP) VerifyTime(otp string, timestamp time.Time) bool

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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