diff --git a/app/src/main/java/net/pp3345/ykdroid/yubikey/NfcYubiKey.java b/app/src/main/java/net/pp3345/ykdroid/yubikey/NfcYubiKey.java index c13fc25..6d38a8a 100644 --- a/app/src/main/java/net/pp3345/ykdroid/yubikey/NfcYubiKey.java +++ b/app/src/main/java/net/pp3345/ykdroid/yubikey/NfcYubiKey.java @@ -37,13 +37,19 @@ public NfcYubiKey(final IsoDep tag) { this.tag = tag; } + private void ensureConnected() throws IOException { + if (!this.tag.isConnected()) { + this.tag.connect(); + this.tag.setTimeout(2000); + } + } + @Override public byte[] challengeResponse(final Slot slot, final byte[] challenge) throws YubiKeyException { slot.ensureChallengeResponseSlot(); try { - if (!this.tag.isConnected()) - this.tag.connect(); + this.ensureConnected(); final SelectFileApdu selectFileApdu = new SelectFileApdu(SelectFileApdu.SelectionControl.DF_NAME_DIRECT, SelectFileApdu.RecordOffset.FIRST_RECORD, CHALLENGE_AID); if (!selectFileApdu.parseResponse(this.tag.transceive(selectFileApdu.build())).isSuccess()) {