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