@scirexs/srp6a
Version:
SRP-6a (Secure Remote Password) implementation in TypeScript for browser and server.
34 lines • 2.58 kB
TypeScript
export { addRandomDelay, calculateVerifier, computeClientEvidence, computeClientKey, computeIdentity, computeMultiplier, computeScramblingParameter, computeSecret, computeServerEvidence, computeServerKey, generateKeyPair, generateRandomKey, generateSalt, generateServerKeyPair, isValidPublic, };
import type { CryptoKeyPair } from "./types.js";
import { CryptoNumber, type SRPConfig } from "./crypto.js";
/** s = RAND() */
declare function generateSalt(config: SRPConfig): CryptoNumber;
/** I = H(U | ":" | p) */
declare function computeIdentity(username: string, password: string, config: SRPConfig): Promise<CryptoNumber>;
/** x = H(s | I) */
declare function computeSecret(salt: CryptoNumber, identity: CryptoNumber, config: SRPConfig): Promise<CryptoNumber>;
/** v = MP(g, x, N) */
declare function calculateVerifier(secret: CryptoNumber, config: SRPConfig): CryptoNumber;
/** k = H(N | PAD(g)) */
declare function computeMultiplier(config: SRPConfig): Promise<CryptoNumber>;
/** b, B = k * v + MP(g, b, N) */
declare function generateServerKeyPair(multiplier: CryptoNumber, verifier: CryptoNumber, config: SRPConfig): CryptoKeyPair;
/** a, A = MP(g, a, N) */
declare function generateKeyPair(config: SRPConfig): CryptoKeyPair;
/** a = RAND(), b = RAND() */
declare function generateRandomKey(config: SRPConfig): CryptoNumber;
/** u = H(PAD(A) | PAD(B)) */
declare function computeScramblingParameter(client: CryptoNumber, server: CryptoNumber, config: SRPConfig): Promise<CryptoNumber>;
/** Kc = H(Sc) */
declare function computeClientKey(server: CryptoNumber, multiplier: CryptoNumber, secret: CryptoNumber, pvt: CryptoNumber, scrambling: CryptoNumber, config: SRPConfig): Promise<CryptoNumber>;
/** Mc = H(H(N) xor H(g), H(U), s, A, B, K) */
declare function computeClientEvidence(username: string, salt: CryptoNumber, client: CryptoNumber, server: CryptoNumber, key: CryptoNumber, config: SRPConfig): Promise<CryptoNumber>;
/** Ks = H(Ss) */
declare function computeServerKey(client: CryptoNumber, verifier: CryptoNumber, scrambling: CryptoNumber, pvt: CryptoNumber, config: SRPConfig): Promise<CryptoNumber>;
/** Ms = H(A, Mc, K) */
declare function computeServerEvidence(client: CryptoNumber, evidence: CryptoNumber, key: CryptoNumber, config: SRPConfig): Promise<CryptoNumber>;
/** Confirm public key is valid or not. */
declare function isValidPublic(pub: CryptoNumber, config: SRPConfig): boolean;
/** Add random delay for server response to mitigate timing attacks. */
declare function addRandomDelay(ms?: number): Promise<void>;
//# sourceMappingURL=functions.d.ts.map