@sphereon/ssi-sdk-ext.key-utils 0.15.1-next.3 → 0.15.1-next.5
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/functions.d.ts +1 -0
- package/dist/functions.d.ts.map +1 -1
- package/dist/functions.js +46 -13
- package/dist/functions.js.map +1 -1
- package/package.json +2 -2
- package/src/functions.ts +51 -15
package/dist/functions.d.ts
CHANGED
|
@@ -33,6 +33,7 @@ export declare const hex2base64url: (value: string) => string;
|
|
|
33
33
|
export declare const toJwk: (publicKeyHex: string, type: TKeyType, opts?: {
|
|
34
34
|
use?: JwkKeyUse;
|
|
35
35
|
key?: IKey;
|
|
36
|
+
isPrivateKey?: boolean;
|
|
36
37
|
}) => JsonWebKey;
|
|
37
38
|
/**
|
|
38
39
|
* Determines the use param based upon the key/signature type or supplied use value.
|
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,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,
|
|
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,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,KAAG,UAoB5H,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe,SAAU,QAAQ,gBAAgB,SAAS,KAAG,SAAS,GAAG,SAQrF,CAAA"}
|
package/dist/functions.js
CHANGED
|
@@ -129,8 +129,8 @@ exports.hex2base64url = hex2base64url;
|
|
|
129
129
|
*/
|
|
130
130
|
const toJwk = (publicKeyHex, type, opts) => {
|
|
131
131
|
const { key } = opts !== null && opts !== void 0 ? opts : {};
|
|
132
|
-
if (key && key.publicKeyHex !== publicKeyHex) {
|
|
133
|
-
throw Error(`Provided key with id ${key.kid}, has a different public key hex than supplied public key ${publicKeyHex}`);
|
|
132
|
+
if (key && key.publicKeyHex !== publicKeyHex && (opts === null || opts === void 0 ? void 0 : opts.isPrivateKey) !== true) {
|
|
133
|
+
throw Error(`Provided key with id ${key.kid}, has a different public key hex ${key.publicKeyHex} than supplied public key ${publicKeyHex}`);
|
|
134
134
|
}
|
|
135
135
|
switch (type) {
|
|
136
136
|
case 'Ed25519':
|
|
@@ -188,27 +188,60 @@ const assertProperKeyLength = (keyHex, expectedKeyLength) => {
|
|
|
188
188
|
*/
|
|
189
189
|
const toSecp256k1Jwk = (publicKeyHex, opts) => {
|
|
190
190
|
const { use } = opts !== null && opts !== void 0 ? opts : {};
|
|
191
|
-
const publicKey = publicKeyHex
|
|
191
|
+
// const publicKey = publicKeyHex
|
|
192
192
|
assertProperKeyLength(publicKeyHex, [64, 66, 130]);
|
|
193
|
-
const
|
|
194
|
-
const
|
|
195
|
-
const
|
|
196
|
-
|
|
193
|
+
const secp256k1 = new elliptic_1.default.ec('secp256k1');
|
|
194
|
+
const keyBytes = u8a.fromString(publicKeyHex, 'base16');
|
|
195
|
+
const keyPair = (opts === null || opts === void 0 ? void 0 : opts.isPrivateKey) ? secp256k1.keyFromPrivate(keyBytes) : secp256k1.keyFromPublic(keyBytes);
|
|
196
|
+
/*const publicKeyHex = keyPair.getPublic(true, 'hex')
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
if (opts?.isPrivateKey) {
|
|
200
|
+
const key = secp256k1.keyFromPrivate(publicKey, 'hex')
|
|
201
|
+
// const point = key.getPrivate()
|
|
202
|
+
return {
|
|
203
|
+
alg: 'ES256K',
|
|
204
|
+
...(use !== undefined && { use }),
|
|
205
|
+
kty: KeyType.EC,
|
|
206
|
+
crv: KeyCurve.Secp256k1,
|
|
207
|
+
x: hex2base64url(key.ec.g.x.toString('hex')),
|
|
208
|
+
y: hex2base64url(key.ec.g.y.toString('hex')),
|
|
209
|
+
d: hex2base64url(key.getPrivate('hex')),
|
|
210
|
+
}
|
|
211
|
+
}*/
|
|
212
|
+
// const key = secp256k1.keyFromPublic(keyPair, 'hex')
|
|
213
|
+
const pubPoint = keyPair.getPublic();
|
|
214
|
+
return Object.assign(Object.assign(Object.assign({ alg: 'ES256K' }, (use !== undefined && { use })), { kty: types_1.KeyType.EC, crv: types_1.KeyCurve.Secp256k1, x: (0, exports.hex2base64url)(pubPoint.getX().toString('hex')), y: (0, exports.hex2base64url)(pubPoint.getY().toString('hex')) }), ((opts === null || opts === void 0 ? void 0 : opts.isPrivateKey) && { d: (0, exports.hex2base64url)(keyPair.getPrivate('hex')) }));
|
|
197
215
|
};
|
|
198
216
|
/**
|
|
199
217
|
* Generates a JWK from a Secp256r1 public key
|
|
200
|
-
* @param
|
|
218
|
+
* @param keyHex Secp256r1 public key in hex
|
|
201
219
|
* @param use The use for the key
|
|
202
220
|
* @return The JWK
|
|
203
221
|
*/
|
|
204
|
-
const toSecp256r1Jwk = (
|
|
222
|
+
const toSecp256r1Jwk = (keyHex, opts) => {
|
|
205
223
|
const { use } = opts !== null && opts !== void 0 ? opts : {};
|
|
206
|
-
const publicKey =
|
|
224
|
+
const publicKey = keyHex;
|
|
207
225
|
assertProperKeyLength(publicKey, [64, 66, 130]);
|
|
208
226
|
const secp256r1 = new elliptic_1.default.ec('p256');
|
|
209
|
-
const
|
|
210
|
-
const
|
|
211
|
-
|
|
227
|
+
const keyBytes = u8a.fromString(keyHex, 'base16');
|
|
228
|
+
const keyPair = (opts === null || opts === void 0 ? void 0 : opts.isPrivateKey) ? secp256r1.keyFromPrivate(keyBytes) : secp256r1.keyFromPublic(keyBytes);
|
|
229
|
+
/* if (opts?.isPrivateKey) {
|
|
230
|
+
const key = secp256r1.keyFromPrivate(publicKey, 'hex')
|
|
231
|
+
// const point = key.getPrivate()
|
|
232
|
+
return {
|
|
233
|
+
alg: 'ES256',
|
|
234
|
+
...(use !== undefined && { use }),
|
|
235
|
+
kty: KeyType.EC,
|
|
236
|
+
crv: KeyCurve.P_256,
|
|
237
|
+
x: hex2base64url(key.ec.g.x.toString('hex')),
|
|
238
|
+
y: hex2base64url(key.ec.g.y.toString('hex')),
|
|
239
|
+
d: hex2base64url(key.getPrivate('hex')),
|
|
240
|
+
}
|
|
241
|
+
}*/
|
|
242
|
+
// const key = secp256r1.keyFromPublic(publicKey, 'hex')
|
|
243
|
+
const point = keyPair.getPublic();
|
|
244
|
+
return Object.assign(Object.assign(Object.assign({ alg: 'ES256' }, (use !== undefined && { use })), { kty: types_1.KeyType.EC, crv: types_1.KeyCurve.P_256, x: (0, exports.hex2base64url)(point.getX().toString('hex')), y: (0, exports.hex2base64url)(point.getY().toString('hex')) }), ((opts === null || opts === void 0 ? void 0 : opts.isPrivateKey) && { d: (0, exports.hex2base64url)(keyPair.getPrivate('hex')) }));
|
|
212
245
|
};
|
|
213
246
|
/**
|
|
214
247
|
* Generates a JWK from an Ed25519/X25519 public key
|
package/dist/functions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAmD;AACnD,gDAA8E;AAI9E,wDAA+B;AAC/B,iDAAkC;AAClC,mCAA+H;AAC/H,iCAAsF;AAEtF;;;;GAIG;AACI,MAAM,qBAAqB,GAAG,CAAO,IAAc,EAAmB,EAAE;IAC7E,QAAQ,IAAI,EAAE;QACZ,KAAK,SAAS,CAAC,CAAC;YACd,MAAM,cAAc,GAAG,IAAA,yBAAsB,GAAE,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,IAAA,oBAAW,EAAC,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,IAAA,0BAAmB,EAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;YACjE,OAAO,IAAA,2BAAoB,EAAC,GAAG,CAAC,CAAA;SACjC;QACD;YACE,MAAM,KAAK,CAAC,2BAA2B,IAAI,oDAAoD,CAAC,CAAA;KACnG;AACH,CAAC,CAAA,CAAA;AAnBY,QAAA,qBAAqB,yBAmBjC;AAED;;;;;;GAMG;AACH,SAAsB,4BAA4B,CAChD,IAEC,EACD,OAAmC;;;QAEnC,aAAa;QACb,MAAM,IAAI,GAAG,MAAA,MAAA,MAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,mCAAI,MAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,GAAG,0CAAE,IAAI,mCAAI,MAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,mCAAI,WAAW,CAAA;QAClG,MAAM,GAAG,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,0CAAE,GAAG,CAAA;QAC9B,4FAA4F;QAC5F,IAAI,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,KAAI,GAAG,EAAE;YAC7B,GAAG,CAAC,IAAI,mCACH,GAAG,CAAC,IAAI,KACX,IAAI,kCACC,IAAI,CAAC,OAAO,CAAC,IAAI,GACjB,MAAA,GAAG,CAAC,IAAI,0CAAE,IAAI,IAEpB,CAAA;SACF;QAED,IAAI,IAAI,CAAC,OAAO,IAAI,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,GAAG,MAAK,iBAAS,CAAC,UAAU,IAAI,CAAC,oBAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAC9F,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,oCAAoC,CAAC,CAAA;SAC7D;QAED,IAAI,aAAqB,CAAA;QACzB,IAAI,GAAG,EAAE;YACP,aAAa,GAAG,MAAA,GAAG,CAAC,aAAa,mCAAI,MAAA,MAAA,GAAG,CAAC,IAAI,0CAAE,IAAI,0CAAE,aAAa,CAAA;YAClE,IAAI,CAAC,CAAC,aAAa,IAAI,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,KAAI,MAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,0CAAE,IAAI,0CAAE,aAAa,CAAA,EAAE;gBACrF,sDAAsD;gBACtD,aAAa,GAAG,IAAA,2BAAoB,EAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;aAClE;YACD,IAAI,CAAC,aAAa,IAAI,CAAC,CAAA,MAAA,MAAA,GAAG,CAAC,IAAI,0CAAE,IAAI,0CAAE,aAAa,CAAA,EAAE;gBACpD,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;aACpF;SACF;aAAM;YACL,aAAa,GAAG,MAAM,IAAA,6BAAqB,EAAC,IAAI,CAAC,CAAA;SAClD;QAED,OAAO,OAAO,CAAC,KAAK,CAAC,gBAAgB,iCAChC,GAAG,KACN,GAAG,EAAE,IAAI,CAAC,GAAG,EACb,IAAI;YACJ,aAAa,IACb,CAAA;;CACH;AA5CD,oEA4CC;AAED;;;;GAIG;AACI,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;AAPY,QAAA,aAAa,iBAOzB;AAED;;;;;;GAMG;AACI,MAAM,KAAK,GAAG,CAAC,YAAoB,EAAE,IAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sphereon/ssi-sdk-ext.key-utils",
|
|
3
3
|
"description": "Sphereon SSI-SDK plugin for key creation.",
|
|
4
|
-
"version": "0.15.1-next.
|
|
4
|
+
"version": "0.15.1-next.5+871aae1",
|
|
5
5
|
"source": "src/index.ts",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -47,5 +47,5 @@
|
|
|
47
47
|
"DID",
|
|
48
48
|
"Veramo"
|
|
49
49
|
],
|
|
50
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "871aae18cce6fcddb67ca63e49f693d8222edcad"
|
|
51
51
|
}
|
package/src/functions.ts
CHANGED
|
@@ -108,10 +108,10 @@ export const hex2base64url = (value: string) => {
|
|
|
108
108
|
* @param opts. Options, like the optional use for the key (sig/enc)
|
|
109
109
|
* @return The JWK
|
|
110
110
|
*/
|
|
111
|
-
export const toJwk = (publicKeyHex: string, type: TKeyType, opts?: { use?: JwkKeyUse; key?: IKey }): JsonWebKey => {
|
|
111
|
+
export const toJwk = (publicKeyHex: string, type: TKeyType, opts?: { use?: JwkKeyUse; key?: IKey; isPrivateKey?: boolean }): JsonWebKey => {
|
|
112
112
|
const { key } = opts ?? {}
|
|
113
|
-
if (key && key.publicKeyHex !== publicKeyHex) {
|
|
114
|
-
throw Error(`Provided key with id ${key.kid}, has a different public key hex than supplied public key ${publicKeyHex}`)
|
|
113
|
+
if (key && key.publicKeyHex !== publicKeyHex && opts?.isPrivateKey !== true) {
|
|
114
|
+
throw Error(`Provided key with id ${key.kid}, has a different public key hex ${key.publicKeyHex} than supplied public key ${publicKeyHex}`)
|
|
115
115
|
}
|
|
116
116
|
switch (type) {
|
|
117
117
|
case 'Ed25519':
|
|
@@ -172,14 +172,32 @@ const assertProperKeyLength = (keyHex: string, expectedKeyLength: number | numbe
|
|
|
172
172
|
* @param use The use for the key
|
|
173
173
|
* @return The JWK
|
|
174
174
|
*/
|
|
175
|
-
const toSecp256k1Jwk = (publicKeyHex: string, opts?: { use?: JwkKeyUse }): JsonWebKey => {
|
|
175
|
+
const toSecp256k1Jwk = (publicKeyHex: string, opts?: { use?: JwkKeyUse; isPrivateKey?: boolean }): JsonWebKey => {
|
|
176
176
|
const { use } = opts ?? {}
|
|
177
|
-
const publicKey = publicKeyHex
|
|
177
|
+
// const publicKey = publicKeyHex
|
|
178
178
|
assertProperKeyLength(publicKeyHex, [64, 66, 130])
|
|
179
179
|
|
|
180
|
-
const
|
|
181
|
-
const
|
|
182
|
-
const
|
|
180
|
+
const secp256k1 = new elliptic.ec('secp256k1')
|
|
181
|
+
const keyBytes = u8a.fromString(publicKeyHex, 'base16')
|
|
182
|
+
const keyPair = opts?.isPrivateKey ? secp256k1.keyFromPrivate(keyBytes) : secp256k1.keyFromPublic(keyBytes)
|
|
183
|
+
/*const publicKeyHex = keyPair.getPublic(true, 'hex')
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
if (opts?.isPrivateKey) {
|
|
187
|
+
const key = secp256k1.keyFromPrivate(publicKey, 'hex')
|
|
188
|
+
// const point = key.getPrivate()
|
|
189
|
+
return {
|
|
190
|
+
alg: 'ES256K',
|
|
191
|
+
...(use !== undefined && { use }),
|
|
192
|
+
kty: KeyType.EC,
|
|
193
|
+
crv: KeyCurve.Secp256k1,
|
|
194
|
+
x: hex2base64url(key.ec.g.x.toString('hex')),
|
|
195
|
+
y: hex2base64url(key.ec.g.y.toString('hex')),
|
|
196
|
+
d: hex2base64url(key.getPrivate('hex')),
|
|
197
|
+
}
|
|
198
|
+
}*/
|
|
199
|
+
// const key = secp256k1.keyFromPublic(keyPair, 'hex')
|
|
200
|
+
const pubPoint = keyPair.getPublic()
|
|
183
201
|
|
|
184
202
|
return {
|
|
185
203
|
alg: 'ES256K',
|
|
@@ -188,30 +206,48 @@ const toSecp256k1Jwk = (publicKeyHex: string, opts?: { use?: JwkKeyUse }): JsonW
|
|
|
188
206
|
crv: KeyCurve.Secp256k1,
|
|
189
207
|
x: hex2base64url(pubPoint.getX().toString('hex')),
|
|
190
208
|
y: hex2base64url(pubPoint.getY().toString('hex')),
|
|
209
|
+
...(opts?.isPrivateKey && { d: hex2base64url(keyPair.getPrivate('hex')) }),
|
|
191
210
|
}
|
|
192
211
|
}
|
|
193
212
|
|
|
194
213
|
/**
|
|
195
214
|
* Generates a JWK from a Secp256r1 public key
|
|
196
|
-
* @param
|
|
215
|
+
* @param keyHex Secp256r1 public key in hex
|
|
197
216
|
* @param use The use for the key
|
|
198
217
|
* @return The JWK
|
|
199
218
|
*/
|
|
200
|
-
const toSecp256r1Jwk = (
|
|
219
|
+
const toSecp256r1Jwk = (keyHex: string, opts?: { use?: JwkKeyUse; isPrivateKey?: boolean }): JsonWebKey => {
|
|
201
220
|
const { use } = opts ?? {}
|
|
202
|
-
const publicKey =
|
|
221
|
+
const publicKey = keyHex
|
|
203
222
|
assertProperKeyLength(publicKey, [64, 66, 130])
|
|
204
223
|
|
|
205
224
|
const secp256r1 = new elliptic.ec('p256')
|
|
206
|
-
const
|
|
207
|
-
const
|
|
225
|
+
const keyBytes = u8a.fromString(keyHex, 'base16')
|
|
226
|
+
const keyPair = opts?.isPrivateKey ? secp256r1.keyFromPrivate(keyBytes) : secp256r1.keyFromPublic(keyBytes)
|
|
227
|
+
|
|
228
|
+
/* if (opts?.isPrivateKey) {
|
|
229
|
+
const key = secp256r1.keyFromPrivate(publicKey, 'hex')
|
|
230
|
+
// const point = key.getPrivate()
|
|
231
|
+
return {
|
|
232
|
+
alg: 'ES256',
|
|
233
|
+
...(use !== undefined && { use }),
|
|
234
|
+
kty: KeyType.EC,
|
|
235
|
+
crv: KeyCurve.P_256,
|
|
236
|
+
x: hex2base64url(key.ec.g.x.toString('hex')),
|
|
237
|
+
y: hex2base64url(key.ec.g.y.toString('hex')),
|
|
238
|
+
d: hex2base64url(key.getPrivate('hex')),
|
|
239
|
+
}
|
|
240
|
+
}*/
|
|
241
|
+
// const key = secp256r1.keyFromPublic(publicKey, 'hex')
|
|
242
|
+
const point = keyPair.getPublic()
|
|
208
243
|
return {
|
|
209
244
|
alg: 'ES256',
|
|
210
245
|
...(use !== undefined && { use }),
|
|
211
246
|
kty: KeyType.EC,
|
|
212
247
|
crv: KeyCurve.P_256,
|
|
213
|
-
x: hex2base64url(
|
|
214
|
-
y: hex2base64url(
|
|
248
|
+
x: hex2base64url(point.getX().toString('hex')),
|
|
249
|
+
y: hex2base64url(point.getY().toString('hex')),
|
|
250
|
+
...(opts?.isPrivateKey && { d: hex2base64url(keyPair.getPrivate('hex')) }),
|
|
215
251
|
}
|
|
216
252
|
}
|
|
217
253
|
|