aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/javacard/JavacardDevice.java
diff options
context:
space:
mode:
authorNikita Mikhailov <nikita.s.mikhailov@gmail.com>2016-04-03 19:54:24 +0600
committerNikita Mikhailov <nikita.s.mikhailov@gmail.com>2016-04-14 22:48:01 +0600
commit65f17d74495b2bfdb323dc5bc87ef95f8466347a (patch)
treebd1f0bbec695b00ac33037647bc9d5810435b81f /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/javacard/JavacardDevice.java
parente08ae317970d2b46175eb7f72500061642e0b9b2 (diff)
downloadopen-keychain-65f17d74495b2bfdb323dc5bc87ef95f8466347a.tar.gz
open-keychain-65f17d74495b2bfdb323dc5bc87ef95f8466347a.tar.bz2
open-keychain-65f17d74495b2bfdb323dc5bc87ef95f8466347a.zip
OTG: port old primitives from otg_alt branch
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/javacard/JavacardDevice.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/javacard/JavacardDevice.java65
1 files changed, 65 insertions, 0 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/javacard/JavacardDevice.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/javacard/JavacardDevice.java
new file mode 100644
index 000000000..240fffaf8
--- /dev/null
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/javacard/JavacardDevice.java
@@ -0,0 +1,65 @@
+package org.sufficientlysecure.keychain.javacard;
+
+import org.sufficientlysecure.keychain.pgp.CanonicalizedSecretKey;
+import org.sufficientlysecure.keychain.util.Passphrase;
+
+import java.io.IOException;
+
+public interface JavacardDevice {
+
+ Passphrase getPin();
+
+ void setPin(final Passphrase pin);
+
+ Passphrase getAdminPin();
+
+ void setAdminPin(final Passphrase adminPin);
+
+ void changeKey(CanonicalizedSecretKey secretKey, Passphrase passphrase) throws IOException;
+
+ boolean containsKey(KeyType keyType) throws IOException;
+
+ boolean keyMatchesFingerPrint(KeyType keyType, byte[] fingerprint) throws IOException;
+
+ void connectToDevice() throws IOException;
+
+ /**
+ * Modifies the user's PW1 or PW3. Before sending, the new PIN will be validated for
+ * conformance to the card's requirements for key length.
+ *
+ * @param pinType For PW1, this is 0x81. For PW3 (Admin PIN), mode is 0x83.
+ * @param newPin The new PW1 or PW3.
+ */
+ void nfcModifyPIN(PinType pinType, byte[] newPin) throws IOException;
+
+ /**
+ * Calls to calculate the signature and returns the MPI value
+ *
+ * @param encryptedSessionKey the encoded session key
+ * @return the decoded session key
+ */
+ byte[] decryptSessionKey(byte[] encryptedSessionKey) throws IOException;
+
+ /**
+ * Return fingerprints of all keys from application specific data stored
+ * on tag, or null if data not available.
+ *
+ * @return The fingerprints of all subkeys in a contiguous byte array.
+ */
+ byte[] getFingerprints() throws IOException;
+
+
+ byte[] getAid() throws IOException;
+
+ String getUserId() throws IOException;
+
+ boolean isConnected();
+
+ /**
+ * Calls to calculate the signature and returns the MPI value
+ *
+ * @param hash the hash for signing
+ * @return a big integer representing the MPI for the given hash
+ */
+ byte[] nfcCalculateSignature(byte[] hash, int hashAlgo) throws IOException;
+}