@sphereon/ssi-sdk-ext.key-utils 0.13.0 → 0.13.1-next.2

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.
@@ -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,CAmCf;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"}
1
+ {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,aAAa,EAAE,IAAI,EAAE,WAAW,EAAC,MAAM,cAAc,CAAA;AAE7D,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAA;AAGvC,OAAO,EAEH,iCAAiC,EACjC,SAAS,EAIT,QAAQ,EACX,MAAM,SAAS,CAAA;AAGhB;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,SAAgB,QAAQ,KAAG,QAAQ,MAAM,CAmB1E,CAAA;AAED;;;;;;GAMG;AACH,wBAAsB,4BAA4B,CAC9C,IAAI,EAAE,iCAAiC,GAAG;IACtC,GAAG,EAAE,MAAM,CAAA;CACd,EACD,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,GACpC,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
@@ -76,22 +76,26 @@ exports.generatePrivateKeyHex = generatePrivateKeyHex;
76
76
  * @private
77
77
  */
78
78
  function importProvidedOrGeneratedKey(args, context) {
79
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
79
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
80
80
  return __awaiter(this, void 0, void 0, function* () {
81
81
  // @ts-ignore
82
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
83
  const key = (_h = args === null || args === void 0 ? void 0 : args.options) === null || _h === void 0 ? void 0 : _h.key;
84
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 && !((_k = key === null || key === void 0 ? void 0 : key.meta) === null || _k === void 0 ? void 0 : _k.x509)) {
86
- key.meta = Object.assign(Object.assign({}, key.meta), { x509: Object.assign(Object.assign({}, (_l = key.meta) === null || _l === void 0 ? void 0 : _l.x509), args.options.x509) });
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) });
87
87
  }
88
- if (args.options && ((_m = args.options) === null || _m === void 0 ? void 0 : _m.use) === types_1.JwkKeyUse.Encryption && !types_1.ENC_KEY_ALGS.includes(type)) {
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
89
  throw new Error(`${type} keys are not valid for encryption`);
90
90
  }
91
91
  let privateKeyHex;
92
92
  if (key) {
93
- privateKeyHex = (_o = key.privateKeyHex) !== null && _o !== void 0 ? _o : (_q = (_p = key.meta) === null || _p === void 0 ? void 0 : _p.x509) === null || _q === void 0 ? void 0 : _q.privateKeyHex;
94
- if (!privateKeyHex && !((_s = (_r = key.meta) === null || _r === void 0 ? void 0 : _r.x509) === null || _s === void 0 ? void 0 : _s.privateKeyPEM)) {
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)) {
95
99
  throw new Error(`We need to have a private key in Hex or PEM when importing a key`);
96
100
  }
97
101
  }
