Skip to main content

Class: CryptoEngine

Default cryptographic engine for Web Cryptography API

Hierarchy

Constructors

constructor

new CryptoEngine(parameters): CryptoEngine

Constructor for CryptoEngine class

Parameters

NameType
parametersCryptoEngineParameters

Returns

CryptoEngine

Inherited from

AbstractCryptoEngine.constructor

Properties

crypto

crypto: Crypto

Inherited from

AbstractCryptoEngine.crypto


name

name: string

Inherited from

AbstractCryptoEngine.name


subtle

subtle: SubtleCrypto

Inherited from

AbstractCryptoEngine.subtle

Methods

convert

convert(inputFormat, outputFormat, keyData, algorithm, extractable, keyUsages): Promise<ArrayBuffer | JsonWebKey>

Convert WebCrypto keys between different export formats

Parameters

NameType
inputFormatKeyFormat
outputFormatKeyFormat
keyDataArrayBuffer | JsonWebKey
algorithmAlgorithm
extractableboolean
keyUsagesKeyUsage[]

Returns

Promise<ArrayBuffer | JsonWebKey>


decrypt

decrypt(algorithm, key, data): Promise<ArrayBuffer>

MDN Reference

Parameters

NameType
algorithmAesCbcParams | AesCtrParams | AesGcmParams | AlgorithmIdentifier | RsaOaepParams
keyCryptoKey
dataBufferSource

Returns

Promise<ArrayBuffer>

Inherited from

AbstractCryptoEngine.decrypt


decryptEncryptedContentInfo

decryptEncryptedContentInfo(parameters): Promise<ArrayBuffer>

Decrypt data stored in "EncryptedContentInfo" object using parameters

Parameters

NameType
parametersCryptoEngineDecryptParams

Returns

Promise<ArrayBuffer>

Overrides

AbstractCryptoEngine.decryptEncryptedContentInfo


deriveBits

deriveBits(algorithm, baseKey, length): Promise<ArrayBuffer>

MDN Reference

Parameters

NameType
algorithmEcdhKeyDeriveParams | AlgorithmIdentifier | HkdfParams | Pbkdf2Params
baseKeyCryptoKey
lengthnumber

Returns

Promise<ArrayBuffer>

Inherited from

AbstractCryptoEngine.deriveBits


deriveKey

deriveKey(algorithm, baseKey, derivedKeyType, extractable, keyUsages): Promise<CryptoKey>

MDN Reference

Parameters

NameType
algorithmEcdhKeyDeriveParams | AlgorithmIdentifier | HkdfParams | Pbkdf2Params
baseKeyCryptoKey
derivedKeyTypeAesDerivedKeyParams | AlgorithmIdentifier | HkdfParams | HmacImportParams | Pbkdf2Params
extractableboolean
keyUsagesKeyUsage[]

Returns

Promise<CryptoKey>

Inherited from

AbstractCryptoEngine.deriveKey

deriveKey(algorithm, baseKey, derivedKeyType, extractable, keyUsages): Promise<CryptoKey>

MDN Reference

Parameters

NameType
algorithmEcdhKeyDeriveParams | AlgorithmIdentifier | HkdfParams | Pbkdf2Params
baseKeyCryptoKey
derivedKeyTypeAesDerivedKeyParams | AlgorithmIdentifier | HkdfParams | HmacImportParams | Pbkdf2Params
extractableboolean
keyUsagesIterable<KeyUsage>

Returns

Promise<CryptoKey>

Inherited from

AbstractCryptoEngine.deriveKey


digest

digest(algorithm, data): Promise<ArrayBuffer>

MDN Reference

Parameters

NameType
algorithmAlgorithmIdentifier
dataBufferSource

Returns

Promise<ArrayBuffer>

Inherited from

AbstractCryptoEngine.digest


encrypt

encrypt(algorithm, key, data): Promise<ArrayBuffer>

MDN Reference

Parameters

NameType
algorithmAesCbcParams | AesCtrParams | AesGcmParams | AlgorithmIdentifier | RsaOaepParams
keyCryptoKey
dataBufferSource

Returns

Promise<ArrayBuffer>

Inherited from

AbstractCryptoEngine.encrypt


encryptEncryptedContentInfo

encryptEncryptedContentInfo(parameters): Promise<EncryptedContentInfo>

Specialized function encrypting "EncryptedContentInfo" object using parameters

Parameters

NameType
parametersCryptoEngineEncryptParams

Returns

Promise<EncryptedContentInfo>

Overrides

AbstractCryptoEngine.encryptEncryptedContentInfo


exportKey

exportKey(format, key): Promise<JsonWebKey>

Export WebCrypto keys to different formats

Parameters

NameType
format"jwk"
keyCryptoKey

Returns

Promise<JsonWebKey>

Overrides

AbstractCryptoEngine.exportKey

exportKey(format, key): Promise<ArrayBuffer>

Parameters

NameType
format"raw" | "pkcs8" | "spki"
keyCryptoKey

Returns

Promise<ArrayBuffer>

