@sphereon/ssi-sdk-ext.key-utils 0.13.1-unstable.3 → 0.14.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/digest-methods.js +33 -6
- package/dist/digest-methods.js.map +1 -1
- package/dist/functions.d.ts.map +1 -1
- package/dist/functions.js +106 -84
- package/dist/functions.js.map +1 -1
- package/dist/index.js +22 -6
- package/dist/index.js.map +1 -1
- package/dist/jwk-jcs.js +17 -8
- package/dist/jwk-jcs.js.map +1 -1
- package/dist/types/index.js +17 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/key-util-types.d.ts +1 -5
- package/dist/types/key-util-types.d.ts.map +1 -1
- package/dist/types/key-util-types.js +20 -12
- package/dist/types/key-util-types.js.map +1 -1
- package/dist/x509/index.js +19 -3
- package/dist/x509/index.js.map +1 -1
- package/dist/x509/rsa-key.js +53 -12
- package/dist/x509/rsa-key.js.map +1 -1
- package/dist/x509/rsa-signer.d.ts +4 -3
- package/dist/x509/rsa-signer.d.ts.map +1 -1
- package/dist/x509/rsa-signer.js +73 -32
- package/dist/x509/rsa-signer.js.map +1 -1
- package/dist/x509/x509-utils.js +70 -29
- package/dist/x509/x509-utils.js.map +1 -1
- package/package.json +3 -4
- package/src/functions.ts +6 -2
- package/src/types/key-util-types.ts +3 -3
- package/src/x509/rsa-signer.ts +10 -8
package/dist/digest-methods.js
CHANGED
|
@@ -1,7 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.digestMethodParams = void 0;
|
|
27
|
+
const sha256_1 = require("@stablelib/sha256");
|
|
28
|
+
const sha512_1 = require("@stablelib/sha512");
|
|
29
|
+
const u8a = __importStar(require("uint8arrays"));
|
|
30
|
+
const digestMethodParams = (hashAlgorithm) => {
|
|
5
31
|
if (hashAlgorithm === 'SHA-256') {
|
|
6
32
|
return { hashAlgorithm: 'SHA-256', digestMethod: sha256DigestMethod };
|
|
7
33
|
}
|
|
@@ -9,11 +35,12 @@ export const digestMethodParams = (hashAlgorithm) => {
|
|
|
9
35
|
return { hashAlgorithm: 'SHA-512', digestMethod: sha512DigestMethod };
|
|
10
36
|
}
|
|
11
37
|
};
|
|
38
|
+
exports.digestMethodParams = digestMethodParams;
|
|
12
39
|
const sha256DigestMethod = (input) => {
|
|
13
|
-
return u8a.toString(
|
|
40
|
+
return u8a.toString((0, sha256_1.hash)(u8a.fromString(input, 'utf-8')), 'base16');
|
|
14
41
|
};
|
|
15
42
|
const sha512DigestMethod = (input) => {
|
|
16
|
-
return u8a.toString(
|
|
43
|
+
return u8a.toString((0, sha512_1.hash)(u8a.fromString(input, 'utf-8')), 'base16');
|
|
17
44
|
};
|
|
18
45
|
/*
|
|
19
46
|
// 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,8CAAkD;AAClD,8CAAkD;AAClD,iDAAkC;AAK3B,MAAM,kBAAkB,GAAG,CAAC,aAA4B,EAAiE,EAAE;IAChI,IAAI,aAAa,KAAK,SAAS,EAAE;QAC/B,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAA;KACtE;SAAM;QACL,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAA;KACtE;AACH,CAAC,CAAA;AANY,QAAA,kBAAkB,sBAM9B;AAED,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAU,EAAE;IACnD,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAA,aAAM,EAAC,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;AACvE,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAU,EAAE;IACnD,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAA,aAAM,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.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGzC,OAAO,EAAgB,iCAAiC,EAAE,SAAS,EAAmC,QAAQ,EAAE,MAAM,SAAS,CAAA;AAG/H;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,SAAgB,QAAQ,KAAG,QAAQ,MAAM,CAmB1E,CAAA;AAED;;;;;;GAMG;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,iCAAiC,GAAG;IACxC,GAAG,EAAE,MAAM,CAAA;CACZ,EACD,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,GAClC,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGzC,OAAO,EAAgB,iCAAiC,EAAE,SAAS,EAAmC,QAAQ,EAAE,MAAM,SAAS,CAAA;AAG/H;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,SAAgB,QAAQ,KAAG,QAAQ,MAAM,CAmB1E,CAAA;AAED;;;;;;GAMG;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,iCAAiC,GAAG;IACxC,GAAG,EAAE,MAAM,CAAA;CACZ,EACD,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,GAClC,OAAO,CAAC,IAAI,CAAC,CAuCf;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,UAAW,MAAM,WAO1C,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,iBAAkB,MAAM,QAAQ,QAAQ,SAAS;IAAE,GAAG,CAAC,EAAE,SAAS,CAAC;IAAC,GAAG,CAAC,EAAE,IAAI,CAAA;CAAE,KAAG,UAoBpG,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe,SAAU,QAAQ,gBAAgB,SAAS,KAAG,SAAS,GAAG,SAQrF,CAAA"}
|
package/dist/functions.js
CHANGED
|
@@ -1,34 +1,73 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
exports.jwkDetermineUse = exports.toJwk = exports.hex2base64url = exports.importProvidedOrGeneratedKey = exports.generatePrivateKeyHex = void 0;
|
|
39
|
+
const random_1 = require("@ethersproject/random");
|
|
40
|
+
const ed25519_1 = require("@stablelib/ed25519");
|
|
41
|
+
const elliptic_1 = __importDefault(require("elliptic"));
|
|
42
|
+
const u8a = __importStar(require("uint8arrays"));
|
|
43
|
+
const types_1 = require("./types");
|
|
44
|
+
const x509_1 = require("./x509");
|
|
7
45
|
/**
|
|
8
46
|
* Generates a random Private Hex Key for the specified key type
|
|
9
47
|
* @param type The key type
|
|
10
48
|
* @return The private key in Hex form
|
|
11
49
|
*/
|
|
12
|
-
|
|
50
|
+
const generatePrivateKeyHex = (type) => __awaiter(void 0, void 0, void 0, function* () {
|
|
13
51
|
switch (type) {
|
|
14
52
|
case 'Ed25519': {
|
|
15
|
-
const keyPairEd25519 =
|
|
53
|
+
const keyPairEd25519 = (0, ed25519_1.generateKeyPair)();
|
|
16
54
|
return u8a.toString(keyPairEd25519.secretKey, 'base16');
|
|
17
55
|
}
|
|
18
56
|
// The Secp256 types use the same method to generate the key
|
|
19
57
|
case 'Secp256r1':
|
|
20
58
|
case 'Secp256k1': {
|
|
21
|
-
const privateBytes = randomBytes(32);
|
|
59
|
+
const privateBytes = (0, random_1.randomBytes)(32);
|
|
22
60
|
return u8a.toString(privateBytes, 'base16');
|
|
23
61
|
}
|
|
24
62
|
case 'RSA': {
|
|
25
|
-
const pem =
|
|
26
|
-
return privateKeyHexFromPEM(pem);
|
|
63
|
+
const pem = yield (0, x509_1.generateRSAKeyAsPEM)('RSA-PSS', 'SHA-256', 2048);
|
|
64
|
+
return (0, x509_1.privateKeyHexFromPEM)(pem);
|
|
27
65
|
}
|
|
28
66
|
default:
|
|
29
67
|
throw Error(`not_supported: Key type ${type} not yet supported for this did:jwk implementation`);
|
|
30
68
|
}
|
|
31
|
-
};
|
|
69
|
+
});
|
|
70
|
+
exports.generatePrivateKeyHex = generatePrivateKeyHex;
|
|
32
71
|
/**
|
|
33
72
|
* We optionally generate and then import our own keys.
|
|
34
73
|
*
|
|
@@ -36,52 +75,51 @@ export const generatePrivateKeyHex = async (type) => {
|
|
|
36
75
|
* @param context The Veramo agent context
|
|
37
76
|
* @private
|
|
38
77
|
*/
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
x509: {
|
|
48
|
-
...key.meta?.x509,
|
|
49
|
-
...args.options.x509,
|
|
50
|
-
},
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
if (args.options && args.options?.use === JwkKeyUse.Encryption && !ENC_KEY_ALGS.includes(type)) {
|
|
54
|
-
throw new Error(`${type} keys are not valid for encryption`);
|
|
55
|
-
}
|
|
56
|
-
let privateKeyHex;
|
|
57
|
-
if (key) {
|
|
58
|
-
privateKeyHex = key.privateKeyHex ?? key.meta?.x509?.privateKeyHex;
|
|
59
|
-
if (!privateKeyHex && !key.meta?.x509?.privateKeyPEM) {
|
|
60
|
-
throw new Error(`We need to have a private key in Hex or PEM when importing a key`);
|
|
78
|
+
function importProvidedOrGeneratedKey(args, context) {
|
|
79
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
|
|
80
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
81
|
+
// @ts-ignore
|
|
82
|
+
const type = (_g = (_e = (_b = (_a = args.options) === null || _a === void 0 ? void 0 : _a.type) !== null && _b !== void 0 ? _b : (_d = (_c = args.options) === null || _c === void 0 ? void 0 : _c.key) === null || _d === void 0 ? void 0 : _d.type) !== null && _e !== void 0 ? _e : (_f = args.options) === null || _f === void 0 ? void 0 : _f.keyType) !== null && _g !== void 0 ? _g : 'Secp256r1';
|
|
83
|
+
const key = (_h = args === null || args === void 0 ? void 0 : args.options) === null || _h === void 0 ? void 0 : _h.key;
|
|
84
|
+
// Make sure x509 options are also set on the metadata as that is what the kms will look for
|
|
85
|
+
if (((_j = args.options) === null || _j === void 0 ? void 0 : _j.x509) && key) {
|
|
86
|
+
key.meta = Object.assign(Object.assign({}, key.meta), { x509: Object.assign(Object.assign({}, args.options.x509), (_k = key.meta) === null || _k === void 0 ? void 0 : _k.x509) });
|
|
61
87
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
88
|
+
if (args.options && ((_l = args.options) === null || _l === void 0 ? void 0 : _l.use) === types_1.JwkKeyUse.Encryption && !types_1.ENC_KEY_ALGS.includes(type)) {
|
|
89
|
+
throw new Error(`${type} keys are not valid for encryption`);
|
|
90
|
+
}
|
|
91
|
+
let privateKeyHex;
|
|
92
|
+
if (key) {
|
|
93
|
+
privateKeyHex = (_m = key.privateKeyHex) !== null && _m !== void 0 ? _m : (_p = (_o = key.meta) === null || _o === void 0 ? void 0 : _o.x509) === null || _p === void 0 ? void 0 : _p.privateKeyHex;
|
|
94
|
+
if ((!privateKeyHex || privateKeyHex.trim() === '') && ((_r = (_q = key === null || key === void 0 ? void 0 : key.meta) === null || _q === void 0 ? void 0 : _q.x509) === null || _r === void 0 ? void 0 : _r.privateKeyPEM)) {
|
|
95
|
+
// If we do not have a privateKeyHex but do have a PEM
|
|
96
|
+
privateKeyHex = (0, x509_1.privateKeyHexFromPEM)(key.meta.x509.privateKeyPEM);
|
|
97
|
+
}
|
|
98
|
+
if (!privateKeyHex && !((_t = (_s = key.meta) === null || _s === void 0 ? void 0 : _s.x509) === null || _t === void 0 ? void 0 : _t.privateKeyPEM)) {
|
|
99
|
+
throw new Error(`We need to have a private key in Hex or PEM when importing a key`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
privateKeyHex = yield (0, exports.generatePrivateKeyHex)(type);
|
|
104
|
+
}
|
|
105
|
+
return context.agent.keyManagerImport(Object.assign(Object.assign({}, key), { kms: args.kms, type,
|
|
106
|
+
privateKeyHex }));
|
|
71
107
|
});
|
|
72
108
|
}
|
|
109
|
+
exports.importProvidedOrGeneratedKey = importProvidedOrGeneratedKey;
|
|
73
110
|
/**
|
|
74
111
|
* Converts hex value to base64url
|
|
75
112
|
* @param value hex value
|
|
76
113
|
* @return Base64Url encoded value
|
|
77
114
|
*/
|
|
78
|
-
|
|
115
|
+
const hex2base64url = (value) => {
|
|
79
116
|
//fixme: Buffer to u8a
|
|
80
117
|
const buffer = Buffer.from(value, 'hex');
|
|
81
118
|
const base64 = buffer.toString('base64');
|
|
82
119
|
const base64url = base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
|
|
83
120
|
return base64url;
|
|
84
121
|
};
|
|
122
|
+
exports.hex2base64url = hex2base64url;
|
|
85
123
|
/**
|
|
86
124
|
* Converts a public key in hex format to a JWK
|
|
87
125
|
* @param publicKeyHex public key in hex
|
|
@@ -89,16 +127,16 @@ export const hex2base64url = (value) => {
|
|
|
89
127
|
* @param opts. Options, like the optional use for the key (sig/enc)
|
|
90
128
|
* @return The JWK
|
|
91
129
|
*/
|
|
92
|
-
|
|
93
|
-
const { key } = opts
|
|
130
|
+
const toJwk = (publicKeyHex, type, opts) => {
|
|
131
|
+
const { key } = opts !== null && opts !== void 0 ? opts : {};
|
|
94
132
|
if (key && key.publicKeyHex !== publicKeyHex) {
|
|
95
133
|
throw Error(`Provided key with id ${key.kid}, has a different public key hex than supplied public key ${publicKeyHex}`);
|
|
96
134
|
}
|
|
97
135
|
switch (type) {
|
|
98
136
|
case 'Ed25519':
|
|
99
|
-
return toEd25519OrX25519Jwk(publicKeyHex, {
|
|
137
|
+
return toEd25519OrX25519Jwk(publicKeyHex, Object.assign(Object.assign({}, opts), { crv: types_1.KeyCurve.Ed25519 }));
|
|
100
138
|
case 'X25519':
|
|
101
|
-
return toEd25519OrX25519Jwk(publicKeyHex, {
|
|
139
|
+
return toEd25519OrX25519Jwk(publicKeyHex, Object.assign(Object.assign({}, opts), { crv: types_1.KeyCurve.X25519 }));
|
|
102
140
|
case 'Secp256k1':
|
|
103
141
|
return toSecp256k1Jwk(publicKeyHex, opts);
|
|
104
142
|
case 'Secp256r1':
|
|
@@ -109,21 +147,23 @@ export const toJwk = (publicKeyHex, type, opts) => {
|
|
|
109
147
|
throw new Error(`not_supported: Key type ${type} not yet supported for this did:jwk implementation`);
|
|
110
148
|
}
|
|
111
149
|
};
|
|
150
|
+
exports.toJwk = toJwk;
|
|
112
151
|
/**
|
|
113
152
|
* Determines the use param based upon the key/signature type or supplied use value.
|
|
114
153
|
*
|
|
115
154
|
* @param type The key type
|
|
116
155
|
* @param suppliedUse A supplied use. Will be used in case it is present
|
|
117
156
|
*/
|
|
118
|
-
|
|
157
|
+
const jwkDetermineUse = (type, suppliedUse) => {
|
|
119
158
|
return suppliedUse
|
|
120
159
|
? suppliedUse
|
|
121
|
-
: SIG_KEY_ALGS.includes(type)
|
|
122
|
-
? JwkKeyUse.Signature
|
|
123
|
-
: ENC_KEY_ALGS.includes(type)
|
|
124
|
-
? JwkKeyUse.Encryption
|
|
160
|
+
: types_1.SIG_KEY_ALGS.includes(type)
|
|
161
|
+
? types_1.JwkKeyUse.Signature
|
|
162
|
+
: types_1.ENC_KEY_ALGS.includes(type)
|
|
163
|
+
? types_1.JwkKeyUse.Encryption
|
|
125
164
|
: undefined;
|
|
126
165
|
};
|
|
166
|
+
exports.jwkDetermineUse = jwkDetermineUse;
|
|
127
167
|
/**
|
|
128
168
|
* Assert the key has a proper length
|
|
129
169
|
*
|
|
@@ -148,15 +188,8 @@ const assertProperKeyLength = (keyHex, expectedKeyLength) => {
|
|
|
148
188
|
*/
|
|
149
189
|
const toSecp256k1Jwk = (publicKeyHex, opts) => {
|
|
150
190
|
assertProperKeyLength(publicKeyHex, 130);
|
|
151
|
-
const { use } = opts
|
|
152
|
-
return {
|
|
153
|
-
alg: 'ES256K',
|
|
154
|
-
...(use !== undefined && { use }),
|
|
155
|
-
kty: KeyType.EC,
|
|
156
|
-
crv: KeyCurve.Secp256k1,
|
|
157
|
-
x: hex2base64url(publicKeyHex.substr(2, 64)),
|
|
158
|
-
y: hex2base64url(publicKeyHex.substr(66, 64)),
|
|
159
|
-
};
|
|
191
|
+
const { use } = opts !== null && opts !== void 0 ? opts : {};
|
|
192
|
+
return Object.assign(Object.assign({ alg: 'ES256K' }, (use !== undefined && { use })), { kty: types_1.KeyType.EC, crv: types_1.KeyCurve.Secp256k1, x: (0, exports.hex2base64url)(publicKeyHex.substr(2, 64)), y: (0, exports.hex2base64url)(publicKeyHex.substr(66, 64)) });
|
|
160
193
|
};
|
|
161
194
|
/**
|
|
162
195
|
* Generates a JWK from a Secp256r1 public key
|
|
@@ -165,20 +198,13 @@ const toSecp256k1Jwk = (publicKeyHex, opts) => {
|
|
|
165
198
|
* @return The JWK
|
|
166
199
|
*/
|
|
167
200
|
const toSecp256r1Jwk = (publicKeyHex, opts) => {
|
|
168
|
-
const { use } = opts
|
|
201
|
+
const { use } = opts !== null && opts !== void 0 ? opts : {};
|
|
169
202
|
const publicKey = publicKeyHex;
|
|
170
203
|
assertProperKeyLength(publicKey, 66);
|
|
171
|
-
const secp256r1 = new
|
|
204
|
+
const secp256r1 = new elliptic_1.default.ec('p256');
|
|
172
205
|
const key = secp256r1.keyFromPublic(publicKey, 'hex');
|
|
173
206
|
const pubPoint = key.getPublic();
|
|
174
|
-
return {
|
|
175
|
-
alg: 'ES256',
|
|
176
|
-
...(use !== undefined && { use }),
|
|
177
|
-
kty: KeyType.EC,
|
|
178
|
-
crv: KeyCurve.P_256,
|
|
179
|
-
x: hex2base64url(pubPoint.getX().toString('hex')),
|
|
180
|
-
y: hex2base64url(pubPoint.getY().toString('hex')),
|
|
181
|
-
};
|
|
207
|
+
return Object.assign(Object.assign({ alg: 'ES256' }, (use !== undefined && { use })), { kty: types_1.KeyType.EC, crv: types_1.KeyCurve.P_256, x: (0, exports.hex2base64url)(pubPoint.getX().toString('hex')), y: (0, exports.hex2base64url)(pubPoint.getY().toString('hex')) });
|
|
182
208
|
};
|
|
183
209
|
/**
|
|
184
210
|
* Generates a JWK from an Ed25519/X25519 public key
|
|
@@ -187,24 +213,20 @@ const toSecp256r1Jwk = (publicKeyHex, opts) => {
|
|
|
187
213
|
* @return The JWK
|
|
188
214
|
*/
|
|
189
215
|
const toEd25519OrX25519Jwk = (publicKeyHex, opts) => {
|
|
216
|
+
var _a;
|
|
190
217
|
assertProperKeyLength(publicKeyHex, 64);
|
|
191
|
-
const { use } = opts
|
|
192
|
-
return {
|
|
193
|
-
alg: 'EdDSA',
|
|
194
|
-
...(use !== undefined && { use }),
|
|
195
|
-
kty: KeyType.OKP,
|
|
196
|
-
crv: opts?.crv ?? KeyCurve.Ed25519,
|
|
197
|
-
x: hex2base64url(publicKeyHex.substr(0, 64)),
|
|
198
|
-
};
|
|
218
|
+
const { use } = opts !== null && opts !== void 0 ? opts : {};
|
|
219
|
+
return Object.assign(Object.assign({ alg: 'EdDSA' }, (use !== undefined && { use })), { kty: types_1.KeyType.OKP, crv: (_a = opts === null || opts === void 0 ? void 0 : opts.crv) !== null && _a !== void 0 ? _a : types_1.KeyCurve.Ed25519, x: (0, exports.hex2base64url)(publicKeyHex.substr(0, 64)) });
|
|
199
220
|
};
|
|
200
221
|
const toRSAJwk = (publicKeyHex, opts) => {
|
|
201
|
-
|
|
222
|
+
var _a, _b, _c;
|
|
223
|
+
const { key } = opts !== null && opts !== void 0 ? opts : {};
|
|
202
224
|
// const publicKey = publicKeyHex
|
|
203
225
|
// assertProperKeyLength(publicKey, [2048, 3072, 4096])
|
|
204
|
-
if (key
|
|
226
|
+
if ((_a = key === null || key === void 0 ? void 0 : key.meta) === null || _a === void 0 ? void 0 : _a.publicKeyJwk) {
|
|
205
227
|
return key.meta.publicKeyJwk;
|
|
206
228
|
}
|
|
207
|
-
const publicKeyPEM = key
|
|
208
|
-
return PEMToJwk(publicKeyPEM, 'public');
|
|
229
|
+
const publicKeyPEM = (_c = (_b = key === null || key === void 0 ? void 0 : key.meta) === null || _b === void 0 ? void 0 : _b.publicKeyPEM) !== null && _c !== void 0 ? _c : (0, x509_1.hexToPEM)(publicKeyHex, 'public');
|
|
230
|
+
return (0, x509_1.PEMToJwk)(publicKeyPEM, 'public');
|
|
209
231
|
};
|
|
210
232
|
//# sourceMappingURL=functions.js.map
|
package/dist/functions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
17
|
/**
|
|
2
18
|
* Provides `did:jwk` {@link @veramo/did-provider-jwk#JwkDIDProvider | identifier provider }
|
|
3
19
|
* for the {@link @veramo/did-manager#DIDManager}
|
|
4
20
|
*
|
|
5
21
|
* @packageDocumentation
|
|
6
22
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
23
|
+
__exportStar(require("./x509"), exports);
|
|
24
|
+
__exportStar(require("./functions"), exports);
|
|
25
|
+
__exportStar(require("./jwk-jcs"), exports);
|
|
26
|
+
__exportStar(require("./types"), exports);
|
|
27
|
+
__exportStar(require("./x509/x509-utils"), exports);
|
|
28
|
+
__exportStar(require("./digest-methods"), exports);
|
|
13
29
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;;;GAKG;AACH,yCAAsB;AACtB,8CAA2B;AAC3B,4CAAyB;AACzB,0CAAuB;AACvB,oDAAiC;AACjC,mDAAgC"}
|
package/dist/jwk-jcs.js
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.jcsCanonicalize = exports.jwkJcsDecode = exports.jwkJcsEncode = void 0;
|
|
7
|
+
const web_encoding_1 = require("web-encoding");
|
|
8
|
+
const lodash_isplainobject_1 = __importDefault(require("lodash.isplainobject"));
|
|
9
|
+
const textEncoder = new web_encoding_1.TextEncoder();
|
|
10
|
+
const textDecoder = new web_encoding_1.TextDecoder();
|
|
5
11
|
/**
|
|
6
12
|
* Checks if the value is a non-empty string.
|
|
7
13
|
*
|
|
@@ -19,7 +25,7 @@ function check(value, description) {
|
|
|
19
25
|
* @param value - The value to check.
|
|
20
26
|
*/
|
|
21
27
|
function validatePlainObject(value) {
|
|
22
|
-
if (!
|
|
28
|
+
if (!(0, lodash_isplainobject_1.default)(value)) {
|
|
23
29
|
throw new Error('JWK must be an object');
|
|
24
30
|
}
|
|
25
31
|
}
|
|
@@ -90,18 +96,19 @@ function minimalJwk(jwk) {
|
|
|
90
96
|
* @param jwk - JSON Web Key.
|
|
91
97
|
* @returns Uint8Array-encoded JWK.
|
|
92
98
|
*/
|
|
93
|
-
|
|
99
|
+
function jwkJcsEncode(jwk) {
|
|
94
100
|
validateJwk(jwk);
|
|
95
101
|
const strippedJwk = minimalJwk(jwk);
|
|
96
102
|
return textEncoder.encode(jcsCanonicalize(strippedJwk));
|
|
97
103
|
}
|
|
104
|
+
exports.jwkJcsEncode = jwkJcsEncode;
|
|
98
105
|
/**
|
|
99
106
|
* Decodes an array of bytes into a JWK. Throws an error if the JWK is not valid.
|
|
100
107
|
*
|
|
101
108
|
* @param bytes - The array of bytes to decode.
|
|
102
109
|
* @returns The corresponding JSON Web Key.
|
|
103
110
|
*/
|
|
104
|
-
|
|
111
|
+
function jwkJcsDecode(bytes) {
|
|
105
112
|
const jwk = JSON.parse(textDecoder.decode(bytes));
|
|
106
113
|
validateJwk(jwk);
|
|
107
114
|
if (JSON.stringify(jwk) !== jcsCanonicalize(minimalJwk(jwk))) {
|
|
@@ -109,8 +116,9 @@ export function jwkJcsDecode(bytes) {
|
|
|
109
116
|
}
|
|
110
117
|
return jwk;
|
|
111
118
|
}
|
|
119
|
+
exports.jwkJcsDecode = jwkJcsDecode;
|
|
112
120
|
// From: https://github.com/cyberphone/json-canonicalization
|
|
113
|
-
|
|
121
|
+
function jcsCanonicalize(object) {
|
|
114
122
|
let buffer = '';
|
|
115
123
|
serialize(object);
|
|
116
124
|
return buffer;
|
|
@@ -166,4 +174,5 @@ export function jcsCanonicalize(object) {
|
|
|
166
174
|
}
|
|
167
175
|
}
|
|
168
176
|
}
|
|
177
|
+
exports.jcsCanonicalize = jcsCanonicalize;
|
|
169
178
|
//# sourceMappingURL=jwk-jcs.js.map
|
package/dist/jwk-jcs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwk-jcs.js","sourceRoot":"","sources":["../src/jwk-jcs.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"jwk-jcs.js","sourceRoot":"","sources":["../src/jwk-jcs.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.js
CHANGED
|
@@ -1,2 +1,18 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./key-util-types"), exports);
|
|
2
18
|
//# sourceMappingURL=index.js.map
|
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAgC"}
|
|
@@ -41,13 +41,9 @@ export interface IImportProvidedOrGeneratedKeyArgs {
|
|
|
41
41
|
options?: IKeyOpts;
|
|
42
42
|
}
|
|
43
43
|
export interface IKeyOpts {
|
|
44
|
-
key?:
|
|
44
|
+
key?: Partial<MinimalImportableKey>;
|
|
45
45
|
type?: TKeyType;
|
|
46
46
|
use?: JwkKeyUse;
|
|
47
47
|
x509?: X509Opts;
|
|
48
48
|
}
|
|
49
|
-
type WithRequiredProperty<Type, Key extends keyof Type> = Type & {
|
|
50
|
-
[Property in Key]-?: Type[Property];
|
|
51
|
-
};
|
|
52
|
-
export {};
|
|
53
49
|
//# sourceMappingURL=key-util-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-util-types.d.ts","sourceRoot":"","sources":["../../src/types/key-util-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAEnD,eAAO,MAAM,gBAAgB,gBAAgB,CAAA;AAC7C,eAAO,MAAM,kBAAkB,QAAS,CAAA;AAExC,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,GAAG,YAAY,GAAG,KAAK,CAAA;AAE7G,oBAAY,GAAG;IACb,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,SAAS,cAAc;CACxB;AAED,oBAAY,SAAS;IACnB,UAAU,QAAQ;IAClB,SAAS,QAAQ;CAClB;AAED,oBAAY,QAAQ;IAClB,SAAS,cAAc;IACvB,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,MAAM,WAAW;CAClB;AAED,oBAAY,OAAO;IACjB,EAAE,OAAO;IACT,GAAG,QAAQ;IACX,GAAG,QAAQ;CACZ;AAED,eAAO,MAAM,YAAY,UAAkH,CAAA;AAC3I,eAAO,MAAM,YAAY,UAA+C,CAAA;AAExE,MAAM,WAAW,GAAI,SAAQ,UAAU;IACrC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAA;AAEhD,MAAM,WAAW,QAAQ;IACvB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,iCAAiC;IAChD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,QAAQ,CAAA;CACnB;AACD,MAAM,WAAW,QAAQ;IACvB,GAAG,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"key-util-types.d.ts","sourceRoot":"","sources":["../../src/types/key-util-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAEnD,eAAO,MAAM,gBAAgB,gBAAgB,CAAA;AAC7C,eAAO,MAAM,kBAAkB,QAAS,CAAA;AAExC,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,YAAY,GAAG,YAAY,GAAG,KAAK,CAAA;AAE7G,oBAAY,GAAG;IACb,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,SAAS,cAAc;CACxB;AAED,oBAAY,SAAS;IACnB,UAAU,QAAQ;IAClB,SAAS,QAAQ;CAClB;AAED,oBAAY,QAAQ;IAClB,SAAS,cAAc;IACvB,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,MAAM,WAAW;CAClB;AAED,oBAAY,OAAO;IACjB,EAAE,OAAO;IACT,GAAG,QAAQ;IACX,GAAG,QAAQ;CACZ;AAED,eAAO,MAAM,YAAY,UAAkH,CAAA;AAC3I,eAAO,MAAM,YAAY,UAA+C,CAAA;AAExE,MAAM,WAAW,GAAI,SAAQ,UAAU;IACrC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAA;AAEhD,MAAM,WAAW,QAAQ;IACvB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,iCAAiC;IAChD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,QAAQ,CAAA;CACnB;AACD,MAAM,WAAW,QAAQ;IACvB,GAAG,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAA;IACnC,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,GAAG,CAAC,EAAE,SAAS,CAAA;IACf,IAAI,CAAC,EAAE,QAAQ,CAAA;CAChB"}
|
|
@@ -1,29 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ENC_KEY_ALGS = exports.SIG_KEY_ALGS = exports.KeyType = exports.KeyCurve = exports.JwkKeyUse = exports.Key = exports.JWK_JCS_PUB_PREFIX = exports.JWK_JCS_PUB_NAME = void 0;
|
|
4
|
+
exports.JWK_JCS_PUB_NAME = 'jwk_jcs-pub';
|
|
5
|
+
exports.JWK_JCS_PUB_PREFIX = 0xeb51;
|
|
6
|
+
var Key;
|
|
4
7
|
(function (Key) {
|
|
5
8
|
Key["Ed25519"] = "Ed25519";
|
|
6
9
|
Key["Secp256k1"] = "Secp256k1";
|
|
7
10
|
Key["Secp256r1"] = "Secp256r1";
|
|
8
|
-
})(Key || (Key = {}));
|
|
9
|
-
|
|
11
|
+
})(Key = exports.Key || (exports.Key = {}));
|
|
12
|
+
var JwkKeyUse;
|
|
10
13
|
(function (JwkKeyUse) {
|
|
11
14
|
JwkKeyUse["Encryption"] = "enc";
|
|
12
15
|
JwkKeyUse["Signature"] = "sig";
|
|
13
|
-
})(JwkKeyUse || (JwkKeyUse = {}));
|
|
14
|
-
|
|
16
|
+
})(JwkKeyUse = exports.JwkKeyUse || (exports.JwkKeyUse = {}));
|
|
17
|
+
var KeyCurve;
|
|
15
18
|
(function (KeyCurve) {
|
|
16
19
|
KeyCurve["Secp256k1"] = "secp256k1";
|
|
17
20
|
KeyCurve["P_256"] = "P-256";
|
|
18
21
|
KeyCurve["Ed25519"] = "Ed25519";
|
|
19
22
|
KeyCurve["X25519"] = "X25519";
|
|
20
|
-
})(KeyCurve || (KeyCurve = {}));
|
|
21
|
-
|
|
23
|
+
})(KeyCurve = exports.KeyCurve || (exports.KeyCurve = {}));
|
|
24
|
+
var KeyType;
|
|
22
25
|
(function (KeyType) {
|
|
23
26
|
KeyType["EC"] = "EC";
|
|
24
27
|
KeyType["OKP"] = "OKP";
|
|
25
28
|
KeyType["RSA"] = "RSA";
|
|
26
|
-
})(KeyType || (KeyType = {}));
|
|
27
|
-
|
|
28
|
-
|
|
29
|
+
})(KeyType = exports.KeyType || (exports.KeyType = {}));
|
|
30
|
+
exports.SIG_KEY_ALGS = ['ES256', 'ES384', 'ES512', 'EdDSA', 'ES256K', 'Ed25519', 'Secp256k1', 'Secp256r1', 'Bls12381G1', 'Bls12381G2'];
|
|
31
|
+
exports.ENC_KEY_ALGS = ['X25519', 'ECDH_ES_A256KW', 'RSA_OAEP_256'];
|
|
32
|
+
/*
|
|
33
|
+
// Needed to make a single property required
|
|
34
|
+
type WithRequiredProperty<Type, Key extends keyof Type> = Type & {
|
|
35
|
+
[Property in Key]-?: Type[Property]
|
|
36
|
+
}*/
|
|
29
37
|
//# sourceMappingURL=key-util-types.js.map
|