@taquito/remote-signer 10.1.3 → 10.2.0-beta-RC.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,8 +4,8 @@ exports.VERSION = void 0;
4
4
  // IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!
5
5
  /* tslint:disable */
6
6
  exports.VERSION = {
7
- "commitHash": "1f24b35dab5ff7e87c95ec69470a4a67aa183380",
8
- "version": "10.1.3"
7
+ "commitHash": "f22bf79e27753d49f20eb84cc1b05f7478767f05",
8
+ "version": "10.2.0-beta-RC.0"
9
9
  };
10
10
  /* tslint:enable */
11
11
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AACA,2EAA2E;AAC3E,oBAAoB;AACP,QAAA,OAAO,GAAG;IACnB,YAAY,EAAE,0CAA0C;IACxD,SAAS,EAAE,QAAQ;CACtB,CAAC;AACF,mBAAmB"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AACA,2EAA2E;AAC3E,oBAAoB;AACP,QAAA,OAAO,GAAG;IACnB,YAAY,EAAE,0CAA0C;IACxD,SAAS,EAAE,kBAAkB;CAChC,CAAC;AACF,mBAAmB"}
@@ -103,8 +103,8 @@ var BadSigningDataError = /** @class */ (function () {
103
103
  // IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!
104
104
  /* tslint:disable */
105
105
  var VERSION = {
106
- "commitHash": "1f24b35dab5ff7e87c95ec69470a4a67aa183380",
107
- "version": "10.1.3"
106
+ "commitHash": "f22bf79e27753d49f20eb84cc1b05f7478767f05",
107
+ "version": "10.2.0-beta-RC.0"
108
108
  };
109
109
  /* tslint:enable */
110
110
 
@@ -1 +1 @@
1
- {"version":3,"file":"taquito-remote-signer.es5.js","sources":["../src/errors.ts","../src/version.ts","../src/taquito-remote-signer.ts"],"sourcesContent":["export class KeyNotFoundError implements Error {\n public name: string = 'KeyNotFoundError';\n constructor(public message: string, public innerException: any) {}\n}\n\nexport class OperationNotAuthorizedError implements Error {\n public name: string = 'OperationNotAuthorized';\n constructor(public message: string, public innerException: any) {}\n}\n\nexport class BadSigningDataError implements Error {\n public name: string = 'BadSigningData';\n constructor(public message: string, public innerException: any, public readonly data: any) {}\n}\n","\n// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!\n/* tslint:disable */\nexport const VERSION = {\n \"commitHash\": \"1f24b35dab5ff7e87c95ec69470a4a67aa183380\",\n \"version\": \"10.1.3\"\n};\n/* tslint:enable */\n","/**\n * @packageDocumentation\n * @module @taquito/remote-signer\n */\nimport { HttpBackend, HttpResponseError, STATUS_CODE } from '@taquito/http-utils';\nimport {\n b58cdecode,\n b58cencode,\n buf2hex,\n hex2buf,\n isValidPrefix,\n mergebuf,\n prefix,\n} from '@taquito/utils';\nimport sodium from 'libsodium-wrappers';\nimport elliptic from 'elliptic';\nimport toBuffer from 'typedarray-to-buffer';\nimport { BadSigningDataError, KeyNotFoundError, OperationNotAuthorizedError } from './errors';\nimport { Signer } from '@taquito/taquito';\ninterface PublicKeyResponse {\n public_key: string;\n}\n\ninterface SignResponse {\n signature: string;\n}\n\ntype curves = 'ed' | 'p2' | 'sp';\n\nexport interface RemoteSignerOptions {\n headers?: { [key: string]: string };\n}\n\nexport { VERSION } from './version';\n\nconst pref = {\n ed: {\n pk: prefix['edpk'],\n sk: prefix['edsk'],\n pkh: prefix.tz1,\n sig: prefix.edsig,\n },\n p2: {\n pk: prefix['p2pk'],\n sk: prefix['p2sk'],\n pkh: prefix.tz3,\n sig: prefix.p2sig,\n },\n sp: {\n pk: prefix['sppk'],\n sk: prefix['spsk'],\n pkh: prefix.tz2,\n sig: prefix.spsig,\n },\n};\n\nexport class RemoteSigner implements Signer {\n constructor(\n private pkh: string,\n private rootUrl: string,\n private options: RemoteSignerOptions = {},\n private http = new HttpBackend()\n ) {}\n\n async publicKeyHash(): Promise<string> {\n return this.pkh;\n }\n\n private createURL(path: string) {\n // Trim trailing slashes because it is assumed to be included in path\n return `${this.rootUrl.replace(/\\/+$/g, '')}${path}`;\n }\n\n async publicKey(): Promise<string> {\n try {\n const { public_key } = await this.http.createRequest<PublicKeyResponse>({\n url: this.createURL(`/keys/${this.pkh}`),\n method: 'GET',\n headers: this.options.headers,\n });\n return public_key;\n } catch (ex) {\n if (ex instanceof HttpResponseError) {\n if (ex.status === STATUS_CODE.NOT_FOUND) {\n throw new KeyNotFoundError(`Key not found: ${this.pkh}`, ex);\n }\n }\n throw ex;\n }\n }\n\n async secretKey(): Promise<string> {\n throw new Error('Secret key cannot be exposed');\n }\n\n async sign(bytes: string, watermark?: Uint8Array) {\n try {\n let bb = hex2buf(bytes);\n if (typeof watermark !== 'undefined') {\n bb = mergebuf(watermark, bb);\n }\n const watermarkedBytes = buf2hex(toBuffer(bb));\n const { signature } = await this.http.createRequest<SignResponse>(\n {\n url: this.createURL(`/keys/${this.pkh}`),\n method: 'POST',\n headers: this.options.headers,\n },\n watermarkedBytes\n );\n let pref = signature.startsWith('sig')\n ? signature.substring(0, 3)\n : signature.substring(0, 5);\n\n if (!isValidPrefix(pref)) {\n throw new Error(`Unsupported signature given by remote signer: ${signature}`);\n }\n\n const decoded = b58cdecode(signature, prefix[pref]);\n\n const signatureVerified = await this.verify(watermarkedBytes, signature);\n if (!signatureVerified) {\n throw new Error(\n `Signature failed verification against public key:\n {\n bytes: ${watermarkedBytes},\n signature: ${signature}\n }`\n );\n }\n\n return {\n bytes,\n sig: b58cencode(decoded, prefix.sig),\n prefixSig: signature,\n sbytes: bytes + buf2hex(toBuffer(decoded)),\n };\n } catch (ex) {\n if (ex instanceof HttpResponseError) {\n if (ex.status === STATUS_CODE.NOT_FOUND) {\n throw new KeyNotFoundError(`Key not found: ${this.pkh}`, ex);\n } else if (ex.status === STATUS_CODE.FORBIDDEN) {\n throw new OperationNotAuthorizedError('Signing Operation not authorized', ex);\n } else if (ex.status === STATUS_CODE.BAD_REQUEST) {\n throw new BadSigningDataError('Invalid data', ex, {\n bytes,\n watermark,\n });\n }\n }\n throw ex;\n }\n }\n\n async verify(bytes: string, signature: string): Promise<boolean> {\n await sodium.ready;\n const publicKey = await this.publicKey();\n const curve = publicKey.substring(0, 2) as curves;\n const _publicKey = toBuffer(b58cdecode(publicKey, pref[curve].pk));\n\n let signaturePrefix = signature.startsWith('sig')\n ? signature.substr(0, 3)\n : signature.substr(0, 5);\n\n if (!isValidPrefix(signaturePrefix)) {\n throw new Error(`Unsupported signature given by remote signer: ${signature}`);\n }\n\n const publicKeyHash = b58cencode(sodium.crypto_generichash(20, _publicKey), pref[curve].pkh);\n if (publicKeyHash !== this.pkh) {\n throw new Error(\n `Requested public key does not match the initialized public key hash: {\n publicKey: ${publicKey},\n publicKeyHash: ${this.pkh}\n }`\n );\n }\n\n let sig;\n if (signature.substring(0, 3) === 'sig') {\n sig = b58cdecode(signature, prefix.sig);\n } else if (signature.substring(0, 5) === `${curve}sig`) {\n sig = b58cdecode(signature, pref[curve].sig);\n } else {\n throw new Error(`Invalid signature provided: ${signature}`);\n }\n\n const bytesHash = sodium.crypto_generichash(32, hex2buf(bytes));\n\n if (curve === 'ed') {\n try {\n return sodium.crypto_sign_verify_detached(sig, bytesHash, _publicKey);\n } catch (e) {\n return false;\n }\n }\n\n if (curve === 'sp') {\n const key = new elliptic.ec('secp256k1').keyFromPublic(_publicKey);\n const hexSig = buf2hex(toBuffer(sig));\n const match = hexSig.match(/([a-f\\d]{64})/gi);\n if (match) {\n try {\n const [r, s] = match;\n return key.verify(bytesHash, { r, s });\n } catch (e) {\n return false;\n }\n }\n return false;\n }\n\n if (curve === 'p2') {\n const key = new elliptic.ec('p256').keyFromPublic(_publicKey);\n const hexSig = buf2hex(toBuffer(sig));\n const match = hexSig.match(/([a-f\\d]{64})/gi);\n if (match) {\n try {\n const [r, s] = match;\n return key.verify(bytesHash, { r, s });\n } catch (e) {\n return false;\n }\n }\n return false;\n }\n\n throw new Error(`Curve '${curve}' not supported`);\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taquito-remote-signer.es5.js","sources":["../src/errors.ts","../src/version.ts","../src/taquito-remote-signer.ts"],"sourcesContent":["export class KeyNotFoundError implements Error {\n public name: string = 'KeyNotFoundError';\n constructor(public message: string, public innerException: any) {}\n}\n\nexport class OperationNotAuthorizedError implements Error {\n public name: string = 'OperationNotAuthorized';\n constructor(public message: string, public innerException: any) {}\n}\n\nexport class BadSigningDataError implements Error {\n public name: string = 'BadSigningData';\n constructor(public message: string, public innerException: any, public readonly data: any) {}\n}\n","\n// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!\n/* tslint:disable */\nexport const VERSION = {\n \"commitHash\": \"f22bf79e27753d49f20eb84cc1b05f7478767f05\",\n \"version\": \"10.2.0-beta-RC.0\"\n};\n/* tslint:enable */\n","/**\n * @packageDocumentation\n * @module @taquito/remote-signer\n */\nimport { HttpBackend, HttpResponseError, STATUS_CODE } from '@taquito/http-utils';\nimport {\n b58cdecode,\n b58cencode,\n buf2hex,\n hex2buf,\n isValidPrefix,\n mergebuf,\n prefix,\n} from '@taquito/utils';\nimport sodium from 'libsodium-wrappers';\nimport elliptic from 'elliptic';\nimport toBuffer from 'typedarray-to-buffer';\nimport { BadSigningDataError, KeyNotFoundError, OperationNotAuthorizedError } from './errors';\nimport { Signer } from '@taquito/taquito';\ninterface PublicKeyResponse {\n public_key: string;\n}\n\ninterface SignResponse {\n signature: string;\n}\n\ntype curves = 'ed' | 'p2' | 'sp';\n\nexport interface RemoteSignerOptions {\n headers?: { [key: string]: string };\n}\n\nexport { VERSION } from './version';\n\nconst pref = {\n ed: {\n pk: prefix['edpk'],\n sk: prefix['edsk'],\n pkh: prefix.tz1,\n sig: prefix.edsig,\n },\n p2: {\n pk: prefix['p2pk'],\n sk: prefix['p2sk'],\n pkh: prefix.tz3,\n sig: prefix.p2sig,\n },\n sp: {\n pk: prefix['sppk'],\n sk: prefix['spsk'],\n pkh: prefix.tz2,\n sig: prefix.spsig,\n },\n};\n\nexport class RemoteSigner implements Signer {\n constructor(\n private pkh: string,\n private rootUrl: string,\n private options: RemoteSignerOptions = {},\n private http = new HttpBackend()\n ) {}\n\n async publicKeyHash(): Promise<string> {\n return this.pkh;\n }\n\n private createURL(path: string) {\n // Trim trailing slashes because it is assumed to be included in path\n return `${this.rootUrl.replace(/\\/+$/g, '')}${path}`;\n }\n\n async publicKey(): Promise<string> {\n try {\n const { public_key } = await this.http.createRequest<PublicKeyResponse>({\n url: this.createURL(`/keys/${this.pkh}`),\n method: 'GET',\n headers: this.options.headers,\n });\n return public_key;\n } catch (ex) {\n if (ex instanceof HttpResponseError) {\n if (ex.status === STATUS_CODE.NOT_FOUND) {\n throw new KeyNotFoundError(`Key not found: ${this.pkh}`, ex);\n }\n }\n throw ex;\n }\n }\n\n async secretKey(): Promise<string> {\n throw new Error('Secret key cannot be exposed');\n }\n\n async sign(bytes: string, watermark?: Uint8Array) {\n try {\n let bb = hex2buf(bytes);\n if (typeof watermark !== 'undefined') {\n bb = mergebuf(watermark, bb);\n }\n const watermarkedBytes = buf2hex(toBuffer(bb));\n const { signature } = await this.http.createRequest<SignResponse>(\n {\n url: this.createURL(`/keys/${this.pkh}`),\n method: 'POST',\n headers: this.options.headers,\n },\n watermarkedBytes\n );\n let pref = signature.startsWith('sig')\n ? signature.substring(0, 3)\n : signature.substring(0, 5);\n\n if (!isValidPrefix(pref)) {\n throw new Error(`Unsupported signature given by remote signer: ${signature}`);\n }\n\n const decoded = b58cdecode(signature, prefix[pref]);\n\n const signatureVerified = await this.verify(watermarkedBytes, signature);\n if (!signatureVerified) {\n throw new Error(\n `Signature failed verification against public key:\n {\n bytes: ${watermarkedBytes},\n signature: ${signature}\n }`\n );\n }\n\n return {\n bytes,\n sig: b58cencode(decoded, prefix.sig),\n prefixSig: signature,\n sbytes: bytes + buf2hex(toBuffer(decoded)),\n };\n } catch (ex) {\n if (ex instanceof HttpResponseError) {\n if (ex.status === STATUS_CODE.NOT_FOUND) {\n throw new KeyNotFoundError(`Key not found: ${this.pkh}`, ex);\n } else if (ex.status === STATUS_CODE.FORBIDDEN) {\n throw new OperationNotAuthorizedError('Signing Operation not authorized', ex);\n } else if (ex.status === STATUS_CODE.BAD_REQUEST) {\n throw new BadSigningDataError('Invalid data', ex, {\n bytes,\n watermark,\n });\n }\n }\n throw ex;\n }\n }\n\n async verify(bytes: string, signature: string): Promise<boolean> {\n await sodium.ready;\n const publicKey = await this.publicKey();\n const curve = publicKey.substring(0, 2) as curves;\n const _publicKey = toBuffer(b58cdecode(publicKey, pref[curve].pk));\n\n let signaturePrefix = signature.startsWith('sig')\n ? signature.substr(0, 3)\n : signature.substr(0, 5);\n\n if (!isValidPrefix(signaturePrefix)) {\n throw new Error(`Unsupported signature given by remote signer: ${signature}`);\n }\n\n const publicKeyHash = b58cencode(sodium.crypto_generichash(20, _publicKey), pref[curve].pkh);\n if (publicKeyHash !== this.pkh) {\n throw new Error(\n `Requested public key does not match the initialized public key hash: {\n publicKey: ${publicKey},\n publicKeyHash: ${this.pkh}\n }`\n );\n }\n\n let sig;\n if (signature.substring(0, 3) === 'sig') {\n sig = b58cdecode(signature, prefix.sig);\n } else if (signature.substring(0, 5) === `${curve}sig`) {\n sig = b58cdecode(signature, pref[curve].sig);\n } else {\n throw new Error(`Invalid signature provided: ${signature}`);\n }\n\n const bytesHash = sodium.crypto_generichash(32, hex2buf(bytes));\n\n if (curve === 'ed') {\n try {\n return sodium.crypto_sign_verify_detached(sig, bytesHash, _publicKey);\n } catch (e) {\n return false;\n }\n }\n\n if (curve === 'sp') {\n const key = new elliptic.ec('secp256k1').keyFromPublic(_publicKey);\n const hexSig = buf2hex(toBuffer(sig));\n const match = hexSig.match(/([a-f\\d]{64})/gi);\n if (match) {\n try {\n const [r, s] = match;\n return key.verify(bytesHash, { r, s });\n } catch (e) {\n return false;\n }\n }\n return false;\n }\n\n if (curve === 'p2') {\n const key = new elliptic.ec('p256').keyFromPublic(_publicKey);\n const hexSig = buf2hex(toBuffer(sig));\n const match = hexSig.match(/([a-f\\d]{64})/gi);\n if (match) {\n try {\n const [r, s] = match;\n return key.verify(bytesHash, { r, s });\n } catch (e) {\n return false;\n }\n }\n return false;\n }\n\n throw new Error(`Curve '${curve}' not supported`);\n }\n}\n"],"names":[],"mappings":"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"}
@@ -109,8 +109,8 @@
109
109
  // IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!
110
110
  /* tslint:disable */
111
111
  var VERSION = {
112
- "commitHash": "1f24b35dab5ff7e87c95ec69470a4a67aa183380",
113
- "version": "10.1.3"
112
+ "commitHash": "f22bf79e27753d49f20eb84cc1b05f7478767f05",
113
+ "version": "10.2.0-beta-RC.0"
114
114
  };
115
115
  /* tslint:enable */
116
116
 
@@ -1 +1 @@
1
- {"version":3,"file":"taquito-remote-signer.umd.js","sources":["../src/errors.ts","../src/version.ts","../src/taquito-remote-signer.ts"],"sourcesContent":["export class KeyNotFoundError implements Error {\n public name: string = 'KeyNotFoundError';\n constructor(public message: string, public innerException: any) {}\n}\n\nexport class OperationNotAuthorizedError implements Error {\n public name: string = 'OperationNotAuthorized';\n constructor(public message: string, public innerException: any) {}\n}\n\nexport class BadSigningDataError implements Error {\n public name: string = 'BadSigningData';\n constructor(public message: string, public innerException: any, public readonly data: any) {}\n}\n","\n// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!\n/* tslint:disable */\nexport const VERSION = {\n \"commitHash\": \"1f24b35dab5ff7e87c95ec69470a4a67aa183380\",\n \"version\": \"10.1.3\"\n};\n/* tslint:enable */\n","/**\n * @packageDocumentation\n * @module @taquito/remote-signer\n */\nimport { HttpBackend, HttpResponseError, STATUS_CODE } from '@taquito/http-utils';\nimport {\n b58cdecode,\n b58cencode,\n buf2hex,\n hex2buf,\n isValidPrefix,\n mergebuf,\n prefix,\n} from '@taquito/utils';\nimport sodium from 'libsodium-wrappers';\nimport elliptic from 'elliptic';\nimport toBuffer from 'typedarray-to-buffer';\nimport { BadSigningDataError, KeyNotFoundError, OperationNotAuthorizedError } from './errors';\nimport { Signer } from '@taquito/taquito';\ninterface PublicKeyResponse {\n public_key: string;\n}\n\ninterface SignResponse {\n signature: string;\n}\n\ntype curves = 'ed' | 'p2' | 'sp';\n\nexport interface RemoteSignerOptions {\n headers?: { [key: string]: string };\n}\n\nexport { VERSION } from './version';\n\nconst pref = {\n ed: {\n pk: prefix['edpk'],\n sk: prefix['edsk'],\n pkh: prefix.tz1,\n sig: prefix.edsig,\n },\n p2: {\n pk: prefix['p2pk'],\n sk: prefix['p2sk'],\n pkh: prefix.tz3,\n sig: prefix.p2sig,\n },\n sp: {\n pk: prefix['sppk'],\n sk: prefix['spsk'],\n pkh: prefix.tz2,\n sig: prefix.spsig,\n },\n};\n\nexport class RemoteSigner implements Signer {\n constructor(\n private pkh: string,\n private rootUrl: string,\n private options: RemoteSignerOptions = {},\n private http = new HttpBackend()\n ) {}\n\n async publicKeyHash(): Promise<string> {\n return this.pkh;\n }\n\n private createURL(path: string) {\n // Trim trailing slashes because it is assumed to be included in path\n return `${this.rootUrl.replace(/\\/+$/g, '')}${path}`;\n }\n\n async publicKey(): Promise<string> {\n try {\n const { public_key } = await this.http.createRequest<PublicKeyResponse>({\n url: this.createURL(`/keys/${this.pkh}`),\n method: 'GET',\n headers: this.options.headers,\n });\n return public_key;\n } catch (ex) {\n if (ex instanceof HttpResponseError) {\n if (ex.status === STATUS_CODE.NOT_FOUND) {\n throw new KeyNotFoundError(`Key not found: ${this.pkh}`, ex);\n }\n }\n throw ex;\n }\n }\n\n async secretKey(): Promise<string> {\n throw new Error('Secret key cannot be exposed');\n }\n\n async sign(bytes: string, watermark?: Uint8Array) {\n try {\n let bb = hex2buf(bytes);\n if (typeof watermark !== 'undefined') {\n bb = mergebuf(watermark, bb);\n }\n const watermarkedBytes = buf2hex(toBuffer(bb));\n const { signature } = await this.http.createRequest<SignResponse>(\n {\n url: this.createURL(`/keys/${this.pkh}`),\n method: 'POST',\n headers: this.options.headers,\n },\n watermarkedBytes\n );\n let pref = signature.startsWith('sig')\n ? signature.substring(0, 3)\n : signature.substring(0, 5);\n\n if (!isValidPrefix(pref)) {\n throw new Error(`Unsupported signature given by remote signer: ${signature}`);\n }\n\n const decoded = b58cdecode(signature, prefix[pref]);\n\n const signatureVerified = await this.verify(watermarkedBytes, signature);\n if (!signatureVerified) {\n throw new Error(\n `Signature failed verification against public key:\n {\n bytes: ${watermarkedBytes},\n signature: ${signature}\n }`\n );\n }\n\n return {\n bytes,\n sig: b58cencode(decoded, prefix.sig),\n prefixSig: signature,\n sbytes: bytes + buf2hex(toBuffer(decoded)),\n };\n } catch (ex) {\n if (ex instanceof HttpResponseError) {\n if (ex.status === STATUS_CODE.NOT_FOUND) {\n throw new KeyNotFoundError(`Key not found: ${this.pkh}`, ex);\n } else if (ex.status === STATUS_CODE.FORBIDDEN) {\n throw new OperationNotAuthorizedError('Signing Operation not authorized', ex);\n } else if (ex.status === STATUS_CODE.BAD_REQUEST) {\n throw new BadSigningDataError('Invalid data', ex, {\n bytes,\n watermark,\n });\n }\n }\n throw ex;\n }\n }\n\n async verify(bytes: string, signature: string): Promise<boolean> {\n await sodium.ready;\n const publicKey = await this.publicKey();\n const curve = publicKey.substring(0, 2) as curves;\n const _publicKey = toBuffer(b58cdecode(publicKey, pref[curve].pk));\n\n let signaturePrefix = signature.startsWith('sig')\n ? signature.substr(0, 3)\n : signature.substr(0, 5);\n\n if (!isValidPrefix(signaturePrefix)) {\n throw new Error(`Unsupported signature given by remote signer: ${signature}`);\n }\n\n const publicKeyHash = b58cencode(sodium.crypto_generichash(20, _publicKey), pref[curve].pkh);\n if (publicKeyHash !== this.pkh) {\n throw new Error(\n `Requested public key does not match the initialized public key hash: {\n publicKey: ${publicKey},\n publicKeyHash: ${this.pkh}\n }`\n );\n }\n\n let sig;\n if (signature.substring(0, 3) === 'sig') {\n sig = b58cdecode(signature, prefix.sig);\n } else if (signature.substring(0, 5) === `${curve}sig`) {\n sig = b58cdecode(signature, pref[curve].sig);\n } else {\n throw new Error(`Invalid signature provided: ${signature}`);\n }\n\n const bytesHash = sodium.crypto_generichash(32, hex2buf(bytes));\n\n if (curve === 'ed') {\n try {\n return sodium.crypto_sign_verify_detached(sig, bytesHash, _publicKey);\n } catch (e) {\n return false;\n }\n }\n\n if (curve === 'sp') {\n const key = new elliptic.ec('secp256k1').keyFromPublic(_publicKey);\n const hexSig = buf2hex(toBuffer(sig));\n const match = hexSig.match(/([a-f\\d]{64})/gi);\n if (match) {\n try {\n const [r, s] = match;\n return key.verify(bytesHash, { r, s });\n } catch (e) {\n return false;\n }\n }\n return false;\n }\n\n if (curve === 'p2') {\n const key = new elliptic.ec('p256').keyFromPublic(_publicKey);\n const hexSig = buf2hex(toBuffer(sig));\n const match = hexSig.match(/([a-f\\d]{64})/gi);\n if (match) {\n try {\n const [r, s] = match;\n return key.verify(bytesHash, { r, s });\n } catch (e) {\n return false;\n }\n }\n return false;\n }\n\n throw new Error(`Curve '${curve}' not supported`);\n }\n}\n"],"names":["prefix","HttpBackend","HttpResponseError","STATUS_CODE","hex2buf","mergebuf","buf2hex","toBuffer","isValidPrefix","b58cdecode","b58cencode","sodium","elliptic"],"mappings":"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"}
1
+ {"version":3,"file":"taquito-remote-signer.umd.js","sources":["../src/errors.ts","../src/version.ts","../src/taquito-remote-signer.ts"],"sourcesContent":["export class KeyNotFoundError implements Error {\n public name: string = 'KeyNotFoundError';\n constructor(public message: string, public innerException: any) {}\n}\n\nexport class OperationNotAuthorizedError implements Error {\n public name: string = 'OperationNotAuthorized';\n constructor(public message: string, public innerException: any) {}\n}\n\nexport class BadSigningDataError implements Error {\n public name: string = 'BadSigningData';\n constructor(public message: string, public innerException: any, public readonly data: any) {}\n}\n","\n// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!\n/* tslint:disable */\nexport const VERSION = {\n \"commitHash\": \"f22bf79e27753d49f20eb84cc1b05f7478767f05\",\n \"version\": \"10.2.0-beta-RC.0\"\n};\n/* tslint:enable */\n","/**\n * @packageDocumentation\n * @module @taquito/remote-signer\n */\nimport { HttpBackend, HttpResponseError, STATUS_CODE } from '@taquito/http-utils';\nimport {\n b58cdecode,\n b58cencode,\n buf2hex,\n hex2buf,\n isValidPrefix,\n mergebuf,\n prefix,\n} from '@taquito/utils';\nimport sodium from 'libsodium-wrappers';\nimport elliptic from 'elliptic';\nimport toBuffer from 'typedarray-to-buffer';\nimport { BadSigningDataError, KeyNotFoundError, OperationNotAuthorizedError } from './errors';\nimport { Signer } from '@taquito/taquito';\ninterface PublicKeyResponse {\n public_key: string;\n}\n\ninterface SignResponse {\n signature: string;\n}\n\ntype curves = 'ed' | 'p2' | 'sp';\n\nexport interface RemoteSignerOptions {\n headers?: { [key: string]: string };\n}\n\nexport { VERSION } from './version';\n\nconst pref = {\n ed: {\n pk: prefix['edpk'],\n sk: prefix['edsk'],\n pkh: prefix.tz1,\n sig: prefix.edsig,\n },\n p2: {\n pk: prefix['p2pk'],\n sk: prefix['p2sk'],\n pkh: prefix.tz3,\n sig: prefix.p2sig,\n },\n sp: {\n pk: prefix['sppk'],\n sk: prefix['spsk'],\n pkh: prefix.tz2,\n sig: prefix.spsig,\n },\n};\n\nexport class RemoteSigner implements Signer {\n constructor(\n private pkh: string,\n private rootUrl: string,\n private options: RemoteSignerOptions = {},\n private http = new HttpBackend()\n ) {}\n\n async publicKeyHash(): Promise<string> {\n return this.pkh;\n }\n\n private createURL(path: string) {\n // Trim trailing slashes because it is assumed to be included in path\n return `${this.rootUrl.replace(/\\/+$/g, '')}${path}`;\n }\n\n async publicKey(): Promise<string> {\n try {\n const { public_key } = await this.http.createRequest<PublicKeyResponse>({\n url: this.createURL(`/keys/${this.pkh}`),\n method: 'GET',\n headers: this.options.headers,\n });\n return public_key;\n } catch (ex) {\n if (ex instanceof HttpResponseError) {\n if (ex.status === STATUS_CODE.NOT_FOUND) {\n throw new KeyNotFoundError(`Key not found: ${this.pkh}`, ex);\n }\n }\n throw ex;\n }\n }\n\n async secretKey(): Promise<string> {\n throw new Error('Secret key cannot be exposed');\n }\n\n async sign(bytes: string, watermark?: Uint8Array) {\n try {\n let bb = hex2buf(bytes);\n if (typeof watermark !== 'undefined') {\n bb = mergebuf(watermark, bb);\n }\n const watermarkedBytes = buf2hex(toBuffer(bb));\n const { signature } = await this.http.createRequest<SignResponse>(\n {\n url: this.createURL(`/keys/${this.pkh}`),\n method: 'POST',\n headers: this.options.headers,\n },\n watermarkedBytes\n );\n let pref = signature.startsWith('sig')\n ? signature.substring(0, 3)\n : signature.substring(0, 5);\n\n if (!isValidPrefix(pref)) {\n throw new Error(`Unsupported signature given by remote signer: ${signature}`);\n }\n\n const decoded = b58cdecode(signature, prefix[pref]);\n\n const signatureVerified = await this.verify(watermarkedBytes, signature);\n if (!signatureVerified) {\n throw new Error(\n `Signature failed verification against public key:\n {\n bytes: ${watermarkedBytes},\n signature: ${signature}\n }`\n );\n }\n\n return {\n bytes,\n sig: b58cencode(decoded, prefix.sig),\n prefixSig: signature,\n sbytes: bytes + buf2hex(toBuffer(decoded)),\n };\n } catch (ex) {\n if (ex instanceof HttpResponseError) {\n if (ex.status === STATUS_CODE.NOT_FOUND) {\n throw new KeyNotFoundError(`Key not found: ${this.pkh}`, ex);\n } else if (ex.status === STATUS_CODE.FORBIDDEN) {\n throw new OperationNotAuthorizedError('Signing Operation not authorized', ex);\n } else if (ex.status === STATUS_CODE.BAD_REQUEST) {\n throw new BadSigningDataError('Invalid data', ex, {\n bytes,\n watermark,\n });\n }\n }\n throw ex;\n }\n }\n\n async verify(bytes: string, signature: string): Promise<boolean> {\n await sodium.ready;\n const publicKey = await this.publicKey();\n const curve = publicKey.substring(0, 2) as curves;\n const _publicKey = toBuffer(b58cdecode(publicKey, pref[curve].pk));\n\n let signaturePrefix = signature.startsWith('sig')\n ? signature.substr(0, 3)\n : signature.substr(0, 5);\n\n if (!isValidPrefix(signaturePrefix)) {\n throw new Error(`Unsupported signature given by remote signer: ${signature}`);\n }\n\n const publicKeyHash = b58cencode(sodium.crypto_generichash(20, _publicKey), pref[curve].pkh);\n if (publicKeyHash !== this.pkh) {\n throw new Error(\n `Requested public key does not match the initialized public key hash: {\n publicKey: ${publicKey},\n publicKeyHash: ${this.pkh}\n }`\n );\n }\n\n let sig;\n if (signature.substring(0, 3) === 'sig') {\n sig = b58cdecode(signature, prefix.sig);\n } else if (signature.substring(0, 5) === `${curve}sig`) {\n sig = b58cdecode(signature, pref[curve].sig);\n } else {\n throw new Error(`Invalid signature provided: ${signature}`);\n }\n\n const bytesHash = sodium.crypto_generichash(32, hex2buf(bytes));\n\n if (curve === 'ed') {\n try {\n return sodium.crypto_sign_verify_detached(sig, bytesHash, _publicKey);\n } catch (e) {\n return false;\n }\n }\n\n if (curve === 'sp') {\n const key = new elliptic.ec('secp256k1').keyFromPublic(_publicKey);\n const hexSig = buf2hex(toBuffer(sig));\n const match = hexSig.match(/([a-f\\d]{64})/gi);\n if (match) {\n try {\n const [r, s] = match;\n return key.verify(bytesHash, { r, s });\n } catch (e) {\n return false;\n }\n }\n return false;\n }\n\n if (curve === 'p2') {\n const key = new elliptic.ec('p256').keyFromPublic(_publicKey);\n const hexSig = buf2hex(toBuffer(sig));\n const match = hexSig.match(/([a-f\\d]{64})/gi);\n if (match) {\n try {\n const [r, s] = match;\n return key.verify(bytesHash, { r, s });\n } catch (e) {\n return false;\n }\n }\n return false;\n }\n\n throw new Error(`Curve '${curve}' not supported`);\n }\n}\n"],"names":["prefix","HttpBackend","HttpResponseError","STATUS_CODE","hex2buf","mergebuf","buf2hex","toBuffer","isValidPrefix","b58cdecode","b58cencode","sodium","elliptic"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taquito/remote-signer",
3
- "version": "10.1.3",
3
+ "version": "10.2.0-beta-RC.0",
4
4
  "description": "Remote signer provider",
5
5
  "keywords": [
6
6
  "tezos",
@@ -60,9 +60,9 @@
60
60
  ]
61
61
  },
62
62
  "dependencies": {
63
- "@taquito/http-utils": "^10.1.3",
64
- "@taquito/taquito": "^10.1.3",
65
- "@taquito/utils": "^10.1.3",
63
+ "@taquito/http-utils": "^10.2.0-beta-RC.0",
64
+ "@taquito/taquito": "^10.2.0-beta-RC.0",
65
+ "@taquito/utils": "^10.2.0-beta-RC.0",
66
66
  "@types/jest": "^26.0.23",
67
67
  "elliptic": "^6.5.4",
68
68
  "libsodium-wrappers": "0.7.8",
@@ -99,5 +99,5 @@
99
99
  "tslint-config-standard": "^9.0.0",
100
100
  "typescript": "^4.1.5"
101
101
  },
102
- "gitHead": "948e57cc5e3a285df85d002c2a3c1859b0509444"
102
+ "gitHead": "76fae742b8c5411468da88ad5f39ac222a8bc254"
103
103
  }