mirror of
https://github.com/sparrowwallet/sparrow.git
synced 2024-12-25 13:16:44 +00:00
Satochip: Patch error 0x9C01 in cardBip32GetExtendedKey()
This error occurs when the cache memory in the card is full. We need to flush the cache by sending the same command with the p2 flag set to 0x80.
This commit is contained in:
parent
6ee3755ce4
commit
e368782b4c
1 changed files with 8 additions and 2 deletions
|
@ -347,8 +347,14 @@ public class SatochipCommandSet {
|
||||||
public APDUResponse cardBip32GetExtendedKey(byte[] bytePath) {
|
public APDUResponse cardBip32GetExtendedKey(byte[] bytePath) {
|
||||||
byte p1 = (byte) (bytePath.length / 4);
|
byte p1 = (byte) (bytePath.length / 4);
|
||||||
|
|
||||||
APDUCommand plainApdu = new APDUCommand(0xB0, INS_BIP32_GET_EXTENDED_KEY, p1, 0x40, bytePath);
|
APDUCommand capdu = new APDUCommand(0xB0, INS_BIP32_GET_EXTENDED_KEY, p1, 0x40, bytePath);
|
||||||
return this.cardTransmit(plainApdu);
|
APDUResponse rapdu = this.cardTransmit(capdu);
|
||||||
|
if(rapdu.getSw() == 0x9C01) {
|
||||||
|
// error 0X9C01: no memory available for key derivation => flush memory cache in card
|
||||||
|
capdu = new APDUCommand(0xB0, INS_BIP32_GET_EXTENDED_KEY, p1, 0x80, bytePath);
|
||||||
|
rapdu = this.cardTransmit(capdu);
|
||||||
|
}
|
||||||
|
return rapdu;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in a new issue