Saltar a contenido

otp

app.utils.otp

Módulo de Python para la generación y verificación de contraseñas de un solo uso (OTP).

Para más información, te recomendamos leer la documentación del Proyecto.

gen_otp_secret(to_hex=False)

Genera una clave secreta en formato hexadecimal.

Parameters:

Name Type Description Default
to_hex bool

especifica si la clave secreta se generará en formato hexadecimal ó no, por defecto False

False
Notes

la clave generada por defecto es de 40 caracteres.

Se proporciona una función de ayuda para generar un secreto en base32, compatible con Google Authenticator y otras aplicaciones OTP. Para este caso fije el parámetro to_hex a True.

Returns:

Type Description
Any

una clave secreta, ó None en caso de error

Examples:

1
2
3
4
5
6
...
# ejemplo 1
gen_otp_secret()

# ejemplo 2, compatibilidad con Google Authenticator
gen_otp_secret(True)

gen_totp(secret)

Genera un codigo OTP basado en Time-based (TOTP).

Parameters:

Name Type Description Default
secret str

el secreto (vease gen_otp_secret)

required

Returns:

Type Description
Any

el token (código) TOTP, ó None en caso de error

Examples:

...
gen_totp("awesome_key_secret_hex")

validate_totp(token, secret)

Valida el codigo OTP basado en Time-based (TOTP).

Parameters:

Name Type Description Default
token str

el token (código) TOTP

required
secret str

el secreto (vease gen_otp_secret)

required

Returns:

Type Description
bool

el resultado de la validación, ó None en caso de error

Examples:

...
validate_totp("awesome_totp_token", "awesome_key_secret_hex")

gen_hotp(secret, counter=30)

Genera un codigo OTP basado en HMAC-based (HOTP) para el contador dado.

Parameters:

Name Type Description Default
secret str

el secreto (vease gen_otp_secret)

required
counter int

el contador en segundos, por defecto: 30

30
Notes

Tenga en cuenta que esta función esta basada en tiempo, por lo que al generar el token, el contador DEBE estar sincronizado entre el generador HOTP (cliente) y el validador HOTP (servidor).

el número de segundos que el generador de HOTP está configurado para caducar cada código, se establece en el parámetro counter.

Returns:

Type Description
str

el token (código) HTOP, ó None en caso de error

Examples:

1
2
3
4
5
6
...
# ejemplo 1
gen_hotp("awesome_key_secret_hex")

# ejemplo 2
gen_hotp("awesome_key_secret_hex", 45)

validate_hotp(token, secret, counter=30)

Valida el codigo OTP basado en HMAC-based (HOTP).

Parameters:

Name Type Description Default
token str

el token (código) HOTP

required
secret str

el secreto (vease gen_otp_secret)

required
counter int

el contador en segundos, por defecto: 30

30
Notes

El contador (counter) DEBE estar sincronizado entre el generador HOTP (cliente) y el validador HOTP (servidor) ó la validación fallará.

Returns:

Type Description
bool

el resultado de la validación, ó None en caso de error

Examples:

1
2
3
4
5
6
...
# ejemplo 1
validate_hotp("awesome_totp_token", "awesome_key_secret_hex")

# ejemplo 2
validate_hotp("awesome_totp_token", "awesome_key_secret_hex", 45)