@ledgerhq/revault-sdk 0.21.4 → 0.21.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/lib/bake.cjs CHANGED
@@ -4,7 +4,7 @@
4
4
  var _chunkI6B5U4JRcjs = require('./chunk-I6B5U4JR.cjs');
5
5
 
6
6
 
7
- var _chunkJGXOGWYBcjs = require('./chunk-JGXOGWYB.cjs');
7
+ var _chunkCKNBRCHAcjs = require('./chunk-CKNBRCHA.cjs');
8
8
 
9
9
  // src/bake/index.ts
10
10
  var _invariant = require('invariant'); var _invariant2 = _interopRequireDefault(_invariant);
@@ -446,7 +446,7 @@ async function bakeWorkspace(options, logger) {
446
446
  usersWithDeviceIndex.push({ user: createdUser, deviceIndex });
447
447
  }
448
448
  async function createApiUser(apiUser) {
449
- const pubKey = _nullishCoalesce(apiUser.pubKey, () => ( _chunkJGXOGWYBcjs.genKeys.call(void 0, apiUser.name).hexPubKey));
449
+ const pubKey = _nullishCoalesce(apiUser.pubKey, () => ( _chunkCKNBRCHAcjs.genKeys.call(void 0, apiUser.name).hexPubKey));
450
450
  const existing = existingApiUsers.find(
451
451
  (user) => user.pubKey === pubKey || user.name === apiUser.name
452
452
  );
package/lib/bake.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-IHGVWOD7.js";
5
5
  import {
6
6
  genKeys
7
- } from "./chunk-CZLZUISN.js";
7
+ } from "./chunk-QVDZOA4O.js";
8
8
 
9
9
  // src/bake/index.ts
10
10
  import invariant4 from "invariant";
@@ -221,7 +221,7 @@ function extractPublicKey(pemKey) {
221
221
  pem.pop();
222
222
  const keyBuffer = Buffer.from(pem.join(""), "base64");
223
223
  const actualKeyBuffer = keyBuffer.slice(26);
224
- return actualKeyBuffer.toString("hex");
224
+ return actualKeyBuffer.toString("hex").toUpperCase();
225
225
  }
