TwoFactorInACan v0.1.4 TwoFactorInACan.Secrets View Source

Functions for generating cryptographic secrets.

Link to this section Summary

Functions

Generates a secret suitable for use in time based one time password (TOTP) two factor authentication.

Link to this section Types

Link to this type

secret_generation_opts() View Source
secret_generation_opts() :: keyword(atom() | integer())

Link to this section Functions

Link to this function

generate_totp_secret(opts \\ []) View Source
generate_totp_secret(secret_generation_opts()) :: binary()

Generates a secret suitable for use in time based one time password (TOTP) two factor authentication.

Generates a 160-bit key which is the size recommended by RFC4226 (https://www.ietf.org/rfc/rfc4226.txt).

The following options are supported:

  • :format (Default: :binary) - The format of the generated secret. Options include:

    • :binary (default)
    • :base32
    • :base64
  • :bytes (Default: 20) - The size in bytes of the generated secret. 20 bytes (160 bits) is the size specified by RFC 4226. It is also the size supported by most authenticator applications.

Examples

iex> TwoFactorInACan.Secrets.generate_totp_secret()
<<195, 110, 253, 36, 185, 138, 174, 16, 54, 176, 135, 67, 97, 11, 159, 63, 75, 80, 65, 6>>

iex> TwoFactorInACan.Secrets.generate_totp_secret(format: :base32)
"F2EJJEYSJA67QHI6DEAI2I6AGCEG7G5E"

iex> TwoFactorInACan.Secrets.generate_totp_secret(format: :base64)
"xKXOSYcRVlHfnazLMlRinpb252U="