@@ -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,IAAI,CAAC,CAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,0CAAE,IAAI,CAAA,EAAE;YACjD,GAAG,CAAC,IAAI,mCACH,GAAG,CAAC,IAAI,KACX,IAAI,kCACC,MAAA,GAAG,CAAC,IAAI,0CAAE,IAAI,GACd,IAAI,CAAC,OAAO,CAAC,IAAI,IAEvB,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,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;AAxCD,oEAwCC;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,IAAsC,EAAc,EAAE;IAChH,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,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,kCAAO,IAAI,KAAE,GAAG,EAAE,gBAAQ,CAAC,OAAO,IAAG,CAAA;QAC/E,KAAK,QAAQ;YACX,OAAO,oBAAoB,CAAC,YAAY,kCAAO,IAAI,KAAE,GAAG,EAAE,gBAAQ,CAAC,MAAM,IAAG,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;AApBY,QAAA,KAAK,SAoBjB;AAED;;;;;GAKG;AACI,MAAM,eAAe,GAAG,CAAC,IAAc,EAAE,WAAuB,EAAyB,EAAE;IAChG,OAAO,WAAW;QAChB,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,oBAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC7B,CAAC,CAAC,iBAAS,CAAC,SAAS;YACrB,CAAC,CAAC,oBAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAC7B,CAAC,CAAC,iBAAS,CAAC,UAAU;gBACtB,CAAC,CAAC,SAAS,CAAA;AACf,CAAC,CAAA;AARY,QAAA,eAAe,mBAQ3B;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,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,CAAA;IAC1B,qCACE,GAAG,EAAE,QAAQ,IACV,CAAC,GAAG,KAAK,SAAS,IAAI,EAAE,GAAG,EAAE,CAAC,KACjC,GAAG,EAAE,eAAO,CAAC,EAAE,EACf,GAAG,EAAE,gBAAQ,CAAC,SAAS,EACvB,CAAC,EAAE,IAAA,qBAAa,EAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAC5C,CAAC,EAAE,IAAA,qBAAa,EAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAC9C;AACH,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,cAAc,GAAG,CAAC,YAAoB,EAAE,IAA0B,EAAc,EAAE;IACtF,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,CAAA;IAC1B,MAAM,SAAS,GAAG,YAAY,CAAA;IAC9B,qBAAqB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;IAEpC,MAAM,SAAS,GAAG,IAAI,kBAAQ,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,qCACE,GAAG,EAAE,OAAO,IACT,CAAC,GAAG,KAAK,SAAS,IAAI,EAAE,GAAG,EAAE,CAAC,KACjC,GAAG,EAAE,eAAO,CAAC,EAAE,EACf,GAAG,EAAE,gBAAQ,CAAC,KAAK,EACnB,CAAC,EAAE,IAAA,qBAAa,EAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EACjD,CAAC,EAAE,IAAA,qBAAa,EAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAClD;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,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,CAAA;IAC1B,qCACE,GAAG,EAAE,OAAO,IACT,CAAC,GAAG,KAAK,SAAS,IAAI,EAAE,GAAG,EAAE,CAAC,KACjC,GAAG,EAAE,eAAO,CAAC,GAAG,EAChB,GAAG,EAAE,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,GAAG,mCAAI,gBAAQ,CAAC,OAAO,EAClC,CAAC,EAAE,IAAA,qBAAa,EAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAC7C;AACH,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,CAAC,YAAoB,EAAE,IAAsC,EAAc,EAAE;;IAC5F,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,CAAA;IAC1B,iCAAiC;IACjC,uDAAuD;IAEvD,IAAI,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,0CAAE,YAAY,EAAE;QAC3B,OAAO,GAAG,CAAC,IAAI,CAAC,YAA0B,CAAA;KAC3C;IAED,MAAM,YAAY,GAAG,MAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,0CAAE,YAAY,mCAAI,IAAA,eAAQ,EAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;IAChF,OAAO,IAAA,eAAQ,EAAC,YAAY,EAAE,QAAQ,CAAe,CAAA;AACvD,CAAC,CAAA"}
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.13.0",
4
+ "version": "0.13.1-next.2+52c560b",
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": "636149f9684bc7670579ea47fbe585a5e98e9a46"
50
+ "gitHead": "52c560b4d4fef999554ec00130cf7136dc2db1c6"
51
51
  }
package/src/functions.ts CHANGED
@@ -1,12 +1,20 @@
1
- import { randomBytes } from '@ethersproject/random'
2
- import { generateKeyPair as generateSigningKeyPair } from '@stablelib/ed25519'
3
- import { IAgentContext, IKey, IKeyManager } from '@veramo/core'
1
+ import {randomBytes} from '@ethersproject/random'
2
+ import {generateKeyPair as generateSigningKeyPair} from '@stablelib/ed25519'
3
+ import {IAgentContext, IKey, IKeyManager} from '@veramo/core'
4
4
 
5
- import { JsonWebKey } from 'did-resolver'
5
+ import {JsonWebKey} from 'did-resolver'
6
6
  import elliptic from 'elliptic'
7
7
  import * as u8a from 'uint8arrays'
8
- import { ENC_KEY_ALGS, IImportProvidedOrGeneratedKeyArgs, JwkKeyUse, KeyCurve, KeyType, SIG_KEY_ALGS, TKeyType } from './types'
9
- import { generateRSAKeyAsPEM, hexToPEM, PEMToJwk, privateKeyHexFromPEM } from './x509'
8
+ import {
9
+ ENC_KEY_ALGS,
10
+ IImportProvidedOrGeneratedKeyArgs,
11
+ JwkKeyUse,
12
+ KeyCurve,
13
+ KeyType,
14
+ SIG_KEY_ALGS,
15
+ TKeyType
16
+ } from './types'
17
+ import {generateRSAKeyAsPEM, hexToPEM, PEMToJwk, privateKeyHexFromPEM} from './x509'
10
18
 
