diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java index 60fde57fc..1d02dbed8 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ImportKeysListEntry.java @@ -30,6 +30,7 @@ import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils; import java.io.IOException; import java.io.Serializable; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.Date; @@ -56,7 +57,7 @@ public class ImportKeysListEntry implements Serializable, Parcelable { private boolean mUpdated; private Date mDate; - private String mFingerprintHex; + private byte[] mFingerprint; private Integer mBitStrength; private String mCurveOid; private String mAlgorithm; @@ -78,10 +79,10 @@ public class ImportKeysListEntry implements Serializable, Parcelable { } public boolean hasSameKeyAs(ImportKeysListEntry other) { - if (mFingerprintHex == null || other == null) { + if (mFingerprint == null || other == null || other.mFingerprint == null) { return false; } - return mFingerprintHex.equals(other.mFingerprintHex); + return Arrays.equals(mFingerprint, other.mFingerprint); } public String getKeyIdHex() { @@ -140,16 +141,12 @@ public class ImportKeysListEntry implements Serializable, Parcelable { mDate = date; } - public String getFingerprintHex() { - return mFingerprintHex; - } - - public void setFingerprintHex(String fingerprintHex) { - mFingerprintHex = fingerprintHex; - } - public void setFingerprint(byte[] fingerprint) { - mFingerprintHex = KeyFormattingUtils.convertFingerprintToHex(fingerprint); + mFingerprint = fingerprint; + } + + public byte[] getFingerprint() { + return mFingerprint; } public Integer getBitStrength() { @@ -371,7 +368,7 @@ public class ImportKeysListEntry implements Serializable, Parcelable { if (mDate != null) { dest.writeLong(mDate.getTime()); } - dest.writeString(mFingerprintHex); + dest.writeByteArray(mFingerprint); dest.writeString(mKeyIdHex); dest.writeInt(mBitStrength == null ? 0 : 1); if (mBitStrength != null) { @@ -397,7 +394,7 @@ public class ImportKeysListEntry implements Serializable, Parcelable { vr.mExpired = source.readByte() == 1; vr.mUpdated = source.readByte() == 1; vr.mDate = source.readInt() != 0 ? new Date(source.readLong()) : null; - vr.mFingerprintHex = source.readString(); + vr.mFingerprint = source.createByteArray(); vr.mKeyIdHex = source.readString(); vr.mBitStrength = source.readInt() != 0 ? source.readInt() : null; vr.mAlgorithm = source.readString(); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/KeybaseKeyserver.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/KeybaseKeyserver.java index 4173e3ff4..9816694ba 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/KeybaseKeyserver.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/KeybaseKeyserver.java @@ -76,7 +76,7 @@ public class KeybaseKeyserver extends Keyserver { String username = match.getUsername(); String fullName = match.getFullName(); String fingerprint = match.getFingerprint(); - entry.setFingerprintHex(fingerprint); + entry.setFingerprint(KeyFormattingUtils.convertFingerprintHexFingerprint(fingerprint)); entry.setKeyIdHex("0x" + match.getKeyID()); // so we can query for the keybase id directly, and to identify the location from which the diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ParcelableHkpKeyserver.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ParcelableHkpKeyserver.java index 76ddcdd72..8d2aa054e 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ParcelableHkpKeyserver.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ParcelableHkpKeyserver.java @@ -301,7 +301,8 @@ public class ParcelableHkpKeyserver extends Keyserver implements Parcelable { // see https://bitbucket.org/skskeyserver/sks-keyserver/pull-request/12/fixes-for-machine-readable-indexes/diff String fingerprintOrKeyId = matcher.group(1).toLowerCase(Locale.ENGLISH); if (fingerprintOrKeyId.length() == 40) { - entry.setFingerprintHex(fingerprintOrKeyId); + byte[] fingerprint = KeyFormattingUtils.convertFingerprintHexFingerprint(fingerprintOrKeyId); + entry.setFingerprint(fingerprint); entry.setKeyIdHex("0x" + fingerprintOrKeyId.substring(fingerprintOrKeyId.length() - 16, fingerprintOrKeyId.length())); } else if (fingerprintOrKeyId.length() == 16) { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ParcelableKeyRing.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ParcelableKeyRing.java index 41a065314..7b3f6e501 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ParcelableKeyRing.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/ParcelableKeyRing.java @@ -30,7 +30,7 @@ public class ParcelableKeyRing implements Parcelable { public final byte[] mBytes; // dual role! - public final String mExpectedFingerprint; + public final byte[] mExpectedFingerprint; public final String mKeyIdHex; public final String mKeybaseName; public final String mFbUsername; @@ -39,13 +39,13 @@ public class ParcelableKeyRing implements Parcelable { this(bytes, null, null, null, null); } - public ParcelableKeyRing(String expectedFingerprint, String keyIdHex, String keybaseName, - String fbUsername) { + public ParcelableKeyRing(byte[] expectedFingerprint, String keyIdHex, String keybaseName, + String fbUsername) { this(null, expectedFingerprint, keyIdHex, keybaseName, fbUsername); } - public ParcelableKeyRing(byte[] bytes, String expectedFingerprint, String keyIdHex, + public ParcelableKeyRing(byte[] bytes, byte[] expectedFingerprint, String keyIdHex, String keybaseName, String fbUsername) { this.mBytes = bytes; @@ -58,7 +58,7 @@ public class ParcelableKeyRing implements Parcelable { private ParcelableKeyRing(Parcel source) { mBytes = source.createByteArray(); - mExpectedFingerprint = source.readString(); + mExpectedFingerprint = source.createByteArray(); mKeyIdHex = source.readString(); mKeybaseName = source.readString(); mFbUsername = source.readString(); @@ -67,7 +67,7 @@ public class ParcelableKeyRing implements Parcelable { public void writeToParcel(Parcel dest, int flags) { dest.writeByteArray(mBytes); - dest.writeString(mExpectedFingerprint); + dest.writeByteArray(mExpectedFingerprint); dest.writeString(mKeyIdHex); dest.writeString(mKeybaseName); dest.writeString(mFbUsername); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/processing/ImportKeysListCloudLoader.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/processing/ImportKeysListCloudLoader.java index 684a72bf5..c1b287923 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/processing/ImportKeysListCloudLoader.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/processing/ImportKeysListCloudLoader.java @@ -30,6 +30,7 @@ import org.sufficientlysecure.keychain.operations.results.GetKeyResult; import org.sufficientlysecure.keychain.operations.results.OperationResult; import org.sufficientlysecure.keychain.service.input.CryptoInputParcel; import org.sufficientlysecure.keychain.service.input.RequiredInputParcel; +import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils; import org.sufficientlysecure.keychain.util.Log; import org.sufficientlysecure.keychain.util.ParcelableProxy; import org.sufficientlysecure.keychain.util.Preferences; @@ -83,7 +84,7 @@ public class ImportKeysListCloudLoader // Now we have all the data needed to build the parcelable key ring for this key for (ImportKeysListEntry e : mEntryList) { - e.setParcelableKeyRing(new ParcelableKeyRing(e.getFingerprintHex(), e.getKeyIdHex(), + e.setParcelableKeyRing(new ParcelableKeyRing(e.getFingerprint(), e.getKeyIdHex(), e.getKeybaseName(), e.getFbUsername())); } @@ -146,16 +147,19 @@ public class ImportKeysListCloudLoader mEntryList.clear(); // add result to data if (enforceFingerprint) { - String fingerprint = mState.mServerQuery.substring(2); - Log.d(Constants.TAG, "fingerprint: " + fingerprint); + String fingerprintHex = mState.mServerQuery.substring(2); + Log.d(Constants.TAG, "fingerprint: " + fingerprintHex); // query must return only one result! if (searchResult.size() == 1) { + if (fingerprintHex.length() != 40) { + throw new IllegalArgumentException("Bad format!"); + } ImportKeysListEntry uniqueEntry = searchResult.get(0); /* * set fingerprint explicitly after query * to enforce a check when the key is imported by KeychainService */ - uniqueEntry.setFingerprintHex(fingerprint); + uniqueEntry.setFingerprint(KeyFormattingUtils.convertFingerprintHexFingerprint(fingerprintHex)); mEntryList.add(uniqueEntry); } } else { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/ImportOperation.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/ImportOperation.java index 3f466b821..d08b22a24 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/ImportOperation.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/ImportOperation.java @@ -58,6 +58,7 @@ import org.sufficientlysecure.keychain.service.ContactSyncAdapterService; import org.sufficientlysecure.keychain.service.ImportKeyringParcel; import org.sufficientlysecure.keychain.service.input.CryptoInputParcel; import org.sufficientlysecure.keychain.service.input.RequiredInputParcel; +import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils; import org.sufficientlysecure.keychain.util.IteratorWithSize; import org.sufficientlysecure.keychain.util.Log; import org.sufficientlysecure.keychain.util.ParcelableFileCache; @@ -340,9 +341,10 @@ public class ImportOperation extends BaseReadWriteOperation // Download by fingerprint, or keyId - whichever is available if (entry.mExpectedFingerprint != null) { + String fingerprintHex = KeyFormattingUtils.convertFingerprintToHex(entry.mExpectedFingerprint); log.add(LogType.MSG_IMPORT_FETCH_KEYSERVER, 2, "0x" + - entry.mExpectedFingerprint.substring(24)); - data = hkpKeyserver.get("0x" + entry.mExpectedFingerprint, proxy).getBytes(); + fingerprintHex.substring(24)); + data = hkpKeyserver.get("0x" + fingerprintHex, proxy).getBytes(); } else { log.add(LogType.MSG_IMPORT_FETCH_KEYSERVER, 2, entry.mKeyIdHex); data = hkpKeyserver.get(entry.mKeyIdHex, proxy).getBytes(); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedKeyRing.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedKeyRing.java index c5652baac..8f026561c 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedKeyRing.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedKeyRing.java @@ -18,19 +18,20 @@ package org.sufficientlysecure.keychain.pgp; -import org.bouncycastle.openpgp.PGPKeyRing; -import org.bouncycastle.openpgp.PGPPublicKey; -import org.sufficientlysecure.keychain.pgp.exception.PgpKeyNotFoundException; -import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils; -import org.sufficientlysecure.keychain.util.IterableIterator; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; import java.util.HashSet; import java.util.Set; +import org.bouncycastle.openpgp.PGPKeyRing; +import org.bouncycastle.openpgp.PGPPublicKey; +import org.sufficientlysecure.keychain.pgp.exception.PgpKeyNotFoundException; +import org.sufficientlysecure.keychain.util.IterableIterator; + /** * A generic wrapped PGPKeyRing object. @@ -168,14 +169,13 @@ public abstract class CanonicalizedKeyRing extends KeyRing { } /// Returns true iff the keyring contains a primary key or mutually bound subkey with the expected fingerprint - public boolean containsBoundSubkey(String expectedFingerprint) { + public boolean containsBoundSubkey(byte[] expectedFingerprint) { for (CanonicalizedPublicKey key : publicKeyIterator()) { boolean isMasterOrMutuallyBound = key.isMasterKey() || key.canSign(); if (!isMasterOrMutuallyBound) { continue; } - if (KeyFormattingUtils.convertFingerprintToHex( - key.getFingerprint()).equalsIgnoreCase(expectedFingerprint)) { + if (Arrays.equals(key.getFingerprint(), expectedFingerprint)) { return true; } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeyWritableRepository.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeyWritableRepository.java index 64ffe652a..43640d36b 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeyWritableRepository.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeyWritableRepository.java @@ -747,7 +747,7 @@ public class KeyWritableRepository extends KeyRepository { * If you want to merge keys in-memory only and not save in database set skipSave=true. */ public SaveKeyringResult savePublicKeyRing(UncachedKeyRing publicRing, - String expectedFingerprint, + byte[] expectedFingerprint, ArrayList canKeyRings, boolean skipSave) { @@ -869,7 +869,7 @@ public class KeyWritableRepository extends KeyRepository { } } - public SaveKeyringResult savePublicKeyRing(UncachedKeyRing publicRing, String expectedFingerprint) { + public SaveKeyringResult savePublicKeyRing(UncachedKeyRing publicRing, byte[] expectedFingerprint) { return savePublicKeyRing(publicRing, expectedFingerprint, null, false); } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeyserverSyncAdapterService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeyserverSyncAdapterService.java index 62a5f234f..b511f6293 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeyserverSyncAdapterService.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/KeyserverSyncAdapterService.java @@ -462,10 +462,8 @@ public class KeyserverSyncAdapterService extends Service { continue; } Log.d(Constants.TAG, "Keyserver sync: Updating {" + keyId + "}"); - String fingerprint = KeyFormattingUtils - .convertFingerprintToHex(keyCursor.getBlob(INDEX_FINGERPRINT)); - String hexKeyId = KeyFormattingUtils - .convertKeyIdToHex(keyId); + byte[] fingerprint = keyCursor.getBlob(INDEX_FINGERPRINT); + String hexKeyId = KeyFormattingUtils.convertKeyIdToHex(keyId); // we aren't updating from keybase as of now keyList.add(new ParcelableKeyRing(fingerprint, hexKeyId, null, null)); } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateSecurityTokenImportResetFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateSecurityTokenImportResetFragment.java index 2ce1c266e..2ff36f4d9 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateSecurityTokenImportResetFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/CreateSecurityTokenImportResetFragment.java @@ -69,7 +69,7 @@ public class CreateSecurityTokenImportResetFragment private byte[] mTokenAid; private double mTokenVersion; private String mTokenUserId; - private String mTokenFingerprint; + private byte[] mTokenFingerprint; private TextView vSerNo; private TextView vUserId; private TextView mNextButton; @@ -107,7 +107,7 @@ public class CreateSecurityTokenImportResetFragment byte[] fp = new byte[20]; ByteBuffer.wrap(fp).put(mTokenFingerprints, 0, 20); - mTokenFingerprint = KeyFormattingUtils.convertFingerprintToHex(fp); + mTokenFingerprint = fp; } @@ -261,7 +261,7 @@ public class CreateSecurityTokenImportResetFragment byte[] fp = new byte[20]; ByteBuffer.wrap(fp).put(mTokenFingerprints, 0, 20); - mTokenFingerprint = KeyFormattingUtils.convertFingerprintToHex(fp); + mTokenFingerprint = fp; } @Override diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysProxyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysProxyActivity.java index 89c6eaad4..440e74124 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysProxyActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysProxyActivity.java @@ -40,6 +40,7 @@ import org.sufficientlysecure.keychain.operations.results.OperationResult.LogTyp import org.sufficientlysecure.keychain.operations.results.SingletonResult; import org.sufficientlysecure.keychain.service.ImportKeyringParcel; import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper; +import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils; import org.sufficientlysecure.keychain.util.IntentIntegratorSupportV4; import org.sufficientlysecure.keychain.util.Log; import org.sufficientlysecure.keychain.keyimport.ParcelableHkpKeyserver; @@ -152,8 +153,8 @@ public class ImportKeysProxyActivity extends FragmentActivity returnResult(intent); return; } - final String fingerprint = uri.getEncodedSchemeSpecificPart().toLowerCase(Locale.ENGLISH); - if (!fingerprint.matches("[a-fA-F0-9]{40}")) { + final String fingerprintHex = uri.getEncodedSchemeSpecificPart().toLowerCase(Locale.ENGLISH); + if (!fingerprintHex.matches("[a-fA-F0-9]{40}")) { SingletonResult result = new SingletonResult( SingletonResult.RESULT_ERROR, LogType.MSG_WRONG_QR_CODE_FP); Intent intent = new Intent(); @@ -161,6 +162,7 @@ public class ImportKeysProxyActivity extends FragmentActivity returnResult(intent); return; } + byte[] fingerprint = KeyFormattingUtils.convertFingerprintHexFingerprint(fingerprintHex); if (ACTION_SCAN_WITH_RESULT.equals(action)) { Intent result = new Intent(); @@ -168,7 +170,7 @@ public class ImportKeysProxyActivity extends FragmentActivity setResult(RESULT_OK, result); finish(); } else { - importKeys(fingerprint); + importKeysFromFingerprint(fingerprint); } } @@ -196,7 +198,7 @@ public class ImportKeysProxyActivity extends FragmentActivity startImportService(selectedEntries); } - public void importKeys(String fingerprint) { + public void importKeysFromFingerprint(byte[] fingerprint) { ParcelableKeyRing keyEntry = new ParcelableKeyRing(fingerprint, null, null, null); ArrayList selectedEntries = new ArrayList<>(); selectedEntries.add(keyEntry); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java index fcbd3b19e..4e2bf9a6f 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/KeyListFragment.java @@ -502,8 +502,7 @@ public class KeyListFragment extends RecyclerFragment ArrayList keyList = new ArrayList<>(); try { while (cursor.moveToNext()) { - byte[] blob = cursor.getBlob(0); //fingerprint column is 0 - String fingerprint = KeyFormattingUtils.convertFingerprintToHex(blob); + byte[] fingerprint = cursor.getBlob(0); //fingerprint column is 0 ParcelableKeyRing keyEntry = new ParcelableKeyRing(fingerprint, null, null, null); keyList.add(keyEntry); } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java index f1e61b219..cf77fdda1 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyActivity.java @@ -1148,9 +1148,8 @@ public class ViewKeyActivity extends BaseSecurityTokenActivity implements mRefresh.startAnimation(mRotate); byte[] blob = keyRepository.getCachedPublicKeyRing(dataUri).getFingerprint(); - String fingerprint = KeyFormattingUtils.convertFingerprintToHex(blob); - ParcelableKeyRing keyEntry = new ParcelableKeyRing(fingerprint, null, null, null); + ParcelableKeyRing keyEntry = new ParcelableKeyRing(blob, null, null, null); ArrayList entries = new ArrayList<>(); entries.add(keyEntry); mKeyList = entries; diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java index 338330bc0..85f721a90 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/util/KeyFormattingUtils.java @@ -330,6 +330,13 @@ public class KeyFormattingUtils { return hexString; } + public static byte[] convertFingerprintHexFingerprint(String fingerprintHex) { + if (fingerprintHex.length() != 40) { + throw new IllegalArgumentException("fingerprint must be 40 chars long!"); + } + return Hex.decode(fingerprintHex); + } + public static long convertKeyIdHexToKeyId(String hex) { return new BigInteger(hex.substring(2), 16).longValue(); } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/EmailKeyHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/EmailKeyHelper.java index 88bc261e8..beed1b443 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/EmailKeyHelper.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/EmailKeyHelper.java @@ -57,8 +57,7 @@ public class EmailKeyHelper { // Put them in a list and import ArrayList keys = new ArrayList<>(entries.size()); for (ImportKeysListEntry entry : entries) { - keys.add(new ParcelableKeyRing(entry.getFingerprintHex(), entry.getKeyIdHex(), null, - null)); + keys.add(new ParcelableKeyRing(entry.getFingerprint(), entry.getKeyIdHex(), null, null)); } mKeyList = keys; mKeyserver = keyserver;