@sphereon/ssi-sdk-ext.key-utils 0.26.1-next.9 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/conversion.d.ts.map +1 -1
- package/dist/conversion.js +3 -2
- package/dist/conversion.js.map +1 -1
- package/dist/digest-methods.d.ts +3 -1
- package/dist/digest-methods.d.ts.map +1 -1
- package/dist/digest-methods.js +18 -7
- package/dist/digest-methods.js.map +1 -1
- package/dist/functions.d.ts +18 -3
- package/dist/functions.d.ts.map +1 -1
- package/dist/functions.js +275 -35
- package/dist/functions.js.map +1 -1
- package/dist/jwk-jcs.d.ts +14 -22
- package/dist/jwk-jcs.d.ts.map +1 -1
- package/dist/jwk-jcs.js +18 -14
- package/dist/jwk-jcs.js.map +1 -1
- package/dist/types/key-util-types.d.ts +5 -3
- package/dist/types/key-util-types.d.ts.map +1 -1
- package/package.json +6 -5
- package/src/conversion.ts +5 -4
- package/src/digest-methods.ts +15 -3
- package/src/functions.ts +317 -52
- package/src/jwk-jcs.ts +21 -13
- package/src/types/key-util-types.ts +5 -3
package/dist/conversion.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversion.d.ts","sourceRoot":"","sources":["../src/conversion.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,uBAAuB,EACvB,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,sBAAsB,EACtB,4BAA4B,EAC5B,GAAG,EACH,UAAU,EACV,gBAAgB,EACjB,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"conversion.d.ts","sourceRoot":"","sources":["../src/conversion.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,uBAAuB,EACvB,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,sBAAsB,EACtB,4BAA4B,EAC5B,GAAG,EACH,UAAU,EACV,gBAAgB,EACjB,MAAM,qBAAqB,CAAA;AAG5B,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,GAAG,CAWvD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,YAAY,CAWnD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,YAAY,GAAG,UAAU,CAa3D;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,gBAAgB,GAAG,YAAY,CAa9E;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,uBAAuB,GAAG,sBAAsB,CA2B/F;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,GAAG,4BAA4B,GAAG,uBAAuB,CA2B9H;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,GAAG,sBAAsB,GAAG,iBAAiB,CAqB1G;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,iBAAiB,GAAG,gBAAgB,CAqBjF;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,eAAe,GAAG,UAAU,CAqB9E;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,CAqB5D"}
|
package/dist/conversion.js
CHANGED
|
@@ -22,13 +22,14 @@ exports.coseToJoseKeyOperation = coseToJoseKeyOperation;
|
|
|
22
22
|
exports.joseToCoseCurve = joseToCoseCurve;
|
|
23
23
|
exports.coseToJoseCurve = coseToJoseCurve;
|
|
24
24
|
const ssi_types_1 = require("@sphereon/ssi-types");
|
|
25
|
+
const functions_1 = require("./functions");
|
|
25
26
|
function coseKeyToJwk(coseKey) {
|
|
26
27
|
const { x5chain, key_ops, crv, alg, baseIV, kty } = coseKey, rest = __rest(coseKey, ["x5chain", "key_ops", "crv", "alg", "baseIV", "kty"]);
|
|
27
|
-
return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, rest), { kty: coseToJoseKty(kty) }), (crv && { crv: coseToJoseCurve(crv) })), (key_ops && { key_ops: key_ops.map(coseToJoseKeyOperation) })), (alg && { alg: coseToJoseSignatureAlg(alg) })), (baseIV && { iv: baseIV })), (x5chain && { x5c: x5chain }));
|
|
28
|
+
return (0, functions_1.removeNulls)(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, rest), { kty: coseToJoseKty(kty) }), (crv && { crv: coseToJoseCurve(crv) })), (key_ops && { key_ops: key_ops.map(coseToJoseKeyOperation) })), (alg && { alg: coseToJoseSignatureAlg(alg) })), (baseIV && { iv: baseIV })), (x5chain && { x5c: x5chain })));
|
|
28
29
|
}
|
|
29
30
|
function jwkToCoseKey(jwk) {
|
|
30
31
|
const { x5c, key_ops, crv, alg, iv, kty } = jwk, rest = __rest(jwk, ["x5c", "key_ops", "crv", "alg", "iv", "kty"]);
|
|
31
|
-
return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, rest), { kty: joseToCoseKty(kty) }), (crv && { crv: joseToCoseCurve(crv) })), (key_ops && { key_ops: key_ops.map(joseToCoseKeyOperation) })), (alg && { alg: joseToCoseSignatureAlg(alg) })), (iv && { baseIV: iv })), (x5c && { x5chain: x5c }));
|
|
32
|
+
return (0, functions_1.removeNulls)(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, rest), { kty: joseToCoseKty(kty) }), (crv && { crv: joseToCoseCurve(crv) })), (key_ops && { key_ops: key_ops.map(joseToCoseKeyOperation) })), (alg && { alg: joseToCoseSignatureAlg(alg) })), (iv && { baseIV: iv })), (x5c && { x5chain: x5c })));
|
|
32
33
|
}
|
|
33
34
|
function coseToJoseKty(kty) {
|
|
34
35
|
switch (kty) {
|
package/dist/conversion.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversion.js","sourceRoot":"","sources":["../src/conversion.ts"],"names":[],"mappings":";;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"conversion.js","sourceRoot":"","sources":["../src/conversion.ts"],"names":[],"mappings":"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"}
|
package/dist/digest-methods.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { Hasher } from '@sphereon/ssi-types';
|
|
1
2
|
import { SupportedEncodings } from 'uint8arrays/to-string';
|
|
2
|
-
export type HashAlgorithm = 'SHA-256' | 'SHA-512';
|
|
3
|
+
export type HashAlgorithm = 'SHA-256' | 'SHA-384' | 'SHA-512';
|
|
3
4
|
export type TDigestMethod = (input: string, encoding?: SupportedEncodings) => string;
|
|
4
5
|
export declare const digestMethodParams: (hashAlgorithm: HashAlgorithm) => {
|
|
5
6
|
hashAlgorithm: HashAlgorithm;
|
|
6
7
|
digestMethod: TDigestMethod;
|
|
7
8
|
hash: (data: Uint8Array) => Uint8Array;
|
|
8
9
|
};
|
|
10
|
+
export declare const shaHasher: Hasher;
|
|
9
11
|
//# sourceMappingURL=digest-methods.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"digest-methods.d.ts","sourceRoot":"","sources":["../src/digest-methods.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"digest-methods.d.ts","sourceRoot":"","sources":["../src/digest-methods.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAE1D,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAA;AAC7D,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,kBAAkB,KAAK,MAAM,CAAA;AAEpF,eAAO,MAAM,kBAAkB,kBACd,aAAa,KAC3B;IAAE,aAAa,EAAE,aAAa,CAAC;IAAC,YAAY,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,UAAU,CAAA;CAQrG,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,MAGvB,CAAA"}
|
package/dist/digest-methods.js
CHANGED
|
@@ -23,24 +23,35 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.digestMethodParams = void 0;
|
|
27
|
-
const sha256_1 = require("@
|
|
28
|
-
const sha512_1 = require("@
|
|
26
|
+
exports.shaHasher = exports.digestMethodParams = void 0;
|
|
27
|
+
const sha256_1 = require("@noble/hashes/sha256");
|
|
28
|
+
const sha512_1 = require("@noble/hashes/sha512");
|
|
29
29
|
const u8a = __importStar(require("uint8arrays"));
|
|
30
30
|
const digestMethodParams = (hashAlgorithm) => {
|
|
31
31
|
if (hashAlgorithm === 'SHA-256') {
|
|
32
|
-
return { hashAlgorithm: 'SHA-256', digestMethod: sha256DigestMethod, hash: sha256_1.
|
|
32
|
+
return { hashAlgorithm: 'SHA-256', digestMethod: sha256DigestMethod, hash: sha256_1.sha256 };
|
|
33
|
+
}
|
|
34
|
+
else if (hashAlgorithm === 'SHA-384') {
|
|
35
|
+
return { hashAlgorithm: 'SHA-384', digestMethod: sha384DigestMethod, hash: sha512_1.sha384 };
|
|
33
36
|
}
|
|
34
37
|
else {
|
|
35
|
-
return { hashAlgorithm: 'SHA-512', digestMethod: sha512DigestMethod, hash: sha512_1.
|
|
38
|
+
return { hashAlgorithm: 'SHA-512', digestMethod: sha512DigestMethod, hash: sha512_1.sha512 };
|
|
36
39
|
}
|
|
37
40
|
};
|
|
38
41
|
exports.digestMethodParams = digestMethodParams;
|
|
42
|
+
const shaHasher = (input, alg) => {
|
|
43
|
+
const hashAlgorithm = alg.includes('384') ? 'SHA-384' : alg.includes('512') ? 'SHA-512' : 'SHA-256';
|
|
44
|
+
return (0, exports.digestMethodParams)(hashAlgorithm).hash(u8a.fromString(input, 'utf-8'));
|
|
45
|
+
};
|
|
46
|
+
exports.shaHasher = shaHasher;
|
|
39
47
|
const sha256DigestMethod = (input, encoding = 'base16') => {
|
|
40
|
-
return u8a.toString((0, sha256_1.
|
|
48
|
+
return u8a.toString((0, sha256_1.sha256)(u8a.fromString(input, 'utf-8')), encoding);
|
|
49
|
+
};
|
|
50
|
+
const sha384DigestMethod = (input, encoding = 'base16') => {
|
|
51
|
+
return u8a.toString((0, sha512_1.sha384)(u8a.fromString(input, 'utf-8')), encoding);
|
|
41
52
|
};
|
|
42
53
|
const sha512DigestMethod = (input, encoding = 'base16') => {
|
|
43
|
-
return u8a.toString((0, sha512_1.
|
|
54
|
+
return u8a.toString((0, sha512_1.sha512)(u8a.fromString(input, 'utf-8')), encoding);
|
|
44
55
|
};
|
|
45
56
|
/*
|
|
46
57
|
// PKCS#1 (PSS) mask generation function
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"digest-methods.js","sourceRoot":"","sources":["../src/digest-methods.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"digest-methods.js","sourceRoot":"","sources":["../src/digest-methods.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA6C;AAC7C,iDAAqD;AAErD,iDAAkC;AAM3B,MAAM,kBAAkB,GAAG,CAChC,aAA4B,EAC2E,EAAE;IACzG,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,kBAAkB,EAAE,IAAI,EAAE,eAAM,EAAE,CAAA;IACrF,CAAC;SAAM,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,kBAAkB,EAAE,IAAI,EAAE,eAAM,EAAE,CAAA;IACrF,CAAC;SAAM,CAAC;QACN,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,kBAAkB,EAAE,IAAI,EAAE,eAAM,EAAE,CAAA;IACrF,CAAC;AACH,CAAC,CAAA;AAVY,QAAA,kBAAkB,sBAU9B;AAEM,MAAM,SAAS,GAAW,CAAC,KAAa,EAAE,GAAW,EAAc,EAAE;IAC1E,MAAM,aAAa,GAAkB,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;IAClH,OAAO,IAAA,0BAAkB,EAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;AAC/E,CAAC,CAAA;AAHY,QAAA,SAAS,aAGrB;AAED,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAE,WAA+B,QAAQ,EAAU,EAAE;IAC5F,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAA,eAAM,EAAC,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;AACvE,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAE,WAA+B,QAAQ,EAAU,EAAE;IAC5F,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAA,eAAM,EAAC,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;AACvE,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAE,WAA+B,QAAQ,EAAU,EAAE;IAC5F,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAA,eAAM,EAAC,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;AACvE,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BE"}
|
package/dist/functions.d.ts
CHANGED
|
@@ -56,6 +56,13 @@ export declare const toJwk: (publicKeyHex: string, type: TKeyType, opts?: {
|
|
|
56
56
|
isPrivateKey?: boolean;
|
|
57
57
|
noKidThumbprint?: boolean;
|
|
58
58
|
}) => JWK;
|
|
59
|
+
/**
|
|
60
|
+
* Convert a JWK to a raw hex key.
|
|
61
|
+
* Currently supports `RSA` and `EC` keys. Extendable for other key types.
|
|
62
|
+
* @param jwk - The JSON Web Key object.
|
|
63
|
+
* @returns A string representing the key in raw hexadecimal format.
|
|
64
|
+
*/
|
|
65
|
+
export declare const jwkToRawHexKey: (jwk: JWK) => Promise<string>;
|
|
59
66
|
/**
|
|
60
67
|
* Determines the use param based upon the key/signature type or supplied use value.
|
|
61
68
|
*
|
|
@@ -76,10 +83,18 @@ export declare const hexStringFromUint8Array: (value: Uint8Array) => string;
|
|
|
76
83
|
export declare const signatureAlgorithmFromKey: (args: SignatureAlgorithmFromKeyArgs) => Promise<JoseSignatureAlgorithm>;
|
|
77
84
|
export declare const signatureAlgorithmFromKeyType: (args: SignatureAlgorithmFromKeyTypeArgs) => JoseSignatureAlgorithm;
|
|
78
85
|
export declare const keyTypeFromCryptographicSuite: (args: KeyTypeFromCryptographicSuiteArgs) => TKeyType;
|
|
79
|
-
export declare function
|
|
86
|
+
export declare function removeNulls<T>(obj: T | any): any;
|
|
87
|
+
export declare const globalCrypto: (setGlobal: boolean, suppliedCrypto?: Crypto) => Crypto;
|
|
88
|
+
export declare const sanitizedJwk: (input: JWK | JsonWebKey) => JWK;
|
|
89
|
+
/**
|
|
90
|
+
*
|
|
91
|
+
*/
|
|
92
|
+
export declare function verifyRawSignature({ data, signature, key: inputKey, opts, }: {
|
|
80
93
|
data: Uint8Array;
|
|
81
94
|
signature: Uint8Array;
|
|
82
|
-
key:
|
|
83
|
-
|
|
95
|
+
key: JWK;
|
|
96
|
+
opts?: {
|
|
97
|
+
signatureAlg?: JoseSignatureAlgorithm;
|
|
98
|
+
};
|
|
84
99
|
}): Promise<boolean>;
|
|
85
100
|
//# sourceMappingURL=functions.d.ts.map
|
package/dist/functions.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"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"}
|
package/dist/functions.js
CHANGED
|
@@ -35,16 +35,29 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
35
35
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
36
|
};
|
|
37
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
-
exports.keyTypeFromCryptographicSuite = exports.signatureAlgorithmFromKeyType = exports.signatureAlgorithmFromKey = exports.hexStringFromUint8Array = exports.toRawCompressedHexPublicKey = exports.isRawCompressedPublicKey = exports.asn1DerToRawPublicKey = exports.isAsn1Der = exports.padLeft = exports.jwkDetermineUse = exports.toJwk = exports.toJwkFromKey = exports.calculateJwkThumbprint = exports.toBase64url = exports.calculateJwkThumbprintForKey = exports.generatePrivateKeyHex = exports.getKms = exports.logger = void 0;
|
|
38
|
+
exports.sanitizedJwk = exports.globalCrypto = exports.keyTypeFromCryptographicSuite = exports.signatureAlgorithmFromKeyType = exports.signatureAlgorithmFromKey = exports.hexStringFromUint8Array = exports.toRawCompressedHexPublicKey = exports.isRawCompressedPublicKey = exports.asn1DerToRawPublicKey = exports.isAsn1Der = exports.padLeft = exports.jwkDetermineUse = exports.jwkToRawHexKey = exports.toJwk = exports.toJwkFromKey = exports.calculateJwkThumbprint = exports.toBase64url = exports.calculateJwkThumbprintForKey = exports.generatePrivateKeyHex = exports.getKms = exports.logger = void 0;
|
|
39
39
|
exports.importProvidedOrGeneratedKey = importProvidedOrGeneratedKey;
|
|
40
|
-
exports.
|
|
40
|
+
exports.removeNulls = removeNulls;
|
|
41
|
+
exports.verifyRawSignature = verifyRawSignature;
|
|
41
42
|
const random_1 = require("@ethersproject/random");
|
|
43
|
+
// Do not change these require statements to imports before we change to ESM. Breaks external CJS packages depending on this module
|
|
44
|
+
const bls12_381_1 = require("@noble/curves/bls12-381");
|
|
45
|
+
const ed25519_1 = require("@noble/curves/ed25519");
|
|
46
|
+
const p256_1 = require("@noble/curves/p256");
|
|
47
|
+
const p384_1 = require("@noble/curves/p384");
|
|
48
|
+
const p521_1 = require("@noble/curves/p521");
|
|
49
|
+
const secp256k1_1 = require("@noble/curves/secp256k1");
|
|
50
|
+
const sha256_1 = require("@noble/hashes/sha256");
|
|
51
|
+
const sha512_1 = require("@noble/hashes/sha512");
|
|
42
52
|
const ssi_sdk_ext_x509_utils_1 = require("@sphereon/ssi-sdk-ext.x509-utils");
|
|
43
53
|
const ssi_types_1 = require("@sphereon/ssi-types");
|
|
44
|
-
const
|
|
54
|
+
const ed25519_2 = require("@stablelib/ed25519");
|
|
55
|
+
const debug_1 = __importDefault(require("debug"));
|
|
45
56
|
const elliptic_1 = __importDefault(require("elliptic"));
|
|
57
|
+
const rsa = __importStar(require("micro-rsa-dsa-dh/rsa.js"));
|
|
46
58
|
const u8a = __importStar(require("uint8arrays"));
|
|
47
59
|
const digest_methods_1 = require("./digest-methods");
|
|
60
|
+
const jwk_jcs_1 = require("./jwk-jcs");
|
|
48
61
|
const types_1 = require("./types");
|
|
49
62
|
exports.logger = ssi_types_1.Loggers.DEFAULT.get('sphereon:key-utils');
|
|
50
63
|
/**
|
|
@@ -71,7 +84,7 @@ exports.getKms = getKms;
|
|
|
71
84
|
const generatePrivateKeyHex = (type) => __awaiter(void 0, void 0, void 0, function* () {
|
|
72
85
|
switch (type) {
|
|
73
86
|
case 'Ed25519': {
|
|
74
|
-
const keyPairEd25519 = (0,
|
|
87
|
+
const keyPairEd25519 = (0, ed25519_2.generateKeyPair)();
|
|
75
88
|
return u8a.toString(keyPairEd25519.secretKey, 'base16');
|
|
76
89
|
}
|
|
77
90
|
// The Secp256 types use the same method to generate the key
|
|
@@ -168,7 +181,8 @@ exports.toBase64url = toBase64url;
|
|
|
168
181
|
* @param args
|
|
169
182
|
*/
|
|
170
183
|
const calculateJwkThumbprint = (args) => {
|
|
171
|
-
const {
|
|
184
|
+
const { digestAlgorithm = 'sha256' } = args;
|
|
185
|
+
const jwk = (0, exports.sanitizedJwk)(args.jwk);
|
|
172
186
|
let components;
|
|
173
187
|
switch (jwk.kty) {
|
|
174
188
|
case 'EC':
|
|
@@ -240,9 +254,93 @@ const toJwk = (publicKeyHex, type, opts) => {
|
|
|
240
254
|
if (!jwk.kid && !noKidThumbprint) {
|
|
241
255
|
jwk['kid'] = (0, exports.calculateJwkThumbprint)({ jwk });
|
|
242
256
|
}
|
|
243
|
-
return jwk;
|
|
257
|
+
return (0, exports.sanitizedJwk)(jwk);
|
|
244
258
|
};
|
|
245
259
|
exports.toJwk = toJwk;
|
|
260
|
+
/**
|
|
261
|
+
* Convert a JWK to a raw hex key.
|
|
262
|
+
* Currently supports `RSA` and `EC` keys. Extendable for other key types.
|
|
263
|
+
* @param jwk - The JSON Web Key object.
|
|
264
|
+
* @returns A string representing the key in raw hexadecimal format.
|
|
265
|
+
*/
|
|
266
|
+
const jwkToRawHexKey = (jwk) => __awaiter(void 0, void 0, void 0, function* () {
|
|
267
|
+
// TODO: Probably makes sense to have an option to do the same for private keys
|
|
268
|
+
jwk = (0, exports.sanitizedJwk)(jwk);
|
|
269
|
+
if (jwk.kty === 'RSA') {
|
|
270
|
+
return rsaJwkToRawHexKey(jwk);
|
|
271
|
+
}
|
|
272
|
+
else if (jwk.kty === 'EC') {
|
|
273
|
+
return ecJwkToRawHexKey(jwk);
|
|
274
|
+
}
|
|
275
|
+
else if (jwk.kty === 'OKP') {
|
|
276
|
+
return okpJwkToRawHexKey(jwk);
|
|
277
|
+
}
|
|
278
|
+
else if (jwk.kty === 'oct') {
|
|
279
|
+
return octJwkToRawHexKey(jwk);
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
282
|
+
throw new Error(`Unsupported key type: ${jwk.kty}`);
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
exports.jwkToRawHexKey = jwkToRawHexKey;
|
|
286
|
+
/**
|
|
287
|
+
* Convert an RSA JWK to a raw hex key.
|
|
288
|
+
* @param jwk - The RSA JWK object.
|
|
289
|
+
* @returns A string representing the RSA key in raw hexadecimal format.
|
|
290
|
+
*/
|
|
291
|
+
function rsaJwkToRawHexKey(jwk) {
|
|
292
|
+
jwk = (0, exports.sanitizedJwk)(jwk);
|
|
293
|
+
if (!jwk.n || !jwk.e) {
|
|
294
|
+
throw new Error("RSA JWK must contain 'n' and 'e' properties.");
|
|
295
|
+
}
|
|
296
|
+
// We are converting from base64 to base64url to be sure. The spec uses base64url, but in the wild we sometimes encounter a base64 string
|
|
297
|
+
const modulus = u8a.fromString(jwk.n.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, ''), 'base64url'); // 'n' is the modulus
|
|
298
|
+
const exponent = u8a.fromString(jwk.e.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, ''), 'base64url'); // 'e' is the exponent
|
|
299
|
+
return u8a.toString(modulus, 'hex') + u8a.toString(exponent, 'hex');
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Convert an EC JWK to a raw hex key.
|
|
303
|
+
* @param jwk - The EC JWK object.
|
|
304
|
+
* @returns A string representing the EC key in raw hexadecimal format.
|
|
305
|
+
*/
|
|
306
|
+
function ecJwkToRawHexKey(jwk) {
|
|
307
|
+
jwk = (0, exports.sanitizedJwk)(jwk);
|
|
308
|
+
if (!jwk.x || !jwk.y) {
|
|
309
|
+
throw new Error("EC JWK must contain 'x' and 'y' properties.");
|
|
310
|
+
}
|
|
311
|
+
// We are converting from base64 to base64url to be sure. The spec uses base64url, but in the wild we sometimes encounter a base64 string
|
|
312
|
+
const x = u8a.fromString(jwk.x.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, ''), 'base64url');
|
|
313
|
+
const y = u8a.fromString(jwk.y.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, ''), 'base64url');
|
|
314
|
+
return '04' + u8a.toString(x, 'hex') + u8a.toString(y, 'hex');
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Convert an EC JWK to a raw hex key.
|
|
318
|
+
* @param jwk - The EC JWK object.
|
|
319
|
+
* @returns A string representing the EC key in raw hexadecimal format.
|
|
320
|
+
*/
|
|
321
|
+
function okpJwkToRawHexKey(jwk) {
|
|
322
|
+
jwk = (0, exports.sanitizedJwk)(jwk);
|
|
323
|
+
if (!jwk.x) {
|
|
324
|
+
throw new Error("OKP JWK must contain 'x' property.");
|
|
325
|
+
}
|
|
326
|
+
// We are converting from base64 to base64url to be sure. The spec uses base64url, but in the wild we sometimes encounter a base64 string
|
|
327
|
+
const x = u8a.fromString(jwk.x.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, ''), 'base64url');
|
|
328
|
+
return u8a.toString(x, 'hex');
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Convert an octet JWK to a raw hex key.
|
|
332
|
+
* @param jwk - The octet JWK object.
|
|
333
|
+
* @returns A string representing the octet key in raw hexadecimal format.
|
|
334
|
+
*/
|
|
335
|
+
function octJwkToRawHexKey(jwk) {
|
|
336
|
+
jwk = (0, exports.sanitizedJwk)(jwk);
|
|
337
|
+
if (!jwk.k) {
|
|
338
|
+
throw new Error("Octet JWK must contain 'k' property.");
|
|
339
|
+
}
|
|
340
|
+
// We are converting from base64 to base64url to be sure. The spec uses base64url, but in the wild we sometimes encounter a base64 string
|
|
341
|
+
const key = u8a.fromString(jwk.k.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, ''), 'base64url');
|
|
342
|
+
return u8a.toString(key, 'hex');
|
|
343
|
+
}
|
|
246
344
|
/**
|
|
247
345
|
* Determines the use param based upon the key/signature type or supplied use value.
|
|
248
346
|
*
|
|
@@ -294,7 +392,7 @@ const toSecp256k1Jwk = (keyHex, opts) => {
|
|
|
294
392
|
const keyBytes = u8a.fromString(keyHex, 'base16');
|
|
295
393
|
const keyPair = (opts === null || opts === void 0 ? void 0 : opts.isPrivateKey) ? secp256k1.keyFromPrivate(keyBytes) : secp256k1.keyFromPublic(keyBytes);
|
|
296
394
|
const pubPoint = keyPair.getPublic();
|
|
297
|
-
return Object.assign(Object.assign(Object.assign({ alg: ssi_types_1.JoseSignatureAlgorithm.ES256K }, (use !== undefined && { use })), { kty: ssi_types_1.JwkKeyType.EC, crv: ssi_types_1.JoseCurve.secp256k1, x: (0, ssi_sdk_ext_x509_utils_1.hexToBase64)(pubPoint.getX().toString('hex'), 'base64url'), y: (0, ssi_sdk_ext_x509_utils_1.hexToBase64)(pubPoint.getY().toString('hex'), 'base64url') }), ((opts === null || opts === void 0 ? void 0 : opts.isPrivateKey) && { d: (0, ssi_sdk_ext_x509_utils_1.hexToBase64)(keyPair.getPrivate('hex'), 'base64url') }));
|
|
395
|
+
return (0, exports.sanitizedJwk)(Object.assign(Object.assign(Object.assign({ alg: ssi_types_1.JoseSignatureAlgorithm.ES256K }, (use !== undefined && { use })), { kty: ssi_types_1.JwkKeyType.EC, crv: ssi_types_1.JoseCurve.secp256k1, x: (0, ssi_sdk_ext_x509_utils_1.hexToBase64)(pubPoint.getX().toString('hex'), 'base64url'), y: (0, ssi_sdk_ext_x509_utils_1.hexToBase64)(pubPoint.getY().toString('hex'), 'base64url') }), ((opts === null || opts === void 0 ? void 0 : opts.isPrivateKey) && { d: (0, ssi_sdk_ext_x509_utils_1.hexToBase64)(keyPair.getPrivate('hex'), 'base64url') })));
|
|
298
396
|
};
|
|
299
397
|
/**
|
|
300
398
|
* Generates a JWK from a Secp256r1 public key
|
|
@@ -316,7 +414,7 @@ const toSecp256r1Jwk = (keyHex, opts) => {
|
|
|
316
414
|
exports.logger.debug(`keyBytes length: ${keyBytes}`);
|
|
317
415
|
const keyPair = (opts === null || opts === void 0 ? void 0 : opts.isPrivateKey) ? secp256r1.keyFromPrivate(keyBytes) : secp256r1.keyFromPublic(keyBytes);
|
|
318
416
|
const pubPoint = keyPair.getPublic();
|
|
319
|
-
return Object.assign(Object.assign(Object.assign({ alg: ssi_types_1.JoseSignatureAlgorithm.ES256 }, (use !== undefined && { use })), { kty: ssi_types_1.JwkKeyType.EC, crv: ssi_types_1.JoseCurve.P_256, x: (0, ssi_sdk_ext_x509_utils_1.hexToBase64)(pubPoint.getX().toString('hex'), 'base64url'), y: (0, ssi_sdk_ext_x509_utils_1.hexToBase64)(pubPoint.getY().toString('hex'), 'base64url') }), ((opts === null || opts === void 0 ? void 0 : opts.isPrivateKey) && { d: (0, ssi_sdk_ext_x509_utils_1.hexToBase64)(keyPair.getPrivate('hex'), 'base64url') }));
|
|
417
|
+
return (0, exports.sanitizedJwk)(Object.assign(Object.assign(Object.assign({ alg: ssi_types_1.JoseSignatureAlgorithm.ES256 }, (use !== undefined && { use })), { kty: ssi_types_1.JwkKeyType.EC, crv: ssi_types_1.JoseCurve.P_256, x: (0, ssi_sdk_ext_x509_utils_1.hexToBase64)(pubPoint.getX().toString('hex'), 'base64url'), y: (0, ssi_sdk_ext_x509_utils_1.hexToBase64)(pubPoint.getY().toString('hex'), 'base64url') }), ((opts === null || opts === void 0 ? void 0 : opts.isPrivateKey) && { d: (0, ssi_sdk_ext_x509_utils_1.hexToBase64)(keyPair.getPrivate('hex'), 'base64url') })));
|
|
320
418
|
};
|
|
321
419
|
/**
|
|
322
420
|
* Generates a JWK from an Ed25519/X25519 public key
|
|
@@ -328,18 +426,31 @@ const toEd25519OrX25519Jwk = (publicKeyHex, opts) => {
|
|
|
328
426
|
var _a;
|
|
329
427
|
assertProperKeyLength(publicKeyHex, 64);
|
|
330
428
|
const { use } = opts !== null && opts !== void 0 ? opts : {};
|
|
331
|
-
return Object.assign(Object.assign({ alg: ssi_types_1.JoseSignatureAlgorithm.EdDSA }, (use !== undefined && { use })), { kty: ssi_types_1.JwkKeyType.OKP, crv: (_a = opts === null || opts === void 0 ? void 0 : opts.crv) !== null && _a !== void 0 ? _a : ssi_types_1.JoseCurve.Ed25519, x: (0, ssi_sdk_ext_x509_utils_1.hexToBase64)(publicKeyHex, 'base64url') });
|
|
429
|
+
return (0, exports.sanitizedJwk)(Object.assign(Object.assign({ alg: ssi_types_1.JoseSignatureAlgorithm.EdDSA }, (use !== undefined && { use })), { kty: ssi_types_1.JwkKeyType.OKP, crv: (_a = opts === null || opts === void 0 ? void 0 : opts.crv) !== null && _a !== void 0 ? _a : ssi_types_1.JoseCurve.Ed25519, x: (0, ssi_sdk_ext_x509_utils_1.hexToBase64)(publicKeyHex, 'base64url') }));
|
|
332
430
|
};
|
|
333
431
|
const toRSAJwk = (publicKeyHex, opts) => {
|
|
334
|
-
var _a, _b
|
|
335
|
-
const
|
|
432
|
+
var _a, _b;
|
|
433
|
+
const meta = (_a = opts === null || opts === void 0 ? void 0 : opts.key) === null || _a === void 0 ? void 0 : _a.meta;
|
|
434
|
+
if ((meta === null || meta === void 0 ? void 0 : meta.publicKeyJwk) || (meta === null || meta === void 0 ? void 0 : meta.publicKeyPEM)) {
|
|
435
|
+
if (meta === null || meta === void 0 ? void 0 : meta.publicKeyJwk) {
|
|
436
|
+
return meta.publicKeyJwk;
|
|
437
|
+
}
|
|
438
|
+
const publicKeyPEM = (_b = meta === null || meta === void 0 ? void 0 : meta.publicKeyPEM) !== null && _b !== void 0 ? _b : (0, ssi_sdk_ext_x509_utils_1.hexToPEM)(publicKeyHex, 'public');
|
|
439
|
+
return (0, ssi_sdk_ext_x509_utils_1.PEMToJwk)(publicKeyPEM, 'public');
|
|
440
|
+
}
|
|
441
|
+
// exponent (e) is 5 chars long, rest is modulus (n)
|
|
336
442
|
// const publicKey = publicKeyHex
|
|
337
443
|
// assertProperKeyLength(publicKey, [2048, 3072, 4096])
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
const
|
|
342
|
-
return (0,
|
|
444
|
+
const exponent = publicKeyHex.slice(-5);
|
|
445
|
+
const modulus = publicKeyHex.slice(0, -5);
|
|
446
|
+
// const modulusBitLength = (modulus.length / 2) * 8
|
|
447
|
+
// const alg = modulusBitLength === 2048 ? JoseSignatureAlgorithm.RS256 : modulusBitLength === 3072 ? JoseSignatureAlgorithm.RS384 : modulusBitLength === 4096 ? JoseSignatureAlgorithm.RS512 : undefined
|
|
448
|
+
return (0, exports.sanitizedJwk)({
|
|
449
|
+
kty: 'RSA',
|
|
450
|
+
n: (0, ssi_sdk_ext_x509_utils_1.hexToBase64)(modulus, 'base64url'),
|
|
451
|
+
e: (0, ssi_sdk_ext_x509_utils_1.hexToBase64)(exponent, 'base64url'),
|
|
452
|
+
// ...(alg && { alg }),
|
|
453
|
+
});
|
|
343
454
|
};
|
|
344
455
|
const padLeft = (args) => {
|
|
345
456
|
var _a, _b;
|
|
@@ -467,6 +578,10 @@ const signatureAlgorithmFromKeyType = (args) => {
|
|
|
467
578
|
return ssi_types_1.JoseSignatureAlgorithm.EdDSA;
|
|
468
579
|
case 'Secp256r1':
|
|
469
580
|
return ssi_types_1.JoseSignatureAlgorithm.ES256;
|
|
581
|
+
case 'Secp384r1':
|
|
582
|
+
return ssi_types_1.JoseSignatureAlgorithm.ES384;
|
|
583
|
+
case 'Secp521r1':
|
|
584
|
+
return ssi_types_1.JoseSignatureAlgorithm.ES512;
|
|
470
585
|
case 'Secp256k1':
|
|
471
586
|
return ssi_types_1.JoseSignatureAlgorithm.ES256K;
|
|
472
587
|
default:
|
|
@@ -476,9 +591,20 @@ const signatureAlgorithmFromKeyType = (args) => {
|
|
|
476
591
|
exports.signatureAlgorithmFromKeyType = signatureAlgorithmFromKeyType;
|
|
477
592
|
// TODO improve this conversion for jwt and jsonld, not a fan of current structure
|
|
478
593
|
const keyTypeFromCryptographicSuite = (args) => {
|
|
479
|
-
const {
|
|
480
|
-
switch (
|
|
594
|
+
const { crv, kty, alg } = args;
|
|
595
|
+
switch (alg) {
|
|
596
|
+
case 'RSASSA-PSS':
|
|
597
|
+
case 'RS256':
|
|
598
|
+
case 'RS384':
|
|
599
|
+
case 'RS512':
|
|
600
|
+
case 'PS256':
|
|
601
|
+
case 'PS384':
|
|
602
|
+
case 'PS512':
|
|
603
|
+
return 'RSA';
|
|
604
|
+
}
|
|
605
|
+
switch (crv) {
|
|
481
606
|
case 'EdDSA':
|
|
607
|
+
case 'Ed25519':
|
|
482
608
|
case 'Ed25519Signature2018':
|
|
483
609
|
case 'Ed25519Signature2020':
|
|
484
610
|
case 'JcsEd25519Signature2020':
|
|
@@ -486,31 +612,145 @@ const keyTypeFromCryptographicSuite = (args) => {
|
|
|
486
612
|
case 'JsonWebSignature2020':
|
|
487
613
|
case 'ES256':
|
|
488
614
|
case 'ECDSA':
|
|
615
|
+
case 'P-256':
|
|
489
616
|
return 'Secp256r1';
|
|
617
|
+
case 'ES384':
|
|
618
|
+
case 'P-384':
|
|
619
|
+
return 'Secp384r1';
|
|
620
|
+
case 'ES512':
|
|
621
|
+
case 'P-521':
|
|
622
|
+
return 'Secp521r1';
|
|
490
623
|
case 'EcdsaSecp256k1Signature2019':
|
|
624
|
+
case 'secp256k1':
|
|
491
625
|
case 'ES256K':
|
|
492
626
|
return 'Secp256k1';
|
|
493
|
-
default:
|
|
494
|
-
throw new Error(`Cryptographic suite '${suite}' not supported`);
|
|
495
627
|
}
|
|
628
|
+
if (kty) {
|
|
629
|
+
return kty;
|
|
630
|
+
}
|
|
631
|
+
throw new Error(`Cryptographic suite '${crv}' not supported`);
|
|
496
632
|
};
|
|
497
633
|
exports.keyTypeFromCryptographicSuite = keyTypeFromCryptographicSuite;
|
|
498
|
-
function
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
if (
|
|
503
|
-
|
|
634
|
+
function removeNulls(obj) {
|
|
635
|
+
Object.keys(obj).forEach((key) => {
|
|
636
|
+
if (obj[key] && typeof obj[key] === 'object')
|
|
637
|
+
removeNulls(obj[key]);
|
|
638
|
+
else if (obj[key] == null)
|
|
639
|
+
delete obj[key];
|
|
640
|
+
});
|
|
641
|
+
return obj;
|
|
642
|
+
}
|
|
643
|
+
const globalCrypto = (setGlobal, suppliedCrypto) => {
|
|
644
|
+
var _a, _b;
|
|
645
|
+
let webcrypto;
|
|
646
|
+
if (typeof suppliedCrypto !== 'undefined') {
|
|
647
|
+
webcrypto = suppliedCrypto;
|
|
648
|
+
}
|
|
649
|
+
else if (typeof crypto !== 'undefined') {
|
|
650
|
+
webcrypto = crypto;
|
|
651
|
+
}
|
|
652
|
+
else if (typeof global.crypto !== 'undefined') {
|
|
653
|
+
webcrypto = global.crypto;
|
|
654
|
+
}
|
|
655
|
+
else if (typeof ((_b = (_a = global.window) === null || _a === void 0 ? void 0 : _a.crypto) === null || _b === void 0 ? void 0 : _b.subtle) !== 'undefined') {
|
|
656
|
+
webcrypto = global.window.crypto;
|
|
657
|
+
}
|
|
658
|
+
else {
|
|
659
|
+
webcrypto = require('crypto');
|
|
660
|
+
}
|
|
661
|
+
if (setGlobal) {
|
|
662
|
+
global.crypto = webcrypto;
|
|
663
|
+
}
|
|
664
|
+
return webcrypto;
|
|
665
|
+
};
|
|
666
|
+
exports.globalCrypto = globalCrypto;
|
|
667
|
+
const sanitizedJwk = (input) => {
|
|
668
|
+
const inputJwk = typeof input['toJsonDTO'] === 'function' ? input['toJsonDTO']() : Object.assign({}, input); // KMP code can expose this. It converts a KMP JWK with mangled names into a clean JWK
|
|
669
|
+
const jwk = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, inputJwk), (inputJwk.x && { x: base64ToBase64Url(inputJwk.x) })), (inputJwk.y && { y: base64ToBase64Url(inputJwk.y) })), (inputJwk.d && { d: base64ToBase64Url(inputJwk.d) })), (inputJwk.n && { n: base64ToBase64Url(inputJwk.n) })), (inputJwk.e && { e: base64ToBase64Url(inputJwk.e) })), (inputJwk.k && { k: base64ToBase64Url(inputJwk.k) }));
|
|
670
|
+
return removeNulls(jwk);
|
|
671
|
+
};
|
|
672
|
+
exports.sanitizedJwk = sanitizedJwk;
|
|
673
|
+
const base64ToBase64Url = (input) => {
|
|
674
|
+
return input.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
|
|
675
|
+
};
|
|
676
|
+
/**
|
|
677
|
+
*
|
|
678
|
+
*/
|
|
679
|
+
function verifyRawSignature(_a) {
|
|
680
|
+
return __awaiter(this, arguments, void 0, function* ({ data, signature, key: inputKey, opts, }) {
|
|
681
|
+
var _b, _c;
|
|
682
|
+
/**
|
|
683
|
+
* Converts a Base64URL-encoded JWK property to a BigInt.
|
|
684
|
+
* @param jwkProp - The Base64URL-encoded string.
|
|
685
|
+
* @returns The BigInt representation of the decoded value.
|
|
686
|
+
*/
|
|
687
|
+
function jwkPropertyToBigInt(jwkProp) {
|
|
688
|
+
// Decode Base64URL to Uint8Array
|
|
689
|
+
const byteArray = u8a.fromString(jwkProp, 'base64url');
|
|
690
|
+
// Convert Uint8Array to hexadecimal string and then to BigInt
|
|
691
|
+
const hex = u8a.toString(byteArray, 'hex');
|
|
692
|
+
return BigInt(`0x${hex}`);
|
|
693
|
+
}
|
|
694
|
+
try {
|
|
695
|
+
(0, debug_1.default)(`verifyRawSignature for: ${inputKey}`);
|
|
696
|
+
const jwk = (0, exports.sanitizedJwk)(inputKey);
|
|
697
|
+
(0, jwk_jcs_1.validateJwk)(jwk, { crvOptional: true });
|
|
698
|
+
const keyType = (0, exports.keyTypeFromCryptographicSuite)({ crv: jwk.crv, kty: jwk.kty, alg: jwk.alg });
|
|
699
|
+
const publicKeyHex = yield (0, exports.jwkToRawHexKey)(jwk);
|
|
700
|
+
// TODO: We really should look at the signature alg first if provided! From key type should be the last resort
|
|
701
|
+
switch (keyType) {
|
|
702
|
+
case 'Secp256k1':
|
|
703
|
+
return secp256k1_1.secp256k1.verify(signature, data, publicKeyHex, { format: 'compact', prehash: true });
|
|
704
|
+
case 'Secp256r1':
|
|
705
|
+
return p256_1.p256.verify(signature, data, publicKeyHex, { format: 'compact', prehash: true });
|
|
706
|
+
case 'Secp384r1':
|
|
707
|
+
return p384_1.p384.verify(signature, data, publicKeyHex, { format: 'compact', prehash: true });
|
|
708
|
+
case 'Secp521r1':
|
|
709
|
+
return p521_1.p521.verify(signature, data, publicKeyHex, { format: 'compact', prehash: true });
|
|
710
|
+
case 'Ed25519':
|
|
711
|
+
return ed25519_1.ed25519.verify(signature, data, u8a.fromString(publicKeyHex, 'hex'));
|
|
712
|
+
case 'Bls12381G1':
|
|
713
|
+
case 'Bls12381G2':
|
|
714
|
+
return bls12_381_1.bls12_381.verify(signature, data, u8a.fromString(publicKeyHex, 'hex'));
|
|
715
|
+
case 'RSA': {
|
|
716
|
+
const signatureAlgorithm = (_c = (_b = opts === null || opts === void 0 ? void 0 : opts.signatureAlg) !== null && _b !== void 0 ? _b : jwk.alg) !== null && _c !== void 0 ? _c : ssi_types_1.JoseSignatureAlgorithm.PS256;
|
|
717
|
+
const hashAlg = signatureAlgorithm === (ssi_types_1.JoseSignatureAlgorithm.RS512 || ssi_types_1.JoseSignatureAlgorithm.PS512)
|
|
718
|
+
? sha512_1.sha512
|
|
719
|
+
: signatureAlgorithm === (ssi_types_1.JoseSignatureAlgorithm.RS384 || ssi_types_1.JoseSignatureAlgorithm.PS384)
|
|
720
|
+
? sha512_1.sha384
|
|
721
|
+
: sha256_1.sha256;
|
|
722
|
+
switch (signatureAlgorithm) {
|
|
723
|
+
case ssi_types_1.JoseSignatureAlgorithm.RS256:
|
|
724
|
+
return rsa.PKCS1_SHA256.verify({
|
|
725
|
+
n: jwkPropertyToBigInt(jwk.n),
|
|
726
|
+
e: jwkPropertyToBigInt(jwk.e),
|
|
727
|
+
}, data, signature);
|
|
728
|
+
case ssi_types_1.JoseSignatureAlgorithm.RS384:
|
|
729
|
+
return rsa.PKCS1_SHA384.verify({
|
|
730
|
+
n: jwkPropertyToBigInt(jwk.n),
|
|
731
|
+
e: jwkPropertyToBigInt(jwk.e),
|
|
732
|
+
}, data, signature);
|
|
733
|
+
case ssi_types_1.JoseSignatureAlgorithm.RS512:
|
|
734
|
+
return rsa.PKCS1_SHA512.verify({
|
|
735
|
+
n: jwkPropertyToBigInt(jwk.n),
|
|
736
|
+
e: jwkPropertyToBigInt(jwk.e),
|
|
737
|
+
}, data, signature);
|
|
738
|
+
case ssi_types_1.JoseSignatureAlgorithm.PS256:
|
|
739
|
+
case ssi_types_1.JoseSignatureAlgorithm.PS384:
|
|
740
|
+
case ssi_types_1.JoseSignatureAlgorithm.PS512:
|
|
741
|
+
return rsa.PSS(hashAlg, rsa.mgf1(hashAlg)).verify({
|
|
742
|
+
n: jwkPropertyToBigInt(jwk.n),
|
|
743
|
+
e: jwkPropertyToBigInt(jwk.e),
|
|
744
|
+
}, data, signature);
|
|
745
|
+
}
|
|
746
|
+
}
|
|
747
|
+
}
|
|
748
|
+
throw Error(`Unsupported key type for signature validation: ${keyType}`);
|
|
749
|
+
}
|
|
750
|
+
catch (error) {
|
|
751
|
+
exports.logger.error(`Error: ${error}`);
|
|
752
|
+
throw error;
|
|
504
753
|
}
|
|
505
|
-
const subtle = (_b = cryptoArg === null || cryptoArg === void 0 ? void 0 : cryptoArg.subtle) !== null && _b !== void 0 ? _b : crypto.subtle;
|
|
506
|
-
const publicKey = yield subtle.importKey('jwk', key, {
|
|
507
|
-
name: alg,
|
|
508
|
-
namedCurve: crv,
|
|
509
|
-
}, true, ['verify']);
|
|
510
|
-
return subtle.verify({
|
|
511
|
-
name: alg,
|
|
512
|
-
hash: 'SHA-256', // fixme; make arg
|
|
513
|
-
}, publicKey, signature, data);
|
|
514
754
|
});
|
|
515
755
|
}
|
|
516
756
|
//# sourceMappingURL=functions.js.map
|