11
19
  /**
12
20
  * Generates a random Private Hex Key for the specified key type
@@ -14,24 +22,24 @@ import { generateRSAKeyAsPEM, hexToPEM, PEMToJwk, privateKeyHexFromPEM } from '.
14
22
  * @return The private key in Hex form
15
23
  */
16
24
  export const generatePrivateKeyHex = async (type: TKeyType): Promise<string> => {
17
- switch (type) {
18
- case 'Ed25519': {
19
- const keyPairEd25519 = generateSigningKeyPair()
20
- return u8a.toString(keyPairEd25519.secretKey, 'base16')
25
+ switch (type) {
26
+ case 'Ed25519': {
27
+ const keyPairEd25519 = generateSigningKeyPair()
28
+ return u8a.toString(keyPairEd25519.secretKey, 'base16')
29
+ }
30
+ // The Secp256 types use the same method to generate the key
31
+ case 'Secp256r1':
32
+ case 'Secp256k1': {
33
+ const privateBytes = randomBytes(32)
34
+ return u8a.toString(privateBytes, 'base16')
35
+ }
36
+ case 'RSA': {
37
+ const pem = await generateRSAKeyAsPEM('RSA-PSS', 'SHA-256', 2048)
38
+ return privateKeyHexFromPEM(pem)
39
+ }
40
+ default:
41
+ throw Error(`not_supported: Key type ${type} not yet supported for this did:jwk implementation`)
21
42
  }
22
- // The Secp256 types use the same method to generate the key
23
- case 'Secp256r1':
24
- case 'Secp256k1': {
25
- const privateBytes = randomBytes(32)
26
- return u8a.toString(privateBytes, 'base16')
27
- }
28
- case 'RSA': {
29
- const pem = await generateRSAKeyAsPEM('RSA-PSS', 'SHA-256', 2048)
30
- return privateKeyHexFromPEM(pem)
31
- }
32
- default:
33
- throw Error(`not_supported: Key type ${type} not yet supported for this did:jwk implementation`)
34
- }
35
43
  }
36
44
 
37
45
  /**
@@ -42,45 +50,49 @@ export const generatePrivateKeyHex = async (type: TKeyType): Promise<string> =>
42
50
  * @private
43
51
  */
44
52
  export async function importProvidedOrGeneratedKey(
45
- args: IImportProvidedOrGeneratedKeyArgs & {
46
- kms: string
47
- },
48
- context: IAgentContext<IKeyManager>
53
+ args: IImportProvidedOrGeneratedKeyArgs & {
54
+ kms: string
55
+ },
56
+ context: IAgentContext<IKeyManager>
49
57
  ): Promise<IKey> {
50
- // @ts-ignore
51
- const type = args.options?.type ?? args.options?.key?.type ?? args.options?.keyType ?? 'Secp256r1'
52
- const key = args?.options?.key
53
- // Make sure x509 options are also set on the metadata as that is what the kms will look for
54
- if (args.options?.x509 && key && !key?.meta?.x509) {
55
- key.meta = {
56
- ...key.meta,
57
- x509: {
58
- ...key.meta?.x509,
59
- ...args.options.x509,
60
- },
58
+ // @ts-ignore
59
+ const type = args.options?.type ?? args.options?.key?.type ?? args.options?.keyType ?? 'Secp256r1'
60
+ const key = args?.options?.key
61
+ // Make sure x509 options are also set on the metadata as that is what the kms will look for
62
+ if (args.options?.x509 && key) {
63
+ key.meta = {
64
+ ...key.meta,
65
+ x509: {
66
+ ...args.options.x509,
67
+ ...key.meta?.x509,
68
+ },
69
+ }
61
70
  }
62
- }
63
71
 
64
- if (args.options && args.options?.use === JwkKeyUse.Encryption && !ENC_KEY_ALGS.includes(type)) {
65
- throw new Error(`${type} keys are not valid for encryption`)
66
- }
72
+ if (args.options && args.options?.use === JwkKeyUse.Encryption && !ENC_KEY_ALGS.includes(type)) {
73
+ throw new Error(`${type} keys are not valid for encryption`)
74
+ }
67
75
 
68
- let privateKeyHex: string
69
- if (key) {
70
- privateKeyHex = key.privateKeyHex ?? key.meta?.x509?.privateKeyHex
71
- if (!privateKeyHex && !key.meta?.x509?.privateKeyPEM) {
72
- throw new Error(`We need to have a private key in Hex or PEM when importing a key`)
76
+ let privateKeyHex: string
77
+ if (key) {
78
+ privateKeyHex = key.privateKeyHex ?? key.meta?.x509?.privateKeyHex
79
+ if ((!privateKeyHex || privateKeyHex.trim() === '') && key?.meta?.x509?.privateKeyPEM) {
80
+ // If we do not have a privateKeyHex but do have a PEM
81
+ privateKeyHex = privateKeyHexFromPEM(key.meta.x509.privateKeyPEM)
82
+ }
83
+ if (!privateKeyHex && !key.meta?.x509?.privateKeyPEM) {
84
+ throw new Error(`We need to have a private key in Hex or PEM when importing a key`)
85
+ }
86
+ } else {
87
+ privateKeyHex = await generatePrivateKeyHex(type)
73
88
  }
74
- } else {
75
- privateKeyHex = await generatePrivateKeyHex(type)
76
- }
77
-
78
- return context.agent.keyManagerImport({
79
- ...key,
80
- kms: args.kms,
81
- type,
82
- privateKeyHex,
83
- })
89
+
90
+ return context.agent.keyManagerImport({
91
+ ...key,
92
+ kms: args.kms,
93
+ type,
94
+ privateKeyHex,
95
+ })
84
96
  }
85
97
 
86
98
  /**
@@ -89,12 +101,12 @@ export async function importProvidedOrGeneratedKey(
89
101
  * @return Base64Url encoded value
90
102
  */
91
103
  export const hex2base64url = (value: string) => {
92
- //fixme: Buffer to u8a
93
- const buffer = Buffer.from(value, 'hex')
94
- const base64 = buffer.toString('base64')
95
- const base64url = base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '')
104
+ //fixme: Buffer to u8a
105
+ const buffer = Buffer.from(value, 'hex')
106
+ const base64 = buffer.toString('base64')
107
+ const base64url = base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '')
96
108
 
97
- return base64url
109
+ return base64url
98
110
  }
99
111
 
100
112
  /**
@@ -105,25 +117,25 @@ export const hex2base64url = (value: string) => {
105
117
  * @return The JWK
106
118
  */
107
119
  export const toJwk = (publicKeyHex: string, type: TKeyType, opts?: { use?: JwkKeyUse; key?: IKey }): JsonWebKey => {
108
- const { key } = opts ?? {}
109
- if (key && key.publicKeyHex !== publicKeyHex) {
110
- throw Error(`Provided key with id ${key.kid}, has a different public key hex than supplied public key ${publicKeyHex}`)
111
- }
112
- switch (type) {
113
- case 'Ed25519':
114
- return toEd25519OrX25519Jwk(publicKeyHex, { ...opts, crv: KeyCurve.Ed25519 })
115
- case 'X25519':
116
- return toEd25519OrX25519Jwk(publicKeyHex, { ...opts, crv: KeyCurve.X25519 })
117
- case 'Secp256k1':
118
- return toSecp256k1Jwk(publicKeyHex, opts)
119
- case 'Secp256r1':
120
- return toSecp256r1Jwk(publicKeyHex, opts)
121
- case 'RSA':
122
- return toRSAJwk(publicKeyHex, opts)
123
-
124
- default:
125
- throw new Error(`not_supported: Key type ${type} not yet supported for this did:jwk implementation`)
126
- }
120
+ const {key} = opts ?? {}
121
+ if (key && key.publicKeyHex !== publicKeyHex) {
122
+ throw Error(`Provided key with id ${key.kid}, has a different public key hex than supplied public key ${publicKeyHex}`)
123
+ }
124
+ switch (type) {
125
+ case 'Ed25519':
126
+ return toEd25519OrX25519Jwk(publicKeyHex, {...opts, crv: KeyCurve.Ed25519})
127
+ case 'X25519':
128
+ return toEd25519OrX25519Jwk(publicKeyHex, {...opts, crv: KeyCurve.X25519})
129
+ case 'Secp256k1':
130
+ return toSecp256k1Jwk(publicKeyHex, opts)
131
+ case 'Secp256r1':
132
+ return toSecp256r1Jwk(publicKeyHex, opts)
133
+ case 'RSA':
134
+ return toRSAJwk(publicKeyHex, opts)
135
+
136
+ default:
137
+ throw new Error(`not_supported: Key type ${type} not yet supported for this did:jwk implementation`)
138
+ }
127
139
  }
128
140
 
129
141
  /**
@@ -133,13 +145,13 @@ export const toJwk = (publicKeyHex: string, type: TKeyType, opts?: { use?: JwkKe
133
145
  * @param suppliedUse A supplied use. Will be used in case it is present
134
146
  */
135
147
  export const jwkDetermineUse = (type: TKeyType, suppliedUse?: JwkKeyUse): JwkKeyUse | undefined => {
136
- return suppliedUse
137
- ? suppliedUse
138
- : SIG_KEY_ALGS.includes(type)
139
- ? JwkKeyUse.Signature
140
- : ENC_KEY_ALGS.includes(type)
141
- ? JwkKeyUse.Encryption
142
- : undefined
148
+ return suppliedUse
149
+ ? suppliedUse
150
+ : SIG_KEY_ALGS.includes(type)
151
+ ? JwkKeyUse.Signature
152
+ : ENC_KEY_ALGS.includes(type)
153
+ ? JwkKeyUse.Encryption
154
+ : undefined
143
155
  }
144
156
 
145
157
  /**
@@ -149,17 +161,17 @@ export const jwkDetermineUse = (type: TKeyType, suppliedUse?: JwkKeyUse): JwkKey
149
161
  * @param expectedKeyLength Expected key length(s)
150
162
  */
151
163
  const assertProperKeyLength = (keyHex: string, expectedKeyLength: number | number[]) => {
152
- if (Array.isArray(expectedKeyLength)) {
153
- if (expectedKeyLength.includes(keyHex.length)) {
154
- throw Error(
155
- `Invalid key length. Needs to be a hex string with length from ${JSON.stringify(expectedKeyLength)} instead of ${
156
- keyHex.length
157
- }. Input: ${keyHex}`
158
- )
164
+ if (Array.isArray(expectedKeyLength)) {
165
+ if (expectedKeyLength.includes(keyHex.length)) {
166
+ throw Error(
167
+ `Invalid key length. Needs to be a hex string with length from ${JSON.stringify(expectedKeyLength)} instead of ${
168
+ keyHex.length
169
+ }. Input: ${keyHex}`
170
+ )
171
+ }
172
+ } else if (keyHex.length !== expectedKeyLength) {
173
+ throw Error(`Invalid key length. Needs to be a hex string with length ${expectedKeyLength} instead of ${keyHex.length}. Input: ${keyHex}`)
159
174
  }
160
- } else if (keyHex.length !== expectedKeyLength) {
161
- throw Error(`Invalid key length. Needs to be a hex string with length ${expectedKeyLength} instead of ${keyHex.length}. Input: ${keyHex}`)
162
- }
163
175
  }
164
176
 
165
177
  /**
@@ -169,16 +181,16 @@ const assertProperKeyLength = (keyHex: string, expectedKeyLength: number | numbe
169
181
  * @return The JWK
170
182
  */
171
183
  const toSecp256k1Jwk = (publicKeyHex: string, opts?: { use?: JwkKeyUse }): JsonWebKey => {
172
- assertProperKeyLength(publicKeyHex, 130)
173
- const { use } = opts ?? {}
174
- return {
175
- alg: 'ES256K',
176
- ...(use !== undefined && { use }),
177
- kty: KeyType.EC,
178
- crv: KeyCurve.Secp256k1,
179
- x: hex2base64url(publicKeyHex.substr(2, 64)),
180
- y: hex2base64url(publicKeyHex.substr(66, 64)),
181
- }
184
+ assertProperKeyLength(publicKeyHex, 130)
185
+ const {use} = opts ?? {}
186
+ return {
187
+ alg: 'ES256K',
188
+ ...(use !== undefined && {use}),
189
+ kty: KeyType.EC,
190
+ crv: KeyCurve.Secp256k1,
191
+ x: hex2base64url(publicKeyHex.substr(2, 64)),
192
+ y: hex2base64url(publicKeyHex.substr(66, 64)),
193
+ }
182
194
  }
183
195
 
184
196
  /**
@@ -188,21 +200,21 @@ const toSecp256k1Jwk = (publicKeyHex: string, opts?: { use?: JwkKeyUse }): JsonW
188
200
  * @return The JWK
189
201
  */
190
202
  const toSecp256r1Jwk = (publicKeyHex: string, opts?: { use?: JwkKeyUse }): JsonWebKey => {
191
- const { use } = opts ?? {}
192
- const publicKey = publicKeyHex
193
- assertProperKeyLength(publicKey, 66)
194
-
195
- const secp256r1 = new elliptic.ec('p256')
196
- const key = secp256r1.keyFromPublic(publicKey, 'hex')
197
- const pubPoint = key.getPublic()
198
- return {
199
- alg: 'ES256',
200
- ...(use !== undefined && { use }),
201
- kty: KeyType.EC,
202
- crv: KeyCurve.P_256,
203
- x: hex2base64url(pubPoint.getX().toString('hex')),
204
- y: hex2base64url(pubPoint.getY().toString('hex')),
205
- }
203
+ const {use} = opts ?? {}
204
+ const publicKey = publicKeyHex
205
+ assertProperKeyLength(publicKey, 66)
206
+
207
+ const secp256r1 = new elliptic.ec('p256')
208
+ const key = secp256r1.keyFromPublic(publicKey, 'hex')
209
+ const pubPoint = key.getPublic()
210
+ return {
211
+ alg: 'ES256',
212
+ ...(use !== undefined && {use}),
213
+ kty: KeyType.EC,
214
+ crv: KeyCurve.P_256,
215
+ x: hex2base64url(pubPoint.getX().toString('hex')),
216
+ y: hex2base64url(pubPoint.getY().toString('hex')),
217
+ }
206
218
  }
207
219
 
208
220
  /**
@@ -212,32 +224,32 @@ const toSecp256r1Jwk = (publicKeyHex: string, opts?: { use?: JwkKeyUse }): JsonW
212
224
  * @return The JWK
213
225
  */
214
226
  const toEd25519OrX25519Jwk = (
215
- publicKeyHex: string,
216
- opts: {
217
- use?: JwkKeyUse
218
- crv: KeyCurve.Ed25519 | KeyCurve.X25519
219
- }
227
+ publicKeyHex: string,
228
+ opts: {
229
+ use?: JwkKeyUse
230
+ crv: KeyCurve.Ed25519 | KeyCurve.X25519
231
+ }
220
232
  ): JsonWebKey => {
221
- assertProperKeyLength(publicKeyHex, 64)
222
- const { use } = opts ?? {}
223
- return {
224
- alg: 'EdDSA',
225
- ...(use !== undefined && { use }),
226
- kty: KeyType.OKP,
227
- crv: opts?.crv ?? KeyCurve.Ed25519,
228
- x: hex2base64url(publicKeyHex.substr(0, 64)),
229
- }
233
+ assertProperKeyLength(publicKeyHex, 64)
234
+ const {use} = opts ?? {}
235
+ return {
236
+ alg: 'EdDSA',
237
+ ...(use !== undefined && {use}),
238
+ kty: KeyType.OKP,
239
+ crv: opts?.crv ?? KeyCurve.Ed25519,
240
+ x: hex2base64url(publicKeyHex.substr(0, 64)),
241
+ }
230
242
  }
231
243
 
232
244
  const toRSAJwk = (publicKeyHex: string, opts?: { use?: JwkKeyUse; key?: IKey }): JsonWebKey => {
233
- const { key } = opts ?? {}
234
- // const publicKey = publicKeyHex
235
- // assertProperKeyLength(publicKey, [2048, 3072, 4096])
245
+ const {key} = opts ?? {}
246
+ // const publicKey = publicKeyHex
247
+ // assertProperKeyLength(publicKey, [2048, 3072, 4096])
236
248
 
237
- if (key?.meta?.publicKeyJwk) {
238
- return key.meta.publicKeyJwk as JsonWebKey
239
- }
249
+ if (key?.meta?.publicKeyJwk) {
250
+ return key.meta.publicKeyJwk as JsonWebKey
251
+ }
240
252
 
241
- const publicKeyPEM = key?.meta?.publicKeyPEM ?? hexToPEM(publicKeyHex, 'public')
242
- return PEMToJwk(publicKeyPEM, 'public') as JsonWebKey
253
+ const publicKeyPEM = key?.meta?.publicKeyPEM ?? hexToPEM(publicKeyHex, 'public')
254
+ return PEMToJwk(publicKeyPEM, 'public') as JsonWebKey
243
255
  }