From b373c866e74adb2ee5c27479b6fac75d9e6f76fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Wed, 24 Sep 2014 02:01:53 +0200 Subject: [PATCH] Merge openpgp-card lib into OpenKeychain, it was already depending on OK, no need to separate --- OpenKeychain/build.gradle | 1 - OpenKeychain/src/main/AndroidManifest.xml | 3 + .../NfcSyncPGPContentSignerBuilder.java | 144 +++++ ...cPublicKeyDataDecryptorFactoryBuilder.java | 275 ++++++++++ .../keychain/remote/OpenPgpService.java | 3 +- .../keychain/ui/DecryptFragment.java | 1 - .../keychain/ui/EncryptActivity.java | 4 - .../keychain/ui/NfcActivity.java | 498 ++++++++++++++++++ .../src/main/res/drawable/yubikey_neo.png | Bin 0 -> 132128 bytes .../src/main/res/layout/nfc_activity.xml | 30 ++ extern/openpgp-card-nfc-lib | 2 +- settings.gradle | 1 - 12 files changed, 952 insertions(+), 10 deletions(-) create mode 100644 OpenKeychain/src/main/java/org/spongycastle/openpgp/operator/jcajce/NfcSyncPGPContentSignerBuilder.java create mode 100644 OpenKeychain/src/main/java/org/spongycastle/openpgp/operator/jcajce/NfcSyncPublicKeyDataDecryptorFactoryBuilder.java create mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/NfcActivity.java create mode 100644 OpenKeychain/src/main/res/drawable/yubikey_neo.png create mode 100644 OpenKeychain/src/main/res/layout/nfc_activity.xml diff --git a/OpenKeychain/build.gradle b/OpenKeychain/build.gradle index ec6d2c35d..6b957b622 100644 --- a/OpenKeychain/build.gradle +++ b/OpenKeychain/build.gradle @@ -19,7 +19,6 @@ dependencies { compile project(':extern:minidns') compile project(':extern:KeybaseLib:Lib') compile project(':extern:TokenAutoComplete:library') - compile project(':extern:openpgp-card-nfc-lib:library') compile project(':extern:safeslinger-exchange') } diff --git a/OpenKeychain/src/main/AndroidManifest.xml b/OpenKeychain/src/main/AndroidManifest.xml index c78e80c19..a3aa0d2a4 100644 --- a/OpenKeychain/src/main/AndroidManifest.xml +++ b/OpenKeychain/src/main/AndroidManifest.xml @@ -619,6 +619,9 @@ + diff --git a/OpenKeychain/src/main/java/org/spongycastle/openpgp/operator/jcajce/NfcSyncPGPContentSignerBuilder.java b/OpenKeychain/src/main/java/org/spongycastle/openpgp/operator/jcajce/NfcSyncPGPContentSignerBuilder.java new file mode 100644 index 000000000..e0286ec15 --- /dev/null +++ b/OpenKeychain/src/main/java/org/spongycastle/openpgp/operator/jcajce/NfcSyncPGPContentSignerBuilder.java @@ -0,0 +1,144 @@ +/** + * Copyright (c) 2013-2014 Philipp Jakubeit, Signe Rüsch, Dominik Schürmann + * Copyright (c) 2000-2013 The Legion of the Bouncy Castle Inc. (http://www.bouncycastle.org) + * + * Licensed under the Bouncy Castle License (MIT license). See LICENSE file for details. + */ + +package org.spongycastle.openpgp.operator.jcajce; + +import org.spongycastle.openpgp.PGPException; +import org.spongycastle.openpgp.PGPPrivateKey; +import org.spongycastle.openpgp.operator.PGPContentSigner; +import org.spongycastle.openpgp.operator.PGPContentSignerBuilder; +import org.spongycastle.openpgp.operator.PGPDigestCalculator; + +import java.io.OutputStream; +import java.security.Provider; +import java.util.Date; + +/** + * This class is based on JcaPGPContentSignerBuilder. + * + * Instead of using a Signature object based on a privateKey, this class only calculates the digest + * of the output stream and gives the result back using a RuntimeException. + */ +public class NfcSyncPGPContentSignerBuilder + implements PGPContentSignerBuilder +{ + private JcaPGPDigestCalculatorProviderBuilder digestCalculatorProviderBuilder = new JcaPGPDigestCalculatorProviderBuilder(); + private int hashAlgorithm; + private int keyAlgorithm; + private long keyID; + + private byte[] signedHash; + private Date creationTimestamp; + + public static class NfcInteractionNeeded extends RuntimeException + { + public byte[] hashToSign; + public Date creationTimestamp; + public int hashAlgo; + + public NfcInteractionNeeded(byte[] hashToSign, int hashAlgo, Date creationTimestamp) + { + super("NFC interaction required!"); + this.hashToSign = hashToSign; + this.hashAlgo = hashAlgo; + this.creationTimestamp = creationTimestamp; + } + } + + public NfcSyncPGPContentSignerBuilder(int keyAlgorithm, int hashAlgorithm, long keyID, byte[] signedHash, Date creationTimestamp) + { + this.keyAlgorithm = keyAlgorithm; + this.hashAlgorithm = hashAlgorithm; + this.keyID = keyID; + this.signedHash = signedHash; + this.creationTimestamp = creationTimestamp; + } + + public NfcSyncPGPContentSignerBuilder setProvider(Provider provider) + { + digestCalculatorProviderBuilder.setProvider(provider); + + return this; + } + + public NfcSyncPGPContentSignerBuilder setProvider(String providerName) + { + digestCalculatorProviderBuilder.setProvider(providerName); + + return this; + } + + public NfcSyncPGPContentSignerBuilder setDigestProvider(Provider provider) + { + digestCalculatorProviderBuilder.setProvider(provider); + + return this; + } + + public NfcSyncPGPContentSignerBuilder setDigestProvider(String providerName) + { + digestCalculatorProviderBuilder.setProvider(providerName); + + return this; + } + + public PGPContentSigner build(final int signatureType, PGPPrivateKey privateKey) + throws PGPException { + // NOTE: privateKey is null in this case! + return build(signatureType, keyID); + } + + public PGPContentSigner build(final int signatureType, final long keyID) + throws PGPException + { + final PGPDigestCalculator digestCalculator = digestCalculatorProviderBuilder.build().get(hashAlgorithm); + + return new PGPContentSigner() + { + public int getType() + { + return signatureType; + } + + public int getHashAlgorithm() + { + return hashAlgorithm; + } + + public int getKeyAlgorithm() + { + return keyAlgorithm; + } + + public long getKeyID() + { + return keyID; + } + + public OutputStream getOutputStream() + { + return digestCalculator.getOutputStream(); + } + + public byte[] getSignature() { + if (signedHash != null) { + // we already have the signed hash from a previous execution, return this! + return signedHash; + } else { + // catch this when signatureGenerator.generate() is executed and divert digest to card, + // when doing the operation again reuse creationTimestamp (this will be hashed) + throw new NfcInteractionNeeded(digestCalculator.getDigest(), getHashAlgorithm(), creationTimestamp); + } + } + + public byte[] getDigest() + { + return digestCalculator.getDigest(); + } + }; + } +} diff --git a/OpenKeychain/src/main/java/org/spongycastle/openpgp/operator/jcajce/NfcSyncPublicKeyDataDecryptorFactoryBuilder.java b/OpenKeychain/src/main/java/org/spongycastle/openpgp/operator/jcajce/NfcSyncPublicKeyDataDecryptorFactoryBuilder.java new file mode 100644 index 000000000..ffa154876 --- /dev/null +++ b/OpenKeychain/src/main/java/org/spongycastle/openpgp/operator/jcajce/NfcSyncPublicKeyDataDecryptorFactoryBuilder.java @@ -0,0 +1,275 @@ +/** + * Copyright (c) 2013-2014 Philipp Jakubeit, Signe Rüsch, Dominik Schürmann + * + * Licensed under the Bouncy Castle License (MIT license). See LICENSE file for details. + */ + +package org.spongycastle.openpgp.operator.jcajce; + +import org.spongycastle.bcpg.PublicKeyAlgorithmTags; +import org.spongycastle.jcajce.util.DefaultJcaJceHelper; +import org.spongycastle.jcajce.util.NamedJcaJceHelper; +import org.spongycastle.jcajce.util.ProviderJcaJceHelper; +import org.spongycastle.openpgp.PGPException; +import org.spongycastle.openpgp.PGPPublicKey; +import org.spongycastle.openpgp.operator.PGPDataDecryptor; +import org.spongycastle.openpgp.operator.PublicKeyDataDecryptorFactory; + +import java.security.Provider; + +/** + * This class is based on JcePublicKeyDataDecryptorFactoryBuilder + * + */ +public class NfcSyncPublicKeyDataDecryptorFactoryBuilder +{ + private OperatorHelper helper = new OperatorHelper(new DefaultJcaJceHelper()); + private OperatorHelper contentHelper = new OperatorHelper(new DefaultJcaJceHelper()); + private JcaPGPKeyConverter keyConverter = new JcaPGPKeyConverter(); +// private JcaPGPDigestCalculatorProviderBuilder digestCalculatorProviderBuilder = new JcaPGPDigestCalculatorProviderBuilder(); +// private JcaKeyFingerprintCalculator fingerprintCalculator = new JcaKeyFingerprintCalculator(); + + public static class NfcInteractionNeeded extends RuntimeException + { + public byte[] encryptedSessionKey; + + public NfcInteractionNeeded(byte[] encryptedSessionKey) + { + super("NFC interaction required!"); + this.encryptedSessionKey = encryptedSessionKey; + } + } + + public NfcSyncPublicKeyDataDecryptorFactoryBuilder() + { + } + + /** + * Set the provider object to use for creating cryptographic primitives in the resulting factory the builder produces. + * + * @param provider provider object for cryptographic primitives. + * @return the current builder. + */ + public NfcSyncPublicKeyDataDecryptorFactoryBuilder setProvider(Provider provider) + { + this.helper = new OperatorHelper(new ProviderJcaJceHelper(provider)); + keyConverter.setProvider(provider); + this.contentHelper = helper; + + return this; + } + + /** + * Set the provider name to use for creating cryptographic primitives in the resulting factory the builder produces. + * + * @param providerName the name of the provider to reference for cryptographic primitives. + * @return the current builder. + */ + public NfcSyncPublicKeyDataDecryptorFactoryBuilder setProvider(String providerName) + { + this.helper = new OperatorHelper(new NamedJcaJceHelper(providerName)); + keyConverter.setProvider(providerName); + this.contentHelper = helper; + + return this; + } + + public NfcSyncPublicKeyDataDecryptorFactoryBuilder setContentProvider(Provider provider) + { + this.contentHelper = new OperatorHelper(new ProviderJcaJceHelper(provider)); + + return this; + } + + public NfcSyncPublicKeyDataDecryptorFactoryBuilder setContentProvider(String providerName) + { + this.contentHelper = new OperatorHelper(new NamedJcaJceHelper(providerName)); + + return this; + } + + public PublicKeyDataDecryptorFactory build(final byte[] nfcDecrypted) { + return new PublicKeyDataDecryptorFactory() + { + public byte[] recoverSessionData(int keyAlgorithm, byte[][] secKeyData) + throws PGPException + { + if (keyAlgorithm == PublicKeyAlgorithmTags.ECDH) + { + throw new PGPException("ECDH not supported!"); + } + + return decryptSessionData(keyAlgorithm, secKeyData, nfcDecrypted); + } + + public PGPDataDecryptor createDataDecryptor(boolean withIntegrityPacket, int encAlgorithm, byte[] key) + throws PGPException + { + return contentHelper.createDataDecryptor(withIntegrityPacket, encAlgorithm, key); + } + }; + } + +// public PublicKeyDataDecryptorFactory build(final PrivateKey privKey) +// { +// return new PublicKeyDataDecryptorFactory() +// { +// public byte[] recoverSessionData(int keyAlgorithm, byte[][] secKeyData) +// throws PGPException +// { +// if (keyAlgorithm == PublicKeyAlgorithmTags.ECDH) +// { +// throw new PGPException("ECDH requires use of PGPPrivateKey for decryption"); +// } +// return decryptSessionData(keyAlgorithm, privKey, secKeyData); +// } +// +// public PGPDataDecryptor createDataDecryptor(boolean withIntegrityPacket, int encAlgorithm, byte[] key) +// throws PGPException +// { +// return contentHelper.createDataDecryptor(withIntegrityPacket, encAlgorithm, key); +// } +// }; +// } + +// public PublicKeyDataDecryptorFactory build(final PGPPrivateKey privKey, final byte[] nfcDecrypted) +// { +// return new PublicKeyDataDecryptorFactory() +// { +// public byte[] recoverSessionData(int keyAlgorithm, byte[][] secKeyData) +// throws PGPException +// { +// if (keyAlgorithm == PublicKeyAlgorithmTags.ECDH) +// { +// return decryptSessionData(privKey.getPrivateKeyDataPacket(), privKey.getPublicKeyPacket(), secKeyData); +// } +// +// return decryptSessionData(keyAlgorithm, keyConverter.getPrivateKey(privKey), secKeyData, nfcDecrypted); +// } +// +// public PGPDataDecryptor createDataDecryptor(boolean withIntegrityPacket, int encAlgorithm, byte[] key) +// throws PGPException +// { +// return contentHelper.createDataDecryptor(withIntegrityPacket, encAlgorithm, key); +// } +// }; +// } + +// private byte[] decryptSessionData(BCPGKey privateKeyPacket, PublicKeyPacket pubKeyData, byte[][] secKeyData) +// throws PGPException +// { +// ECDHPublicBCPGKey ecKey = (ECDHPublicBCPGKey)pubKeyData.getKey(); +// X9ECParameters x9Params = NISTNamedCurves.getByOID(ecKey.getCurveOID()); +// +// byte[] enc = secKeyData[0]; +// +// int pLen = ((((enc[0] & 0xff) << 8) + (enc[1] & 0xff)) + 7) / 8; +// byte[] pEnc = new byte[pLen]; +// +// System.arraycopy(enc, 2, pEnc, 0, pLen); +// +// byte[] keyEnc = new byte[enc[pLen + 2]]; +// +// System.arraycopy(enc, 2 + pLen + 1, keyEnc, 0, keyEnc.length); +// +// Cipher c = helper.createKeyWrapper(ecKey.getSymmetricKeyAlgorithm()); +// +// ECPoint S = x9Params.getCurve().decodePoint(pEnc).multiply(((ECSecretBCPGKey)privateKeyPacket).getX()).normalize(); +// +// RFC6637KDFCalculator rfc6637KDFCalculator = new RFC6637KDFCalculator(digestCalculatorProviderBuilder.build().get(ecKey.getHashAlgorithm()), ecKey.getSymmetricKeyAlgorithm()); +// Key key = new SecretKeySpec(rfc6637KDFCalculator.createKey(ecKey.getCurveOID(), S, fingerprintCalculator.calculateFingerprint(pubKeyData)), "AESWrap"); +// +// try +// { +// c.init(Cipher.UNWRAP_MODE, key); +// +// Key paddedSessionKey = c.unwrap(keyEnc, "Session", Cipher.SECRET_KEY); +// +// return PGPPad.unpadSessionData(paddedSessionKey.getEncoded()); +// } +// catch (InvalidKeyException e) +// { +// throw new PGPException("error setting asymmetric cipher", e); +// } +// catch (NoSuchAlgorithmException e) +// { +// throw new PGPException("error setting asymmetric cipher", e); +// } +// } + + private byte[] decryptSessionData(int keyAlgorithm, byte[][] secKeyData, byte[] nfcDecrypted) + throws PGPException + { +// Cipher c1 = helper.createPublicKeyCipher(keyAlgorithm); +// +// try +// { +// c1.init(Cipher.DECRYPT_MODE, privKey); +// } +// catch (InvalidKeyException e) +// { +// throw new PGPException("error setting asymmetric cipher", e); +// } + + if (keyAlgorithm == PGPPublicKey.RSA_ENCRYPT + || keyAlgorithm == PGPPublicKey.RSA_GENERAL) + { + byte[] bi = secKeyData[0]; // encoded MPI + + if (nfcDecrypted != null) { + // we already have the decrypted bytes from a previous execution, return this! + return nfcDecrypted; + } else { + // catch this when decryptSessionData() is executed and divert digest to card, + // when doing the operation again reuse nfcDecrypted + throw new NfcInteractionNeeded(bi); + } + +// c1.update(bi, 2, bi.length - 2); + } + else + { + throw new PGPException("ElGamal not supported!"); + +// ElGamalKey k = (ElGamalKey)privKey; +// int size = (k.getParameters().getP().bitLength() + 7) / 8; +// byte[] tmp = new byte[size]; +// +// byte[] bi = secKeyData[0]; // encoded MPI +// if (bi.length - 2 > size) // leading Zero? Shouldn't happen but... +// { +// c1.update(bi, 3, bi.length - 3); +// } +// else +// { +// System.arraycopy(bi, 2, tmp, tmp.length - (bi.length - 2), bi.length - 2); +// c1.update(tmp); +// } +// +// bi = secKeyData[1]; // encoded MPI +// for (int i = 0; i != tmp.length; i++) +// { +// tmp[i] = 0; +// } +// +// if (bi.length - 2 > size) // leading Zero? Shouldn't happen but... +// { +// c1.update(bi, 3, bi.length - 3); +// } +// else +// { +// System.arraycopy(bi, 2, tmp, tmp.length - (bi.length - 2), bi.length - 2); +// c1.update(tmp); +// } + } + +// try +// { +// return c1.doFinal(); +// } +// catch (Exception e) +// { +// throw new PGPException("exception decrypting session data", e); +// } + } +} diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java index 1b4ad1fc1..8a115b245 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/remote/OpenPgpService.java @@ -31,10 +31,9 @@ import org.openintents.openpgp.OpenPgpError; import org.openintents.openpgp.OpenPgpSignatureResult; import org.openintents.openpgp.util.OpenPgpApi; import org.spongycastle.util.encoders.Hex; -import org.sufficientlysecure.keychain.nfc.NfcActivity; +import org.sufficientlysecure.keychain.ui.NfcActivity; import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.pgp.PassphraseCacheInterface; -import org.sufficientlysecure.keychain.pgp.PassphraseCacheInterface.NoSecretKeyException; import org.sufficientlysecure.keychain.pgp.PgpDecryptVerify; import org.sufficientlysecure.keychain.provider.CachedPublicKeyRing; import org.sufficientlysecure.keychain.provider.KeychainDatabase.Tables; diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFragment.java index c9cfb9e0c..dd035c78f 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DecryptFragment.java @@ -30,7 +30,6 @@ import android.widget.TextView; import org.openintents.openpgp.OpenPgpSignatureResult; import org.sufficientlysecure.keychain.R; -import org.sufficientlysecure.keychain.nfc.NfcActivity; import org.sufficientlysecure.keychain.pgp.KeyRing; import org.sufficientlysecure.keychain.service.results.DecryptVerifyResult; import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils; diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java index 17d4865fd..c1c3409f8 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivity.java @@ -2,10 +2,6 @@ package org.sufficientlysecure.keychain.ui; import android.content.Intent; -import org.sufficientlysecure.keychain.nfc.NfcActivity; - -import java.util.Date; - public class EncryptActivity extends DrawerActivity { public static final int REQUEST_CODE_PASSPHRASE = 0x00008001; diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/NfcActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/NfcActivity.java new file mode 100644 index 000000000..f466a7f1d --- /dev/null +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/NfcActivity.java @@ -0,0 +1,498 @@ +/** + * Copyright (c) 2013-2014 Philipp Jakubeit, Signe Rüsch, Dominik Schürmann + * + * Licensed under the Bouncy Castle License (MIT license). See LICENSE file for details. + */ + +package org.sufficientlysecure.keychain.ui; + +import android.annotation.TargetApi; +import android.app.PendingIntent; +import android.content.Intent; +import android.content.IntentFilter; +import android.nfc.NfcAdapter; +import android.nfc.Tag; +import android.nfc.tech.IsoDep; +import android.os.Build; +import android.os.Bundle; +import android.support.v7.app.ActionBarActivity; +import android.util.Log; +import android.view.WindowManager; +import android.widget.Toast; + +import org.spongycastle.bcpg.HashAlgorithmTags; +import org.spongycastle.util.encoders.Hex; +import org.sufficientlysecure.keychain.R; + +import java.io.IOException; +import java.util.Locale; + +/** + * This class provides a communication interface to OpenPGP applications on ISO SmartCard compliant + * NFC devices. + * + * For the full specs, see http://g10code.com/docs/openpgp-card-2.0.pdf + */ +@TargetApi(Build.VERSION_CODES.GINGERBREAD_MR1) +public class NfcActivity extends ActionBarActivity { + private static final String TAG = "Keychain"; + + // actions + public static final String ACTION_SIGN_HASH = "sign_hash"; + public static final String ACTION_DECRYPT_SESSION_KEY = "decrypt_session_key"; + + // always + public static final String EXTRA_PIN = "pin"; + // special extra for OpenPgpService + public static final String EXTRA_DATA = "data"; + + // sign + public static final String EXTRA_NFC_HASH_TO_SIGN = "nfc_hash"; + public static final String EXTRA_NFC_HASH_ALGO = "nfc_hash_algo"; + + // decrypt + public static final String EXTRA_NFC_ENC_SESSION_KEY = "encrypted_session_key"; + + private Intent mServiceIntent; + + private static final int TIMEOUT = 100000; + + private NfcAdapter mNfcAdapter; + private IsoDep mIsoDep; + private String mAction; + + private String mPin; + + // sign + private byte[] mHashToSign; + private int mHashAlgo; + + // decrypt + private byte[] mEncryptedSessionKey; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Log.d(TAG, "NfcActivity.onCreate"); + + getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + + setContentView(R.layout.nfc_activity); + + Intent intent = getIntent(); + Bundle data = intent.getExtras(); + String action = intent.getAction(); + + if (ACTION_SIGN_HASH.equals(action)) { + mAction = action; + mPin = data.getString(EXTRA_PIN); + mHashToSign = data.getByteArray(EXTRA_NFC_HASH_TO_SIGN); + mHashAlgo = data.getInt(EXTRA_NFC_HASH_ALGO); + mServiceIntent = data.getParcelable(EXTRA_DATA); + + Log.d(TAG, "NfcActivity mAction: " + mAction); + Log.d(TAG, "NfcActivity mPin: " + mPin); + Log.d(TAG, "NfcActivity mHashToSign as hex: " + getHex(mHashToSign)); + Log.d(TAG, "NfcActivity mServiceIntent: " + mServiceIntent.toString()); + } else if (ACTION_DECRYPT_SESSION_KEY.equals(action)) { + mAction = action; + mPin = data.getString(EXTRA_PIN); + mEncryptedSessionKey = data.getByteArray(EXTRA_NFC_ENC_SESSION_KEY); + mServiceIntent = data.getParcelable(EXTRA_DATA); + + Log.d(TAG, "NfcActivity mAction: " + mAction); + Log.d(TAG, "NfcActivity mPin: " + mPin); + Log.d(TAG, "NfcActivity mEncryptedSessionKey as hex: " + getHex(mEncryptedSessionKey)); + Log.d(TAG, "NfcActivity mServiceIntent: " + mServiceIntent.toString()); + } else if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(action)) { + Log.e(TAG, "This should not happen, but there is a bug in Android!"); + + toast("This should not happen, but there is a bug in Android! Clear all app tasks and start app from launcher again!"); + finish(); + } else { + Log.d(TAG, "Action not supported: " + action); + } + } + + /** + * Called when the system is about to start resuming a previous activity, + * disables NFC Foreground Dispatch + */ + public void onPause() { + super.onPause(); + Log.d(TAG, "NfcActivity.onPause"); + + disableNfcForegroundDispatch(); + } + + /** + * Called when the activity will start interacting with the user, + * enables NFC Foreground Dispatch + */ + public void onResume() { + super.onResume(); + Log.d(TAG, "NfcActivity.onResume"); + + enableNfcForegroundDispatch(); + } + + /** + * This activity is started as a singleTop activity. + * All new NFC Intents which are delivered to this activity are handled here + */ + public void onNewIntent(Intent intent) { + if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) { + try { + handleNdefDiscoveredIntent(intent); + } catch (IOException e) { + Log.e(TAG, "Connection error!", e); + toast("Connection Error: " + e.getMessage()); + setResult(RESULT_CANCELED, mServiceIntent); + finish(); + } + } + } + + /** Handle NFC communication and return a result. + * + * This method is called by onNewIntent above upon discovery of an NFC tag. + * It handles initialization and login to the application, subsequently + * calls either nfcCalculateSignature() or nfcDecryptSessionKey(), then + * finishes the activity with an appropiate result. + * + * On general communication, see also + * http://www.cardwerk.com/smartcards/smartcard_standard_ISO7816-4_annex-a.aspx + * + * References to pages are generally related to the OpenPGP Application + * on ISO SmartCard Systems specification. + * + */ + private void handleNdefDiscoveredIntent(Intent intent) throws IOException { + + Tag detectedTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); + + // Connect to the detected tag, setting a couple of settings + mIsoDep = IsoDep.get(detectedTag); + mIsoDep.setTimeout(TIMEOUT); // timeout is set to 100 seconds to avoid cancellation during calculation + mIsoDep.connect(); + + // SW1/2 0x9000 is the generic "ok" response, which we expect most of the time. + // See specification, page 51 + String accepted = "9000"; + + // Command APDU (page 51) for SELECT FILE command (page 29) + String opening = + "00" // CLA + + "A4" // INS + + "04" // P1 + + "00" // P2 + + "06" // Lc (number of bytes) + + "D27600012401" // Data (6 bytes) + + "00"; // Le + if ( ! card(opening).equals(accepted)) { // activate connection + toast("Opening Error!"); + setResult(RESULT_CANCELED, mServiceIntent); + finish(); + return; + } + + // Command APDU for VERIFY command (page 32) + String login = + "00" // CLA + + "20" // INS + + "00" // P1 + + "82" // P2 (PW1) + + "06" // Lc TODO should be length of PIN? + + Hex.toHexString(mPin.getBytes()); + if ( ! card(login).equals(accepted)) { // login + toast("Wrong PIN!"); + setResult(RESULT_CANCELED, mServiceIntent); + finish(); + return; + } + + if (ACTION_SIGN_HASH.equals(mAction)) { + // returns signed hash + byte[] signedHash = nfcCalculateSignature(mHashToSign, mHashAlgo); + + if (signedHash == null) { + setResult(RESULT_CANCELED, mServiceIntent); + finish(); + return; + } + + Log.d(TAG, "NfcActivity signedHash as hex: " + getHex(signedHash)); + + // give data through for new service call + // OpenPgpApi.EXTRA_NFC_SIGNED_HASH + mServiceIntent.putExtra("nfc_signed_hash", signedHash); + setResult(RESULT_OK, mServiceIntent); + finish(); + + } else if (ACTION_DECRYPT_SESSION_KEY.equals(mAction)) { + byte[] decryptedSessionKey = nfcDecryptSessionKey(mEncryptedSessionKey); + + // give data through for new service call + // OpenPgpApi.EXTRA_NFC_DECRYPTED_SESSION_KEY + mServiceIntent.putExtra("nfc_decrypted_session_key", decryptedSessionKey); + setResult(RESULT_OK, mServiceIntent); + finish(); + } + } + + /** + * Gets the user ID + * + * @return the user id as "name " + * @throws java.io.IOException + */ + public String getUserId() throws IOException { + String info = "00CA006500"; + String data = "00CA005E00"; + return getName(card(info)) + " <" + (new String(Hex.decode(getDataField(card(data))))) + ">"; + } + + /** + * Gets the long key ID + * + * @return the long key id (last 16 bytes of the fingerprint) + * @throws java.io.IOException + */ + public long getKeyId() throws IOException { + String keyId = getFingerprint().substring(24); + Log.d(TAG, "keyId: " + keyId); + return Long.parseLong(keyId, 16); + } + + /** + * Gets the fingerprint of the signature key + * + * @return the fingerprint + * @throws java.io.IOException + */ + public String getFingerprint() throws IOException { + String data = "00CA006E00"; + String fingerprint = card(data); + fingerprint = fingerprint.toLowerCase(Locale.ENGLISH); // better enforce lower case + fingerprint = fingerprint.substring(fingerprint.indexOf("c5") + 4, fingerprint.indexOf("c5") + 44); + + Log.d(TAG, "fingerprint: " + fingerprint); + + return fingerprint; + } + + /** + * 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 + * @throws java.io.IOException + */ + public byte[] nfcCalculateSignature(byte[] hash, int hashAlgo) throws IOException { + + // dsi, including Lc + String dsi; + + Log.i(TAG, "Hash: " + hashAlgo); + switch (hashAlgo) { + case HashAlgorithmTags.SHA1: + if (hash.length != 20) { + throw new RuntimeException("Bad hash length (" + hash.length + ", expected 10!"); + } + dsi = "30" // Lc TODO 0x30 == 48. shouldn't this be 35, for 15 header bytes + 20 hash? + + "3021" // Tag/Length of Sequence, the 0x21 includes all following 33 bytes + + "3009" // Tag/Length of Sequence, the 0x09 are the following header bytes + + "0605" + "2B0E03021A" // OID of SHA1 + + "0500" // TLV coding of ZERO + + "0414" + getHex(hash); // 0x14 are 20 hash bytes + break; + case HashAlgorithmTags.RIPEMD160: + if (hash.length != 20) { + throw new RuntimeException("Bad hash length (" + hash.length + ", expected 20!"); + } + dsi = "303021300906052B2403020105000414" + getHex(hash); + break; + case HashAlgorithmTags.SHA224: + if (hash.length != 28) { + throw new RuntimeException("Bad hash length (" + hash.length + ", expected 28!"); + } + dsi = "34302D300D06096086480165030402040500041C" + getHex(hash); + break; + case HashAlgorithmTags.SHA256: + if (hash.length != 32) { + throw new RuntimeException("Bad hash length (" + hash.length + ", expected 32!"); + } + dsi = "333031300D060960864801650304020105000420" + getHex(hash); + break; + case HashAlgorithmTags.SHA384: + if (hash.length != 48) { + throw new RuntimeException("Bad hash length (" + hash.length + ", expected 48!"); + } + dsi = "343041300D060960864801650304020205000430" + getHex(hash); + break; + case HashAlgorithmTags.SHA512: + if (hash.length != 64) { + throw new RuntimeException("Bad hash length (" + hash.length + ", expected 64!"); + } + dsi = "343051300D060960864801650304020305000440" + getHex(hash); + break; + default: + throw new RuntimeException("Not supported hash algo!"); + } + + // Command APDU for PERFORM SECURITY OPERATION: COMPUTE DIGITAL SIGNATURE (page 37) + String apdu = + "002A9E9A" // CLA, INS, P1, P2 + + dsi // digital signature input + + "00"; // Le + + String response = card(apdu); + + // split up response into signature and status + String status = response.substring(response.length()-4); + String signature = response.substring(0, response.length() - 4); + + // while we are getting 0x61 status codes, retrieve more data + while (status.substring(0, 2).equals("61")) { + Log.d(TAG, "requesting more data, status " + status); + // Send GET RESPONSE command + response = card("00C00000" + status.substring(2)); + status = response.substring(response.length()-4); + signature += response.substring(0, response.length()-4); + } + + Log.d(TAG, "final response:" + status); + + if ( ! status.equals("9000")) { + toast("Bad NFC response code: " + status); + return null; + } + + // Make sure the signature we received is actually the expected number of bytes long! + if (signature.length() != 512) { + toast("Bad signature length! Expected 256 bytes, got " + signature.length() / 2); + return null; + } + + return Hex.decode(signature); + } + + /** + * Calls to calculate the signature and returns the MPI value + * + * @param encryptedSessionKey the encoded session key + * @return the decoded session key + * @throws java.io.IOException + */ + public byte[] nfcDecryptSessionKey(byte[] encryptedSessionKey) throws IOException { + String firstApdu = "102a8086fe"; + String secondApdu = "002a808603"; + String le = "00"; + + byte[] one = new byte[254]; + // leave out first byte: + System.arraycopy(encryptedSessionKey, 1, one, 0, one.length); + + byte[] two = new byte[encryptedSessionKey.length - 1 - one.length]; + for (int i = 0; i < two.length; i++) { + two[i] = encryptedSessionKey[i + one.length + 1]; + } + + String first = card(firstApdu + getHex(one)); + String second = card(secondApdu + getHex(two) + le); + + String decryptedSessionKey = getDataField(second); + + Log.d(TAG, "decryptedSessionKey: " + decryptedSessionKey); + + return Hex.decode(decryptedSessionKey); + } + + /** + * Prints a message to the screen + * + * @param text the text which should be contained within the toast + */ + private void toast(String text) { + Toast.makeText(this, text, Toast.LENGTH_LONG).show(); + } + + /** + * Receive new NFC Intents to this activity only by enabling foreground dispatch. + * This can only be done in onResume! + */ + public void enableNfcForegroundDispatch() { + mNfcAdapter = NfcAdapter.getDefaultAdapter(this); + Intent nfcI = new Intent(this, NfcActivity.class) + .addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP); + PendingIntent nfcPendingIntent = PendingIntent.getActivity(this, 0, nfcI, PendingIntent.FLAG_CANCEL_CURRENT); + IntentFilter[] writeTagFilters = new IntentFilter[]{ + new IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED) + }; + + // https://code.google.com/p/android/issues/detail?id=62918 + // maybe mNfcAdapter.enableReaderMode(); ? + try { + mNfcAdapter.enableForegroundDispatch(this, nfcPendingIntent, writeTagFilters, null); + } catch (IllegalStateException e) { + Log.i(TAG, "NfcForegroundDispatch Error!", e); + } + Log.d(TAG, "NfcForegroundDispatch has been enabled!"); + } + + /** + * Disable foreground dispatch in onPause! + */ + public void disableNfcForegroundDispatch() { + mNfcAdapter.disableForegroundDispatch(this); + Log.d(TAG, "NfcForegroundDispatch has been disabled!"); + } + + /** + * Gets the name of the user out of the raw card output regarding card holder related data + * + * @param name the raw card holder related data from the card + * @return the name given in this data + */ + public String getName(String name) { + String slength; + int ilength; + name = name.substring(6); + slength = name.substring(0, 2); + ilength = Integer.parseInt(slength, 16) * 2; + name = name.substring(2, ilength + 2); + name = (new String(Hex.decode(name))).replace('<', ' '); + return (name); + } + + /** + * Reduces the raw data from the card by four characters + * + * @param output the raw data from the card + * @return the data field of that data + */ + private String getDataField(String output) { + return output.substring(0, output.length() - 4); + } + + /** + * Communicates with the OpenPgpCard via the APDU + * + * @param hex the hexadecimal APDU + * @return The answer from the card + * @throws java.io.IOException throws an exception if something goes wrong + */ + public String card(String hex) throws IOException { + return getHex(mIsoDep.transceive(Hex.decode(hex))); + } + + /** + * Converts a byte array into an hex string + * + * @param raw the byte array representation + * @return the hexadecimal string representation + */ + public static String getHex(byte[] raw) { + return new String(Hex.encode(raw)); + } +} diff --git a/OpenKeychain/src/main/res/drawable/yubikey_neo.png b/OpenKeychain/src/main/res/drawable/yubikey_neo.png new file mode 100644 index 0000000000000000000000000000000000000000..d4156eb5e6cc66231945889204c477a17ca4507c GIT binary patch literal 132128 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 JDwi<+{(tu1kW~Nx literal 0 HcmV?d00001 diff --git a/OpenKeychain/src/main/res/layout/nfc_activity.xml b/OpenKeychain/src/main/res/layout/nfc_activity.xml new file mode 100644 index 000000000..e78fa7c87 --- /dev/null +++ b/OpenKeychain/src/main/res/layout/nfc_activity.xml @@ -0,0 +1,30 @@ + + + + + + + diff --git a/extern/openpgp-card-nfc-lib b/extern/openpgp-card-nfc-lib index 6bc1f1240..dc2701e41 160000 --- a/extern/openpgp-card-nfc-lib +++ b/extern/openpgp-card-nfc-lib @@ -1 +1 @@ -Subproject commit 6bc1f1240f9700e5bd378f02540360ef20dea629 +Subproject commit dc2701e415aa01c811b093f152409a231475e506 diff --git a/settings.gradle b/settings.gradle index 038e9da23..b51bdc94d 100644 --- a/settings.gradle +++ b/settings.gradle @@ -13,5 +13,4 @@ include ':extern:SuperToasts:supertoasts' include ':extern:minidns' include ':extern:KeybaseLib:Lib' include ':extern:TokenAutoComplete:library' -include ':extern:openpgp-card-nfc-lib:library' include ':extern:safeslinger-exchange'