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