From 5382c2ec48fe223886823f2707c465f7a635f88e Mon Sep 17 00:00:00 2001 From: "Justin R. Evans" Date: Wed, 12 Jul 2023 09:18:21 -0400 Subject: [PATCH] Update types, placeholder comments --- apps/extension/src/background/ledger/service.ts | 10 ++++++---- packages/ledger-namada/dist/processResponses.js | 2 ++ packages/ledger-namada/dist/processResponses.js.map | 2 +- packages/ledger-namada/dist/types.d.ts | 2 ++ packages/ledger-namada/dist/types.js | 2 ++ packages/ledger-namada/dist/types.js.map | 2 +- packages/ledger-namada/package.json | 2 +- packages/shared/lib/src/sdk/mod.rs | 2 ++ 8 files changed, 17 insertions(+), 7 deletions(-) diff --git a/apps/extension/src/background/ledger/service.ts b/apps/extension/src/background/ledger/service.ts index a19ad41962..a786eb3d0f 100644 --- a/apps/extension/src/background/ledger/service.ts +++ b/apps/extension/src/background/ledger/service.ts @@ -83,8 +83,8 @@ export class LedgerService { } const { - wrapperSignature: { signature: wrapperSig }, - rawSignature: { signature: rawSig }, + wrapperSignature: { raw: wrapperSig }, + rawSignature: { raw: rawSig }, } = signatures; if (!wrapperSig) { @@ -97,6 +97,7 @@ export class LedgerService { const signedTransfer = await this.sdk.sign_tx( fromBase64(bytes), + // TODO: Pass wrapperSig and rawSig as new Uint8Array() toHex(wrapperSig), toHex(rawSig) ); @@ -164,8 +165,8 @@ export class LedgerService { } const { - wrapperSignature: { signature: wrapperSig }, - rawSignature: { signature: rawSig }, + wrapperSignature: { raw: wrapperSig }, + rawSignature: { raw: rawSig }, } = signatures; if (!wrapperSig) { @@ -178,6 +179,7 @@ export class LedgerService { const signedBond = await this.sdk.sign_tx( fromBase64(bytes), + // TODO: Pass wrapperSig and rawSig as new Uint8Array() toHex(wrapperSig), toHex(rawSig) ); diff --git a/packages/ledger-namada/dist/processResponses.js b/packages/ledger-namada/dist/processResponses.js index 5148c230ac..32d6357dea 100644 --- a/packages/ledger-namada/dist/processResponses.js +++ b/packages/ledger-namada/dist/processResponses.js @@ -39,11 +39,13 @@ function processGetSignatureResponse(response) { signature = Buffer.from(response.subarray(offset, offset + 65)); offset += 65; } + const raw = Buffer.from(response.subarray(0, offset)); return { salt, hashes, pubkey, signature, + raw, }; } exports.processGetSignatureResponse = processGetSignatureResponse; diff --git a/packages/ledger-namada/dist/processResponses.js.map b/packages/ledger-namada/dist/processResponses.js.map index 40f674a2fa..352dc18da3 100644 --- a/packages/ledger-namada/dist/processResponses.js.map +++ b/packages/ledger-namada/dist/processResponses.js.map @@ -1 +1 @@ -{"version":3,"file":"processResponses.js","sourceRoot":"","sources":["../src/processResponses.ts"],"names":[],"mappings":"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","sourcesContent":["/** ******************************************************************************\n * (c) 2018 - 2022 Zondax AG\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ******************************************************************************* */\n\nimport { errorCodeToString } from './common'\nimport { HASH_LEN, PK_LEN_25519, SALT_LEN } from './config'\nimport { ISignature } from './types'\n\nexport function processGetSignatureResponse(response: Buffer): ISignature {\n console.log('Processing get signature response')\n\n let offset = 0\n const salt = Buffer.from(response.subarray(offset, offset+SALT_LEN))\n offset += SALT_LEN\n const hashesLen = response[offset] + response[offset+1]*0x100 + response[offset+2]*0x10000 + response[offset+3]*0x1000000\n offset += 4\n const hashes = []\n for (let i = 0; i < hashesLen; i ++) {\n hashes.push(Buffer.from(response.subarray(offset, offset+HASH_LEN)))\n offset += HASH_LEN\n }\n const pubkey = Buffer.from(response.subarray(offset, offset + PK_LEN_25519+1))\n offset += PK_LEN_25519+1\n const hasSignature = response[offset]\n offset += 1\n let signature = null\n if(hasSignature) {\n signature = Buffer.from(response.subarray(offset, offset + 65))\n offset += 65\n }\n\n return {\n salt,\n hashes,\n pubkey,\n signature,\n }\n}\n\nexport function processGetAddrResponse(response: Buffer) {\n console.log('Processing get address response')\n\n let partialResponse = response\n\n const errorCodeData = partialResponse.subarray(-2)\n const returnCode = errorCodeData[0] * 256 + errorCodeData[1]\n\n //get public key len (variable)\n const publicKey = Buffer.from(partialResponse.slice(0, PK_LEN_25519))\n\n //\"advance\" buffer\n partialResponse = partialResponse.slice(PK_LEN_25519)\n\n // get the implicit address corresponding to the public key\n const address = Buffer.from(partialResponse.slice(0, -2))\n\n return {\n publicKey,\n address,\n returnCode,\n errorMessage: errorCodeToString(returnCode),\n }\n}\n\n// Not used yet\n// function processGetShieldedAddrResponse(response: Buffer) {\n// console.log(\"Processing get address response\")\n\n// let partialResponse = response\n\n// const errorCodeData = partialResponse.slice(-2)\n// const returnCode = errorCodeData[0] * 256 + errorCodeData[1]\n\n// //get public key len (variable)\n// const raw_pkd = Buffer.from(partialResponse.slice(0, 32))\n\n// //\"advance\" buffer\n// partialResponse = partialResponse.slice(32)\n\n// // get the length of the bech32m address\n// const bech32m_len = partialResponse[0]\n\n// //\"advance\" buffer\n// partialResponse = partialResponse.slice(1)\n\n// // get the bech32m encoding of the shielded address\n// const bech32m_addr = Buffer.from(partialResponse.slice(0, bech32m_len))\n\n// return {\n// raw_pkd,\n// bech32m_len,\n// bech32m_addr,\n// returnCode,\n// errorMessage: errorCodeToString(returnCode),\n// }\n// }\n\n// function processIncomingViewingKeyResponse(response: Buffer) {\n// console.log(\"Processing get IVK response\")\n\n// const partialResponse = response\n\n// const errorCodeData = partialResponse.slice(-2)\n// const returnCode = errorCodeData[0] * 256 + errorCodeData[1]\n\n// //get public key len (variable)\n// const raw_ivk = Buffer.from(partialResponse.slice(0, 32))\n\n// return {\n// raw_ivk,\n// returnCode,\n// errorMessage: errorCodeToString(returnCode),\n// }\n// }\n\n// function processNullifierResponse(response: Buffer) {\n// console.log(\"Processing get nullifier response\")\n\n// const partialResponse = response\n\n// const errorCodeData = partialResponse.slice(-2)\n// const returnCode = errorCodeData[0] * 256 + errorCodeData[1]\n\n// const raw_nf = Buffer.from(partialResponse.slice(0, 32))\n\n// return {\n// raw_nf,\n// returnCode,\n// errorMessage: errorCodeToString(returnCode),\n// }\n// }\n\n// function processOutgoingViewingKeyResponse(response: Buffer) {\n// console.log(\"Processing get OVK response\")\n\n// const partialResponse = response\n\n// const errorCodeData = partialResponse.slice(-2)\n// const returnCode = errorCodeData[0] * 256 + errorCodeData[1]\n\n// //get public key len (variable)\n// const raw_ovk = Buffer.from(partialResponse.slice(0, 32))\n\n// return {\n// raw_ovk,\n// returnCode,\n// errorMessage: errorCodeToString(returnCode),\n// }\n// }\n"]} \ No newline at end of file +{"version":3,"file":"processResponses.js","sourceRoot":"","sources":["../src/processResponses.ts"],"names":[],"mappings":"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","sourcesContent":["/** ******************************************************************************\n * (c) 2018 - 2022 Zondax AG\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n ******************************************************************************* */\n\nimport { errorCodeToString } from './common'\nimport { HASH_LEN, PK_LEN_25519, SALT_LEN } from './config'\nimport { ISignature } from './types'\n\nexport function processGetSignatureResponse(response: Buffer): ISignature {\n console.log('Processing get signature response')\n\n let offset = 0\n const salt = Buffer.from(response.subarray(offset, offset+SALT_LEN))\n offset += SALT_LEN\n const hashesLen = response[offset] + response[offset+1]*0x100 + response[offset+2]*0x10000 + response[offset+3]*0x1000000\n offset += 4\n const hashes = []\n for (let i = 0; i < hashesLen; i ++) {\n hashes.push(Buffer.from(response.subarray(offset, offset+HASH_LEN)))\n offset += HASH_LEN\n }\n const pubkey = Buffer.from(response.subarray(offset, offset + PK_LEN_25519+1))\n offset += PK_LEN_25519+1\n const hasSignature = response[offset]\n offset += 1\n let signature = null\n if(hasSignature) {\n signature = Buffer.from(response.subarray(offset, offset + 65))\n offset += 65\n }\n const raw = Buffer.from(response.subarray(0, offset))\n\n return {\n salt,\n hashes,\n pubkey,\n signature,\n raw,\n }\n}\n\nexport function processGetAddrResponse(response: Buffer) {\n console.log('Processing get address response')\n\n let partialResponse = response\n\n const errorCodeData = partialResponse.subarray(-2)\n const returnCode = errorCodeData[0] * 256 + errorCodeData[1]\n\n //get public key len (variable)\n const publicKey = Buffer.from(partialResponse.slice(0, PK_LEN_25519))\n\n //\"advance\" buffer\n partialResponse = partialResponse.slice(PK_LEN_25519)\n\n // get the implicit address corresponding to the public key\n const address = Buffer.from(partialResponse.slice(0, -2))\n\n return {\n publicKey,\n address,\n returnCode,\n errorMessage: errorCodeToString(returnCode),\n }\n}\n\n// Not used yet\n// function processGetShieldedAddrResponse(response: Buffer) {\n// console.log(\"Processing get address response\")\n\n// let partialResponse = response\n\n// const errorCodeData = partialResponse.slice(-2)\n// const returnCode = errorCodeData[0] * 256 + errorCodeData[1]\n\n// //get public key len (variable)\n// const raw_pkd = Buffer.from(partialResponse.slice(0, 32))\n\n// //\"advance\" buffer\n// partialResponse = partialResponse.slice(32)\n\n// // get the length of the bech32m address\n// const bech32m_len = partialResponse[0]\n\n// //\"advance\" buffer\n// partialResponse = partialResponse.slice(1)\n\n// // get the bech32m encoding of the shielded address\n// const bech32m_addr = Buffer.from(partialResponse.slice(0, bech32m_len))\n\n// return {\n// raw_pkd,\n// bech32m_len,\n// bech32m_addr,\n// returnCode,\n// errorMessage: errorCodeToString(returnCode),\n// }\n// }\n\n// function processIncomingViewingKeyResponse(response: Buffer) {\n// console.log(\"Processing get IVK response\")\n\n// const partialResponse = response\n\n// const errorCodeData = partialResponse.slice(-2)\n// const returnCode = errorCodeData[0] * 256 + errorCodeData[1]\n\n// //get public key len (variable)\n// const raw_ivk = Buffer.from(partialResponse.slice(0, 32))\n\n// return {\n// raw_ivk,\n// returnCode,\n// errorMessage: errorCodeToString(returnCode),\n// }\n// }\n\n// function processNullifierResponse(response: Buffer) {\n// console.log(\"Processing get nullifier response\")\n\n// const partialResponse = response\n\n// const errorCodeData = partialResponse.slice(-2)\n// const returnCode = errorCodeData[0] * 256 + errorCodeData[1]\n\n// const raw_nf = Buffer.from(partialResponse.slice(0, 32))\n\n// return {\n// raw_nf,\n// returnCode,\n// errorMessage: errorCodeToString(returnCode),\n// }\n// }\n\n// function processOutgoingViewingKeyResponse(response: Buffer) {\n// console.log(\"Processing get OVK response\")\n\n// const partialResponse = response\n\n// const errorCodeData = partialResponse.slice(-2)\n// const returnCode = errorCodeData[0] * 256 + errorCodeData[1]\n\n// //get public key len (variable)\n// const raw_ovk = Buffer.from(partialResponse.slice(0, 32))\n\n// return {\n// raw_ovk,\n// returnCode,\n// errorMessage: errorCodeToString(returnCode),\n// }\n// }\n"]} \ No newline at end of file diff --git a/packages/ledger-namada/dist/types.d.ts b/packages/ledger-namada/dist/types.d.ts index 76756a16c7..aab75bd60f 100644 --- a/packages/ledger-namada/dist/types.d.ts +++ b/packages/ledger-namada/dist/types.d.ts @@ -47,12 +47,14 @@ export interface ResponseNullifier extends ResponseBase { raw_nf: Buffer; } export interface ISignature { + raw: Buffer; salt: Buffer; hashes: Buffer[]; pubkey: Buffer; signature: Buffer | null; } export declare class Signature implements ISignature { + raw: Buffer; salt: Buffer; hashes: Buffer[]; pubkey: Buffer; diff --git a/packages/ledger-namada/dist/types.js b/packages/ledger-namada/dist/types.js index 4b8ee530f5..e5d79875b4 100644 --- a/packages/ledger-namada/dist/types.js +++ b/packages/ledger-namada/dist/types.js @@ -4,6 +4,7 @@ exports.Signature = void 0; class Signature { constructor(signature) { if (signature == null) { + this.raw = Buffer.from([]); this.isFilled = false; this.salt = Buffer.from([]); this.hashes = []; @@ -12,6 +13,7 @@ class Signature { } else { this.isFilled = true; + this.raw = signature.raw; this.salt = signature.salt; this.hashes = signature.hashes; this.pubkey = signature.pubkey; diff --git a/packages/ledger-namada/dist/types.js.map b/packages/ledger-namada/dist/types.js.map index 905d59f610..4e62f9cad1 100644 --- a/packages/ledger-namada/dist/types.js.map +++ b/packages/ledger-namada/dist/types.js.map @@ -1 +1 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AA+DA,MAAa,SAAS;IAQpB,YAAY,SAAsB;QAChC,IAAI,SAAS,IAAI,IAAI,EAAE;YACrB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;YACrB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAC3B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;YAChB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;SACtB;aAAM;YACL,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;YACpB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAA;YAC1B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAA;YAC9B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAA;YAC9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAA;SACrC;IACH,CAAC;CACF;AAvBD,8BAuBC","sourcesContent":["import { LedgerError } from './common'\n\nexport interface ResponseBase {\n errorMessage: string\n returnCode: LedgerError\n}\n\nexport interface ResponseAddress extends ResponseBase {\n publicKey: Buffer\n address: Buffer\n}\n\nexport interface ResponseVersion extends ResponseBase {\n testMode: boolean\n major: number\n minor: number\n patch: number\n deviceLocked: boolean\n targetId: string\n}\n\nexport interface ResponseAppInfo extends ResponseBase {\n appName: string\n appVersion: string\n flagLen: number\n flagsValue: number\n flagRecovery: boolean\n flagSignedMcuCode: boolean\n flagOnboarded: boolean\n flagPINValidated: boolean\n}\n\nexport interface ResponseDeviceInfo extends ResponseBase {\n targetId: string\n seVersion: string\n flag: string\n mcuVersion: string\n}\n\nexport interface ResponseShieldedAddress extends ResponseBase {\n raw_pkd: Buffer\n bech32m_len: number\n bech32m_addr: Buffer\n}\n\nexport interface ResponseIncomingViewingKey extends ResponseBase {\n raw_ivk: Buffer\n}\n\nexport interface ResponseOutgoingViewingKey extends ResponseBase {\n raw_ovk: Buffer\n}\n\nexport interface ResponseNullifier extends ResponseBase {\n raw_nf: Buffer\n}\n\nexport interface ISignature {\n salt: Buffer\n hashes: Buffer[]\n pubkey: Buffer\n signature: Buffer | null\n}\nexport class Signature implements ISignature {\n salt: Buffer\n hashes: Buffer[]\n pubkey: Buffer\n signature: Buffer | null\n\n isFilled: boolean\n\n constructor(signature?: ISignature) {\n if (signature == null) {\n this.isFilled = false\n this.salt = Buffer.from([])\n this.hashes = []\n this.pubkey = Buffer.from([])\n this.signature = null\n } else {\n this.isFilled = true\n this.salt = signature.salt\n this.hashes = signature.hashes\n this.pubkey = signature.pubkey\n this.signature = signature.signature\n }\n }\n}\n\nexport interface ResponseSign extends ResponseBase {\n wrapperSignature: Signature\n rawSignature: Signature\n}\n"]} \ No newline at end of file +{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAgEA,MAAa,SAAS;IASpB,YAAY,SAAsB;QAChC,IAAI,SAAS,IAAI,IAAI,EAAE;YACrB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAC1B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;YACrB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAC3B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;YAChB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;SACtB;aAAM;YACL,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;YACpB,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAA;YACxB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAA;YAC1B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAA;YAC9B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAA;YAC9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAA;SACrC;IACH,CAAC;CACF;AA1BD,8BA0BC","sourcesContent":["import { LedgerError } from './common'\n\nexport interface ResponseBase {\n errorMessage: string\n returnCode: LedgerError\n}\n\nexport interface ResponseAddress extends ResponseBase {\n publicKey: Buffer\n address: Buffer\n}\n\nexport interface ResponseVersion extends ResponseBase {\n testMode: boolean\n major: number\n minor: number\n patch: number\n deviceLocked: boolean\n targetId: string\n}\n\nexport interface ResponseAppInfo extends ResponseBase {\n appName: string\n appVersion: string\n flagLen: number\n flagsValue: number\n flagRecovery: boolean\n flagSignedMcuCode: boolean\n flagOnboarded: boolean\n flagPINValidated: boolean\n}\n\nexport interface ResponseDeviceInfo extends ResponseBase {\n targetId: string\n seVersion: string\n flag: string\n mcuVersion: string\n}\n\nexport interface ResponseShieldedAddress extends ResponseBase {\n raw_pkd: Buffer\n bech32m_len: number\n bech32m_addr: Buffer\n}\n\nexport interface ResponseIncomingViewingKey extends ResponseBase {\n raw_ivk: Buffer\n}\n\nexport interface ResponseOutgoingViewingKey extends ResponseBase {\n raw_ovk: Buffer\n}\n\nexport interface ResponseNullifier extends ResponseBase {\n raw_nf: Buffer\n}\n\nexport interface ISignature {\n raw: Buffer\n salt: Buffer\n hashes: Buffer[]\n pubkey: Buffer\n signature: Buffer | null\n}\nexport class Signature implements ISignature {\n raw: Buffer\n salt: Buffer\n hashes: Buffer[]\n pubkey: Buffer\n signature: Buffer | null\n\n isFilled: boolean\n\n constructor(signature?: ISignature) {\n if (signature == null) {\n this.raw = Buffer.from([])\n this.isFilled = false\n this.salt = Buffer.from([])\n this.hashes = []\n this.pubkey = Buffer.from([])\n this.signature = null\n } else {\n this.isFilled = true\n this.raw = signature.raw\n this.salt = signature.salt\n this.hashes = signature.hashes\n this.pubkey = signature.pubkey\n this.signature = signature.signature\n }\n }\n}\n\nexport interface ResponseSign extends ResponseBase {\n wrapperSignature: Signature\n rawSignature: Signature\n}\n"]} \ No newline at end of file diff --git a/packages/ledger-namada/package.json b/packages/ledger-namada/package.json index 98a6b4de07..b993bccb7d 100644 --- a/packages/ledger-namada/package.json +++ b/packages/ledger-namada/package.json @@ -5,9 +5,9 @@ "version": "0.0.1", "description": "Node API for the Namada App (Ledger Nano S/X/S+)", "main": "./dist/index.js", + "private": false, "typings": "./dist/index.d.ts", "types": "./dist/index.d.ts", - "private": false, "homepage": "https://github.com/zondax/ledger-namada", "repository": { "type": "git", diff --git a/packages/shared/lib/src/sdk/mod.rs b/packages/shared/lib/src/sdk/mod.rs index ff74597ba6..742d60ecec 100644 --- a/packages/shared/lib/src/sdk/mod.rs +++ b/packages/shared/lib/src/sdk/mod.rs @@ -202,6 +202,8 @@ impl Sdk { ) -> Result { let mut tx: Tx = Tx::try_from(tx_bytes).map_err(JsError::from)?; + // TODO: Remove the following! We need to be able to call Signature::try_from_slice() + // once that is implemented: let wrapper_key = SecretKey::from_str(&wrapper_sig).map_err(JsError::from)?; let raw_key = SecretKey::from_str(&raw_sig).map_err(JsError::from)?;