Spaces:
Sleeping
Sleeping
File size: 5,517 Bytes
2a1c46d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 | 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;
}
|