Overrides

AbstractCryptoEngine.exportKey

exportKey(format, key): Promise<ArrayBuffer | JsonWebKey>

Parameters

NameType
formatstring
keyCryptoKey

Returns

Promise<ArrayBuffer | JsonWebKey>

Overrides

AbstractCryptoEngine.exportKey


fillPublicKeyParameters

fillPublicKeyParameters(publicKeyInfo, signatureAlgorithm): CryptoEnginePublicKeyParams

Parameters

NameType
publicKeyInfoPublicKeyInfo
signatureAlgorithmAlgorithmIdentifier

Returns

CryptoEnginePublicKeyParams


generateKey

generateKey(algorithm, extractable, keyUsages): Promise<CryptoKeyPair>

MDN Reference

Parameters

NameType
algorithmEcKeyGenParams | RsaHashedKeyGenParams
extractableboolean
keyUsagesKeyUsage[]

Returns

Promise<CryptoKeyPair>

Inherited from

AbstractCryptoEngine.generateKey

generateKey(algorithm, extractable, keyUsages): Promise<CryptoKey>

Parameters

NameType
algorithmAesKeyGenParams | HmacKeyGenParams | Pbkdf2Params
extractableboolean
keyUsagesKeyUsage[]

Returns

Promise<CryptoKey>

Inherited from

AbstractCryptoEngine.generateKey

generateKey(algorithm, extractable, keyUsages): Promise<CryptoKeyPair | CryptoKey>

Parameters

NameType
algorithmAlgorithmIdentifier
extractableboolean
keyUsagesKeyUsage[]

Returns

Promise<CryptoKeyPair | CryptoKey>

Inherited from

AbstractCryptoEngine.generateKey


getAlgorithmByOID

getAlgorithmByOID<T>(oid, safety?, target?): object | T

Gets WebCrypto algorithm by wel-known OID

Type parameters

NameType
Textends Algorithm = Algorithm

Parameters

NameTypeDescription
oidstringalgorithm identifier
safety?booleanif true throws exception on unknown algorithm identifier
target?stringname of the target

Returns

object | T

Returns WebCrypto algorithm or an empty object

Overrides

AbstractCryptoEngine.getAlgorithmByOID

getAlgorithmByOID<T>(oid, safety, target?): T

Gets WebCrypto algorithm by wel-known OID

Type parameters

NameType
Textends Algorithm = Algorithm

Parameters

NameTypeDescription
oidstringalgorithm identifier
safetytrueif true throws exception on unknown algorithm identifier
target?stringname of the target

Returns

T

Returns WebCrypto algorithm

Throws

Throws Error exception if unknown algorithm identifier

Overrides

AbstractCryptoEngine.getAlgorithmByOID


getAlgorithmParameters

getAlgorithmParameters(algorithmName, operation): CryptoEngineAlgorithmParams

Get default algorithm parameters for each kind of operation

Parameters

NameTypeDescription
algorithmNamestringAlgorithm name to get common parameters for
operationCryptoEngineAlgorithmOperationKind of operation: "sign", "encrypt", "generateKey", "importKey", "exportKey", "verify"

Returns

CryptoEngineAlgorithmParams

Overrides

AbstractCryptoEngine.getAlgorithmParameters


getHashAlgorithm

getHashAlgorithm(signatureAlgorithm): string

Getting hash algorithm by signature algorithm

Parameters

NameTypeDescription
signatureAlgorithmAlgorithmIdentifierSignature algorithm

Returns

string

Overrides

AbstractCryptoEngine.getHashAlgorithm


getOIDByAlgorithm

getOIDByAlgorithm(algorithm, safety?, target?): string

Get OID for each specific algorithm

Parameters

NameTypeDefault valueDescription
algorithmAlgorithmundefinedWebCrypto Algorithm
safetybooleanfalseIf true throws exception on unknown algorithm. Default is false
target?stringundefinedName of the target

Returns

string

Throws

Throws Error exception if unknown WebCrypto algorithm

Overrides

AbstractCryptoEngine.getOIDByAlgorithm


getPublicKey

getPublicKey(publicKeyInfo, signatureAlgorithm, parameters?): Promise<CryptoKey>

Parameters

NameType
publicKeyInfoPublicKeyInfo
signatureAlgorithmAlgorithmIdentifier
parameters?CryptoEnginePublicKeyParams

Returns

Promise<CryptoKey>

Overrides

AbstractCryptoEngine.getPublicKey


getRandomValues

getRandomValues<T>(array): T

Type parameters

NameType
Textends null | ArrayBufferView

Parameters

NameType
arrayT

Returns

T

Inherited from

AbstractCryptoEngine.getRandomValues


getSignatureParameters

getSignatureParameters(privateKey, hashAlgorithm?): Promise<CryptoEngineSignatureParams>

Get signature parameters by analyzing private key algorithm

Parameters

NameTypeDefault valueDescription
privateKeyCryptoKeyundefinedThe private key user would like to use
hashAlgorithmstring"SHA-1"Hash algorithm user would like to use. Default is SHA-1

