UNPKG

@dwn-protocol/id-sdk

Version:

SDK for accessing the features and capabilities

56 lines (51 loc) 1.73 kB
import type { IDCrypto } from '../types/iddwn-crypto.js'; export class CryptoKey implements IDCrypto.CryptoKey { public algorithm: IDCrypto.KeyAlgorithm | IDCrypto.GenerateKeyOptions; public extractable: boolean; public material: Uint8Array; public type: IDCrypto.KeyType; public usages: IDCrypto.KeyUsage[]; constructor (algorithm: IDCrypto.KeyAlgorithm | IDCrypto.GenerateKeyOptions, extractable: boolean, material: Uint8Array, type: IDCrypto.KeyType, usages: IDCrypto.KeyUsage[]) { this.algorithm = algorithm; this.extractable = extractable; this.material = material; this.type = type; this.usages = usages; // ensure values are not writeable Object.defineProperties(this, { // TODO // These properties can't be fixed immediately on creation of the // object because the implementation may build it up in stages. // At some point in the operations before returning a key we should // freeze the object to prevent further manipulation. type: { enumerable : true, writable : false, value : type }, extractable: { enumerable : true, writable : true, value : extractable }, algorithm: { enumerable : true, writable : false, value : algorithm }, usages: { enumerable : true, writable : true, value : usages }, // this is the "key material" used internally // it is not enumerable, but we need it to be // accessible by algorithm implementations material: { enumerable : false, writable : false, value : material } }); } }