UNPKG

@nfen/webcrypto-ts

Version:
128 lines 4.5 kB
/** * Code related to ECDH * @module */ import { AesCryptoKeys } from "../aes/shared.js"; import { HmacCryptoKey } from "../hmac/index.js"; import * as params from "../params.js"; import { EcdhPrivCryptoKey, EcdhProxiedCryptoKeyPair, EcdhProxiedPrivCryptoKey, EcdhProxiedPubCryptoKey, EcdhPubCryptoKey } from "./shared.js"; /** * Generate a new ECDH keypair * @example * ```ts * const keyPair = await ECDH.generateKey(); * ``` * @example * ```ts * const keyPair = await ECDH.generateKey({ namedCurve: "P-256" }, false); * ``` * @example * ```ts * const keyPair = await ECDH.generateKey({ namedCurve: "P-256" }, true, ['deriveKey', 'deriveBits']); */ export declare const generateKey: (algorithm?: Omit<params.EnforcedEcKeyGenParams, "name">, extractable?: boolean, keyUsages?: KeyUsage[]) => Promise<EcdhProxiedCryptoKeyPair>; /** * Generate a new ECDH keypair * @alias generateKey * @example * ```ts * const keyPair = await ECDH.generateKeyPair(); * ``` * @example * ```ts * const keyPair = await ECDH.generateKeyPair({ namedCurve: "P-256" }, false); * ``` * @example * ```ts * const keyPair = await ECDH.generateKeyPair({ namedCurve: "P-256" }, true, ['deriveKey', 'deriveBits']); */ export declare const generateKeyPair: (algorithm?: Omit<params.EnforcedEcKeyGenParams, "name">, extractable?: boolean, keyUsages?: KeyUsage[]) => Promise<EcdhProxiedCryptoKeyPair>; /** * Import an ECDH public or private key * @example * ```ts * const pubKey = await ECDH.importKey("jwk", pubKeyJwk, { namedCurve: "P-521" }, true, []); * ``` * @example * ```ts * const privKey = await ECDH.importKey("jwk", privKeyJwk, { namedCurve: "P-521" }, true, ['deriveBits', 'deriveKey']); * ``` */ export declare const importKey: (format: KeyFormat, key: BufferSource | JsonWebKey, algorithm?: Omit<params.EnforcedEcKeyImportParams, "name">, extractable?: boolean, keyUsages?: KeyUsage[]) => Promise<EcdhProxiedPubCryptoKey | EcdhProxiedPrivCryptoKey>; /** * Export an ECDH public or private key * @example * ```ts * const pubKeyJwk = await ECDH.exportKey("jwk", keyPair.publicKey.self); * ``` * @example * ```ts * const privKeyJwk = await ECDH.exportKey("jwk", keyPair.privateKey.self); * ``` * @example * ```ts * const pubKeyJwk = await keyPair.publicKey.exportKey("jwk"); * ``` * @example * ```ts * const privKeyJwk = await keyPair.privateKey.exportKey("jwk"); * ``` */ export declare const exportKey: (format: KeyFormat, key: EcdhPubCryptoKey | EcdhPrivCryptoKey) => Promise<ArrayBuffer | JsonWebKey>; /** * Derive a shared key between two ECDH key pairs * @example * ```ts * const keyPair = await ECDH.generateKey(); * const otherKeyPair = await ECDH.generateKey(); * const hmacParams: params.EnforcedHmacKeyGenParams = { * name: Authentication.Alg.Code.HMAC, * hash: SHA.Alg.Variant.SHA_512, * length: 512, * }; * let key = await ECDH.deriveKey( * { public: otherKeyPair.publicKey.self }, * keyPair.privateKey.self, * hmacParams * ); * ``` * @example * ```ts * const keyPair = await ECDH.generateKey(); * const otherKeyPair = await ECDH.generateKey(); * const hmacParams: params.EnforcedHmacKeyGenParams = { * name: Authentication.Alg.Code.HMAC, * hash: SHA.Alg.Variant.SHA_512, * length: 512, * }; * let key = await keyPair.privateKey.deriveKey( * { public: otherKeyPair.publicKey.self }, * hmacParams * ); * ``` */ export declare function deriveKey(algorithm: Omit<params.EnforcedEcdhKeyDeriveParams, "name">, baseKey: EcdhPrivCryptoKey, derivedKeyType: params.EnforcedAesKeyGenParams | params.EnforcedHmacKeyGenParams, extractable?: boolean, keyUsages?: KeyUsage[]): Promise<HmacCryptoKey | AesCryptoKeys>; /** * Derive a shared bits between two ECDH key pairs * @example * ```ts * const keyPair = await ECDH.generateKey(); * const otherKeyPair = await ECDH.generateKey(); * const bits = await ECDH.deriveBits( * { public: otherKeyPair.publicKey.self }, * keyPair.privateKey.self, * 128 * ); * ``` * @example * ```ts * const keyPair = await ECDH.generateKey(); * const otherKeyPair = await ECDH.generateKey(); * const bits = await keyPair.privateKey.deriveBits( * { public: otherKeyPair.publicKey.self }, * 128 * ); * ``` */ export declare function deriveBits(algorithm: Omit<params.EnforcedEcdhKeyDeriveParams, "name">, baseKey: EcdhPrivCryptoKey, length: number): Promise<ArrayBuffer>; //# sourceMappingURL=ecdh.d.ts.map