Returns

Promise<CryptoEngineSignatureParams>

Overrides

AbstractCryptoEngine.getSignatureParameters


importKey

importKey(format, keyData, algorithm, extractable, keyUsages): Promise<CryptoKey>

MDN Reference

Parameters

NameType
formatKeyFormat
keyDataBufferSource | JsonWebKey
algorithmAlgorithmIdentifier
extractableboolean
keyUsagesKeyUsage[]

Returns

Promise<CryptoKey>

Overrides

AbstractCryptoEngine.importKey


sign

sign(algorithm, key, data): Promise<ArrayBuffer>

MDN Reference

Parameters

NameType
algorithmEcdsaParams | AlgorithmIdentifier | RsaPssParams
keyCryptoKey
dataBufferSource

Returns

Promise<ArrayBuffer>

Inherited from

AbstractCryptoEngine.sign


signWithPrivateKey

signWithPrivateKey(data, privateKey, parameters): Promise<ArrayBuffer>

Sign data with pre-defined private key

Parameters

NameTypeDescription
dataBufferSourceData to be signed
privateKeyCryptoKeyPrivate key to use
parametersCryptoEngineSignWithPrivateKeyParamsParameters for used algorithm

Returns

Promise<ArrayBuffer>

Overrides

AbstractCryptoEngine.signWithPrivateKey


stampDataWithPassword

stampDataWithPassword(parameters): Promise<ArrayBuffer>

Stamping (signing) data using algorithm similar to HMAC

Parameters

NameType
parametersCryptoEngineStampDataWithPasswordParams

Returns

Promise<ArrayBuffer>

Overrides

AbstractCryptoEngine.stampDataWithPassword


unwrapKey

unwrapKey(format, wrappedKey, unwrappingKey, unwrapAlgorithm, unwrappedKeyAlgorithm, extractable, keyUsages): Promise<CryptoKey>

MDN Reference

Parameters

NameType
formatKeyFormat
wrappedKeyBufferSource
unwrappingKeyCryptoKey
unwrapAlgorithmAesCbcParams | AesCtrParams | AesGcmParams | AlgorithmIdentifier | RsaOaepParams
unwrappedKeyAlgorithmAesKeyAlgorithm | EcKeyImportParams | AlgorithmIdentifier | HmacImportParams | RsaHashedImportParams
extractableboolean
keyUsagesKeyUsage[]

Returns

Promise<CryptoKey>

Inherited from

AbstractCryptoEngine.unwrapKey

unwrapKey(format, wrappedKey, unwrappingKey, unwrapAlgorithm, unwrappedKeyAlgorithm, extractable, keyUsages): Promise<CryptoKey>

MDN Reference

Parameters

NameType
formatKeyFormat
wrappedKeyBufferSource
unwrappingKeyCryptoKey
unwrapAlgorithmAesCbcParams | AesCtrParams | AesGcmParams | AlgorithmIdentifier | RsaOaepParams
unwrappedKeyAlgorithmAesKeyAlgorithm | EcKeyImportParams | AlgorithmIdentifier | HmacImportParams | RsaHashedImportParams
extractableboolean
keyUsagesIterable<KeyUsage>

Returns

Promise<CryptoKey>

Inherited from

AbstractCryptoEngine.unwrapKey


verify

verify(algorithm, key, signature, data): Promise<boolean>

MDN Reference

Parameters

NameType
algorithmEcdsaParams | AlgorithmIdentifier | RsaPssParams
keyCryptoKey
signatureBufferSource
dataBufferSource

Returns

Promise<boolean>

Inherited from

AbstractCryptoEngine.verify


verifyDataStampedWithPassword

verifyDataStampedWithPassword(parameters): Promise<boolean>

Parameters

NameType
parametersCryptoEngineVerifyDataStampedWithPasswordParams

Returns

Promise<boolean>

Overrides

AbstractCryptoEngine.verifyDataStampedWithPassword


verifyWithPublicKey

verifyWithPublicKey(data, signature, publicKeyInfo, signatureAlgorithm, shaAlgorithm?): Promise<boolean>

Verify data with the public key

Parameters

NameTypeDescription
dataBufferSourceData to be verified
signatureOctetString | BitStringSignature value
publicKeyInfoPublicKeyInfoPublic key information
signatureAlgorithmAlgorithmIdentifierSignature algorithm
shaAlgorithm?stringHash algorithm

Returns

Promise<boolean>

Overrides

AbstractCryptoEngine.verifyWithPublicKey


wrapKey

wrapKey(format, key, wrappingKey, wrapAlgorithm): Promise<ArrayBuffer>

MDN Reference

Parameters

NameType
formatKeyFormat
keyCryptoKey
wrappingKeyCryptoKey
wrapAlgorithmAesCbcParams | AesCtrParams | AesGcmParams | AlgorithmIdentifier | RsaOaepParams

Returns

Promise<ArrayBuffer>

Inherited from

AbstractCryptoEngine.wrapKey