@linkedmink/passport-mutual-key-challenge
Version:
Implements a Passport strategy to authenticate the public key of a user by issuing a dynamic generated challenge
82 lines • 3.3 kB
TypeScript
/// <reference types="node" />
import { KeyLike } from "crypto";
import { ChallengeCache } from "./Types/ChallengeCache";
import { GetClientChallengeOrResponseFunc, GetServerKeyFunc, GetUserFunc } from "./Types/Functions";
/**
* Options to customize how the message is encrypted and verified. The client must use the same format.
*/
export interface CryptographyOptions {
/**
* Padding for the encrypted/decrypted messages
* @see https://nodejs.org/api/crypto.html#crypto_other_openssl_constants
* @default crypto.constants.RSA_PKCS1_OAEP_PADDING
*/
messagePadding: number;
/**
* Padding for signing/verifying messages
* @see https://nodejs.org/api/crypto.html#crypto_other_openssl_constants
* @default crypto.constants.RSA_PKCS1_PADDING
*/
signaturePadding: number;
/**
* The hashing algorithm to use universally. Currently, there isn't an option to differentiate operations.
* @default "sha256"
*/
hashAlgorithm: string;
/**
* The number of bytes for the randomly generated challenge nonce
* @default 128
*/
nonceSize: number;
}
/**
* Options you must supply when creating this strategy
*/
export interface MutualKeyChallengeRequiredOptions<TUser = unknown> {
/**
* The servers private key for signing, encrypting, and decrypting challenges. If you don't
* want the key cached provide a function. Otherwise, the strategy will store the key in memory.
*/
serverKey: GetServerKeyFunc | KeyLike;
/**
* A function to get the user's public key from the request context (user ID attached to
* the body for example). If the server has established trust ahead of time, this
*/
userFunc: GetUserFunc<TUser>;
}
/**
* Options that have defaults if nothing is supplied
*/
export interface MutualKeyChallengeOptionalOptions {
/**
* This function extracts the server or client challenge from the incoming HTTP request
* @default challengeByBase64Body
*/
challengeOrResponseFunc: GetClientChallengeOrResponseFunc;
/**
* The data structure that will manage storing temporary server challenges
* @default LocalChallengeCache
*/
challengeCache: ChallengeCache;
/**
* Options to customize how the message is encrypted and verified. The client must use the same format.
*/
cryptography: CryptographyOptions;
}
/**
* Options allowed on the passport.authenticate function
*/
export declare type MutualKeyChallengeAuthOptions = Record<string, never>;
/**
* All available options when creating this strategy
*/
export declare type MutualKeyChallengeOptions<TUser = unknown> = MutualKeyChallengeRequiredOptions<TUser> & Partial<MutualKeyChallengeOptionalOptions>;
/**
* The options resolved with the default values not provided by MutualKeyChallengeOptions
*/
export declare type MutualKeyChallengeResolvedOptions<TUser = unknown> = MutualKeyChallengeRequiredOptions<TUser> & MutualKeyChallengeOptionalOptions;
/**
* @return The default values for MutualKeyChallengeOptions
*/
export declare function getDefaultOptions(): MutualKeyChallengeOptionalOptions;
//# sourceMappingURL=MutualKeyChallengeOptions.d.ts.map