webcrypto-core
Advanced tools
Comparing version 1.7.9 to 1.8.0
@@ -400,2 +400,16 @@ /*! | ||
declare abstract class X25519Provider extends ProviderCrypto { | ||
readonly name: string; | ||
usages: ProviderKeyUsages; | ||
checkAlgorithmParams(algorithm: EcdhKeyDeriveParams): void; | ||
abstract onDeriveBits(algorithm: EcdhKeyDeriveParams, baseKey: CryptoKey, length: number): Promise<ArrayBuffer>; | ||
} | ||
declare abstract class Ed25519Provider extends ProviderCrypto { | ||
readonly name: string; | ||
usages: ProviderKeyUsages; | ||
abstract onSign(algorithm: Algorithm, key: CryptoKey, data: ArrayBuffer, ...args: any[]): Promise<ArrayBuffer>; | ||
abstract onVerify(algorithm: Algorithm, key: CryptoKey, signature: ArrayBuffer, data: ArrayBuffer, ...args: any[]): Promise<boolean>; | ||
} | ||
declare abstract class HmacProvider extends ProviderCrypto { | ||
@@ -488,3 +502,3 @@ name: string; | ||
exportKey(format: KeyFormat, key: globalThis.CryptoKey, ...args: any[]): Promise<JsonWebKey | ArrayBuffer>; | ||
importKey(format: KeyFormat, keyData: JsonWebKey | BufferSource, algorithm: AlgorithmIdentifier, extractable: boolean, keyUsages: KeyUsage[], ...args: any[]): Promise<globalThis.CryptoKey>; | ||
importKey(...args: any[]): Promise<globalThis.CryptoKey>; | ||
wrapKey(format: KeyFormat, key: globalThis.CryptoKey, wrappingKey: globalThis.CryptoKey, wrapAlgorithm: AlgorithmIdentifier, ...args: any[]): Promise<ArrayBuffer>; | ||
@@ -919,2 +933,2 @@ unwrapKey(format: KeyFormat, wrappedKey: BufferSource, unwrappingKey: globalThis.CryptoKey, unwrapAlgorithm: AlgorithmIdentifier, unwrappedKeyAlgorithm: AlgorithmIdentifier, extractable: boolean, keyUsages: KeyUsage[], ...args: any[]): Promise<globalThis.CryptoKey>; | ||
export { AesCbcProvider, type AesCmacParams, AesCmacProvider, AesCtrProvider, AesEcbProvider, AesGcmProvider, AesKwProvider, AesProvider, AlgorithmError, Crypto$1 as Crypto, type CryptoCertificate, type CryptoCertificateFormat, type CryptoCertificateStorage, type CryptoCertificateType, CryptoError, CryptoKey$1 as CryptoKey, type CryptoKeyStorage, type CryptoStorage, type CryptoStorages, type CryptoX509Certificate, type CryptoX509CertificateRequest, type DesDerivedKeyParams, type DesImportParams, type DesKeyAlgorithm, type DesKeyGenParams, type DesParams, DesProvider, type EcCurve, type EcCurveParams, EcCurves, EcUtils, EcdhEsProvider, EcdhProvider, EcdsaProvider, EdDsaProvider, EllipticProvider, type HashedAlgorithm, type HexString, HkdfProvider, HmacProvider, type IProviderCheckOptions, type ImportAlgorithms, JwkUtils, type KeyAlgorithm, type KeyUsages, type NativeCrypto, type NativeCryptoKey, type NativeSubtleCrypto, OperationError, Pbkdf2Provider, PemConverter, ProviderCrypto, type ProviderKeyPairUsage, type ProviderKeyUsage, type ProviderKeyUsages, ProviderStorage, RequiredPropertyError, RsaOaepProvider, RsaProvider, RsaPssProvider, type RsaSsaParams, RsaSsaProvider, Shake128Provider, Shake256Provider, type ShakeParams, ShakeProvider, SubtleCrypto$1 as SubtleCrypto, UnsupportedOperationError, index$2 as asn1, isJWK, index as json }; | ||
export { AesCbcProvider, type AesCmacParams, AesCmacProvider, AesCtrProvider, AesEcbProvider, AesGcmProvider, AesKwProvider, AesProvider, AlgorithmError, Crypto$1 as Crypto, type CryptoCertificate, type CryptoCertificateFormat, type CryptoCertificateStorage, type CryptoCertificateType, CryptoError, CryptoKey$1 as CryptoKey, type CryptoKeyStorage, type CryptoStorage, type CryptoStorages, type CryptoX509Certificate, type CryptoX509CertificateRequest, type DesDerivedKeyParams, type DesImportParams, type DesKeyAlgorithm, type DesKeyGenParams, type DesParams, DesProvider, type EcCurve, type EcCurveParams, EcCurves, EcUtils, EcdhEsProvider, EcdhProvider, EcdsaProvider, Ed25519Provider, EdDsaProvider, EllipticProvider, type HashedAlgorithm, type HexString, HkdfProvider, HmacProvider, type IProviderCheckOptions, type ImportAlgorithms, JwkUtils, type KeyAlgorithm, type KeyUsages, type NativeCrypto, type NativeCryptoKey, type NativeSubtleCrypto, OperationError, Pbkdf2Provider, PemConverter, ProviderCrypto, type ProviderKeyPairUsage, type ProviderKeyUsage, type ProviderKeyUsages, ProviderStorage, RequiredPropertyError, RsaOaepProvider, RsaProvider, RsaPssProvider, type RsaSsaParams, RsaSsaProvider, Shake128Provider, Shake256Provider, type ShakeParams, ShakeProvider, SubtleCrypto$1 as SubtleCrypto, UnsupportedOperationError, X25519Provider, index$2 as asn1, isJWK, index as json }; |
@@ -1166,2 +1166,27 @@ /*! | ||
class X25519Provider extends ProviderCrypto { | ||
constructor() { | ||
super(...arguments); | ||
this.name = "X25519"; | ||
this.usages = { | ||
privateKey: ["deriveKey", "deriveBits"], | ||
publicKey: [], | ||
}; | ||
} | ||
checkAlgorithmParams(algorithm) { | ||
this.checkRequiredProperty(algorithm, "public"); | ||
} | ||
} | ||
class Ed25519Provider extends ProviderCrypto { | ||
constructor() { | ||
super(...arguments); | ||
this.name = "Ed25519"; | ||
this.usages = { | ||
privateKey: ["sign"], | ||
publicKey: ["verify"], | ||
}; | ||
} | ||
} | ||
class HmacProvider extends ProviderCrypto { | ||
@@ -1344,2 +1369,9 @@ constructor() { | ||
const keyFormatMap = { | ||
"jwk": ["private", "public", "secret"], | ||
"pkcs8": ["private"], | ||
"spki": ["public"], | ||
"raw": ["secret", "public"] | ||
}; | ||
const sourceBufferKeyFormats = ["pkcs8", "spki", "raw"]; | ||
class SubtleCrypto { | ||
@@ -1443,2 +1475,8 @@ constructor() { | ||
this.checkCryptoKey(key); | ||
if (!keyFormatMap[format]) { | ||
throw new TypeError("Invalid keyFormat argument"); | ||
} | ||
if (!keyFormatMap[format].includes(key.type)) { | ||
throw new DOMException("The key is not of the expected type"); | ||
} | ||
const provider = this.getProvider(key.algorithm.name); | ||
@@ -1453,11 +1491,15 @@ const result = await provider.exportKey(format, key, ...params); | ||
const provider = this.getProvider(preparedAlgorithm.name); | ||
if (["pkcs8", "spki", "raw"].indexOf(format) !== -1) { | ||
const preparedData = BufferSourceConverter.toArrayBuffer(keyData); | ||
return provider.importKey(format, preparedData, { ...preparedAlgorithm, name: provider.name }, extractable, keyUsages, ...params); | ||
if (format === "jwk") { | ||
if (typeof keyData !== "object" || !keyData.kty) { | ||
throw new TypeError("Key data must be an object for JWK import"); | ||
} | ||
} | ||
else { | ||
if (!keyData.kty) { | ||
throw new TypeError("keyData: Is not JSON"); | ||
else if (sourceBufferKeyFormats.includes(format)) { | ||
if (!BufferSourceConverter.isBufferSource(keyData)) { | ||
throw new TypeError("Key data must be a BufferSource for non-JWK formats"); | ||
} | ||
} | ||
else { | ||
throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView or JsonWebKey)'"); | ||
} | ||
return provider.importKey(format, keyData, { ...preparedAlgorithm, name: provider.name }, extractable, keyUsages, ...params); | ||
@@ -1546,2 +1588,2 @@ } | ||
export { AesCbcProvider, AesCmacProvider, AesCtrProvider, AesEcbProvider, AesGcmProvider, AesKwProvider, AesProvider, AlgorithmError, Crypto, CryptoError, CryptoKey, DesProvider, EcCurves, EcUtils, EcdhEsProvider, EcdhProvider, EcdsaProvider, EdDsaProvider, EllipticProvider, HkdfProvider, HmacProvider, JwkUtils, OperationError, Pbkdf2Provider, PemConverter, ProviderCrypto, ProviderStorage, RequiredPropertyError, RsaOaepProvider, RsaProvider, RsaPssProvider, RsaSsaProvider, Shake128Provider, Shake256Provider, ShakeProvider, SubtleCrypto, UnsupportedOperationError, index$1 as asn1, isJWK, index as json }; | ||
export { AesCbcProvider, AesCmacProvider, AesCtrProvider, AesEcbProvider, AesGcmProvider, AesKwProvider, AesProvider, AlgorithmError, Crypto, CryptoError, CryptoKey, DesProvider, EcCurves, EcUtils, EcdhEsProvider, EcdhProvider, EcdsaProvider, Ed25519Provider, EdDsaProvider, EllipticProvider, HkdfProvider, HmacProvider, JwkUtils, OperationError, Pbkdf2Provider, PemConverter, ProviderCrypto, ProviderStorage, RequiredPropertyError, RsaOaepProvider, RsaProvider, RsaPssProvider, RsaSsaProvider, Shake128Provider, Shake256Provider, ShakeProvider, SubtleCrypto, UnsupportedOperationError, X25519Provider, index$1 as asn1, isJWK, index as json }; |
@@ -1186,2 +1186,27 @@ /*! | ||
class X25519Provider extends ProviderCrypto { | ||
constructor() { | ||
super(...arguments); | ||
this.name = "X25519"; | ||
this.usages = { | ||
privateKey: ["deriveKey", "deriveBits"], | ||
publicKey: [], | ||
}; | ||
} | ||
checkAlgorithmParams(algorithm) { | ||
this.checkRequiredProperty(algorithm, "public"); | ||
} | ||
} | ||
class Ed25519Provider extends ProviderCrypto { | ||
constructor() { | ||
super(...arguments); | ||
this.name = "Ed25519"; | ||
this.usages = { | ||
privateKey: ["sign"], | ||
publicKey: ["verify"], | ||
}; | ||
} | ||
} | ||
class HmacProvider extends ProviderCrypto { | ||
@@ -1364,2 +1389,9 @@ constructor() { | ||
const keyFormatMap = { | ||
"jwk": ["private", "public", "secret"], | ||
"pkcs8": ["private"], | ||
"spki": ["public"], | ||
"raw": ["secret", "public"] | ||
}; | ||
const sourceBufferKeyFormats = ["pkcs8", "spki", "raw"]; | ||
class SubtleCrypto { | ||
@@ -1463,2 +1495,8 @@ constructor() { | ||
this.checkCryptoKey(key); | ||
if (!keyFormatMap[format]) { | ||
throw new TypeError("Invalid keyFormat argument"); | ||
} | ||
if (!keyFormatMap[format].includes(key.type)) { | ||
throw new DOMException("The key is not of the expected type"); | ||
} | ||
const provider = this.getProvider(key.algorithm.name); | ||
@@ -1473,11 +1511,15 @@ const result = await provider.exportKey(format, key, ...params); | ||
const provider = this.getProvider(preparedAlgorithm.name); | ||
if (["pkcs8", "spki", "raw"].indexOf(format) !== -1) { | ||
const preparedData = pvtsutils.BufferSourceConverter.toArrayBuffer(keyData); | ||
return provider.importKey(format, preparedData, { ...preparedAlgorithm, name: provider.name }, extractable, keyUsages, ...params); | ||
if (format === "jwk") { | ||
if (typeof keyData !== "object" || !keyData.kty) { | ||
throw new TypeError("Key data must be an object for JWK import"); | ||
} | ||
} | ||
else { | ||
if (!keyData.kty) { | ||
throw new TypeError("keyData: Is not JSON"); | ||
else if (sourceBufferKeyFormats.includes(format)) { | ||
if (!pvtsutils.BufferSourceConverter.isBufferSource(keyData)) { | ||
throw new TypeError("Key data must be a BufferSource for non-JWK formats"); | ||
} | ||
} | ||
else { | ||
throw new TypeError("The provided value is not of type '(ArrayBuffer or ArrayBufferView or JsonWebKey)'"); | ||
} | ||
return provider.importKey(format, keyData, { ...preparedAlgorithm, name: provider.name }, extractable, keyUsages, ...params); | ||
@@ -1587,2 +1629,3 @@ } | ||
exports.EcdsaProvider = EcdsaProvider; | ||
exports.Ed25519Provider = Ed25519Provider; | ||
exports.EdDsaProvider = EdDsaProvider; | ||
@@ -1608,4 +1651,5 @@ exports.EllipticProvider = EllipticProvider; | ||
exports.UnsupportedOperationError = UnsupportedOperationError; | ||
exports.X25519Provider = X25519Provider; | ||
exports.asn1 = index$1; | ||
exports.isJWK = isJWK; | ||
exports.json = index; |
{ | ||
"name": "webcrypto-core", | ||
"version": "1.7.9", | ||
"version": "1.8.0", | ||
"description": "Common layer to be used by crypto libraries based on WebCrypto API for input validation.", | ||
@@ -49,15 +49,15 @@ "main": "build/webcrypto-core.js", | ||
"@types/mocha": "^10.0.6", | ||
"@types/node": "^20.11.5", | ||
"@types/node": "^20.12.12", | ||
"@typescript-eslint/eslint-plugin": "^7.11.0", | ||
"@typescript-eslint/parser": "^7.11.0", | ||
"coveralls": "^3.1.1", | ||
"@typescript-eslint/eslint-plugin": "^6.17.0", | ||
"@typescript-eslint/parser": "^6.17.0", | ||
"eslint": "^8.56.0", | ||
"mocha": "^10.2.0", | ||
"eslint": "^8.57.0", | ||
"mocha": "^10.4.0", | ||
"nyc": "^15.1.0", | ||
"rimraf": "^5.0.5", | ||
"rollup": "^4.9.6", | ||
"rollup-plugin-dts": "^6.1.0", | ||
"rimraf": "^5.0.7", | ||
"rollup": "^4.18.0", | ||
"rollup-plugin-dts": "^6.1.1", | ||
"rollup-plugin-typescript2": "^0.36.0", | ||
"ts-node": "^10.9.2", | ||
"typescript": "^5.3.3" | ||
"typescript": "^5.4.5" | ||
}, | ||
@@ -64,0 +64,0 @@ "author": "PeculiarVentures", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
164215
3982