@nfen/webcrypto-ts
Version:
Enforced Webcrypto wrapper
128 lines • 4.5 kB
TypeScript
/**
* 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