augmenttoolkit / node_modules /@otplib /core /authenticator.d.ts
Leon4gr45's picture
Include updated package-lock.json (part 11)
2a1c46d verified
Raw
History Blame Contribute Delete
5.52 kB
import { KeyEncodings, SecretKey } from './utils';
import { TOTP, TOTPOptions } from './totp';
/**
* RFC4648 / RFC3548 Base32 String.
*
* Other Base32 encoding methods like Crockford's Base32
* will not be compatible with Google Authenticator.
*/
export declare type Base32SecretKey = SecretKey;
/**
* Interface method for [[AuthenticatorOptions.keyEncoder]].
*/
export interface KeyEncoder<T = Base32SecretKey> {
(secret: SecretKey, encoding: KeyEncodings): T;
}
/**
* Interface method for [[AuthenticatorOptions.keyDecoder]].
*/
export interface KeyDecoder<T = SecretKey> {
(encodedSecret: Base32SecretKey, encoding: KeyEncodings): T;
}
/**
* Interface method for [[AuthenticatorOptions.createRandomBytes]].
*/
export interface CreateRandomBytes<T = string> {
(size: number, encoding: KeyEncodings): T;
}
/**
* Interface for options used in Authenticator.
*
* Contains additional options in addition to
* those within TOTP.
*/
export interface AuthenticatorOptions<T = string> extends TOTPOptions<T> {
/**
* Encodes a secret key into a Base32 string before it is
* sent to the user (in QR Code etc).
*/
keyEncoder: KeyEncoder<T>;
/**
* Decodes the Base32 string given by the user into a secret.
* */
keyDecoder: KeyDecoder<T>;
/**
* Creates a random string containing the defined number of
* bytes to be used in generating a secret key.
*/
createRandomBytes: CreateRandomBytes<T>;
}
/**
* Validates the given [[AuthenticatorOptions]].
*/
export declare function authenticatorOptionValidator<T extends AuthenticatorOptions<unknown> = AuthenticatorOptions<unknown>>(options: Partial<T>): void;
/**
* Returns a set of default options for authenticator at the current epoch.
*/
export declare function authenticatorDefaultOptions<T extends AuthenticatorOptions<unknown> = AuthenticatorOptions<unknown>>(): Partial<T>;
/**
* Takes an Authenticator Option object and provides presets for
* some of the missing required Authenticator option fields and validates
* the resultant options.
*/
export declare function authenticatorOptions<T extends AuthenticatorOptions<unknown> = AuthenticatorOptions<unknown>>(opt: Partial<T>): Readonly<T>;
/**
* Encodes a given secret key into a Base32 secret
* using a [[KeyEncoder]] method set in the options.
*
* @param secret - The [[SecretKey]] to encode into a [[Base32SecretKey]]
* @param options - An [[AuthenticatorOptions]] object
*/
export declare function authenticatorEncoder<T extends AuthenticatorOptions<unknown> = AuthenticatorOptions<unknown>>(secret: SecretKey, options: Pick<T, 'keyEncoder' | 'encoding'>): ReturnType<T['keyEncoder']>;
/**
* Decodes a given Base32 secret to a secret key
* using a [[KeyDecoder]] method set in the options.
*
* @param secret - The [[Base32SecretKey]] to decode
* @param options - An [[AuthenticatorOptions]] object
*/
export declare function authenticatorDecoder<T extends AuthenticatorOptions<unknown> = AuthenticatorOptions<unknown>>(secret: Base32SecretKey, options: Pick<T, 'keyDecoder' | 'encoding'>): ReturnType<T['keyDecoder']>;
/**
* Generates a random Base32 Secret Key.
*
* @param numberOfBytes - Number of bytes per secret key
* @param options.createRandomBytes
* @param options.encoding
* @param options.keyEncoder
*/
export declare function authenticatorGenerateSecret<T extends AuthenticatorOptions = AuthenticatorOptions>(numberOfBytes: number, options: Pick<T, 'keyEncoder' | 'encoding' | 'createRandomBytes'>): Base32SecretKey;
/**
* Generates the Authenticator based token.
*
* tl;dr: Authenticator = TOTP + Base32 Secret
*
* **References**
*
* - https://en.wikipedia.org/wiki/Google_Authenticator
*
* @param secret - [[Base32SecretKey]]
* @param options - An [[AuthenticatorOptions]] object.
*/
export declare function authenticatorToken<T extends AuthenticatorOptions = AuthenticatorOptions>(secret: Base32SecretKey, options: Readonly<T>): string;
/**
* Decodes the encodedSecret and passes it to [[totpCheckWithWindow]]
*
* @param token - The token to check
* @param secret - The [[Base32SecretKey]]
* @param options - An [[AuthenticatorOptions]] object.
*/
export declare function authenticatorCheckWithWindow<T extends AuthenticatorOptions = AuthenticatorOptions>(token: string, secret: Base32SecretKey, options: Readonly<T>): number | null;
/**
* A class wrapper containing all Authenticator methods.
*/
export declare class Authenticator<T extends AuthenticatorOptions<string> = AuthenticatorOptions<string>> extends TOTP<T> {
/**
* Creates a new instance with all defaultOptions and options reset.
*/
create(defaultOptions?: Partial<T>): Authenticator<T>;
/**
* Returns a set of options at the current moment,
* polyfilled with some of the missing required options.
*
* Refer to [[authenticatorOptions]]
*/
allOptions(): Readonly<T>;
/**
* Reference: [[authenticatorToken]]
*/
generate(secret: Base32SecretKey): string;
/**
* Reference: [[authenticatorCheckWithWindow]]
*/
checkDelta(token: string, secret: Base32SecretKey): number | null;
/**
* Reference: [[authenticatorEncoder]]
*/
encode(secret: SecretKey): Base32SecretKey;
/**
* Reference: [[authenticatorDecoder]]
*/
decode(secret: Base32SecretKey): SecretKey;
/**
* Reference: [[authenticatorGenerateSecret]]
*/
generateSecret(numberOfBytes?: number): Base32SecretKey;
}