226
226
  function hexToPem(hexString, { isPrivate = true } = {}) {
227
227
  const keyEncoder = new KeyEncoder("p256");
@@ -259,4 +259,4 @@ function genKeys(entropy) {
259
259
 
260
260
 
261
261
  exports.genKeys = genKeys;
262
- //# sourceMappingURL=chunk-JGXOGWYB.cjs.map
262
+ //# sourceMappingURL=chunk-CKNBRCHA.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/_work/revault/revault/packages/sdk/lib/chunk-CKNBRCHA.cjs","../src/crypto/utils.ts","../src/crypto/key-encoder.ts"],"names":["elliptic"],"mappings":"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","file":"/home/runner/_work/revault/revault/packages/sdk/lib/chunk-CKNBRCHA.cjs","sourcesContent":[null,"import crypto from \"crypto\";\nimport elliptic from \"elliptic\";\n\nimport { KeyEncoder } from \"./key-encoder\";\nimport type { GeneratedKeys } from \"./types\";\n\nfunction extractPublicKey(pemKey: string): string {\n // convert the PEM formatted public key to raw public key in X9.62 uncompressed format\n // this is an oversimplified method and may not work with different curves or PEM formats\n const pem = pemKey.split(\"\\n\");\n pem.shift(); // remove the first line (BEGIN PUBLIC KEY)\n pem.pop(); // remove the last line (END PUBLIC KEY)\n // convert base64 to buffer\n const keyBuffer = Buffer.from(pem.join(\"\"), \"base64\");\n // assuming the first 26 bytes are the header for the SPKI formatted key.\n // the actual key should begin after this header.\n const actualKeyBuffer = keyBuffer.slice(26);\n return actualKeyBuffer.toString(\"hex\").toUpperCase();\n}\n\nfunction hexToPem(hexString: string, { isPrivate = true } = {}): string {\n const keyEncoder = new KeyEncoder(\"p256\");\n if (isPrivate) {\n return keyEncoder.encodePrivate(hexString, \"raw\", \"pem\");\n }\n return keyEncoder.encodePublic(hexString, \"raw\", \"pem\");\n}\n\n/**\n * If `entropy` is passed, will generate keys pair deterministically\n * else, random keys pair generated\n */\nexport function genKeys(entropy?: string): GeneratedKeys {\n if (entropy) {\n const ec = new elliptic.ec(\"p256\");\n const hashedEntropy = crypto.createHash(\"sha256\").update(entropy).digest(\"hex\");\n const keyPair = ec.genKeyPair({\n entropy: Buffer.from(hashedEntropy, \"hex\"),\n });\n return {\n privateKey: String(hexToPem(keyPair.getPrivate(\"hex\"))),\n publicKey: String(hexToPem(keyPair.getPublic(\"hex\"), { isPrivate: false })),\n hexPubKey: extractPublicKey(String(hexToPem(keyPair.getPublic(\"hex\"), { isPrivate: false }))),\n };\n }\n const { publicKey, privateKey } = crypto.generateKeyPairSync(\"ec\", {\n namedCurve: \"P-256\",\n publicKeyEncoding: { type: \"spki\", format: \"pem\" },\n privateKeyEncoding: { type: \"sec1\", format: \"pem\" },\n });\n const hexPubKey = extractPublicKey(publicKey);\n return {\n privateKey,\n publicKey,\n hexPubKey,\n };\n}\n","// ========================================================================== //\n// //\n// DISCLAIMER //\n// //\n// This code has been blindly copy-pasted from: //\n// https://github.com/LedgerHQ/pkey-ts //\n// //\n// ========================================================================== //\n//\n// @ts-expect-error this library does not ship types\nimport asn1 from \"asn1.js\";\nimport BN from \"bn.js\";\nimport elliptic from \"elliptic\";\n\n/* cspell:disable */\nconst ECPrivateKeyASN = asn1.define(\"ECPrivateKey\", function () {\n // @ts-expect-error pure black box\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-assertion\n const self = this as any;\n self\n .seq()\n .obj(\n self.key(\"version\").int(),\n self.key(\"privateKey\").octstr(),\n self.key(\"parameters\").explicit(0).objid().optional(),\n self.key(\"publicKey\").explicit(1).bitstr().optional(),\n );\n});\n\nconst ECPrivateKey8ASN = asn1.define(\n \"ECPrivateKey\",\n /* v8 ignore start */\n function () {\n // @ts-expect-error pure black box\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-assertion\n const self = this as any;\n self\n .seq()\n .obj(\n self.key(\"version\").int(),\n self\n .key(\"privateKeyAlgorithm\")\n .seq()\n .obj(self.key(\"ecPublicKey\").objid(), self.key(\"curve\").objid()),\n self.key(\"privateKey\").octstr().contains(ECPrivateKeyASN),\n self.key(\"attributes\").explicit(0).bitstr().optional(),\n );\n },\n /* v8 ignore stop */\n);\n\nconst SubjectPublicKeyInfoASN = asn1.define(\"SubjectPublicKeyInfo\", function () {\n // @ts-expect-error pure black box\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-assertion\n const self = this as any;\n self\n .seq()\n .obj(\n self.key(\"algorithm\").seq().obj(self.key(\"id\").objid(), self.key(\"curve\").objid()),\n self.key(\"pub\").bitstr(),\n );\n});\n\ntype CurveOptions = {\n curveParameters: number[];\n privatePEMOptions: { label: string };\n publicPEMOptions: { label: string };\n curve: elliptic.ec;\n};\n\nconst curves: Record<string, CurveOptions> = {\n secp256k1: {\n curveParameters: [1, 3, 132, 0, 10],\n privatePEMOptions: { label: \"EC PRIVATE KEY\" },\n publicPEMOptions: { label: \"PUBLIC KEY\" },\n curve: new elliptic.ec(\"secp256k1\"),\n },\n p256: {\n curveParameters: [1, 2, 840, 10045, 3, 1, 7], // OID for p256 curve\n privatePEMOptions: { label: \"EC PRIVATE KEY\" },\n publicPEMOptions: { label: \"PUBLIC KEY\" },\n curve: new elliptic.ec(\"p256\"),\n },\n};\n\ntype PrivateKeyPKCS1 = {\n version: BN;\n privateKey: Buffer;\n parameters: number[];\n publicKey?: {\n unused: number;\n data: Buffer;\n };\n};\n\ntype PrivateKeyPKCS8 = {\n version: BN;\n privateKey: PrivateKeyPKCS1;\n privateKeyAlgorithm: { ecPublicKey: number[]; curve: number[] };\n};\n\nexport type KeyFormat = \"raw\" | \"pem\" | \"der\";\n\nexport class KeyEncoder {\n algorithmID: number[];\n options: CurveOptions;\n\n constructor(options: string | CurveOptions) {\n if (typeof options === \"string\") {\n /* v8 ignore start */\n if (options !== \"secp256k1\" && options !== \"p256\") {\n throw new Error(\"Unknown curve \" + options);\n }\n /* v8 ignore stop */\n options = curves[options]!;\n }\n this.options = options;\n this.algorithmID = [1, 2, 840, 10045, 2, 1];\n }\n\n /* v8 ignore start */\n private PKCS1toPKCS8(privateKey: PrivateKeyPKCS1): PrivateKeyPKCS8 {\n return {\n version: new BN(0),\n privateKey,\n privateKeyAlgorithm: {\n ecPublicKey: this.algorithmID,\n curve: privateKey.parameters,\n },\n };\n }\n /* v8 ignore stop */\n\n privateKeyObject(rawPrivateKey: string, rawPublicKey: string): PrivateKeyPKCS1 {\n const privateKeyObject: PrivateKeyPKCS1 = {\n version: new BN(1),\n privateKey: Buffer.from(rawPrivateKey, \"hex\"),\n parameters: this.options.curveParameters,\n };\n\n if (rawPublicKey) {\n privateKeyObject.publicKey = {\n unused: 0,\n data: Buffer.from(rawPublicKey, \"hex\"),\n };\n }\n\n return privateKeyObject;\n }\n\n publicKeyObject(rawPublicKey: string): {\n algorithm: { id: number[]; curve: number[] };\n pub: { unused: number; data: Buffer };\n } {\n return {\n algorithm: {\n id: this.algorithmID,\n curve: this.options.curveParameters,\n },\n pub: {\n unused: 0,\n data: Buffer.from(rawPublicKey, \"hex\"),\n },\n };\n }\n\n encodePrivate(\n privateKey: string | Buffer,\n originalFormat: KeyFormat,\n destinationFormat: KeyFormat,\n destinationFormatType: \"pkcs8\" | \"pkcs1\" = \"pkcs1\",\n ): string {\n let privateKeyObject: PrivateKeyPKCS1;\n\n /* Parse the incoming private key and convert it to a private key object */\n switch (originalFormat) {\n case \"raw\": {\n if (typeof privateKey !== \"string\") {\n throw new Error(\"private key must be a string\");\n }\n const keyPair = this.options.curve.keyFromPrivate(privateKey, \"hex\");\n const rawPublicKey = keyPair.getPublic(\"hex\");\n privateKeyObject = this.privateKeyObject(privateKey, rawPublicKey);\n break;\n }\n case \"der\":\n if (typeof privateKey === \"string\") {\n privateKey = Buffer.from(privateKey, \"hex\");\n }\n privateKeyObject = ECPrivateKeyASN.decode(privateKey, \"der\");\n break;\n case \"pem\":\n if (typeof privateKey !== \"string\") {\n throw new Error(\"private key must be a string\");\n }\n privateKeyObject = ECPrivateKeyASN.decode(\n privateKey,\n \"pem\",\n this.options.privatePEMOptions,\n );\n break;\n /* v8 ignore start */\n default:\n throw new Error(\"invalid private key format\");\n /* v8 ignore stop */\n }\n\n /* Export the private key object to the desired format */\n switch (destinationFormat) {\n case \"raw\":\n if (destinationFormatType === \"pkcs1\") {\n return privateKeyObject.privateKey.toString(\"hex\");\n } else if (destinationFormatType === \"pkcs8\") {\n return this.PKCS1toPKCS8(privateKeyObject).privateKey.privateKey.toString(\"hex\");\n }\n break;\n case \"der\":\n if (destinationFormatType === \"pkcs1\") {\n return ECPrivateKeyASN.encode(privateKeyObject, \"der\").toString(\"hex\");\n } else if (destinationFormatType === \"pkcs8\") {\n return ECPrivateKey8ASN.encode(this.PKCS1toPKCS8(privateKeyObject), \"der\").toString(\n \"hex\",\n );\n }\n break;\n case \"pem\":\n if (destinationFormatType === \"pkcs1\") {\n return ECPrivateKeyASN.encode(privateKeyObject, \"pem\", this.options.privatePEMOptions);\n } else if (destinationFormatType === \"pkcs8\") {\n return ECPrivateKey8ASN.encode(this.PKCS1toPKCS8(privateKeyObject), \"pem\", {\n ...this.options.privatePEMOptions,\n label: \"PRIVATE KEY\",\n });\n }\n break;\n /* v8 ignore start */\n default:\n throw new Error(\"invalid destination format for private key\");\n /* v8 ignore stop */\n }\n\n throw new Error(\"unsupported destination format or type\");\n }\n\n encodePublic(\n publicKey: string | Buffer,\n originalFormat: KeyFormat,\n destinationFormat: KeyFormat,\n ): string {\n let publicKeyObject;\n\n switch (originalFormat) {\n case \"raw\":\n if (typeof publicKey !== \"string\") {\n throw new Error(\"public key must be a string\");\n }\n publicKeyObject = this.publicKeyObject(publicKey);\n break;\n case \"der\":\n if (typeof publicKey === \"string\") {\n publicKey = Buffer.from(publicKey, \"hex\");\n }\n publicKeyObject = SubjectPublicKeyInfoASN.decode(publicKey, \"der\");\n break;\n case \"pem\":\n if (typeof publicKey !== \"string\") {\n throw new Error(\"public key must be a string\");\n }\n publicKeyObject = SubjectPublicKeyInfoASN.decode(\n publicKey,\n \"pem\",\n this.options.publicPEMOptions,\n );\n break;\n /* v8 ignore start */\n default:\n throw new Error(\"invalid public key format\");\n /* v8 ignore stop */\n }\n\n /* Export the private key object to the desired format */\n switch (destinationFormat) {\n case \"raw\":\n return publicKeyObject.pub.data.toString(\"hex\");\n case \"der\":\n return SubjectPublicKeyInfoASN.encode(publicKeyObject, \"der\").toString(\"hex\");\n case \"pem\":\n return SubjectPublicKeyInfoASN.encode(\n publicKeyObject,\n \"pem\",\n this.options.publicPEMOptions,\n );\n /* v8 ignore start */\n default:\n throw new Error(\"invalid destination format for public key\");\n /* v8 ignore stop */\n }\n }\n}\n/* cspell:enable */\n"]}
@@ -221,7 +221,7 @@ function extractPublicKey(pemKey) {
221
221
  pem.pop();
222
222
  const keyBuffer = Buffer.from(pem.join(""), "base64");
223
223
  const actualKeyBuffer = keyBuffer.slice(26);
224
- return actualKeyBuffer.toString("hex");
224
+ return actualKeyBuffer.toString("hex").toUpperCase();
225
225
  }
226
226
  function hexToPem(hexString, { isPrivate = true } = {}) {
227
227
  const keyEncoder = new KeyEncoder("p256");
@@ -259,4 +259,4 @@ function genKeys(entropy) {
259
259
  export {
260
260
  genKeys
261
261
  };
262
- //# sourceMappingURL=chunk-CZLZUISN.js.map
262
+ //# sourceMappingURL=chunk-QVDZOA4O.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/crypto/utils.ts","../src/crypto/key-encoder.ts"],"sourcesContent":["import crypto from \"crypto\";\nimport elliptic from \"elliptic\";\n\nimport { KeyEncoder } from \"./key-encoder\";\nimport type { GeneratedKeys } from \"./types\";\n\nfunction extractPublicKey(pemKey: string): string {\n // convert the PEM formatted public key to raw public key in X9.62 uncompressed format\n // this is an oversimplified method and may not work with different curves or PEM formats\n const pem = pemKey.split(\"\\n\");\n pem.shift(); // remove the first line (BEGIN PUBLIC KEY)\n pem.pop(); // remove the last line (END PUBLIC KEY)\n // convert base64 to buffer\n const keyBuffer = Buffer.from(pem.join(\"\"), \"base64\");\n // assuming the first 26 bytes are the header for the SPKI formatted key.\n // the actual key should begin after this header.\n const actualKeyBuffer = keyBuffer.slice(26);\n return actualKeyBuffer.toString(\"hex\").toUpperCase();\n}\n\nfunction hexToPem(hexString: string, { isPrivate = true } = {}): string {\n const keyEncoder = new KeyEncoder(\"p256\");\n if (isPrivate) {\n return keyEncoder.encodePrivate(hexString, \"raw\", \"pem\");\n }\n return keyEncoder.encodePublic(hexString, \"raw\", \"pem\");\n}\n\n/**\n * If `entropy` is passed, will generate keys pair deterministically\n * else, random keys pair generated\n */\nexport function genKeys(entropy?: string): GeneratedKeys {\n if (entropy) {\n const ec = new elliptic.ec(\"p256\");\n const hashedEntropy = crypto.createHash(\"sha256\").update(entropy).digest(\"hex\");\n const keyPair = ec.genKeyPair({\n entropy: Buffer.from(hashedEntropy, \"hex\"),\n });\n return {\n privateKey: String(hexToPem(keyPair.getPrivate(\"hex\"))),\n publicKey: String(hexToPem(keyPair.getPublic(\"hex\"), { isPrivate: false })),\n hexPubKey: extractPublicKey(String(hexToPem(keyPair.getPublic(\"hex\"), { isPrivate: false }))),\n };\n }\n const { publicKey, privateKey } = crypto.generateKeyPairSync(\"ec\", {\n namedCurve: \"P-256\",\n publicKeyEncoding: { type: \"spki\", format: \"pem\" },\n privateKeyEncoding: { type: \"sec1\", format: \"pem\" },\n });\n const hexPubKey = extractPublicKey(publicKey);\n return {\n privateKey,\n publicKey,\n hexPubKey,\n };\n}\n","// ========================================================================== //\n// //\n// DISCLAIMER //\n// //\n// This code has been blindly copy-pasted from: //\n// https://github.com/LedgerHQ/pkey-ts //\n// //\n// ========================================================================== //\n//\n// @ts-expect-error this library does not ship types\nimport asn1 from \"asn1.js\";\nimport BN from \"bn.js\";\nimport elliptic from \"elliptic\";\n\n/* cspell:disable */\nconst ECPrivateKeyASN = asn1.define(\"ECPrivateKey\", function () {\n // @ts-expect-error pure black box\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-assertion\n const self = this as any;\n self\n .seq()\n .obj(\n self.key(\"version\").int(),\n self.key(\"privateKey\").octstr(),\n self.key(\"parameters\").explicit(0).objid().optional(),\n self.key(\"publicKey\").explicit(1).bitstr().optional(),\n );\n});\n\nconst ECPrivateKey8ASN = asn1.define(\n \"ECPrivateKey\",\n /* v8 ignore start */\n function () {\n // @ts-expect-error pure black box\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-assertion\n const self = this as any;\n self\n .seq()\n .obj(\n self.key(\"version\").int(),\n self\n .key(\"privateKeyAlgorithm\")\n .seq()\n .obj(self.key(\"ecPublicKey\").objid(), self.key(\"curve\").objid()),\n self.key(\"privateKey\").octstr().contains(ECPrivateKeyASN),\n self.key(\"attributes\").explicit(0).bitstr().optional(),\n );\n },\n /* v8 ignore stop */\n);\n\nconst SubjectPublicKeyInfoASN = asn1.define(\"SubjectPublicKeyInfo\", function () {\n // @ts-expect-error pure black box\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-assertion\n const self = this as any;\n self\n .seq()\n .obj(\n self.key(\"algorithm\").seq().obj(self.key(\"id\").objid(), self.key(\"curve\").objid()),\n self.key(\"pub\").bitstr(),\n );\n});\n\ntype CurveOptions = {\n curveParameters: number[];\n privatePEMOptions: { label: string };\n publicPEMOptions: { label: string };\n curve: elliptic.ec;\n};\n\nconst curves: Record<string, CurveOptions> = {\n secp256k1: {\n curveParameters: [1, 3, 132, 0, 10],\n privatePEMOptions: { label: \"EC PRIVATE KEY\" },\n publicPEMOptions: { label: \"PUBLIC KEY\" },\n curve: new elliptic.ec(\"secp256k1\"),\n },\n p256: {\n curveParameters: [1, 2, 840, 10045, 3, 1, 7], // OID for p256 curve\n privatePEMOptions: { label: \"EC PRIVATE KEY\" },\n publicPEMOptions: { label: \"PUBLIC KEY\" },\n curve: new elliptic.ec(\"p256\"),\n },\n};\n\ntype PrivateKeyPKCS1 = {\n version: BN;\n privateKey: Buffer;\n parameters: number[];\n publicKey?: {\n unused: number;\n data: Buffer;\n };\n};\n\ntype PrivateKeyPKCS8 = {\n version: BN;\n privateKey: PrivateKeyPKCS1;\n privateKeyAlgorithm: { ecPublicKey: number[]; curve: number[] };\n};\n\nexport type KeyFormat = \"raw\" | \"pem\" | \"der\";\n\nexport class KeyEncoder {\n algorithmID: number[];\n options: CurveOptions;\n\n constructor(options: string | CurveOptions) {\n if (typeof options === \"string\") {\n /* v8 ignore start */\n if (options !== \"secp256k1\" && options !== \"p256\") {\n throw new Error(\"Unknown curve \" + options);\n }\n /* v8 ignore stop */\n options = curves[options]!;\n }\n this.options = options;\n this.algorithmID = [1, 2, 840, 10045, 2, 1];\n }\n\n /* v8 ignore start */\n private PKCS1toPKCS8(privateKey: PrivateKeyPKCS1): PrivateKeyPKCS8 {\n return {\n version: new BN(0),\n privateKey,\n privateKeyAlgorithm: {\n ecPublicKey: this.algorithmID,\n curve: privateKey.parameters,\n },\n };\n }\n /* v8 ignore stop */\n\n privateKeyObject(rawPrivateKey: string, rawPublicKey: string): PrivateKeyPKCS1 {\n const privateKeyObject: PrivateKeyPKCS1 = {\n version: new BN(1),\n privateKey: Buffer.from(rawPrivateKey, \"hex\"),\n parameters: this.options.curveParameters,\n };\n\n if (rawPublicKey) {\n privateKeyObject.publicKey = {\n unused: 0,\n data: Buffer.from(rawPublicKey, \"hex\"),\n };\n }\n\n return privateKeyObject;\n }\n\n publicKeyObject(rawPublicKey: string): {\n algorithm: { id: number[]; curve: number[] };\n pub: { unused: number; data: Buffer };\n } {\n return {\n algorithm: {\n id: this.algorithmID,\n curve: this.options.curveParameters,\n },\n pub: {\n unused: 0,\n data: Buffer.from(rawPublicKey, \"hex\"),\n },\n };\n }\n\n encodePrivate(\n privateKey: string | Buffer,\n originalFormat: KeyFormat,\n destinationFormat: KeyFormat,\n destinationFormatType: \"pkcs8\" | \"pkcs1\" = \"pkcs1\",\n ): string {\n let privateKeyObject: PrivateKeyPKCS1;\n\n /* Parse the incoming private key and convert it to a private key object */\n switch (originalFormat) {\n case \"raw\": {\n if (typeof privateKey !== \"string\") {\n throw new Error(\"private key must be a string\");\n }\n const keyPair = this.options.curve.keyFromPrivate(privateKey, \"hex\");\n const rawPublicKey = keyPair.getPublic(\"hex\");\n privateKeyObject = this.privateKeyObject(privateKey, rawPublicKey);\n break;\n }\n case \"der\":\n if (typeof privateKey === \"string\") {\n privateKey = Buffer.from(privateKey, \"hex\");\n }\n privateKeyObject = ECPrivateKeyASN.decode(privateKey, \"der\");\n break;\n case \"pem\":\n if (typeof privateKey !== \"string\") {\n throw new Error(\"private key must be a string\");\n }\n privateKeyObject = ECPrivateKeyASN.decode(\n privateKey,\n \"pem\",\n this.options.privatePEMOptions,\n );\n break;\n /* v8 ignore start */\n default:\n throw new Error(\"invalid private key format\");\n /* v8 ignore stop */\n }\n\n /* Export the private key object to the desired format */\n switch (destinationFormat) {\n case \"raw\":\n if (destinationFormatType === \"pkcs1\") {\n return privateKeyObject.privateKey.toString(\"hex\");\n } else if (destinationFormatType === \"pkcs8\") {\n return this.PKCS1toPKCS8(privateKeyObject).privateKey.privateKey.toString(\"hex\");\n }\n break;\n case \"der\":\n if (destinationFormatType === \"pkcs1\") {\n return ECPrivateKeyASN.encode(privateKeyObject, \"der\").toString(\"hex\");\n } else if (destinationFormatType === \"pkcs8\") {\n return ECPrivateKey8ASN.encode(this.PKCS1toPKCS8(privateKeyObject), \"der\").toString(\n \"hex\",\n );\n }\n break;\n case \"pem\":\n if (destinationFormatType === \"pkcs1\") {\n return ECPrivateKeyASN.encode(privateKeyObject, \"pem\", this.options.privatePEMOptions);\n } else if (destinationFormatType === \"pkcs8\") {\n return ECPrivateKey8ASN.encode(this.PKCS1toPKCS8(privateKeyObject), \"pem\", {\n ...this.options.privatePEMOptions,\n label: \"PRIVATE KEY\",\n });\n }\n break;\n /* v8 ignore start */\n default:\n throw new Error(\"invalid destination format for private key\");\n /* v8 ignore stop */\n }\n\n throw new Error(\"unsupported destination format or type\");\n }\n\n encodePublic(\n publicKey: string | Buffer,\n originalFormat: KeyFormat,\n destinationFormat: KeyFormat,\n ): string {\n let publicKeyObject;\n\n switch (originalFormat) {\n case \"raw\":\n if (typeof publicKey !== \"string\") {\n throw new Error(\"public key must be a string\");\n }\n publicKeyObject = this.publicKeyObject(publicKey);\n break;\n case \"der\":\n if (typeof publicKey === \"string\") {\n publicKey = Buffer.from(publicKey, \"hex\");\n }\n publicKeyObject = SubjectPublicKeyInfoASN.decode(publicKey, \"der\");\n break;\n case \"pem\":\n if (typeof publicKey !== \"string\") {\n throw new Error(\"public key must be a string\");\n }\n publicKeyObject = SubjectPublicKeyInfoASN.decode(\n publicKey,\n \"pem\",\n this.options.publicPEMOptions,\n );\n break;\n /* v8 ignore start */\n default:\n throw new Error(\"invalid public key format\");\n /* v8 ignore stop */\n }\n\n /* Export the private key object to the desired format */\n switch (destinationFormat) {\n case \"raw\":\n return publicKeyObject.pub.data.toString(\"hex\");\n case \"der\":\n return SubjectPublicKeyInfoASN.encode(publicKeyObject, \"der\").toString(\"hex\");\n case \"pem\":\n return SubjectPublicKeyInfoASN.encode(\n publicKeyObject,\n \"pem\",\n this.options.publicPEMOptions,\n );\n /* v8 ignore start */\n default:\n throw new Error(\"invalid destination format for public key\");\n /* v8 ignore stop */\n }\n }\n}\n/* cspell:enable */\n"],"mappings":"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","names":["elliptic","elliptic"]}
package/lib/crypto.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkJGXOGWYBcjs = require('./chunk-JGXOGWYB.cjs');
3
+ var _chunkCKNBRCHAcjs = require('./chunk-CKNBRCHA.cjs');
4
4
 
5
5
 
6
- exports.genKeys = _chunkJGXOGWYBcjs.genKeys;
6
+ exports.genKeys = _chunkCKNBRCHAcjs.genKeys;
7
7
  //# sourceMappingURL=crypto.cjs.map
package/lib/crypto.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  genKeys
3
- } from "./chunk-CZLZUISN.js";
3
+ } from "./chunk-QVDZOA4O.js";
4
4
  export {
5
5
  genKeys
6
6
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/revault-sdk",
3
- "version": "0.21.4",
3
+ "version": "0.21.5",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "files": [
@@ -59,7 +59,7 @@
59
59
  "superjson": "^2.2.2",
60
60
  "uuid": "^13.0.0",
61
61
  "zod": "^4.1.12",
62
- "@ledgerhq/revault-api": "1.39.0"
62
+ "@ledgerhq/revault-api": "1.39.1"
63
63
  },
64
64
  "devDependencies": {
65
65
  "@eslint/js": "^9.38.0",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/crypto/utils.ts","../src/crypto/key-encoder.ts"],"sourcesContent":["import crypto from \"crypto\";\nimport elliptic from \"elliptic\";\n\nimport { KeyEncoder } from \"./key-encoder\";\nimport type { GeneratedKeys } from \"./types\";\n\nfunction extractPublicKey(pemKey: string): string {\n // convert the PEM formatted public key to raw public key in X9.62 uncompressed format\n // this is an oversimplified method and may not work with different curves or PEM formats\n const pem = pemKey.split(\"\\n\");\n pem.shift(); // remove the first line (BEGIN PUBLIC KEY)\n pem.pop(); // remove the last line (END PUBLIC KEY)\n // convert base64 to buffer\n const keyBuffer = Buffer.from(pem.join(\"\"), \"base64\");\n // assuming the first 26 bytes are the header for the SPKI formatted key.\n // the actual key should begin after this header.\n const actualKeyBuffer = keyBuffer.slice(26);\n return actualKeyBuffer.toString(\"hex\");\n}\n\nfunction hexToPem(hexString: string, { isPrivate = true } = {}): string {\n const keyEncoder = new KeyEncoder(\"p256\");\n if (isPrivate) {\n return keyEncoder.encodePrivate(hexString, \"raw\", \"pem\");\n }\n return keyEncoder.encodePublic(hexString, \"raw\", \"pem\");\n}\n\n/**\n * If `entropy` is passed, will generate keys pair deterministically\n * else, random keys pair generated\n */\nexport function genKeys(entropy?: string): GeneratedKeys {\n if (entropy) {\n const ec = new elliptic.ec(\"p256\");\n const hashedEntropy = crypto.createHash(\"sha256\").update(entropy).digest(\"hex\");\n const keyPair = ec.genKeyPair({\n entropy: Buffer.from(hashedEntropy, \"hex\"),\n });\n return {\n privateKey: String(hexToPem(keyPair.getPrivate(\"hex\"))),\n publicKey: String(hexToPem(keyPair.getPublic(\"hex\"), { isPrivate: false })),\n hexPubKey: extractPublicKey(String(hexToPem(keyPair.getPublic(\"hex\"), { isPrivate: false }))),\n };\n }\n const { publicKey, privateKey } = crypto.generateKeyPairSync(\"ec\", {\n namedCurve: \"P-256\",\n publicKeyEncoding: { type: \"spki\", format: \"pem\" },\n privateKeyEncoding: { type: \"sec1\", format: \"pem\" },\n });\n const hexPubKey = extractPublicKey(publicKey);\n return {\n privateKey,\n publicKey,\n hexPubKey,\n };\n}\n","// ========================================================================== //\n// //\n// DISCLAIMER //\n// //\n// This code has been blindly copy-pasted from: //\n// https://github.com/LedgerHQ/pkey-ts //\n// //\n// ========================================================================== //\n//\n// @ts-expect-error this library does not ship types\nimport asn1 from \"asn1.js\";\nimport BN from \"bn.js\";\nimport elliptic from \"elliptic\";\n\n/* cspell:disable */\nconst ECPrivateKeyASN = asn1.define(\"ECPrivateKey\", function () {\n // @ts-expect-error pure black box\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-assertion\n const self = this as any;\n self\n .seq()\n .obj(\n self.key(\"version\").int(),\n self.key(\"privateKey\").octstr(),\n self.key(\"parameters\").explicit(0).objid().optional(),\n self.key(\"publicKey\").explicit(1).bitstr().optional(),\n );\n});\n\nconst ECPrivateKey8ASN = asn1.define(\n \"ECPrivateKey\",\n /* v8 ignore start */\n function () {\n // @ts-expect-error pure black box\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-assertion\n const self = this as any;\n self\n .seq()\n .obj(\n self.key(\"version\").int(),\n self\n .key(\"privateKeyAlgorithm\")\n .seq()\n .obj(self.key(\"ecPublicKey\").objid(), self.key(\"curve\").objid()),\n self.key(\"privateKey\").octstr().contains(ECPrivateKeyASN),\n self.key(\"attributes\").explicit(0).bitstr().optional(),\n );\n },\n /* v8 ignore stop */\n);\n\nconst SubjectPublicKeyInfoASN = asn1.define(\"SubjectPublicKeyInfo\", function () {\n // @ts-expect-error pure black box\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-assertion\n const self = this as any;\n self\n .seq()\n .obj(\n self.key(\"algorithm\").seq().obj(self.key(\"id\").objid(), self.key(\"curve\").objid()),\n self.key(\"pub\").bitstr(),\n );\n});\n\ntype CurveOptions = {\n curveParameters: number[];\n privatePEMOptions: { label: string };\n publicPEMOptions: { label: string };\n curve: elliptic.ec;\n};\n\nconst curves: Record<string, CurveOptions> = {\n secp256k1: {\n curveParameters: [1, 3, 132, 0, 10],\n privatePEMOptions: { label: \"EC PRIVATE KEY\" },\n publicPEMOptions: { label: \"PUBLIC KEY\" },\n curve: new elliptic.ec(\"secp256k1\"),\n },\n p256: {\n curveParameters: [1, 2, 840, 10045, 3, 1, 7], // OID for p256 curve\n privatePEMOptions: { label: \"EC PRIVATE KEY\" },\n publicPEMOptions: { label: \"PUBLIC KEY\" },\n curve: new elliptic.ec(\"p256\"),\n },\n};\n\ntype PrivateKeyPKCS1 = {\n version: BN;\n privateKey: Buffer;\n parameters: number[];\n publicKey?: {\n unused: number;\n data: Buffer;\n };\n};\n\ntype PrivateKeyPKCS8 = {\n version: BN;\n privateKey: PrivateKeyPKCS1;\n privateKeyAlgorithm: { ecPublicKey: number[]; curve: number[] };\n};\n\nexport type KeyFormat = \"raw\" | \"pem\" | \"der\";\n\nexport class KeyEncoder {\n algorithmID: number[];\n options: CurveOptions;\n\n constructor(options: string | CurveOptions) {\n if (typeof options === \"string\") {\n /* v8 ignore start */\n if (options !== \"secp256k1\" && options !== \"p256\") {\n throw new Error(\"Unknown curve \" + options);\n }\n /* v8 ignore stop */\n options = curves[options]!;\n }\n this.options = options;\n this.algorithmID = [1, 2, 840, 10045, 2, 1];\n }\n\n /* v8 ignore start */\n private PKCS1toPKCS8(privateKey: PrivateKeyPKCS1): PrivateKeyPKCS8 {\n return {\n version: new BN(0),\n privateKey,\n privateKeyAlgorithm: {\n ecPublicKey: this.algorithmID,\n curve: privateKey.parameters,\n },\n };\n }\n /* v8 ignore stop */\n\n privateKeyObject(rawPrivateKey: string, rawPublicKey: string): PrivateKeyPKCS1 {\n const privateKeyObject: PrivateKeyPKCS1 = {\n version: new BN(1),\n privateKey: Buffer.from(rawPrivateKey, \"hex\"),\n parameters: this.options.curveParameters,\n };\n\n if (rawPublicKey) {\n privateKeyObject.publicKey = {\n unused: 0,\n data: Buffer.from(rawPublicKey, \"hex\"),\n };\n }\n\n return privateKeyObject;\n }\n\n publicKeyObject(rawPublicKey: string): {\n algorithm: { id: number[]; curve: number[] };\n pub: { unused: number; data: Buffer };\n } {\n return {\n algorithm: {\n id: this.algorithmID,\n curve: this.options.curveParameters,\n },\n pub: {\n unused: 0,\n data: Buffer.from(rawPublicKey, \"hex\"),\n },\n };\n }\n\n encodePrivate(\n privateKey: string | Buffer,\n originalFormat: KeyFormat,\n destinationFormat: KeyFormat,\n destinationFormatType: \"pkcs8\" | \"pkcs1\" = \"pkcs1\",\n ): string {\n let privateKeyObject: PrivateKeyPKCS1;\n\n /* Parse the incoming private key and convert it to a private key object */\n switch (originalFormat) {\n case \"raw\": {\n if (typeof privateKey !== \"string\") {\n throw new Error(\"private key must be a string\");\n }\n const keyPair = this.options.curve.keyFromPrivate(privateKey, \"hex\");\n const rawPublicKey = keyPair.getPublic(\"hex\");\n privateKeyObject = this.privateKeyObject(privateKey, rawPublicKey);\n break;\n }\n case \"der\":\n if (typeof privateKey === \"string\") {\n privateKey = Buffer.from(privateKey, \"hex\");\n }\n privateKeyObject = ECPrivateKeyASN.decode(privateKey, \"der\");\n break;\n case \"pem\":\n if (typeof privateKey !== \"string\") {\n throw new Error(\"private key must be a string\");\n }\n privateKeyObject = ECPrivateKeyASN.decode(\n privateKey,\n \"pem\",\n this.options.privatePEMOptions,\n );\n break;\n /* v8 ignore start */\n default:\n throw new Error(\"invalid private key format\");\n /* v8 ignore stop */\n }\n\n /* Export the private key object to the desired format */\n switch (destinationFormat) {\n case \"raw\":\n if (destinationFormatType === \"pkcs1\") {\n return privateKeyObject.privateKey.toString(\"hex\");\n } else if (destinationFormatType === \"pkcs8\") {\n return this.PKCS1toPKCS8(privateKeyObject).privateKey.privateKey.toString(\"hex\");\n }\n break;\n case \"der\":\n if (destinationFormatType === \"pkcs1\") {\n return ECPrivateKeyASN.encode(privateKeyObject, \"der\").toString(\"hex\");\n } else if (destinationFormatType === \"pkcs8\") {\n return ECPrivateKey8ASN.encode(this.PKCS1toPKCS8(privateKeyObject), \"der\").toString(\n \"hex\",\n );\n }\n break;\n case \"pem\":\n if (destinationFormatType === \"pkcs1\") {\n return ECPrivateKeyASN.encode(privateKeyObject, \"pem\", this.options.privatePEMOptions);\n } else if (destinationFormatType === \"pkcs8\") {\n return ECPrivateKey8ASN.encode(this.PKCS1toPKCS8(privateKeyObject), \"pem\", {\n ...this.options.privatePEMOptions,\n label: \"PRIVATE KEY\",\n });\n }\n break;\n /* v8 ignore start */\n default:\n throw new Error(\"invalid destination format for private key\");\n /* v8 ignore stop */\n }\n\n throw new Error(\"unsupported destination format or type\");\n }\n\n encodePublic(\n publicKey: string | Buffer,\n originalFormat: KeyFormat,\n destinationFormat: KeyFormat,\n ): string {\n let publicKeyObject;\n\n switch (originalFormat) {\n case \"raw\":\n if (typeof publicKey !== \"string\") {\n throw new Error(\"public key must be a string\");\n }\n publicKeyObject = this.publicKeyObject(publicKey);\n break;\n case \"der\":\n if (typeof publicKey === \"string\") {\n publicKey = Buffer.from(publicKey, \"hex\");\n }\n publicKeyObject = SubjectPublicKeyInfoASN.decode(publicKey, \"der\");\n break;\n case \"pem\":\n if (typeof publicKey !== \"string\") {\n throw new Error(\"public key must be a string\");\n }\n publicKeyObject = SubjectPublicKeyInfoASN.decode(\n publicKey,\n \"pem\",\n this.options.publicPEMOptions,\n );\n break;\n /* v8 ignore start */\n default:\n throw new Error(\"invalid public key format\");\n /* v8 ignore stop */\n }\n\n /* Export the private key object to the desired format */\n switch (destinationFormat) {\n case \"raw\":\n return publicKeyObject.pub.data.toString(\"hex\");\n case \"der\":\n return SubjectPublicKeyInfoASN.encode(publicKeyObject, \"der\").toString(\"hex\");\n case \"pem\":\n return SubjectPublicKeyInfoASN.encode(\n publicKeyObject,\n \"pem\",\n this.options.publicPEMOptions,\n );\n /* v8 ignore start */\n default:\n throw new Error(\"invalid destination format for public key\");\n /* v8 ignore stop */\n }\n }\n}\n/* cspell:enable */\n"],"mappings":"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","names":["elliptic","elliptic"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/_work/revault/revault/packages/sdk/lib/chunk-JGXOGWYB.cjs","../src/crypto/utils.ts","../src/crypto/key-encoder.ts"],"names":["elliptic"],"mappings":"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","file":"/home/runner/_work/revault/revault/packages/sdk/lib/chunk-JGXOGWYB.cjs","sourcesContent":[null,"import crypto from \"crypto\";\nimport elliptic from \"elliptic\";\n\nimport { KeyEncoder } from \"./key-encoder\";\nimport type { GeneratedKeys } from \"./types\";\n\nfunction extractPublicKey(pemKey: string): string {\n // convert the PEM formatted public key to raw public key in X9.62 uncompressed format\n // this is an oversimplified method and may not work with different curves or PEM formats\n const pem = pemKey.split(\"\\n\");\n pem.shift(); // remove the first line (BEGIN PUBLIC KEY)\n pem.pop(); // remove the last line (END PUBLIC KEY)\n // convert base64 to buffer\n const keyBuffer = Buffer.from(pem.join(\"\"), \"base64\");\n // assuming the first 26 bytes are the header for the SPKI formatted key.\n // the actual key should begin after this header.\n const actualKeyBuffer = keyBuffer.slice(26);\n return actualKeyBuffer.toString(\"hex\");\n}\n\nfunction hexToPem(hexString: string, { isPrivate = true } = {}): string {\n const keyEncoder = new KeyEncoder(\"p256\");\n if (isPrivate) {\n return keyEncoder.encodePrivate(hexString, \"raw\", \"pem\");\n }\n return keyEncoder.encodePublic(hexString, \"raw\", \"pem\");\n}\n\n/**\n * If `entropy` is passed, will generate keys pair deterministically\n * else, random keys pair generated\n */\nexport function genKeys(entropy?: string): GeneratedKeys {\n if (entropy) {\n const ec = new elliptic.ec(\"p256\");\n const hashedEntropy = crypto.createHash(\"sha256\").update(entropy).digest(\"hex\");\n const keyPair = ec.genKeyPair({\n entropy: Buffer.from(hashedEntropy, \"hex\"),\n });\n return {\n privateKey: String(hexToPem(keyPair.getPrivate(\"hex\"))),\n publicKey: String(hexToPem(keyPair.getPublic(\"hex\"), { isPrivate: false })),\n hexPubKey: extractPublicKey(String(hexToPem(keyPair.getPublic(\"hex\"), { isPrivate: false }))),\n };\n }\n const { publicKey, privateKey } = crypto.generateKeyPairSync(\"ec\", {\n namedCurve: \"P-256\",\n publicKeyEncoding: { type: \"spki\", format: \"pem\" },\n privateKeyEncoding: { type: \"sec1\", format: \"pem\" },\n });\n const hexPubKey = extractPublicKey(publicKey);\n return {\n privateKey,\n publicKey,\n hexPubKey,\n };\n}\n","// ========================================================================== //\n// //\n// DISCLAIMER //\n// //\n// This code has been blindly copy-pasted from: //\n// https://github.com/LedgerHQ/pkey-ts //\n// //\n// ========================================================================== //\n//\n// @ts-expect-error this library does not ship types\nimport asn1 from \"asn1.js\";\nimport BN from \"bn.js\";\nimport elliptic from \"elliptic\";\n\n/* cspell:disable */\nconst ECPrivateKeyASN = asn1.define(\"ECPrivateKey\", function () {\n // @ts-expect-error pure black box\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-assertion\n const self = this as any;\n self\n .seq()\n .obj(\n self.key(\"version\").int(),\n self.key(\"privateKey\").octstr(),\n self.key(\"parameters\").explicit(0).objid().optional(),\n self.key(\"publicKey\").explicit(1).bitstr().optional(),\n );\n});\n\nconst ECPrivateKey8ASN = asn1.define(\n \"ECPrivateKey\",\n /* v8 ignore start */\n function () {\n // @ts-expect-error pure black box\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-assertion\n const self = this as any;\n self\n .seq()\n .obj(\n self.key(\"version\").int(),\n self\n .key(\"privateKeyAlgorithm\")\n .seq()\n .obj(self.key(\"ecPublicKey\").objid(), self.key(\"curve\").objid()),\n self.key(\"privateKey\").octstr().contains(ECPrivateKeyASN),\n self.key(\"attributes\").explicit(0).bitstr().optional(),\n );\n },\n /* v8 ignore stop */\n);\n\nconst SubjectPublicKeyInfoASN = asn1.define(\"SubjectPublicKeyInfo\", function () {\n // @ts-expect-error pure black box\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-assertion\n const self = this as any;\n self\n .seq()\n .obj(\n self.key(\"algorithm\").seq().obj(self.key(\"id\").objid(), self.key(\"curve\").objid()),\n self.key(\"pub\").bitstr(),\n );\n});\n\ntype CurveOptions = {\n curveParameters: number[];\n privatePEMOptions: { label: string };\n publicPEMOptions: { label: string };\n curve: elliptic.ec;\n};\n\nconst curves: Record<string, CurveOptions> = {\n secp256k1: {\n curveParameters: [1, 3, 132, 0, 10],\n privatePEMOptions: { label: \"EC PRIVATE KEY\" },\n publicPEMOptions: { label: \"PUBLIC KEY\" },\n curve: new elliptic.ec(\"secp256k1\"),\n },\n p256: {\n curveParameters: [1, 2, 840, 10045, 3, 1, 7], // OID for p256 curve\n privatePEMOptions: { label: \"EC PRIVATE KEY\" },\n publicPEMOptions: { label: \"PUBLIC KEY\" },\n curve: new elliptic.ec(\"p256\"),\n },\n};\n\ntype PrivateKeyPKCS1 = {\n version: BN;\n privateKey: Buffer;\n parameters: number[];\n publicKey?: {\n unused: number;\n data: Buffer;\n };\n};\n\ntype PrivateKeyPKCS8 = {\n version: BN;\n privateKey: PrivateKeyPKCS1;\n privateKeyAlgorithm: { ecPublicKey: number[]; curve: number[] };\n};\n\nexport type KeyFormat = \"raw\" | \"pem\" | \"der\";\n\nexport class KeyEncoder {\n algorithmID: number[];\n options: CurveOptions;\n\n constructor(options: string | CurveOptions) {\n if (typeof options === \"string\") {\n /* v8 ignore start */\n if (options !== \"secp256k1\" && options !== \"p256\") {\n throw new Error(\"Unknown curve \" + options);\n }\n /* v8 ignore stop */\n options = curves[options]!;\n }\n this.options = options;\n this.algorithmID = [1, 2, 840, 10045, 2, 1];\n }\n\n /* v8 ignore start */\n private PKCS1toPKCS8(privateKey: PrivateKeyPKCS1): PrivateKeyPKCS8 {\n return {\n version: new BN(0),\n privateKey,\n privateKeyAlgorithm: {\n ecPublicKey: this.algorithmID,\n curve: privateKey.parameters,\n },\n };\n }\n /* v8 ignore stop */\n\n privateKeyObject(rawPrivateKey: string, rawPublicKey: string): PrivateKeyPKCS1 {\n const privateKeyObject: PrivateKeyPKCS1 = {\n version: new BN(1),\n privateKey: Buffer.from(rawPrivateKey, \"hex\"),\n parameters: this.options.curveParameters,\n };\n\n if (rawPublicKey) {\n privateKeyObject.publicKey = {\n unused: 0,\n data: Buffer.from(rawPublicKey, \"hex\"),\n };\n }\n\n return privateKeyObject;\n }\n\n publicKeyObject(rawPublicKey: string): {\n algorithm: { id: number[]; curve: number[] };\n pub: { unused: number; data: Buffer };\n } {\n return {\n algorithm: {\n id: this.algorithmID,\n curve: this.options.curveParameters,\n },\n pub: {\n unused: 0,\n data: Buffer.from(rawPublicKey, \"hex\"),\n },\n };\n }\n\n encodePrivate(\n privateKey: string | Buffer,\n originalFormat: KeyFormat,\n destinationFormat: KeyFormat,\n destinationFormatType: \"pkcs8\" | \"pkcs1\" = \"pkcs1\",\n ): string {\n let privateKeyObject: PrivateKeyPKCS1;\n\n /* Parse the incoming private key and convert it to a private key object */\n switch (originalFormat) {\n case \"raw\": {\n if (typeof privateKey !== \"string\") {\n throw new Error(\"private key must be a string\");\n }\n const keyPair = this.options.curve.keyFromPrivate(privateKey, \"hex\");\n const rawPublicKey = keyPair.getPublic(\"hex\");\n privateKeyObject = this.privateKeyObject(privateKey, rawPublicKey);\n break;\n }\n case \"der\":\n if (typeof privateKey === \"string\") {\n privateKey = Buffer.from(privateKey, \"hex\");\n }\n privateKeyObject = ECPrivateKeyASN.decode(privateKey, \"der\");\n break;\n case \"pem\":\n if (typeof privateKey !== \"string\") {\n throw new Error(\"private key must be a string\");\n }\n privateKeyObject = ECPrivateKeyASN.decode(\n privateKey,\n \"pem\",\n this.options.privatePEMOptions,\n );\n break;\n /* v8 ignore start */\n default:\n throw new Error(\"invalid private key format\");\n /* v8 ignore stop */\n }\n\n /* Export the private key object to the desired format */\n switch (destinationFormat) {\n case \"raw\":\n if (destinationFormatType === \"pkcs1\") {\n return privateKeyObject.privateKey.toString(\"hex\");\n } else if (destinationFormatType === \"pkcs8\") {\n return this.PKCS1toPKCS8(privateKeyObject).privateKey.privateKey.toString(\"hex\");\n }\n break;\n case \"der\":\n if (destinationFormatType === \"pkcs1\") {\n return ECPrivateKeyASN.encode(privateKeyObject, \"der\").toString(\"hex\");\n } else if (destinationFormatType === \"pkcs8\") {\n return ECPrivateKey8ASN.encode(this.PKCS1toPKCS8(privateKeyObject), \"der\").toString(\n \"hex\",\n );\n }\n break;\n case \"pem\":\n if (destinationFormatType === \"pkcs1\") {\n return ECPrivateKeyASN.encode(privateKeyObject, \"pem\", this.options.privatePEMOptions);\n } else if (destinationFormatType === \"pkcs8\") {\n return ECPrivateKey8ASN.encode(this.PKCS1toPKCS8(privateKeyObject), \"pem\", {\n ...this.options.privatePEMOptions,\n label: \"PRIVATE KEY\",\n });\n }\n break;\n /* v8 ignore start */\n default:\n throw new Error(\"invalid destination format for private key\");\n /* v8 ignore stop */\n }\n\n throw new Error(\"unsupported destination format or type\");\n }\n\n encodePublic(\n publicKey: string | Buffer,\n originalFormat: KeyFormat,\n destinationFormat: KeyFormat,\n ): string {\n let publicKeyObject;\n\n switch (originalFormat) {\n case \"raw\":\n if (typeof publicKey !== \"string\") {\n throw new Error(\"public key must be a string\");\n }\n publicKeyObject = this.publicKeyObject(publicKey);\n break;\n case \"der\":\n if (typeof publicKey === \"string\") {\n publicKey = Buffer.from(publicKey, \"hex\");\n }\n publicKeyObject = SubjectPublicKeyInfoASN.decode(publicKey, \"der\");\n break;\n case \"pem\":\n if (typeof publicKey !== \"string\") {\n throw new Error(\"public key must be a string\");\n }\n publicKeyObject = SubjectPublicKeyInfoASN.decode(\n publicKey,\n \"pem\",\n this.options.publicPEMOptions,\n );\n break;\n /* v8 ignore start */\n default:\n throw new Error(\"invalid public key format\");\n /* v8 ignore stop */\n }\n\n /* Export the private key object to the desired format */\n switch (destinationFormat) {\n case \"raw\":\n return publicKeyObject.pub.data.toString(\"hex\");\n case \"der\":\n return SubjectPublicKeyInfoASN.encode(publicKeyObject, \"der\").toString(\"hex\");\n case \"pem\":\n return SubjectPublicKeyInfoASN.encode(\n publicKeyObject,\n \"pem\",\n this.options.publicPEMOptions,\n );\n /* v8 ignore start */\n default:\n throw new Error(\"invalid destination format for public key\");\n /* v8 ignore stop */\n }\n }\n}\n/* cspell:enable */\n"]}