use byte[] for expected fingerprint

This commit is contained in:
Vincent Breitmoser
2017-05-20 21:21:45 +02:00
parent 0699d3cdb5
commit add9bf8973
15 changed files with 63 additions and 55 deletions

View File

@@ -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

View File

@@ -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<ParcelableKeyRing> selectedEntries = new ArrayList<>();
selectedEntries.add(keyEntry);

View File

@@ -502,8 +502,7 @@ public class KeyListFragment extends RecyclerFragment<KeySectionedListAdapter>
ArrayList<ParcelableKeyRing> 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);
}

View File

@@ -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<ParcelableKeyRing> entries = new ArrayList<>();
entries.add(keyEntry);
mKeyList = entries;

View File

@@ -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();
}