UNPKG

@nfen/webcrypto-ts

Version:
71 lines 3.57 kB
/** * Shared code for EC * @module */ import { AesCryptoKeys } from "../aes/shared.js"; import { HmacCryptoKey } from "../hmac/index.js"; import * as params from "../params.js"; import * as proxy from "../proxy.js"; export interface EcdhPubCryptoKey extends CryptoKey { _ecdhPubCryptoKeyBrand: any; } export interface EcdhPrivCryptoKey extends CryptoKey { _ecdhPrivCryptoKeyBrand: any; } export interface EcdhCryptoKeyPair extends CryptoKeyPair { _ecdhCryptoKeyPairBrand: any; publicKey: EcdhPubCryptoKey; privateKey: EcdhPrivCryptoKey; } export interface EcdsaPubCryptoKey extends CryptoKey { _ecdsaPubCryptoKeyBrand: any; } export interface EcdsaPrivCryptoKey extends CryptoKey { _ecdsaPrivCryptoKeyBrand: any; } export interface EcdsaCryptoKeyPair extends CryptoKeyPair { _ecdsaCryptoKeyPairBrand: any; publicKey: EcdsaPubCryptoKey; privateKey: EcdsaPrivCryptoKey; } export interface EcdsaProxiedPubCryptoKey extends proxy.ProxiedCryptoKey<EcdsaPubCryptoKey> { verify: (algorithm: Omit<params.EnforcedEcdsaParams, "name">, signature: BufferSource, data: BufferSource) => Promise<ArrayBuffer>; exportKey: (format: KeyFormat) => Promise<JsonWebKey | ArrayBuffer>; } export interface EcdsaProxiedPrivCryptoKey extends proxy.ProxiedCryptoKey<EcdsaPrivCryptoKey> { sign: (algorithm: Omit<params.EnforcedEcdsaParams, "name">, data: BufferSource) => Promise<ArrayBuffer>; exportKey: (format: KeyFormat) => Promise<JsonWebKey | ArrayBuffer>; } export interface EcdsaProxiedCryptoKeyPair extends proxy.ProxiedCryptoKeyPair<EcdsaCryptoKeyPair, EcdsaPrivCryptoKey, EcdsaProxiedPrivCryptoKey, EcdsaPubCryptoKey, EcdsaProxiedPubCryptoKey> { } export interface EcdhProxiedPubCryptoKey extends proxy.ProxiedCryptoKey<EcdhPubCryptoKey> { exportKey: (format: KeyFormat) => Promise<JsonWebKey | ArrayBuffer>; } export interface EcdhProxiedPrivCryptoKey extends proxy.ProxiedCryptoKey<EcdhPrivCryptoKey> { deriveKey: (algorithm: Omit<params.EnforcedEcdhKeyDeriveParams, "name">, derivedKeyType: params.EnforcedAesKeyGenParams | params.EnforcedHmacKeyGenParams, extractable?: boolean, keyUsages?: KeyUsage[]) => Promise<HmacCryptoKey | AesCryptoKeys>; deriveBits: (algorithm: Omit<params.EnforcedEcdhKeyDeriveParams, "name">, length: number) => Promise<ArrayBuffer>; exportKey: (format: KeyFormat) => Promise<JsonWebKey | ArrayBuffer>; } export interface EcdhProxiedCryptoKeyPair extends proxy.ProxiedCryptoKeyPair<EcdhCryptoKeyPair, EcdhPrivCryptoKey, EcdhProxiedPrivCryptoKey, EcdhPubCryptoKey, EcdhProxiedPubCryptoKey> { } export declare type EcCryptoKeys = EcdhPubCryptoKey | EcdhPrivCryptoKey | EcdsaPubCryptoKey | EcdsaPrivCryptoKey; export declare type EcCryptoKeyPairs = EcdhCryptoKeyPair | EcdsaCryptoKeyPair; export declare namespace Alg { enum Variant { ECDSA = "ECDSA", ECDH = "ECDH" } type Variants = `${Variant}`; enum Curve { P_256 = "P-256", P_384 = "P-384", P_521 = "P-521" } type Curves = `${Curve}`; } export declare namespace EcShared { function generateKey<T extends EcCryptoKeyPairs>(algorithm: params.EnforcedEcKeyGenParams, extractable?: boolean, keyUsages?: KeyUsage[]): Promise<T>; function importKey<T extends EcCryptoKeys>(format: KeyFormat, key: BufferSource | JsonWebKey, algorithm: params.EnforcedEcKeyImportParams, extractable?: boolean, keyUsages?: KeyUsage[]): Promise<T>; function exportKey(format: KeyFormat, key: EcCryptoKeys): Promise<JsonWebKey | ArrayBuffer>; } //# sourceMappingURL=shared.d.ts.map