From b1b6ad394c2e8cdcdee6fcf1d8678bdd22533422 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ga=C3=ABtan=20Renaudeau?=
Date: Thu, 21 Feb 2019 15:57:37 +0100
Subject: [PATCH 1/6] Add more events in genuineCheck
---
src/api/Manager.js | 48 +++++++++++++++++++++++++++++++++++-------
src/hw/genuineCheck.js | 4 ++--
src/types/manager.js | 12 +++++++++++
3 files changed, 54 insertions(+), 10 deletions(-)
diff --git a/src/api/Manager.js b/src/api/Manager.js
index c315017cca..b60cd55c5d 100644
--- a/src/api/Manager.js
+++ b/src/api/Manager.js
@@ -13,8 +13,8 @@ import {
DeviceOnDashboardExpected
} from "@ledgerhq/errors";
import type Transport from "@ledgerhq/hw-transport";
-import { throwError } from "rxjs";
-import { catchError, filter, last, map } from "rxjs/operators";
+import { throwError, Observable } from "rxjs";
+import { catchError } from "rxjs/operators";
import { version as livecommonversion } from "../../package.json";
import { createDeviceSocket } from "./socket";
import network from "../network";
@@ -27,10 +27,13 @@ import type {
Application,
Category,
Id,
- McuVersion
+ McuVersion,
+ GenuineCheckEvent
} from "../types/manager";
import { makeLRUCache } from "../cache";
+const ALLOW_MANAGER_APDU_DEBOUNCE = 500;
+
const remapSocketError = (context?: string) =>
catchError((e: Error) => {
if (!e || !e.message) return throwError(e);
@@ -273,16 +276,45 @@ const API = {
genuineCheck: (
transport: Transport<*>,
{ targetId, perso }: { targetId: *, perso: * }
- ) =>
+ ): Observable =>
createDeviceSocket(transport, {
url: URL.format({
pathname: `${getEnv("BASE_SOCKET_URL")}/genuine`,
query: { targetId, perso, livecommonversion }
})
- }).pipe(
- last(),
- filter(o => o.type === "result"),
- map(o => o.payload || "")
+ }).pipe(input =>
+ Observable.create(o => {
+ let timeout;
+ let requested;
+ input.subscribe({
+ complete: () => {
+ o.complete();
+ },
+ error: e => {
+ o.error(e);
+ },
+ next: e => {
+ if (timeout) {
+ clearTimeout(timeout);
+ timeout = null;
+ }
+ if (e.type === "result") {
+ o.next(e);
+ } else if (e.nonce === 3) {
+ if (e.type === "exchange-before") {
+ timeout = setTimeout(() => {
+ o.next({ type: "allow-manager-requested" });
+ requested = true;
+ }, ALLOW_MANAGER_APDU_DEBOUNCE);
+ } else if (e.type === "exchange") {
+ if (requested) {
+ o.next({ type: "allow-manager-accepted" });
+ }
+ }
+ }
+ }
+ });
+ })
),
installMcu: (
diff --git a/src/hw/genuineCheck.js b/src/hw/genuineCheck.js
index f9a958d65d..72650c4d9a 100644
--- a/src/hw/genuineCheck.js
+++ b/src/hw/genuineCheck.js
@@ -4,13 +4,13 @@
import Transport from "@ledgerhq/hw-transport";
import { Observable, from } from "rxjs";
import { switchMap } from "rxjs/operators";
-import type { DeviceInfo } from "../types/manager";
+import type { DeviceInfo, GenuineCheckEvent } from "../types/manager";
import ManagerAPI from "../api/Manager";
export default (
transport: Transport<*>,
deviceInfo: DeviceInfo
-): Observable =>
+): Observable =>
from(
ManagerAPI.getDeviceVersion(deviceInfo.targetId, deviceInfo.providerId)
).pipe(
diff --git a/src/types/manager.js b/src/types/manager.js
index 62dd5ac9d5..5422ee0299 100644
--- a/src/types/manager.js
+++ b/src/types/manager.js
@@ -139,3 +139,15 @@ export type Category = {
date_creation: string,
date_last_modified: string
};
+
+export type GenuineCheckEvent =
+ | {
+ type: "result",
+ payload: string
+ }
+ | {
+ type: "allow-manager-requested"
+ }
+ | {
+ type: "allow-manager-accepted"
+ };
From 7946bac08ff51551848f29862977e8d4a6b94c45 Mon Sep 17 00:00:00 2001
From: "Valentin D. Pinkman"
Date: Thu, 21 Feb 2019 18:23:20 +0100
Subject: [PATCH 2/6] add demo example for genuine check
---
demo/src/demos/transports/index.js | 97 ++++++++++++++++++------------
1 file changed, 60 insertions(+), 37 deletions(-)
diff --git a/demo/src/demos/transports/index.js b/demo/src/demos/transports/index.js
index 23c974ce09..69ba95b039 100644
--- a/demo/src/demos/transports/index.js
+++ b/demo/src/demos/transports/index.js
@@ -18,7 +18,7 @@ class SelectTransport extends Component<*> {
render() {
return (
);
}
@@ -170,21 +193,21 @@ const Main = styled.div`
display:flex;
padding: 40px;
flex-shrink:1
- border-right:1px dashed gray;
+ border-right:1px dashed gray;
`;
const Wrapper = styled.div`
- flex-direction:row;
- display:flex;
+ flex-direction: row;
+ display: flex;
`;
const RightBar = styled.div`
padding: 40px;
- flex:1;
+ flex: 1;
`;
const Log = styled.div`
- flex-grow:1;
- paddint:16px;
- background:#f3f3f3
+ flex-grow: 1;
+ paddint: 16px;
+ background: #f3f3f3;
`;
class Transports extends Component<*, *> {
@@ -209,10 +232,10 @@ class Transports extends Component<*, *> {
APDU
Tools
-
+
-
+
);
}
From 3a0ba613fcf0ca41866cac5e567fe89594c78cd6 Mon Sep 17 00:00:00 2001
From: "Valentin D. Pinkman"
Date: Fri, 22 Feb 2019 16:38:16 +0100
Subject: [PATCH 3/6] return subscription for cleanup
---
demo/src/demos/transports/index.js | 2 --
src/api/Manager.js | 4 +++-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/demo/src/demos/transports/index.js b/demo/src/demos/transports/index.js
index 69ba95b039..68309978c8 100644
--- a/demo/src/demos/transports/index.js
+++ b/demo/src/demos/transports/index.js
@@ -70,7 +70,6 @@ class ArbitraryAPDU extends Component<*, *> {
log: [...prevState.log, " {
)
).subscribe({
next: result => {
- console.log(result);
this.setState({ running: false, error: null, result });
},
error: error => {
diff --git a/src/api/Manager.js b/src/api/Manager.js
index b60cd55c5d..f45b3fe2be 100644
--- a/src/api/Manager.js
+++ b/src/api/Manager.js
@@ -286,7 +286,7 @@ const API = {
Observable.create(o => {
let timeout;
let requested;
- input.subscribe({
+ const sub = input.subscribe({
complete: () => {
o.complete();
},
@@ -314,6 +314,8 @@ const API = {
}
}
});
+
+ return sub;
})
),
From 64cf3a483bbb10128e1aca7de70c2d45763cb028 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ga=C3=ABtan=20Renaudeau?=
Date: Tue, 5 Mar 2019 07:41:51 +0100
Subject: [PATCH 4/6] Fixes flow
---
src/api/Manager.js | 2 +-
src/bridge/EthereumJSBridge.js | 4 ++--
src/countervalues/index.js | 12 +++++++-----
src/data/cryptocurrencies.js | 6 ++----
src/hw/checkDeviceForManager.js | 10 +++++-----
src/hw/firmwareUpdate-main.js | 19 ++++++++-----------
src/hw/firmwareUpdate-repair.js | 5 ++---
7 files changed, 27 insertions(+), 31 deletions(-)
diff --git a/src/api/Manager.js b/src/api/Manager.js
index ac2cdfd954..fde6557dcf 100644
--- a/src/api/Manager.js
+++ b/src/api/Manager.js
@@ -281,7 +281,7 @@ const install = (
const genuineCheck = (
transport: Transport<*>,
{ targetId, perso }: { targetId: *, perso: * }
-): Observable<*> =>
+): Observable =>
createDeviceSocket(transport, {
url: URL.format({
pathname: `${getEnv("BASE_SOCKET_URL")}/genuine`,
diff --git a/src/bridge/EthereumJSBridge.js b/src/bridge/EthereumJSBridge.js
index f3c4b05d17..d520bc28eb 100644
--- a/src/bridge/EthereumJSBridge.js
+++ b/src/bridge/EthereumJSBridge.js
@@ -540,8 +540,8 @@ export const accountBridge: AccountBridge = {
!t.gasPrice
? Promise.reject(new FeeNotLoaded())
: t.amount.isLessThanOrEqualTo(a.balance)
- ? Promise.resolve(null)
- : Promise.reject(new NotEnoughBalance()),
+ ? Promise.resolve(null)
+ : Promise.reject(new NotEnoughBalance()),
getTotalSpent: (a, t) =>
t.amount.isGreaterThan(0) &&
diff --git a/src/countervalues/index.js b/src/countervalues/index.js
index b9cf90bbb5..d9eca876ed 100644
--- a/src/countervalues/index.js
+++ b/src/countervalues/index.js
@@ -224,11 +224,13 @@ function createCounterValues({
}
);
- const pairsKeySelector = createSelector(pairsSelector, pairs =>
- pairs
- .map(p => `${p.from.ticker}-${p.to.ticker}-${p.exchange || ""}`)
- .sort()
- .join("|")
+ const pairsKeySelector = createSelector(
+ pairsSelector,
+ pairs =>
+ pairs
+ .map(p => `${p.from.ticker}-${p.to.ticker}-${p.exchange || ""}`)
+ .sort()
+ .join("|")
);
const MAXIMUM_RATIO_EXTREME_VARIATION = 1000;
diff --git a/src/data/cryptocurrencies.js b/src/data/cryptocurrencies.js
index b715ba3629..db681dce4d 100644
--- a/src/data/cryptocurrencies.js
+++ b/src/data/cryptocurrencies.js
@@ -879,8 +879,7 @@ const cryptocurrenciesById: { [name: string]: CryptoCurrency } = {
],
txExplorers: ["http://explorer.h.cash/tx/$hash"],
terminated: {
- link:
- "https://support.ledger.com/hc/en-us/articles/115003917133"
+ link: "https://support.ledger.com/hc/en-us/articles/115003917133"
}
},
icon: {
@@ -1338,8 +1337,7 @@ const cryptocurrenciesById: { [name: string]: CryptoCurrency } = {
],
txExplorers: [],
terminated: {
- link:
- "https://support.ledger.com/hc/en-us/articles/115005175309"
+ link: "https://support.ledger.com/hc/en-us/articles/115005175309"
}
},
qtum: {
diff --git a/src/hw/checkDeviceForManager.js b/src/hw/checkDeviceForManager.js
index 3b7d096035..e699435a5b 100644
--- a/src/hw/checkDeviceForManager.js
+++ b/src/hw/checkDeviceForManager.js
@@ -2,15 +2,15 @@
import Transport from "@ledgerhq/hw-transport";
import { Observable, of, throwError } from "rxjs";
import { UnexpectedBootloader } from "@ledgerhq/errors";
-import type { DeviceInfo } from "../types/manager";
+import type { DeviceInfo, GenuineCheckEvent } from "../types/manager";
import genuineCheck from "./genuineCheck";
export default (
transport: Transport<*>,
deviceInfo: DeviceInfo
-): Observable =>
+): Observable =>
deviceInfo.isOSU
- ? of("0000")
+ ? of({ type: "result", payload: "0000" })
: deviceInfo.isBootloader
- ? throwError(new UnexpectedBootloader())
- : genuineCheck(transport, deviceInfo);
+ ? throwError(new UnexpectedBootloader())
+ : genuineCheck(transport, deviceInfo);
diff --git a/src/hw/firmwareUpdate-main.js b/src/hw/firmwareUpdate-main.js
index 1c0ddd932c..fe5741645e 100644
--- a/src/hw/firmwareUpdate-main.js
+++ b/src/hw/firmwareUpdate-main.js
@@ -38,25 +38,22 @@ const main = (
);
const waitForBootloader = withDeviceInfo.pipe(
- concatMap(
- deviceInfo =>
- deviceInfo.isBootloader ? empty() : concat(wait2s, waitForBootloader)
+ concatMap(deviceInfo =>
+ deviceInfo.isBootloader ? empty() : concat(wait2s, waitForBootloader)
)
);
const bootloaderLoop = withDeviceInfo.pipe(
- concatMap(
- deviceInfo =>
- !deviceInfo.isBootloader
- ? empty()
- : concat(withDeviceInstall(flash(final)), wait2s, bootloaderLoop)
+ concatMap(deviceInfo =>
+ !deviceInfo.isBootloader
+ ? empty()
+ : concat(withDeviceInstall(flash(final)), wait2s, bootloaderLoop)
)
);
const finalStep = withDeviceInfo.pipe(
- concatMap(
- deviceInfo =>
- !deviceInfo.isOSU ? empty() : withDeviceInstall(installFinalFirmware)
+ concatMap(deviceInfo =>
+ !deviceInfo.isOSU ? empty() : withDeviceInstall(installFinalFirmware)
)
);
diff --git a/src/hw/firmwareUpdate-repair.js b/src/hw/firmwareUpdate-repair.js
index 182a38f240..70c25e1e94 100644
--- a/src/hw/firmwareUpdate-repair.js
+++ b/src/hw/firmwareUpdate-repair.js
@@ -24,9 +24,8 @@ const repair = (
);
const waitForBootloader = withDeviceInfo.pipe(
- concatMap(
- deviceInfo =>
- deviceInfo.isBootloader ? empty() : concat(wait2s, waitForBootloader)
+ concatMap(deviceInfo =>
+ deviceInfo.isBootloader ? empty() : concat(wait2s, waitForBootloader)
)
);
From a5a33b41d4e777f347b6cdf2efa8437f448b0fc6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ga=C3=ABtan=20Renaudeau?=
Date: Tue, 5 Mar 2019 08:09:42 +0100
Subject: [PATCH 5/6] Upgrade libs and remove unused
---
demo/package.json | 10 +--
demo/yarn.lock | 157 +++++++++++++--------------------
package.json | 11 ++-
src/hw/getAddress/aeternity.js | 16 ----
src/hw/getAddress/index.js | 2 -
yarn.lock | 67 +++++++-------
6 files changed, 103 insertions(+), 160 deletions(-)
delete mode 100644 src/hw/getAddress/aeternity.js
diff --git a/demo/package.json b/demo/package.json
index e689b94f0e..7a93082187 100644
--- a/demo/package.json
+++ b/demo/package.json
@@ -3,15 +3,15 @@
"version": "0.1.0",
"private": true,
"dependencies": {
- "@ledgerhq/hw-transport": "^4.41.1",
- "@ledgerhq/hw-transport-u2f": "^4.41.1",
- "@ledgerhq/hw-transport-web-ble": "^4.41.1",
- "@ledgerhq/hw-transport-webusb": "^4.41.1",
+ "@ledgerhq/hw-transport": "^4.43.0",
+ "@ledgerhq/hw-transport-u2f": "^4.43.0",
+ "@ledgerhq/hw-transport-web-ble": "^4.43.0",
+ "@ledgerhq/hw-transport-webusb": "^4.43.0",
"@ledgerhq/live-common": "file:..",
"axios": "^0.18.0",
"babel-polyfill": "^6.26.0",
"bignumber.js": "^7.2.1",
- "flow-bin": "^0.73.0",
+ "flow-bin": "^0.94.0",
"material-ui": "^1.0.0-beta.44",
"qrcode": "^1.3.0",
"react": "^16.8.3",
diff --git a/demo/yarn.lock b/demo/yarn.lock
index dfb6a1a376..460ae8a869 100644
--- a/demo/yarn.lock
+++ b/demo/yarn.lock
@@ -2,13 +2,6 @@
# yarn lockfile v1
-"@aeternity/ledger-app-api@0.0.4":
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/@aeternity/ledger-app-api/-/ledger-app-api-0.0.4.tgz#79d253b46cc6b0b18ef7cb57c3684bbe7e723c51"
- integrity sha512-aXvCJX9fdT/EJbRKBdc2mu8fvvWu80A8JyFdfvS4bsaDOGjBaIfFFYbEpxaXef8TBE5zV8u7RN1PaXDPGeDUZg==
- dependencies:
- "@ledgerhq/hw-transport" "^4.21.0"
-
"@babel/code-frame@7.0.0", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.0.0-beta.35":
version "7.0.0"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8"
@@ -893,87 +886,86 @@
resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.8.2.tgz#576ff7fb1230185b619a75d258cbc98f0867a8dc"
integrity sha512-rLu3wcBWH4P5q1CGoSSH/i9hrXs7SlbRLkoq9IGuoPYNGQvDJ3pt/wmOM+XgYjIDRMVIdkUWt0RsfzF50JfnCw==
-"@ledgerhq/devices@^4.41.1":
- version "4.41.1"
- resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-4.41.1.tgz#a5bfa17aa9d0f0dc48506d765356d36edeef1fd9"
- integrity sha512-8WDj38iR1Fow2JoEG9w8rJouJcXXObw3KeTrh3fUzZ0qap4o8Q3HIc8i1Hr6XGxAjX64YmtebTJil3HjiNNMtQ==
+"@ledgerhq/devices@^4.43.0":
+ version "4.43.0"
+ resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-4.43.0.tgz#5a26b2d74df52677021796c389ac49b1ddf4bed4"
+ integrity sha512-vU3a3sSavcm8cHkBXHQnxYAm0fay/rigUvh4kam9dSf3wfJMFP/bnymGfjJQyupxroVtgmjw55juFuBQho38Cw==
dependencies:
- "@ledgerhq/errors" "^4.41.1"
+ "@ledgerhq/errors" "^4.43.0"
-"@ledgerhq/errors@^4.41.1":
- version "4.41.1"
- resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-4.41.1.tgz#8047464bf81c755dc7239b0ffb73fbf17a1c97aa"
- integrity sha512-MKYzYNT5AKKZu2Ss0QrMXUS7Zri1F0HpNI3yKGjnhXEVxtr2fvxFXKgqdw7sdo+cLtkbNTJhiclemt0e0HtL0Q==
+"@ledgerhq/errors@^4.43.0":
+ version "4.43.0"
+ resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-4.43.0.tgz#f5dd100952ab7da384a06b1e213a2cb21c712677"
+ integrity sha512-XEO6XCvXskerddJinAraembl5dWdOV1My1JrclEAALvPdXuU+OVUdAjesXZV08WHnL8pIkixJIgk9QogcyA+NQ==
-"@ledgerhq/hw-app-btc@^4.41.1":
- version "4.41.1"
- resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-btc/-/hw-app-btc-4.41.1.tgz#7fc4c3bf43b553131b21df7634277f3d3238e851"
- integrity sha512-uFxY3D/WdYpJRX2uaunW05+gU/GMjO5vR+S6Y3pfimsNIRGG6ihyJTp6t7KfkChEbRw9eIKFhJwGkCli9um8qA==
+"@ledgerhq/hw-app-btc@^4.43.0":
+ version "4.43.0"
+ resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-btc/-/hw-app-btc-4.43.0.tgz#99b20b0e85ffe8cc2eaf8b0de5bf7becf2feb8dc"
+ integrity sha512-fPIhIeSH1Z9hZP288MdKD7leRCe4iluulJeEpoTOgKrYWjb9EhnBdlTDsuqJcCs0Qw7lP1/arV2ToueOPSo9xw==
dependencies:
- "@ledgerhq/hw-transport" "^4.41.1"
+ "@ledgerhq/hw-transport" "^4.43.0"
create-hash "^1.1.3"
-"@ledgerhq/hw-app-eth@^4.41.1":
- version "4.41.1"
- resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-4.41.1.tgz#286777a5620fde5cfa23de3dab43600bcd95df55"
- integrity sha512-G38appZPtScWZzgZnDo6+hh9MUwJxWIaAbTng0Y+ravulSjrwJgOYPUQ+rEbkt0tej5t7lcsev7CQHMxFageEQ==
+"@ledgerhq/hw-app-eth@^4.43.0":
+ version "4.43.0"
+ resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-4.43.0.tgz#fcbb162b044b80a140bc99562b5902a48b23e1a4"
+ integrity sha512-PjwOWPujQ3Mj3WhoQBUUOt8yoSKjgb7BRpfN/7V0xR4on2WvIJlgst30JT/occhkCPnqhfW/+veZuRa82I38Fg==
dependencies:
- "@ledgerhq/hw-transport" "^4.41.1"
+ "@ledgerhq/hw-transport" "^4.43.0"
-"@ledgerhq/hw-app-xrp@^4.41.1":
- version "4.41.1"
- resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-xrp/-/hw-app-xrp-4.41.1.tgz#9134cce5d53a6c904730d22f38c4c9c7f91311e0"
- integrity sha512-HLtKGDXoBbUUPLh9t3Ah0jrD8xy1R/SVg+1L8h3LX2r3f7y0PHPFKP14LwNlNMFnzPyDXUZHzLlALsz5iciDpg==
+"@ledgerhq/hw-app-xrp@^4.43.0":
+ version "4.43.0"
+ resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-xrp/-/hw-app-xrp-4.43.0.tgz#1963866829f3070d987cd545637bf1890f6ec981"
+ integrity sha512-3p8WXeBcGeaSc4jHwCr8BRoOmOWixRmmNOaKNZ1hbl5gZdeok+faobKgDT+wezOATgV/gtyTNaoLroHcTvm/uA==
dependencies:
- "@ledgerhq/hw-transport" "^4.41.1"
+ "@ledgerhq/hw-transport" "^4.43.0"
bip32-path "0.4.2"
-"@ledgerhq/hw-transport-u2f@^4.41.1":
- version "4.41.1"
- resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-u2f/-/hw-transport-u2f-4.41.1.tgz#b6e51063ed13204d26b44bb9a7034e1fb83800cd"
- integrity sha512-dWfWR7hHJh6pMfytlwmnKtr/0Sm3XJ5D/Ml/oEVgBC7LtClO0fVIu1MmnBWcTB1it3G0aQgu/7ptjxHnUInlpA==
+"@ledgerhq/hw-transport-u2f@^4.43.0":
+ version "4.43.0"
+ resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-u2f/-/hw-transport-u2f-4.43.0.tgz#bccca5154745f37275a0a08a0f6456a7524b0670"
+ integrity sha512-YW4xOSMjf5s/KJuZj+4LXqhnNNT1Nb+Af9x0c2/eDAsHK9ISfuQMsZ8yVZ4YXC1uMfVDh7iBv3dTI3JwXitErw==
dependencies:
- "@ledgerhq/errors" "^4.41.1"
- "@ledgerhq/hw-transport" "^4.41.1"
+ "@ledgerhq/errors" "^4.43.0"
+ "@ledgerhq/hw-transport" "^4.43.0"
u2f-api "0.2.7"
-"@ledgerhq/hw-transport-web-ble@^4.41.1":
- version "4.41.1"
- resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-web-ble/-/hw-transport-web-ble-4.41.1.tgz#5d54eb1424ef45fc66c98cae07771a568c39e521"
- integrity sha512-4XfZ1mCUQ1y+/VdXzHaDY5FQxIRrcmZqJeYh4LZQr7nZKoHClB2VkjnOmBO/fkh4asvgOp6fUqTg0DJCEzKsuw==
+"@ledgerhq/hw-transport-web-ble@^4.43.0":
+ version "4.43.0"
+ resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-web-ble/-/hw-transport-web-ble-4.43.0.tgz#d5f12074b41d2309904e410fe048d4140e4fd9d6"
+ integrity sha512-PFIvDnCnQKL9zwAwLpKBYuzEC/s6iQij3+SFX/CZot5PbKvNSnTLd23G7qcawsSh+szrV26KO3ZsQZxzPEPAxw==
dependencies:
- "@ledgerhq/devices" "^4.41.1"
- "@ledgerhq/errors" "^4.41.1"
- "@ledgerhq/hw-transport" "^4.41.1"
+ "@ledgerhq/devices" "^4.43.0"
+ "@ledgerhq/errors" "^4.43.0"
+ "@ledgerhq/hw-transport" "^4.43.0"
rxjs "^6.4.0"
-"@ledgerhq/hw-transport-webusb@^4.41.1":
- version "4.41.1"
- resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-webusb/-/hw-transport-webusb-4.41.1.tgz#4152598644822e4ae5a68b4130133b62b1fd22cf"
- integrity sha512-nVYZRu4dbmlfcmxBOntc8XKYSN+JiXi3c38ZtMkkd5nv3W+lGtJVWsGGdgTNrDO8h7Od+OMp8O6lBjybrWdAzQ==
+"@ledgerhq/hw-transport-webusb@^4.43.0":
+ version "4.43.0"
+ resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-webusb/-/hw-transport-webusb-4.43.0.tgz#7fde5382b71fea9a11912cedd8f5aae86dea4bd4"
+ integrity sha512-EvRSVq94BW00hml0qAVvVeR5GiQAlj/X05mmojVuMzptQJSA7bFSm+r9w00L7nKGBT50kfAqaaqlvfpNDpLXpw==
dependencies:
- "@ledgerhq/devices" "^4.41.1"
- "@ledgerhq/errors" "^4.41.1"
- "@ledgerhq/hw-transport" "^4.41.1"
+ "@ledgerhq/devices" "^4.43.0"
+ "@ledgerhq/errors" "^4.43.0"
+ "@ledgerhq/hw-transport" "^4.43.0"
-"@ledgerhq/hw-transport@^4.21.0", "@ledgerhq/hw-transport@^4.41.1":
- version "4.41.1"
- resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-4.41.1.tgz#1c5cfa38a87d58bbb9fcc9fa0b4e8763365afeb9"
- integrity sha512-0Q4djKCebQ0EAtkrYtD5vN7az580RY0LG3hzDwUabN8EqLWdSJElgB6OfYJk+wHUZAnVNFwXKRZ15cCFdbXExw==
+"@ledgerhq/hw-transport@^4.43.0":
+ version "4.43.0"
+ resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-4.43.0.tgz#6d4d82250316b1d533f5bd291f254439c3964095"
+ integrity sha512-6Rox3yYLaZGANPgNeD1evSlnzYwCDIFLYx5As5A1swsXGwEtbXSlHf4RLwPKL+QDqcUNkInrDoOmb5a3ikg2ww==
dependencies:
- "@ledgerhq/devices" "^4.41.1"
- "@ledgerhq/errors" "^4.41.1"
+ "@ledgerhq/devices" "^4.43.0"
+ "@ledgerhq/errors" "^4.43.0"
events "^3.0.0"
"@ledgerhq/live-common@file:..":
- version "4.21.0"
- dependencies:
- "@aeternity/ledger-app-api" "0.0.4"
- "@ledgerhq/errors" "^4.41.1"
- "@ledgerhq/hw-app-btc" "^4.41.1"
- "@ledgerhq/hw-app-eth" "^4.41.1"
- "@ledgerhq/hw-app-xrp" "^4.41.1"
- "@ledgerhq/hw-transport" "^4.41.1"
+ version "4.22.0"
+ dependencies:
+ "@ledgerhq/errors" "^4.43.0"
+ "@ledgerhq/hw-app-btc" "^4.43.0"
+ "@ledgerhq/hw-app-eth" "^4.43.0"
+ "@ledgerhq/hw-app-xrp" "^4.43.0"
+ "@ledgerhq/hw-transport" "^4.43.0"
bignumber.js "^7.2.1"
compressjs gre/compressjs#hermit
eip55 "^1.0.3"
@@ -4474,10 +4466,10 @@ flatten@^1.0.2:
resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
integrity sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=
-flow-bin@^0.73.0:
- version "0.73.0"
- resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.73.0.tgz#da1b90a02b0ef9c439f068c2fc14968db83be425"
- integrity sha512-fNk2zBPSQ7X3PbQC+SqG68zps7zs2V+IDoW/E8jm2nM5MfYtN0jJKsoBtN8FuQJ1yoIHxWTFNG04aEKgl7pM2A==
+flow-bin@^0.94.0:
+ version "0.94.0"
+ resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.94.0.tgz#b5d58fe7559705b73a18229f97edfc3ab6ffffcb"
+ integrity sha512-DYF7r9CJ/AksfmmB4+q+TyLMoeQPRnqtF1Pk7KY3zgfkB/nVuA3nXyzqgsIPIvnMSiFEXQcFK4z+iPxSLckZhQ==
flush-write-stream@^1.0.0:
version "1.0.3"
@@ -8871,12 +8863,7 @@ react-inspector@^2.3.0:
babel-runtime "^6.26.0"
is-dom "^1.0.9"
-react-is@^16.3.1:
- version "16.4.1"
- resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.4.1.tgz#d624c4650d2c65dbd52c72622bbf389435d9776e"
- integrity sha512-xpb0PpALlFWNw/q13A+1aHeyJyLYCg0/cCHPUA43zYluZuIPHaHL3k8OBsTgQtxqW0FhyDEMvi8fZ/+7+r4OSQ==
-
-react-is@^16.3.2:
+react-is@^16.3.1, react-is@^16.3.2:
version "16.5.2"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.5.2.tgz#e2a7b7c3f5d48062eb769fcb123505eb928722e3"
integrity sha512-hSl7E6l25GTjNEZATqZIuWOgSnpXb3kD0DVCujmg46K5zLxsbiKaaT6VO9slkSBDPZfYs30lwfJwbOFOnoEnKQ==
@@ -9036,17 +9023,7 @@ react-transition-group@^2.2.1:
prop-types "^15.6.2"
react-lifecycles-compat "^3.0.4"
-react@*:
- version "16.6.3"
- resolved "https://registry.yarnpkg.com/react/-/react-16.6.3.tgz#25d77c91911d6bbdd23db41e70fb094cc1e0871c"
- integrity sha512-zCvmH2vbEolgKxtqXL2wmGCUxUyNheYn/C+PD1YAjfxHC54+MhdruyhO7QieQrYsYeTxrn93PM2y0jRH1zEExw==
- dependencies:
- loose-envify "^1.1.0"
- object-assign "^4.1.1"
- prop-types "^15.6.2"
- scheduler "^0.11.2"
-
-react@^16.8.3:
+react@*, react@^16.8.3:
version "16.8.3"
resolved "https://registry.yarnpkg.com/react/-/react-16.8.3.tgz#c6f988a2ce895375de216edcfaedd6b9a76451d9"
integrity sha512-3UoSIsEq8yTJuSu0luO1QQWYbgGEILm+eJl2QN/VLDi7hL+EN18M3q3oVZwmVzzBJ3DkM7RMdRwBmZZ+b4IzSA==
@@ -9692,14 +9669,6 @@ saxes@^3.1.3:
dependencies:
xmlchars "^1.3.1"
-scheduler@^0.11.2:
- version "0.11.2"
- resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.11.2.tgz#a8db5399d06eba5abac51b705b7151d2319d33d3"
- integrity sha512-+WCP3s3wOaW4S7C1tl3TEXp4l9lJn0ZK8G3W3WKRWmw77Z2cIFUW2MiNTMHn5sCjxN+t7N43HAOOgMjyAg5hlg==
- dependencies:
- loose-envify "^1.1.0"
- object-assign "^4.1.1"
-
scheduler@^0.13.3:
version "0.13.3"
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.3.tgz#bed3c5850f62ea9c716a4d781f9daeb9b2a58896"
diff --git a/package.json b/package.json
index 0c0b19464b..75264662d0 100644
--- a/package.json
+++ b/package.json
@@ -32,12 +32,11 @@
"react": "*"
},
"dependencies": {
- "@aeternity/ledger-app-api": "0.0.4",
- "@ledgerhq/errors": "^4.41.1",
- "@ledgerhq/hw-app-btc": "^4.41.1",
- "@ledgerhq/hw-app-eth": "^4.41.1",
- "@ledgerhq/hw-app-xrp": "^4.41.1",
- "@ledgerhq/hw-transport": "^4.41.1",
+ "@ledgerhq/errors": "^4.43.0",
+ "@ledgerhq/hw-app-btc": "^4.43.0",
+ "@ledgerhq/hw-app-eth": "^4.43.0",
+ "@ledgerhq/hw-app-xrp": "^4.43.0",
+ "@ledgerhq/hw-transport": "^4.43.0",
"bignumber.js": "^7.2.1",
"compressjs": "gre/compressjs#hermit",
"eip55": "^1.0.3",
diff --git a/src/hw/getAddress/aeternity.js b/src/hw/getAddress/aeternity.js
deleted file mode 100644
index 6d3668d1ad..0000000000
--- a/src/hw/getAddress/aeternity.js
+++ /dev/null
@@ -1,16 +0,0 @@
-// @flow
-
-import type { CryptoCurrency } from "../../types";
-import Ae from "@aeternity/ledger-app-api";
-import type Transport from "@ledgerhq/hw-transport";
-
-export default async (
- transport: Transport<*>,
- currency: CryptoCurrency,
- accountIndex: string,
- verify: boolean
-) => {
- const ae = new Ae(transport);
- const address = await ae.getAddress(parseInt(accountIndex, 10), verify);
- return { path: accountIndex, address, publicKey: "" };
-};
diff --git a/src/hw/getAddress/index.js b/src/hw/getAddress/index.js
index 91e35bfd12..d2c55def08 100644
--- a/src/hw/getAddress/index.js
+++ b/src/hw/getAddress/index.js
@@ -7,13 +7,11 @@ import {
UserRefusedAddress
} from "@ledgerhq/errors";
-import aeternity from "./aeternity";
import bitcoin from "./btc";
import ethereum from "./ethereum";
import ripple from "./ripple";
export const perFamily: { [_: string]: Resolver } = {
- aeternity,
bitcoin,
ethereum,
ripple
diff --git a/yarn.lock b/yarn.lock
index e5afcd6f25..1eb43a3342 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,13 +2,6 @@
# yarn lockfile v1
-"@aeternity/ledger-app-api@0.0.4":
- version "0.0.4"
- resolved "https://registry.yarnpkg.com/@aeternity/ledger-app-api/-/ledger-app-api-0.0.4.tgz#79d253b46cc6b0b18ef7cb57c3684bbe7e723c51"
- integrity sha512-aXvCJX9fdT/EJbRKBdc2mu8fvvWu80A8JyFdfvS4bsaDOGjBaIfFFYbEpxaXef8TBE5zV8u7RN1PaXDPGeDUZg==
- dependencies:
- "@ledgerhq/hw-transport" "^4.21.0"
-
"@babel/code-frame@7.0.0-beta.44":
version "7.0.0-beta.44"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz#2a02643368de80916162be70865c97774f3adbd9"
@@ -773,48 +766,48 @@
lodash "^4.17.10"
to-fast-properties "^2.0.0"
-"@ledgerhq/devices@^4.41.1":
- version "4.41.1"
- resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-4.41.1.tgz#a5bfa17aa9d0f0dc48506d765356d36edeef1fd9"
- integrity sha512-8WDj38iR1Fow2JoEG9w8rJouJcXXObw3KeTrh3fUzZ0qap4o8Q3HIc8i1Hr6XGxAjX64YmtebTJil3HjiNNMtQ==
+"@ledgerhq/devices@^4.43.0":
+ version "4.43.0"
+ resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-4.43.0.tgz#5a26b2d74df52677021796c389ac49b1ddf4bed4"
+ integrity sha512-vU3a3sSavcm8cHkBXHQnxYAm0fay/rigUvh4kam9dSf3wfJMFP/bnymGfjJQyupxroVtgmjw55juFuBQho38Cw==
dependencies:
- "@ledgerhq/errors" "^4.41.1"
+ "@ledgerhq/errors" "^4.43.0"
-"@ledgerhq/errors@^4.41.1":
- version "4.41.1"
- resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-4.41.1.tgz#8047464bf81c755dc7239b0ffb73fbf17a1c97aa"
- integrity sha512-MKYzYNT5AKKZu2Ss0QrMXUS7Zri1F0HpNI3yKGjnhXEVxtr2fvxFXKgqdw7sdo+cLtkbNTJhiclemt0e0HtL0Q==
+"@ledgerhq/errors@^4.43.0":
+ version "4.43.0"
+ resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-4.43.0.tgz#f5dd100952ab7da384a06b1e213a2cb21c712677"
+ integrity sha512-XEO6XCvXskerddJinAraembl5dWdOV1My1JrclEAALvPdXuU+OVUdAjesXZV08WHnL8pIkixJIgk9QogcyA+NQ==
-"@ledgerhq/hw-app-btc@^4.41.1":
- version "4.41.1"
- resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-btc/-/hw-app-btc-4.41.1.tgz#7fc4c3bf43b553131b21df7634277f3d3238e851"
- integrity sha512-uFxY3D/WdYpJRX2uaunW05+gU/GMjO5vR+S6Y3pfimsNIRGG6ihyJTp6t7KfkChEbRw9eIKFhJwGkCli9um8qA==
+"@ledgerhq/hw-app-btc@^4.43.0":
+ version "4.43.0"
+ resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-btc/-/hw-app-btc-4.43.0.tgz#99b20b0e85ffe8cc2eaf8b0de5bf7becf2feb8dc"
+ integrity sha512-fPIhIeSH1Z9hZP288MdKD7leRCe4iluulJeEpoTOgKrYWjb9EhnBdlTDsuqJcCs0Qw7lP1/arV2ToueOPSo9xw==
dependencies:
- "@ledgerhq/hw-transport" "^4.41.1"
+ "@ledgerhq/hw-transport" "^4.43.0"
create-hash "^1.1.3"
-"@ledgerhq/hw-app-eth@^4.41.1":
- version "4.41.1"
- resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-4.41.1.tgz#286777a5620fde5cfa23de3dab43600bcd95df55"
- integrity sha512-G38appZPtScWZzgZnDo6+hh9MUwJxWIaAbTng0Y+ravulSjrwJgOYPUQ+rEbkt0tej5t7lcsev7CQHMxFageEQ==
+"@ledgerhq/hw-app-eth@^4.43.0":
+ version "4.43.0"
+ resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-4.43.0.tgz#fcbb162b044b80a140bc99562b5902a48b23e1a4"
+ integrity sha512-PjwOWPujQ3Mj3WhoQBUUOt8yoSKjgb7BRpfN/7V0xR4on2WvIJlgst30JT/occhkCPnqhfW/+veZuRa82I38Fg==
dependencies:
- "@ledgerhq/hw-transport" "^4.41.1"
+ "@ledgerhq/hw-transport" "^4.43.0"
-"@ledgerhq/hw-app-xrp@^4.41.1":
- version "4.41.1"
- resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-xrp/-/hw-app-xrp-4.41.1.tgz#9134cce5d53a6c904730d22f38c4c9c7f91311e0"
- integrity sha512-HLtKGDXoBbUUPLh9t3Ah0jrD8xy1R/SVg+1L8h3LX2r3f7y0PHPFKP14LwNlNMFnzPyDXUZHzLlALsz5iciDpg==
+"@ledgerhq/hw-app-xrp@^4.43.0":
+ version "4.43.0"
+ resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-xrp/-/hw-app-xrp-4.43.0.tgz#1963866829f3070d987cd545637bf1890f6ec981"
+ integrity sha512-3p8WXeBcGeaSc4jHwCr8BRoOmOWixRmmNOaKNZ1hbl5gZdeok+faobKgDT+wezOATgV/gtyTNaoLroHcTvm/uA==
dependencies:
- "@ledgerhq/hw-transport" "^4.41.1"
+ "@ledgerhq/hw-transport" "^4.43.0"
bip32-path "0.4.2"
-"@ledgerhq/hw-transport@^4.21.0", "@ledgerhq/hw-transport@^4.41.1":
- version "4.41.1"
- resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-4.41.1.tgz#1c5cfa38a87d58bbb9fcc9fa0b4e8763365afeb9"
- integrity sha512-0Q4djKCebQ0EAtkrYtD5vN7az580RY0LG3hzDwUabN8EqLWdSJElgB6OfYJk+wHUZAnVNFwXKRZ15cCFdbXExw==
+"@ledgerhq/hw-transport@^4.43.0":
+ version "4.43.0"
+ resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-4.43.0.tgz#6d4d82250316b1d533f5bd291f254439c3964095"
+ integrity sha512-6Rox3yYLaZGANPgNeD1evSlnzYwCDIFLYx5As5A1swsXGwEtbXSlHf4RLwPKL+QDqcUNkInrDoOmb5a3ikg2ww==
dependencies:
- "@ledgerhq/devices" "^4.41.1"
- "@ledgerhq/errors" "^4.41.1"
+ "@ledgerhq/devices" "^4.43.0"
+ "@ledgerhq/errors" "^4.43.0"
events "^3.0.0"
"@octokit/rest@^15.2.6":
From bb00a8c177e91407dc4469c1b649870360133e1a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ga=C3=ABtan=20Renaudeau?=
Date: Tue, 5 Mar 2019 08:10:03 +0100
Subject: [PATCH 6/6] returns error 'UserRefusedAllowManager' out of the
genuine check
---
src/api/Manager.js | 13 +++++++++----
src/api/socket.js | 3 ++-
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/src/api/Manager.js b/src/api/Manager.js
index fde6557dcf..c8a29f7a99 100644
--- a/src/api/Manager.js
+++ b/src/api/Manager.js
@@ -3,14 +3,15 @@
import URL from "url";
import {
+ DeviceOnDashboardExpected,
LatestMCUInstalledError,
- ManagerDeviceLockedError,
- UserRefusedFirmwareUpdate,
- ManagerNotEnoughSpaceError,
ManagerAppAlreadyInstalledError,
ManagerAppRelyOnBTCError,
+ ManagerDeviceLockedError,
+ ManagerNotEnoughSpaceError,
ManagerUninstallBTCDep,
- DeviceOnDashboardExpected
+ UserRefusedAllowManager,
+ UserRefusedFirmwareUpdate
} from "@ledgerhq/errors";
import type Transport from "@ledgerhq/hw-transport";
import { throwError, Observable } from "rxjs";
@@ -312,6 +313,10 @@ const genuineCheck = (
requested = true;
}, ALLOW_MANAGER_APDU_DEBOUNCE);
} else if (e.type === "exchange") {
+ if (e.status.toString("hex") === "6985") {
+ o.error(new UserRefusedAllowManager());
+ return;
+ }
if (requested) {
o.next({ type: "allow-manager-accepted" });
}
diff --git a/src/api/socket.js b/src/api/socket.js
index 7a4982b77b..c9ff7955a4 100644
--- a/src/api/socket.js
+++ b/src/api/socket.js
@@ -46,7 +46,8 @@ export type SocketEvent =
type: "exchange",
nonce: number,
apdu: Buffer,
- data: Buffer
+ data: Buffer,
+ status: Buffer
}
| {
type: "opened"