Class: HOTP

@nginstack/engine/lib/otp/HOTP~ HOTP


new HOTP()

Classe que agrupa funções de geração e verificação de senhas de uso único baseadas em hash HOTP (Hash-based One-Time Password), conforme RFC 4226.

As chaves informadas nos métodos desta classe devem ser uma sequência de bytes aleatórios ou devem ser geradas por algoritmos de derivação de chaves para fins criptográficos. Elas devem ter um tamanho adequado para o algoritmo de hash adotado e devem ser mantidas em segredo, devendo ser compartilhadas apenas com o gerador e o verificador de senhas.

Esta classe trata as strings como se fossem uma sequência de bytes no formato conhecido como Binary String. É importante observar que a codificação adotada pode ser diferente em outras plataformas, como o Node.js. Para garantir compatibilidade com as senhas geradas por outras plataformas, prefira sempre informar valores do tipo Uint8Array ou ArrayBuffer, evitando a codificação implícita das strings.

Example
const HOTP = require('@nginstack/engine/lib/otp/HOTP.js');
const Crypto = require('@nginstack/engine/lib/crypto/Crypto.js');

const secret = Crypto.randomBytes(20, 'uint8array');
const counter = 20;
const token = HOTP.generate(secret, counter);
HOTP.verify(token, secret, counter); // >= true

Methods


<static> generate(key, counter [, options])

Cria uma senha de uso único que pode ser verificada pelo método #verify ou por outros aplicativos que implementem o algoritmo HOTP.

Parameters:
Name Type Argument Description
key string | Uint8Array | ArrayBuffer

Chave única que deve ser mantida em segredo e será utilizada pelo algoritmo HMAC para gerar a senha de uso único.

counter number

Contador, tempo ou outro valor que é alterado a cada senha gerada. Valores negativos não são suportados pelo algoritmo HOTP e são tratados como zero.

options HOTPOptions <optional>

Parâmetros opcionais do algoritmo HOTP.

Returns:

Senha de utilização única.

Type
string

<static> verify(otp, key, counter [, options])

Verifica se uma senha de uso único é válida.

Como o contador é incrementado a cada senha gerada e verificada, eventualmente pode ocorrer uma dessincronização entre o contador do cliente que está gerando a senha e do servidor que está verificando. Por esse motivo, é recomendado que esta função seja chamada para o valor do contador esperado pelo servidor e para alguns valores seguintes. Caso algum deles satisfaça a verificação, o servidor deve ajustar o contador para o valor que resultou o teste bem sucedido acrescido de um.

Parameters:
Name Type Argument Description
otp string

Senha de uso único que deverá ser verificada.

key string | Uint8Array | ArrayBuffer

Chave única que deve ser mantida em segredo e será utilizada pelo algoritmo HMAC para gerar a senha de uso único.

counter number

Contador, tempo ou outro valor que é alterado a cada senha gerada. Valores negativos não são suportados pelo algoritmo HOTP e são tratados como zero.

options HOTPOptions <optional>

Parâmetros opcionais do algoritmo HOTP.

Returns:

True se a senha informada for válida.

Type
boolean