add verifyPin and changePin methods

This commit is contained in:
Dmitry Novotochinov 2018-12-26 15:30:39 +03:00 committed by Dmitry Novotochinov
parent b2cf1b0a7a
commit d2db19f49f
2 changed files with 45 additions and 0 deletions

View File

@ -256,4 +256,26 @@ public class RNStatusKeycardModule extends ReactContextBaseJavaModule implements
}).start(); }).start();
} }
@ReactMethod
public void verifyPin(final String pairing, final String pin, final Promise promise) {
try {
smartCard.verifyPin(pairing, pin);
promise.resolve(true);
} catch (IOException | APDUException e) {
Log.d(TAG, e.getMessage());
promise.reject(e);
}
}
@ReactMethod
public void changePin(final String pairing, final String currentPin, final String newPin, final Promise promise) {
try {
smartCard.changePin(pairing, currentPin, newPin);
promise.resolve(true);
} catch (IOException | APDUException e) {
Log.d(TAG, e.getMessage());
promise.reject(e);
}
}
} }

View File

@ -367,4 +367,27 @@ public class SmartCard extends BroadcastReceiver implements CardListener {
return init(); return init();
} }
public KeycardCommandSet verifyPin(final String pairingBase64, final String pin) throws IOException, APDUException {
KeycardCommandSet cmdSet = new KeycardCommandSet(this.cardChannel);
cmdSet.select().checkOK();
Pairing pairing = new Pairing(pairingBase64);
cmdSet.setPairing(pairing);
cmdSet.autoOpenSecureChannel();
Log.i(TAG, "secure channel opened");
cmdSet.verifyPIN(pin).checkOK();
Log.i(TAG, "pin verified");
return cmdSet;
}
public void changePin(final String pairingBase64, final String currentPin, final String newPin) throws IOException, APDUException {
KeycardCommandSet cmdSet = verifyPin(pairingBase64, currentPin);
cmdSet.changePIN(0, newPin);
Log.i(TAG, "pin changed");
}
} }