@sphereon/ssi-sdk-ext.key-utils 0.13.0 → 0.13.1-unstable.3
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 +6 -33
- package/dist/digest-methods.js.map +1 -1
- package/dist/functions.js +84 -102
- package/dist/functions.js.map +1 -1
- package/dist/index.js +6 -22
- package/dist/index.js.map +1 -1
- package/dist/jwk-jcs.js +8 -17
- package/dist/jwk-jcs.js.map +1 -1
- package/dist/types/index.js +1 -17
- package/dist/types/index.js.map +1 -1
- package/dist/types/key-util-types.js +12 -15
- package/dist/types/key-util-types.js.map +1 -1
- package/dist/x509/index.js +3 -19
- package/dist/x509/index.js.map +1 -1
- package/dist/x509/rsa-key.js +12 -53
- package/dist/x509/rsa-key.js.map +1 -1
- package/dist/x509/rsa-signer.js +32 -74
- package/dist/x509/rsa-signer.js.map +1 -1
- package/dist/x509/x509-utils.js +29 -70
- package/dist/x509/x509-utils.js.map +1 -1
- package/package.json +4 -3
package/dist/digest-methods.js
CHANGED
|
@@ -1,33 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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) => {
|
|
1
|
+
import { hash as sha256 } from '@stablelib/sha256';
|
|
2
|
+
import { hash as sha512 } from '@stablelib/sha512';
|
|
3
|
+
import * as u8a from 'uint8arrays';
|
|
4
|
+
export const digestMethodParams = (hashAlgorithm) => {
|
|
31
5
|
if (hashAlgorithm === 'SHA-256') {
|
|
32
6
|
return { hashAlgorithm: 'SHA-256', digestMethod: sha256DigestMethod };
|
|
33
7
|
}
|
|
@@ -35,12 +9,11 @@ const digestMethodParams = (hashAlgorithm) => {
|
|
|
35
9
|
return { hashAlgorithm: 'SHA-512', digestMethod: sha512DigestMethod };
|
|
36
10
|
}
|
|
37
11
|
};
|
|
38
|
-
exports.digestMethodParams = digestMethodParams;
|
|
39
12
|
const sha256DigestMethod = (input) => {
|
|
40
|
-
return u8a.toString((
|
|
13
|
+
return u8a.toString(sha256(u8a.fromString(input, 'utf-8')), 'base16');
|
|
41
14
|
};
|
|
42
15
|
const sha512DigestMethod = (input) => {
|
|
43
|
-
return u8a.toString((
|
|
16
|
+
return u8a.toString(sha512(u8a.fromString(input, 'utf-8')), 'base16');
|
|
44
17
|
};
|
|
45
18
|
/*
|
|
46
19
|
// PKCS#1 (PSS) mask generation function
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"digest-methods.js","sourceRoot":"","sources":["../src/digest-methods.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"digest-methods.js","sourceRoot":"","sources":["../src/digest-methods.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,GAAG,MAAM,aAAa,CAAA;AAKlC,MAAM,CAAC,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;AAED,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAU,EAAE;IACnD,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,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,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;AACvE,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BE"}
|
package/dist/functions.js
CHANGED
|
@@ -1,73 +1,34 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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");
|
|
1
|
+
import { randomBytes } from '@ethersproject/random';
|
|
2
|
+
import { generateKeyPair as generateSigningKeyPair } from '@stablelib/ed25519';
|
|
3
|
+
import elliptic from 'elliptic';
|
|
4
|
+
import * as u8a from 'uint8arrays';
|
|
5
|
+
import { ENC_KEY_ALGS, JwkKeyUse, KeyCurve, KeyType, SIG_KEY_ALGS } from './types';
|
|
6
|
+
import { generateRSAKeyAsPEM, hexToPEM, PEMToJwk, privateKeyHexFromPEM } from './x509';
|
|
45
7
|
/**
|
|
46
8
|
* Generates a random Private Hex Key for the specified key type
|
|
47
9
|
* @param type The key type
|
|
48
10
|
* @return The private key in Hex form
|
|
49
11
|
*/
|
|
50
|
-
const generatePrivateKeyHex = (type) =>
|
|
12
|
+
export const generatePrivateKeyHex = async (type) => {
|
|
51
13
|
switch (type) {
|
|
52
14
|
case 'Ed25519': {
|
|
53
|
-
const keyPairEd25519 = (
|
|
15
|
+
const keyPairEd25519 = generateSigningKeyPair();
|
|
54
16
|
return u8a.toString(keyPairEd25519.secretKey, 'base16');
|
|
55
17
|
}
|
|
56
18
|
// The Secp256 types use the same method to generate the key
|
|
57
19
|
case 'Secp256r1':
|
|
58
20
|
case 'Secp256k1': {
|
|
59
|
-
const privateBytes =
|
|
21
|
+
const privateBytes = randomBytes(32);
|
|
60
22
|
return u8a.toString(privateBytes, 'base16');
|
|
61
23
|
}
|
|
62
24
|
case 'RSA': {
|
|
63
|
-
const pem =
|
|
64
|
-
return
|
|
25
|
+
const pem = await generateRSAKeyAsPEM('RSA-PSS', 'SHA-256', 2048);
|
|
26
|
+
return privateKeyHexFromPEM(pem);
|
|
65
27
|
}
|
|
66
28
|
default:
|
|
67
29
|
throw Error(`not_supported: Key type ${type} not yet supported for this did:jwk implementation`);
|
|
68
30
|
}
|
|
69
|
-
}
|
|
70
|
-
exports.generatePrivateKeyHex = generatePrivateKeyHex;
|
|
31
|
+
};
|
|
71
32
|
/**
|
|
72
33
|
* We optionally generate and then import our own keys.
|
|
73
34
|
*
|
|
@@ -75,47 +36,52 @@ exports.generatePrivateKeyHex = generatePrivateKeyHex;
|
|
|
75
36
|
* @param context The Veramo agent context
|
|
76
37
|
* @private
|
|
77
38
|
*/
|
|
78
|
-
function importProvidedOrGeneratedKey(args, context) {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
39
|
+
export async function importProvidedOrGeneratedKey(args, context) {
|
|
40
|
+
// @ts-ignore
|
|
41
|
+
const type = args.options?.type ?? args.options?.key?.type ?? args.options?.keyType ?? 'Secp256r1';
|
|
42
|
+
const key = args?.options?.key;
|
|
43
|
+
// Make sure x509 options are also set on the metadata as that is what the kms will look for
|
|
44
|
+
if (args.options?.x509 && key && !key?.meta?.x509) {
|
|
45
|
+
key.meta = {
|
|
46
|
+
...key.meta,
|
|
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`);
|
|
100
61
|
}
|
|
101
|
-
|
|
102
|
-
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
privateKeyHex = await generatePrivateKeyHex(type);
|
|
65
|
+
}
|
|
66
|
+
return context.agent.keyManagerImport({
|
|
67
|
+
...key,
|
|
68
|
+
kms: args.kms,
|
|
69
|
+
type,
|
|
70
|
+
privateKeyHex,
|
|
103
71
|
});
|
|
104
72
|
}
|
|
105
|
-
exports.importProvidedOrGeneratedKey = importProvidedOrGeneratedKey;
|
|
106
73
|
/**
|
|
107
74
|
* Converts hex value to base64url
|
|
108
75
|
* @param value hex value
|
|
109
76
|
* @return Base64Url encoded value
|
|
110
77
|
*/
|
|
111
|
-
const hex2base64url = (value) => {
|
|
78
|
+
export const hex2base64url = (value) => {
|
|
112
79
|
//fixme: Buffer to u8a
|
|
113
80
|
const buffer = Buffer.from(value, 'hex');
|
|
114
81
|
const base64 = buffer.toString('base64');
|
|
115
82
|
const base64url = base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
|
|
116
83
|
return base64url;
|
|
117
84
|
};
|
|
118
|
-
exports.hex2base64url = hex2base64url;
|
|
119
85
|
/**
|
|
120
86
|
* Converts a public key in hex format to a JWK
|
|
121
87
|
* @param publicKeyHex public key in hex
|
|
@@ -123,16 +89,16 @@ exports.hex2base64url = hex2base64url;
|
|
|
123
89
|
* @param opts. Options, like the optional use for the key (sig/enc)
|
|
124
90
|
* @return The JWK
|
|
125
91
|
*/
|
|
126
|
-
const toJwk = (publicKeyHex, type, opts) => {
|
|
127
|
-
const { key } = opts
|
|
92
|
+
export const toJwk = (publicKeyHex, type, opts) => {
|
|
93
|
+
const { key } = opts ?? {};
|
|
128
94
|
if (key && key.publicKeyHex !== publicKeyHex) {
|
|
129
95
|
throw Error(`Provided key with id ${key.kid}, has a different public key hex than supplied public key ${publicKeyHex}`);
|
|
130
96
|
}
|
|
131
97
|
switch (type) {
|
|
132
98
|
case 'Ed25519':
|
|
133
|
-
return toEd25519OrX25519Jwk(publicKeyHex,
|
|
99
|
+
return toEd25519OrX25519Jwk(publicKeyHex, { ...opts, crv: KeyCurve.Ed25519 });
|
|
134
100
|
case 'X25519':
|
|
135
|
-
return toEd25519OrX25519Jwk(publicKeyHex,
|
|
101
|
+
return toEd25519OrX25519Jwk(publicKeyHex, { ...opts, crv: KeyCurve.X25519 });
|
|
136
102
|
case 'Secp256k1':
|
|
137
103
|
return toSecp256k1Jwk(publicKeyHex, opts);
|
|
138
104
|
case 'Secp256r1':
|
|
@@ -143,23 +109,21 @@ const toJwk = (publicKeyHex, type, opts) => {
|
|
|
143
109
|
throw new Error(`not_supported: Key type ${type} not yet supported for this did:jwk implementation`);
|
|
144
110
|
}
|
|
145
111
|
};
|
|
146
|
-
exports.toJwk = toJwk;
|
|
147
112
|
/**
|
|
148
113
|
* Determines the use param based upon the key/signature type or supplied use value.
|
|
149
114
|
*
|
|
150
115
|
* @param type The key type
|
|
151
116
|
* @param suppliedUse A supplied use. Will be used in case it is present
|
|
152
117
|
*/
|
|
153
|
-
const jwkDetermineUse = (type, suppliedUse) => {
|
|
118
|
+
export const jwkDetermineUse = (type, suppliedUse) => {
|
|
154
119
|
return suppliedUse
|
|
155
120
|
? suppliedUse
|
|
156
|
-
:
|
|
157
|
-
?
|
|
158
|
-
:
|
|
159
|
-
?
|
|
121
|
+
: SIG_KEY_ALGS.includes(type)
|
|
122
|
+
? JwkKeyUse.Signature
|
|
123
|
+
: ENC_KEY_ALGS.includes(type)
|
|
124
|
+
? JwkKeyUse.Encryption
|
|
160
125
|
: undefined;
|
|
161
126
|
};
|
|
162
|
-
exports.jwkDetermineUse = jwkDetermineUse;
|
|
163
127
|
/**
|
|
164
128
|
* Assert the key has a proper length
|
|
165
129
|
*
|
|
@@ -184,8 +148,15 @@ const assertProperKeyLength = (keyHex, expectedKeyLength) => {
|
|
|
184
148
|
*/
|
|
185
149
|
const toSecp256k1Jwk = (publicKeyHex, opts) => {
|
|
186
150
|
assertProperKeyLength(publicKeyHex, 130);
|
|
187
|
-
const { use } = opts
|
|
188
|
-
return
|
|
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
|
+
};
|
|
189
160
|
};
|
|
190
161
|
/**
|
|
191
162
|
* Generates a JWK from a Secp256r1 public key
|
|
@@ -194,13 +165,20 @@ const toSecp256k1Jwk = (publicKeyHex, opts) => {
|
|
|
194
165
|
* @return The JWK
|
|
195
166
|
*/
|
|
196
167
|
const toSecp256r1Jwk = (publicKeyHex, opts) => {
|
|
197
|
-
const { use } = opts
|
|
168
|
+
const { use } = opts ?? {};
|
|
198
169
|
const publicKey = publicKeyHex;
|
|
199
170
|
assertProperKeyLength(publicKey, 66);
|
|
200
|
-
const secp256r1 = new
|
|
171
|
+
const secp256r1 = new elliptic.ec('p256');
|
|
201
172
|
const key = secp256r1.keyFromPublic(publicKey, 'hex');
|
|
202
173
|
const pubPoint = key.getPublic();
|
|
203
|
-
return
|
|
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
|
+
};
|
|
204
182
|
};
|
|
205
183
|
/**
|
|
206
184
|
* Generates a JWK from an Ed25519/X25519 public key
|
|
@@ -209,20 +187,24 @@ const toSecp256r1Jwk = (publicKeyHex, opts) => {
|
|
|
209
187
|
* @return The JWK
|
|
210
188
|
*/
|
|
211
189
|
const toEd25519OrX25519Jwk = (publicKeyHex, opts) => {
|
|
212
|
-
var _a;
|
|
213
190
|
assertProperKeyLength(publicKeyHex, 64);
|
|
214
|
-
const { use } = opts
|
|
215
|
-
return
|
|
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
|
+
};
|
|
216
199
|
};
|
|
217
200
|
const toRSAJwk = (publicKeyHex, opts) => {
|
|
218
|
-
|
|
219
|
-
const { key } = opts !== null && opts !== void 0 ? opts : {};
|
|
201
|
+
const { key } = opts ?? {};
|
|
220
202
|
// const publicKey = publicKeyHex
|
|
221
203
|
// assertProperKeyLength(publicKey, [2048, 3072, 4096])
|
|
222
|
-
if (
|
|
204
|
+
if (key?.meta?.publicKeyJwk) {
|
|
223
205
|
return key.meta.publicKeyJwk;
|
|
224
206
|
}
|
|
225
|
-
const publicKeyPEM =
|
|
226
|
-
return
|
|
207
|
+
const publicKeyPEM = key?.meta?.publicKeyPEM ?? hexToPEM(publicKeyHex, 'public');
|
|
208
|
+
return PEMToJwk(publicKeyPEM, 'public');
|
|
227
209
|
};
|
|
228
210
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,eAAe,IAAI,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAI9E,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,GAAG,MAAM,aAAa,CAAA;AAClC,OAAO,EAAE,YAAY,EAAqC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAY,MAAM,SAAS,CAAA;AAC/H,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAA;AAEtF;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EAAE,IAAc,EAAmB,EAAE;IAC7E,QAAQ,IAAI,EAAE;QACZ,KAAK,SAAS,CAAC,CAAC;YACd,MAAM,cAAc,GAAG,sBAAsB,EAAE,CAAA;YAC/C,OAAO,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;SACxD;QACD,4DAA4D;QAC5D,KAAK,WAAW,CAAC;QACjB,KAAK,WAAW,CAAC,CAAC;YAChB,MAAM,YAAY,GAAG,WAAW,CAAC,EAAE,CAAC,CAAA;YACpC,OAAO,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;SAC5C;QACD,KAAK,KAAK,CAAC,CAAC;YACV,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;YACjE,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAA;SACjC;QACD;YACE,MAAM,KAAK,CAAC,2BAA2B,IAAI,oDAAoD,CAAC,CAAA;KACnG;AACH,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,IAEC,EACD,OAAmC;IAEnC,aAAa;IACb,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,WAAW,CAAA;IAClG,MAAM,GAAG,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,CAAA;IAC9B,4FAA4F;IAC5F,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE;QACjD,GAAG,CAAC,IAAI,GAAG;YACT,GAAG,GAAG,CAAC,IAAI;YACX,IAAI,EAAE;gBACJ,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI;gBACjB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI;aACrB;SACF,CAAA;KACF;IAED,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,SAAS,CAAC,UAAU,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QAC9F,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,oCAAoC,CAAC,CAAA;KAC7D;IAED,IAAI,aAAqB,CAAA;IACzB,IAAI,GAAG,EAAE;QACP,aAAa,GAAG,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,CAAA;QAClE,IAAI,CAAC,aAAa,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE;YACpD,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;SACpF;KACF;SAAM;QACL,aAAa,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAA;KAClD;IAED,OAAO,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC;QACpC,GAAG,GAAG;QACN,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,IAAI;QACJ,aAAa;KACd,CAAC,CAAA;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,EAAE;IAC7C,sBAAsB;IACtB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IACxC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACxC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IAElF,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,YAAoB,EAAE,IAAc,EAAE,IAAsC,EAAc,EAAE;IAChH,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,IAAI,EAAE,CAAA;IAC1B,IAAI,GAAG,IAAI,GAAG,CAAC,YAAY,KAAK,YAAY,EAAE;QAC5C,MAAM,KAAK,CAAC,wBAAwB,GAAG,CAAC,GAAG,6DAA6D,YAAY,EAAE,CAAC,CAAA;KACxH;IACD,QAAQ,IAAI,EAAE;QACZ,KAAK,SAAS;YACZ,OAAO,oBAAoB,CAAC,YAAY,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;QAC/E,KAAK,QAAQ;YACX,OAAO,oBAAoB,CAAC,YAAY,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;QAC9E,KAAK,WAAW;YACd,OAAO,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;QAC3C,KAAK,WAAW;YACd,OAAO,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;QAC3C,KAAK,KAAK;YACR,OAAO,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;QAErC;YACE,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,oDAAoD,CAAC,CAAA;KACvG;AACH,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAc,EAAE,WAAuB,EAAyB,EAAE;IAChG,OAAO,WAAW;QAChB,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC7B,CAAC,CAAC,SAAS,CAAC,SAAS;YACrB,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAC7B,CAAC,CAAC,SAAS,CAAC,UAAU;gBACtB,CAAC,CAAC,SAAS,CAAA;AACf,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,qBAAqB,GAAG,CAAC,MAAc,EAAE,iBAAoC,EAAE,EAAE;IACrF,IAAI,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;QACpC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;YAC7C,MAAM,KAAK,CACT,iEAAiE,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,eAChG,MAAM,CAAC,MACT,YAAY,MAAM,EAAE,CACrB,CAAA;SACF;KACF;SAAM,IAAI,MAAM,CAAC,MAAM,KAAK,iBAAiB,EAAE;QAC9C,MAAM,KAAK,CAAC,4DAA4D,iBAAiB,eAAe,MAAM,CAAC,MAAM,YAAY,MAAM,EAAE,CAAC,CAAA;KAC3I;AACH,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,cAAc,GAAG,CAAC,YAAoB,EAAE,IAA0B,EAAc,EAAE;IACtF,qBAAqB,CAAC,YAAY,EAAE,GAAG,CAAC,CAAA;IACxC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,IAAI,EAAE,CAAA;IAC1B,OAAO;QACL,GAAG,EAAE,QAAQ;QACb,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,EAAE,GAAG,EAAE,CAAC;QACjC,GAAG,EAAE,OAAO,CAAC,EAAE;QACf,GAAG,EAAE,QAAQ,CAAC,SAAS;QACvB,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5C,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;KAC9C,CAAA;AACH,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,cAAc,GAAG,CAAC,YAAoB,EAAE,IAA0B,EAAc,EAAE;IACtF,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,IAAI,EAAE,CAAA;IAC1B,MAAM,SAAS,GAAG,YAAY,CAAA;IAC9B,qBAAqB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;IAEpC,MAAM,SAAS,GAAG,IAAI,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAA;IACzC,MAAM,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IACrD,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,EAAE,CAAA;IAChC,OAAO;QACL,GAAG,EAAE,OAAO;QACZ,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,EAAE,GAAG,EAAE,CAAC;QACjC,GAAG,EAAE,OAAO,CAAC,EAAE;QACf,GAAG,EAAE,QAAQ,CAAC,KAAK;QACnB,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAClD,CAAA;AACH,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,oBAAoB,GAAG,CAC3B,YAAoB,EACpB,IAGC,EACW,EAAE;IACd,qBAAqB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;IACvC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,IAAI,EAAE,CAAA;IAC1B,OAAO;QACL,GAAG,EAAE,OAAO;QACZ,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,EAAE,GAAG,EAAE,CAAC;QACjC,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,QAAQ,CAAC,OAAO;QAClC,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;KAC7C,CAAA;AACH,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,CAAC,YAAoB,EAAE,IAAsC,EAAc,EAAE;IAC5F,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,IAAI,EAAE,CAAA;IAC1B,iCAAiC;IACjC,uDAAuD;IAEvD,IAAI,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE;QAC3B,OAAO,GAAG,CAAC,IAAI,CAAC,YAA0B,CAAA;KAC3C;IAED,MAAM,YAAY,GAAG,GAAG,EAAE,IAAI,EAAE,YAAY,IAAI,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;IAChF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAe,CAAA;AACvD,CAAC,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,29 +1,13 @@
|
|
|
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
1
|
/**
|
|
18
2
|
* Provides `did:jwk` {@link @veramo/did-provider-jwk#JwkDIDProvider | identifier provider }
|
|
19
3
|
* for the {@link @veramo/did-manager#DIDManager}
|
|
20
4
|
*
|
|
21
5
|
* @packageDocumentation
|
|
22
6
|
*/
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
7
|
+
export * from './x509';
|
|
8
|
+
export * from './functions';
|
|
9
|
+
export * from './jwk-jcs';
|
|
10
|
+
export * from './types';
|
|
11
|
+
export * from './x509/x509-utils';
|
|
12
|
+
export * from './digest-methods';
|
|
29
13
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,QAAQ,CAAA;AACtB,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA"}
|
package/dist/jwk-jcs.js
CHANGED
|
@@ -1,13 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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();
|
|
1
|
+
import { TextDecoder, TextEncoder } from 'web-encoding';
|
|
2
|
+
import isPlainObject from 'lodash.isplainobject';
|
|
3
|
+
const textEncoder = new TextEncoder();
|
|
4
|
+
const textDecoder = new TextDecoder();
|
|
11
5
|
/**
|
|
12
6
|
* Checks if the value is a non-empty string.
|
|
13
7
|
*
|
|
@@ -25,7 +19,7 @@ function check(value, description) {
|
|
|
25
19
|
* @param value - The value to check.
|
|
26
20
|
*/
|
|
27
21
|
function validatePlainObject(value) {
|
|
28
|
-
if (!(
|
|
22
|
+
if (!isPlainObject(value)) {
|
|
29
23
|
throw new Error('JWK must be an object');
|
|
30
24
|
}
|
|
31
25
|
}
|
|
@@ -96,19 +90,18 @@ function minimalJwk(jwk) {
|
|
|
96
90
|
* @param jwk - JSON Web Key.
|
|
97
91
|
* @returns Uint8Array-encoded JWK.
|
|
98
92
|
*/
|
|
99
|
-
function jwkJcsEncode(jwk) {
|
|
93
|
+
export function jwkJcsEncode(jwk) {
|
|
100
94
|
validateJwk(jwk);
|
|
101
95
|
const strippedJwk = minimalJwk(jwk);
|
|
102
96
|
return textEncoder.encode(jcsCanonicalize(strippedJwk));
|
|
103
97
|
}
|
|
104
|
-
exports.jwkJcsEncode = jwkJcsEncode;
|
|
105
98
|
/**
|
|
106
99
|
* Decodes an array of bytes into a JWK. Throws an error if the JWK is not valid.
|
|
107
100
|
*
|
|
108
101
|
* @param bytes - The array of bytes to decode.
|
|
109
102
|
* @returns The corresponding JSON Web Key.
|
|
110
103
|
*/
|
|
111
|
-
function jwkJcsDecode(bytes) {
|
|
104
|
+
export function jwkJcsDecode(bytes) {
|
|
112
105
|
const jwk = JSON.parse(textDecoder.decode(bytes));
|
|
113
106
|
validateJwk(jwk);
|
|
114
107
|
if (JSON.stringify(jwk) !== jcsCanonicalize(minimalJwk(jwk))) {
|
|
@@ -116,9 +109,8 @@ function jwkJcsDecode(bytes) {
|
|
|
116
109
|
}
|
|
117
110
|
return jwk;
|
|
118
111
|
}
|
|
119
|
-
exports.jwkJcsDecode = jwkJcsDecode;
|
|
120
112
|
// From: https://github.com/cyberphone/json-canonicalization
|
|
121
|
-
function jcsCanonicalize(object) {
|
|
113
|
+
export function jcsCanonicalize(object) {
|
|
122
114
|
let buffer = '';
|
|
123
115
|
serialize(object);
|
|
124
116
|
return buffer;
|
|
@@ -174,5 +166,4 @@ function jcsCanonicalize(object) {
|
|
|
174
166
|
}
|
|
175
167
|
}
|
|
176
168
|
}
|
|
177
|
-
exports.jcsCanonicalize = jcsCanonicalize;
|
|
178
169
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"jwk-jcs.js","sourceRoot":"","sources":["../src/jwk-jcs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,aAAa,MAAM,sBAAsB,CAAA;AAIhD,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;AACrC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;AAErC;;;;;GAKG;AACH,SAAS,KAAK,CAAC,KAAc,EAAE,WAAmB;IAChD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE;QACvC,MAAM,IAAI,KAAK,CAAC,GAAG,WAAW,qBAAqB,CAAC,CAAA;KACrD;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,KAAc;IACzC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;QACzB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;KACzC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,WAAW,CAAC,GAAQ;IAC3B,mBAAmB,CAAC,GAAG,CAAC,CAAA;IACxB,mDAAmD;IACnD,QAAQ,GAAG,CAAC,GAAG,EAAE;QACf;;WAEG;QACH,KAAK,IAAI;YACP,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAA;YACzC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,8BAA8B,CAAC,CAAA;YAC5C,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,8BAA8B,CAAC,CAAA;YAC5C,MAAK;QACP;;WAEG;QACH,KAAK,KAAK;YACR,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,uCAAuC,CAAC,CAAA;YACvD,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,4BAA4B,CAAC,CAAA;YAC1C,MAAK;QACP;;WAEG;QACH,KAAK,KAAK;YACR,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,0BAA0B,CAAC,CAAA;YACxC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAA;YACvC,MAAK;QACP;YACE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;KACvE;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,GAAQ;IAC1B,+BAA+B;IAC/B,wCAAwC;IACxC,QAAQ,GAAG,CAAC,GAAG,EAAE;QACf,KAAK,IAAI;YACP,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAA;QAC3D,KAAK,KAAK;YACR,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAA;QACjD,KAAK,KAAK;YACR,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAA;KAC9C;IACD,MAAM,KAAK,CAAC,wCAAwC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAA;AAChE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,WAAW,CAAC,GAAG,CAAC,CAAA;IAChB,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IACnC,OAAO,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAA;AACzD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,KAA2B;IACtD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IACjD,WAAW,CAAC,GAAG,CAAC,CAAA;IAChB,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;QAC5D,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAA;KAC1E;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,eAAe,CAAC,MAAW;IACzC,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,SAAS,CAAC,MAAM,CAAC,CAAA;IACjB,OAAO,MAAM,CAAA;IAEb,SAAS,SAAS,CAAC,MAAW;QAC5B,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE;YAC1E,iDAAiD;YACjD,iDAAiD;YACjD,iDAAiD;YACjD,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;SACjC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAChC,iDAAiD;YACjD,iDAAiD;YACjD,iDAAiD;YACjD,MAAM,IAAI,GAAG,CAAA;YACb,IAAI,IAAI,GAAG,KAAK,CAAA;YAChB,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBACzB,IAAI,IAAI,EAAE;oBACR,MAAM,IAAI,GAAG,CAAA;iBACd;gBACD,IAAI,GAAG,IAAI,CAAA;gBACX,yCAAyC;gBACzC,yCAAyC;gBACzC,yCAAyC;gBACzC,SAAS,CAAC,OAAO,CAAC,CAAA;YACpB,CAAC,CAAC,CAAA;YACF,MAAM,IAAI,GAAG,CAAA;SACd;aAAM;YACL,iDAAiD;YACjD,iDAAiD;YACjD,iDAAiD;YACjD,MAAM,IAAI,GAAG,CAAA;YACb,IAAI,IAAI,GAAG,KAAK,CAAA;YAChB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;iBAChB,IAAI,EAAE;iBACN,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACpB,IAAI,IAAI,EAAE;oBACR,MAAM,IAAI,GAAG,CAAA;iBACd;gBACD,IAAI,GAAG,IAAI,CAAA;gBACX,+CAA+C;gBAC/C,+CAA+C;gBAC/C,+CAA+C;gBAC/C,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;gBAClC,MAAM,IAAI,GAAG,CAAA;gBACb,0CAA0C;gBAC1C,0CAA0C;gBAC1C,0CAA0C;gBAC1C,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;YAC7B,CAAC,CAAC,CAAA;YACJ,MAAM,IAAI,GAAG,CAAA;SACd;IACH,CAAC;AACH,CAAC"}
|
package/dist/types/index.js
CHANGED
|
@@ -1,18 +1,2 @@
|
|
|
1
|
-
|
|
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);
|
|
1
|
+
export * from './key-util-types';
|
|
18
2
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA"}
|
|
@@ -1,32 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
exports.JWK_JCS_PUB_NAME = 'jwk_jcs-pub';
|
|
5
|
-
exports.JWK_JCS_PUB_PREFIX = 0xeb51;
|
|
6
|
-
var Key;
|
|
1
|
+
export const JWK_JCS_PUB_NAME = 'jwk_jcs-pub';
|
|
2
|
+
export const JWK_JCS_PUB_PREFIX = 0xeb51;
|
|
3
|
+
export var Key;
|
|
7
4
|
(function (Key) {
|
|
8
5
|
Key["Ed25519"] = "Ed25519";
|
|
9
6
|
Key["Secp256k1"] = "Secp256k1";
|
|
10
7
|
Key["Secp256r1"] = "Secp256r1";
|
|
11
|
-
})(Key
|
|
12
|
-
var JwkKeyUse;
|
|
8
|
+
})(Key || (Key = {}));
|
|
9
|
+
export var JwkKeyUse;
|
|
13
10
|
(function (JwkKeyUse) {
|
|
14
11
|
JwkKeyUse["Encryption"] = "enc";
|
|
15
12
|
JwkKeyUse["Signature"] = "sig";
|
|
16
|
-
})(JwkKeyUse
|
|
17
|
-
var KeyCurve;
|
|
13
|
+
})(JwkKeyUse || (JwkKeyUse = {}));
|
|
14
|
+
export var KeyCurve;
|
|
18
15
|
(function (KeyCurve) {
|
|
19
16
|
KeyCurve["Secp256k1"] = "secp256k1";
|
|
20
17
|
KeyCurve["P_256"] = "P-256";
|
|
21
18
|
KeyCurve["Ed25519"] = "Ed25519";
|
|
22
19
|
KeyCurve["X25519"] = "X25519";
|
|
23
|
-
})(KeyCurve
|
|
24
|
-
var KeyType;
|
|
20
|
+
})(KeyCurve || (KeyCurve = {}));
|
|
21
|
+
export var KeyType;
|
|
25
22
|
(function (KeyType) {
|
|
26
23
|
KeyType["EC"] = "EC";
|
|
27
24
|
KeyType["OKP"] = "OKP";
|
|
28
25
|
KeyType["RSA"] = "RSA";
|
|
29
|
-
})(KeyType
|
|
30
|
-
|
|
31
|
-
|
|
26
|
+
})(KeyType || (KeyType = {}));
|
|
27
|
+
export const SIG_KEY_ALGS = ['ES256', 'ES384', 'ES512', 'EdDSA', 'ES256K', 'Ed25519', 'Secp256k1', 'Secp256r1', 'Bls12381G1', 'Bls12381G2'];
|
|
28
|
+
export const ENC_KEY_ALGS = ['X25519', 'ECDH_ES_A256KW', 'RSA_OAEP_256'];
|
|
32
29
|
//# sourceMappingURL=key-util-types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-util-types.js","sourceRoot":"","sources":["../../src/types/key-util-types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"key-util-types.js","sourceRoot":"","sources":["../../src/types/key-util-types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAA;AAC7C,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAA;AAIxC,MAAM,CAAN,IAAY,GAIX;AAJD,WAAY,GAAG;IACb,0BAAmB,CAAA;IACnB,8BAAuB,CAAA;IACvB,8BAAuB,CAAA;AACzB,CAAC,EAJW,GAAG,KAAH,GAAG,QAId;AAED,MAAM,CAAN,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,+BAAkB,CAAA;IAClB,8BAAiB,CAAA;AACnB,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB;AAED,MAAM,CAAN,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,mCAAuB,CAAA;IACvB,2BAAe,CAAA;IACf,+BAAmB,CAAA;IACnB,6BAAiB,CAAA;AACnB,CAAC,EALW,QAAQ,KAAR,QAAQ,QAKnB;AAED,MAAM,CAAN,IAAY,OAIX;AAJD,WAAY,OAAO;IACjB,oBAAS,CAAA;IACT,sBAAW,CAAA;IACX,sBAAW,CAAA;AACb,CAAC,EAJW,OAAO,KAAP,OAAO,QAIlB;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,CAAA;AAC3I,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAA"}
|
package/dist/x509/index.js
CHANGED
|
@@ -1,20 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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("./rsa-key"), exports);
|
|
18
|
-
__exportStar(require("./rsa-signer"), exports);
|
|
19
|
-
__exportStar(require("./x509-utils"), exports);
|
|
1
|
+
export * from './rsa-key';
|
|
2
|
+
export * from './rsa-signer';
|
|
3
|
+
export * from './x509-utils';
|
|
20
4
|
//# sourceMappingURL=index.js.map
|
package/dist/x509/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/x509/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/x509/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA"}
|
package/dist/x509/rsa-key.js
CHANGED
|
@@ -1,49 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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.generateRSAKeyAsPEM = exports.cryptoSubtleImportRSAKey = exports.signAlgorithmToSchemeAndHashAlg = void 0;
|
|
39
|
-
const isomorphic_webcrypto_1 = __importDefault(require("@sphereon/isomorphic-webcrypto"));
|
|
40
|
-
const u8a = __importStar(require("uint8arrays"));
|
|
41
|
-
const x509_utils_1 = require("./x509-utils");
|
|
1
|
+
import crypto from '@sphereon/isomorphic-webcrypto';
|
|
2
|
+
import * as u8a from 'uint8arrays';
|
|
3
|
+
import { base64ToPEM } from './x509-utils';
|
|
42
4
|
const usage = (jwk) => {
|
|
43
5
|
// "decrypt" | "deriveBits" | "deriveKey" | "encrypt" | "sign" | "unwrapKey" | "verify" | "wrapKey";
|
|
44
6
|
return jwk.d ? ['sign', 'decrypt', 'verify', 'encrypt'] : ['verify', 'encrypt'];
|
|
45
7
|
};
|
|
46
|
-
const signAlgorithmToSchemeAndHashAlg = (signingAlg) => {
|
|
8
|
+
export const signAlgorithmToSchemeAndHashAlg = (signingAlg) => {
|
|
47
9
|
const alg = signingAlg.toUpperCase();
|
|
48
10
|
let scheme;
|
|
49
11
|
if (alg.startsWith('RS')) {
|
|
@@ -58,14 +20,12 @@ const signAlgorithmToSchemeAndHashAlg = (signingAlg) => {
|
|
|
58
20
|
const hashAlgorithm = `SHA-${alg.substring(2)}`;
|
|
59
21
|
return { scheme, hashAlgorithm };
|
|
60
22
|
};
|
|
61
|
-
|
|
62
|
-
const cryptoSubtleImportRSAKey = (jwk, scheme, hashAlgorithm) => __awaiter(void 0, void 0, void 0, function* () {
|
|
23
|
+
export const cryptoSubtleImportRSAKey = async (jwk, scheme, hashAlgorithm) => {
|
|
63
24
|
const hashName = hashAlgorithm ? hashAlgorithm : jwk.alg ? `SHA-${jwk.alg.substring(2)}` : 'SHA-256';
|
|
64
25
|
const importParams = { name: scheme, hash: hashName };
|
|
65
|
-
return
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
const generateRSAKeyAsPEM = (scheme, hashAlgorithm, modulusLength) => __awaiter(void 0, void 0, void 0, function* () {
|
|
26
|
+
return await crypto.subtle.importKey('jwk', jwk, importParams, false, usage(jwk));
|
|
27
|
+
};
|
|
28
|
+
export const generateRSAKeyAsPEM = async (scheme, hashAlgorithm, modulusLength) => {
|
|
69
29
|
const hashName = hashAlgorithm ? hashAlgorithm : 'SHA-256';
|
|
70
30
|
const params = {
|
|
71
31
|
name: scheme,
|
|
@@ -74,10 +34,9 @@ const generateRSAKeyAsPEM = (scheme, hashAlgorithm, modulusLength) => __awaiter(
|
|
|
74
34
|
publicExponent: new Uint8Array([1, 0, 1]),
|
|
75
35
|
};
|
|
76
36
|
const keyUsage = scheme === 'RSA-PSS' || scheme === 'RSASSA-PKCS1-V1_5' ? ['sign', 'verify'] : ['encrypt', 'decrypt'];
|
|
77
|
-
const keypair =
|
|
78
|
-
const pkcs8 =
|
|
37
|
+
const keypair = await crypto.subtle.generateKey(params, true, keyUsage);
|
|
38
|
+
const pkcs8 = await crypto.subtle.exportKey('pkcs8', keypair.privateKey);
|
|
79
39
|
const uint8Array = new Uint8Array(pkcs8);
|
|
80
|
-
return
|
|
81
|
-
}
|
|
82
|
-
exports.generateRSAKeyAsPEM = generateRSAKeyAsPEM;
|
|
40
|
+
return base64ToPEM(u8a.toString(uint8Array, 'base64pad'), 'RSA PRIVATE KEY');
|
|
41
|
+
};
|
|
83
42
|
//# sourceMappingURL=rsa-key.js.map
|
package/dist/x509/rsa-key.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rsa-key.js","sourceRoot":"","sources":["../../src/x509/rsa-key.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rsa-key.js","sourceRoot":"","sources":["../../src/x509/rsa-key.ts"],"names":[],"mappings":"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"}
|
package/dist/x509/rsa-signer.js
CHANGED
|
@@ -1,61 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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.RSASigner = void 0;
|
|
39
|
-
const u8a = __importStar(require("uint8arrays"));
|
|
40
|
-
const isomorphic_webcrypto_1 = __importDefault(require("@sphereon/isomorphic-webcrypto"));
|
|
41
|
-
const rsa_key_1 = require("./rsa-key");
|
|
42
|
-
const x509_utils_1 = require("./x509-utils");
|
|
43
|
-
class RSASigner {
|
|
1
|
+
import * as u8a from 'uint8arrays';
|
|
2
|
+
import crypto from '@sphereon/isomorphic-webcrypto';
|
|
3
|
+
import { cryptoSubtleImportRSAKey } from './rsa-key';
|
|
4
|
+
import { PEMToJwk } from './x509-utils';
|
|
5
|
+
export class RSASigner {
|
|
6
|
+
hashAlgorithm;
|
|
7
|
+
jwk;
|
|
8
|
+
key;
|
|
9
|
+
scheme;
|
|
44
10
|
/**
|
|
45
11
|
*
|
|
46
12
|
* @param key Either in PEM or JWK format (no raw hex keys here!)
|
|
47
13
|
* @param opts The algorithm and signature/encryption schemes
|
|
48
14
|
*/
|
|
49
15
|
constructor(key, opts) {
|
|
50
|
-
var _a, _b;
|
|
51
16
|
if (typeof key === 'string') {
|
|
52
|
-
this.jwk =
|
|
17
|
+
this.jwk = PEMToJwk(key);
|
|
53
18
|
}
|
|
54
19
|
else {
|
|
55
20
|
this.jwk = key;
|
|
56
21
|
}
|
|
57
|
-
this.hashAlgorithm =
|
|
58
|
-
this.scheme =
|
|
22
|
+
this.hashAlgorithm = opts?.hashAlgorithm ?? 'SHA-256';
|
|
23
|
+
this.scheme = opts?.scheme ?? 'RSA-PSS';
|
|
59
24
|
}
|
|
60
25
|
getImportParams() {
|
|
61
26
|
if (this.scheme === 'RSA-PSS') {
|
|
@@ -64,39 +29,32 @@ class RSASigner {
|
|
|
64
29
|
// console.log({ name: this.scheme /*, hash: this.hashAlgorithm*/ })
|
|
65
30
|
return { name: this.scheme /*, hash: this.hashAlgorithm*/ };
|
|
66
31
|
}
|
|
67
|
-
getKey() {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
return this.key;
|
|
73
|
-
});
|
|
32
|
+
async getKey() {
|
|
33
|
+
if (!this.key) {
|
|
34
|
+
this.key = await cryptoSubtleImportRSAKey(this.jwk, this.scheme, this.hashAlgorithm);
|
|
35
|
+
}
|
|
36
|
+
return this.key;
|
|
74
37
|
}
|
|
75
38
|
bufferToString(buf) {
|
|
76
39
|
const uint8Array = new Uint8Array(buf);
|
|
77
40
|
return u8a.toString(uint8Array, 'base64url'); // Needs to be base64url for JsonWebSignature2020. Don't change!
|
|
78
41
|
}
|
|
79
|
-
sign(data) {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
return signature;
|
|
89
|
-
});
|
|
42
|
+
async sign(data) {
|
|
43
|
+
const input = typeof data === 'string' ? u8a.fromString(data, 'utf-8') : data;
|
|
44
|
+
const key = await this.getKey();
|
|
45
|
+
const signature = this.bufferToString(await crypto.subtle.sign(this.getImportParams(), key, input));
|
|
46
|
+
if (!signature) {
|
|
47
|
+
throw Error('Could not sign input data');
|
|
48
|
+
}
|
|
49
|
+
// base64url signature
|
|
50
|
+
return signature;
|
|
90
51
|
}
|
|
91
|
-
verify(data, signature) {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
return verificationResult;
|
|
98
|
-
});
|
|
52
|
+
async verify(data, signature) {
|
|
53
|
+
const sig = typeof signature === 'string' ? signature : u8a.toString(signature, 'base64url');
|
|
54
|
+
const jws = sig.includes('.') ? sig.split('.')[2] : sig;
|
|
55
|
+
const input = typeof data == 'string' ? u8a.fromString(data, 'utf-8') : data;
|
|
56
|
+
const verificationResult = await crypto.subtle.verify(this.getImportParams(), await this.getKey(), u8a.fromString(jws, 'base64url'), input);
|
|
57
|
+
return verificationResult;
|
|
99
58
|
}
|
|
100
59
|
}
|
|
101
|
-
exports.RSASigner = RSASigner;
|
|
102
60
|
//# sourceMappingURL=rsa-signer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rsa-signer.js","sourceRoot":"","sources":["../../src/x509/rsa-signer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rsa-signer.js","sourceRoot":"","sources":["../../src/x509/rsa-signer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,aAAa,CAAA;AAClC,OAAO,MAAM,MAAM,gCAAgC,CAAA;AAGnD,OAAO,EAAE,wBAAwB,EAA6C,MAAM,WAAW,CAAA;AAC/F,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAEvC,MAAM,OAAO,SAAS;IACH,aAAa,CAAe;IAC5B,GAAG,CAAK;IAEjB,GAAG,CAAuB;IACjB,MAAM,CAA4C;IAEnE;;;;OAIG;IACH,YAAY,GAAiB,EAAE,IAA6F;QAC1H,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;SACzB;aAAM;YACL,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;SACf;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,EAAE,aAAa,IAAI,SAAS,CAAA;QACrD,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,SAAS,CAAA;IACzC,CAAC;IAEO,eAAe;QACrB,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;YAC7B,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,CAAA;SAC7C;QACD,oEAAoE;QACpE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,8BAA8B,EAAE,CAAA;IAC7D,CAAC;IAEO,KAAK,CAAC,MAAM;QAClB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACb,IAAI,CAAC,GAAG,GAAG,MAAM,wBAAwB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;SACrF;QACD,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IAEO,cAAc,CAAC,GAAgB;QACrC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAA;QACtC,OAAO,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA,CAAC,gEAAgE;IAC/G,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,IAAyB;QACzC,MAAM,KAAK,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAC7E,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;QACnG,IAAI,CAAC,SAAS,EAAE;YACd,MAAM,KAAK,CAAC,2BAA2B,CAAC,CAAA;SACzC;QAED,uBAAuB;QACvB,OAAO,SAAS,CAAA;IAClB,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,IAAyB,EAAE,SAA8B;QAC3E,MAAM,GAAG,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QAC5F,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QAEvD,MAAM,KAAK,GAAG,OAAO,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAC5E,MAAM,kBAAkB,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,KAAK,CAAC,CAAA;QAC3I,OAAO,kBAAkB,CAAA;IAC3B,CAAC;CACF"}
|
package/dist/x509/x509-utils.js
CHANGED
|
@@ -1,38 +1,9 @@
|
|
|
1
|
-
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.base64ToPEM = exports.hexToPEM = exports.base64ToHex = exports.PEMToHex = exports.publicKeyHexFromPEM = exports.hexKeyFromPEMBasedJwk = exports.privateKeyHexFromPEM = exports.PEMToJwk = exports.jwkToPEM = exports.toKeyObject = exports.x5cToPemCertChain = exports.pemCertChainTox5c = void 0;
|
|
30
|
-
const u8a = __importStar(require("uint8arrays"));
|
|
1
|
+
import * as u8a from 'uint8arrays';
|
|
31
2
|
// @ts-ignore
|
|
32
|
-
|
|
3
|
+
import keyto from '@trust/keyto';
|
|
33
4
|
// Based on (MIT licensed):
|
|
34
5
|
// https://github.com/hildjj/node-posh/blob/master/lib/index.js
|
|
35
|
-
function pemCertChainTox5c(cert, maxDepth) {
|
|
6
|
+
export function pemCertChainTox5c(cert, maxDepth) {
|
|
36
7
|
if (!maxDepth) {
|
|
37
8
|
maxDepth = 0;
|
|
38
9
|
}
|
|
@@ -55,8 +26,7 @@ function pemCertChainTox5c(cert, maxDepth) {
|
|
|
55
26
|
}
|
|
56
27
|
return x5c;
|
|
57
28
|
}
|
|
58
|
-
|
|
59
|
-
function x5cToPemCertChain(x5c, maxDepth) {
|
|
29
|
+
export function x5cToPemCertChain(x5c, maxDepth) {
|
|
60
30
|
if (!maxDepth) {
|
|
61
31
|
maxDepth = 0;
|
|
62
32
|
}
|
|
@@ -67,54 +37,47 @@ function x5cToPemCertChain(x5c, maxDepth) {
|
|
|
67
37
|
}
|
|
68
38
|
return pem;
|
|
69
39
|
}
|
|
70
|
-
|
|
71
|
-
const
|
|
72
|
-
const jwk = (0, exports.PEMToJwk)(PEM, visibility);
|
|
40
|
+
export const toKeyObject = (PEM, visibility = 'public') => {
|
|
41
|
+
const jwk = PEMToJwk(PEM, visibility);
|
|
73
42
|
const keyVisibility = jwk.d ? 'private' : 'public';
|
|
74
|
-
const keyHex = keyVisibility === 'private' ?
|
|
43
|
+
const keyHex = keyVisibility === 'private' ? privateKeyHexFromPEM(PEM) : publicKeyHexFromPEM(PEM);
|
|
75
44
|
return {
|
|
76
|
-
pem:
|
|
45
|
+
pem: hexToPEM(keyHex, visibility),
|
|
77
46
|
jwk,
|
|
78
47
|
keyHex,
|
|
79
48
|
keyType: keyVisibility,
|
|
80
49
|
};
|
|
81
50
|
};
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
return keyto_1.default.from(jwk, 'jwk').toString('pem', visibility === 'public' ? 'public_pkcs8' : 'private_pkcs8');
|
|
51
|
+
export const jwkToPEM = (jwk, visibility = 'public') => {
|
|
52
|
+
return keyto.from(jwk, 'jwk').toString('pem', visibility === 'public' ? 'public_pkcs8' : 'private_pkcs8');
|
|
85
53
|
};
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
return keyto_1.default.from(pem, 'pem').toJwk(visibility);
|
|
54
|
+
export const PEMToJwk = (pem, visibility = 'public') => {
|
|
55
|
+
return keyto.from(pem, 'pem').toJwk(visibility);
|
|
89
56
|
};
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
return (0, exports.PEMToHex)(PEM);
|
|
57
|
+
export const privateKeyHexFromPEM = (PEM) => {
|
|
58
|
+
return PEMToHex(PEM);
|
|
93
59
|
};
|
|
94
|
-
|
|
95
|
-
const hexKeyFromPEMBasedJwk = (jwk, visibility = 'public') => {
|
|
60
|
+
export const hexKeyFromPEMBasedJwk = (jwk, visibility = 'public') => {
|
|
96
61
|
if (visibility === 'private') {
|
|
97
|
-
return
|
|
62
|
+
return privateKeyHexFromPEM(jwkToPEM(jwk, 'private'));
|
|
98
63
|
}
|
|
99
64
|
else {
|
|
100
|
-
return
|
|
65
|
+
return publicKeyHexFromPEM(jwkToPEM(jwk, 'public'));
|
|
101
66
|
}
|
|
102
67
|
};
|
|
103
|
-
|
|
104
|
-
const
|
|
105
|
-
const hex = (0, exports.PEMToHex)(PEM);
|
|
68
|
+
export const publicKeyHexFromPEM = (PEM) => {
|
|
69
|
+
const hex = PEMToHex(PEM);
|
|
106
70
|
if (PEM.includes('CERTIFICATE')) {
|
|
107
71
|
throw Error('Cannot directly deduce public Key from PEM Certificate yet');
|
|
108
72
|
}
|
|
109
73
|
else if (!PEM.includes('PRIVATE')) {
|
|
110
74
|
return hex;
|
|
111
75
|
}
|
|
112
|
-
const publicJwk =
|
|
113
|
-
const publicPEM =
|
|
114
|
-
return
|
|
76
|
+
const publicJwk = PEMToJwk(PEM, 'public');
|
|
77
|
+
const publicPEM = jwkToPEM(publicJwk, 'public');
|
|
78
|
+
return PEMToHex(publicPEM);
|
|
115
79
|
};
|
|
116
|
-
|
|
117
|
-
const PEMToHex = (PEM, headerKey) => {
|
|
80
|
+
export const PEMToHex = (PEM, headerKey) => {
|
|
118
81
|
if (PEM.indexOf('-----BEGIN ') == -1) {
|
|
119
82
|
throw Error(`PEM header not found: ${headerKey}`);
|
|
120
83
|
}
|
|
@@ -127,19 +90,17 @@ const PEMToHex = (PEM, headerKey) => {
|
|
|
127
90
|
strippedPem = PEM.replace(/^[^]*-----BEGIN [^-]+-----/, '');
|
|
128
91
|
strippedPem = strippedPem.replace(/-----END [^-]+-----[^]*$/, '');
|
|
129
92
|
}
|
|
130
|
-
return
|
|
93
|
+
return base64ToHex(strippedPem, 'base64pad');
|
|
131
94
|
};
|
|
132
|
-
exports.PEMToHex = PEMToHex;
|
|
133
95
|
/**
|
|
134
96
|
* Converts a base64 encoded string to hex string, removing any non-base64 characters, including newlines
|
|
135
97
|
* @param input The input in base64, with optional newlines
|
|
136
98
|
* @param inputEncoding
|
|
137
99
|
*/
|
|
138
|
-
const base64ToHex = (input, inputEncoding) => {
|
|
100
|
+
export const base64ToHex = (input, inputEncoding) => {
|
|
139
101
|
const base64NoNewlines = input.replace(/[^0-9A-Za-z\/+=]*/g, '');
|
|
140
102
|
return u8a.toString(u8a.fromString(base64NoNewlines, inputEncoding ? inputEncoding : 'base64pad'), 'base16');
|
|
141
103
|
};
|
|
142
|
-
exports.base64ToHex = base64ToHex;
|
|
143
104
|
const hexToBase64 = (input, targetEncoding) => {
|
|
144
105
|
let hex = typeof input === 'string' ? input : input.toString(16);
|
|
145
106
|
if (hex.length % 2 === 1) {
|
|
@@ -147,13 +108,13 @@ const hexToBase64 = (input, targetEncoding) => {
|
|
|
147
108
|
}
|
|
148
109
|
return u8a.toString(u8a.fromString(hex, 'base16'), targetEncoding ? targetEncoding : 'base64pad');
|
|
149
110
|
};
|
|
150
|
-
const hexToPEM = (hex, type) => {
|
|
111
|
+
export const hexToPEM = (hex, type) => {
|
|
151
112
|
const base64 = hexToBase64(hex, 'base64pad');
|
|
152
113
|
const headerKey = type === 'private' ? 'RSA PRIVATE KEY' : 'PUBLIC KEY';
|
|
153
114
|
if (type === 'private') {
|
|
154
115
|
const pem = base64ToPEM(base64, headerKey);
|
|
155
116
|
try {
|
|
156
|
-
|
|
117
|
+
PEMToJwk(pem); // We only use it to test the private key
|
|
157
118
|
return pem;
|
|
158
119
|
}
|
|
159
120
|
catch (error) {
|
|
@@ -162,14 +123,12 @@ const hexToPEM = (hex, type) => {
|
|
|
162
123
|
}
|
|
163
124
|
return base64ToPEM(base64, headerKey);
|
|
164
125
|
};
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
const key = headerKey !== null && headerKey !== void 0 ? headerKey : 'CERTIFICATE';
|
|
126
|
+
export function base64ToPEM(cert, headerKey) {
|
|
127
|
+
const key = headerKey ?? 'CERTIFICATE';
|
|
168
128
|
const matches = cert.match(/.{1,64}/g);
|
|
169
129
|
if (!matches) {
|
|
170
130
|
throw Error('Invalid cert input value supplied');
|
|
171
131
|
}
|
|
172
132
|
return `-----BEGIN ${key}-----\n${matches.join('\n')}\n-----END ${key}-----\n`;
|
|
173
133
|
}
|
|
174
|
-
exports.base64ToPEM = base64ToPEM;
|
|
175
134
|
//# sourceMappingURL=x509-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x509-utils.js","sourceRoot":"","sources":["../../src/x509/x509-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"x509-utils.js","sourceRoot":"","sources":["../../src/x509/x509-utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sphereon/ssi-sdk-ext.key-utils",
|
|
3
3
|
"description": "Sphereon SSI-SDK plugin for key creation.",
|
|
4
|
-
"version": "0.13.
|
|
4
|
+
"version": "0.13.1-unstable.3+bf7e638",
|
|
5
5
|
"source": "src/index.ts",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
8
|
+
"type": "module",
|
|
8
9
|
"scripts": {
|
|
9
10
|
"build": "tsc --build",
|
|
10
11
|
"build:clean": "tsc --build --clean && tsc --build"
|
|
@@ -15,7 +16,7 @@
|
|
|
15
16
|
"@stablelib/ed25519": "^1.0.2",
|
|
16
17
|
"@stablelib/sha256": "^1.0.1",
|
|
17
18
|
"@stablelib/sha512": "^1.0.1",
|
|
18
|
-
"@veramo/core": "
|
|
19
|
+
"@veramo/core": "^5.3.0",
|
|
19
20
|
"base64url": "^3.0.1",
|
|
20
21
|
"debug": "^4.3.4",
|
|
21
22
|
"did-resolver": "^4.1.0",
|
|
@@ -47,5 +48,5 @@
|
|
|
47
48
|
"DID",
|
|
48
49
|
"Veramo"
|
|
49
50
|
],
|
|
50
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "bf7e63885eb9621004cd87a5804015cc5348a044"
|
|
51
52
|
}
|