fix bugs introduced by using byte[] instead of String for fingerprints
This commit is contained in:
parent
4a4e325bca
commit
21bc6f12f0
|
@ -23,6 +23,7 @@ import java.io.IOException;
|
||||||
import java.lang.annotation.Retention;
|
import java.lang.annotation.Retention;
|
||||||
import java.lang.annotation.RetentionPolicy;
|
import java.lang.annotation.RetentionPolicy;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
import android.animation.ArgbEvaluator;
|
import android.animation.ArgbEvaluator;
|
||||||
import android.animation.ObjectAnimator;
|
import android.animation.ObjectAnimator;
|
||||||
|
@ -161,7 +162,7 @@ public class ViewKeyActivity extends BaseSecurityTokenActivity implements
|
||||||
private ImageView mQrCode;
|
private ImageView mQrCode;
|
||||||
private CardView mQrCodeLayout;
|
private CardView mQrCodeLayout;
|
||||||
|
|
||||||
private String mQrCodeLoaded;
|
private byte[] mQrCodeLoaded;
|
||||||
|
|
||||||
private static final int LOADER_ID_UNIFIED = 0;
|
private static final int LOADER_ID_UNIFIED = 0;
|
||||||
|
|
||||||
|
@ -181,7 +182,6 @@ public class ViewKeyActivity extends BaseSecurityTokenActivity implements
|
||||||
|
|
||||||
private long mMasterKeyId;
|
private long mMasterKeyId;
|
||||||
private byte[] mFingerprint;
|
private byte[] mFingerprint;
|
||||||
private String mFingerprintString;
|
|
||||||
|
|
||||||
private byte[] mSecurityTokenFingerprints;
|
private byte[] mSecurityTokenFingerprints;
|
||||||
private String mSecurityTokenUserId;
|
private String mSecurityTokenUserId;
|
||||||
|
@ -603,12 +603,12 @@ public class ViewKeyActivity extends BaseSecurityTokenActivity implements
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
String fp = data.getStringExtra(ImportKeysProxyActivity.EXTRA_FINGERPRINT);
|
byte[] fingerprint = data.getByteArrayExtra(ImportKeysProxyActivity.EXTRA_FINGERPRINT);
|
||||||
if (fp == null) {
|
if (fingerprint == null) {
|
||||||
Notify.create(this, R.string.error_scan_fp, Notify.LENGTH_LONG, Style.ERROR).show();
|
Notify.create(this, R.string.error_scan_fp, Notify.LENGTH_LONG, Style.ERROR).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (mFingerprintString.equalsIgnoreCase(fp)) {
|
if (Arrays.equals(mFingerprint, fingerprint)) {
|
||||||
certifyImmediate();
|
certifyImmediate();
|
||||||
} else {
|
} else {
|
||||||
Notify.create(this, R.string.error_scan_match, Notify.LENGTH_LONG, Style.ERROR).show();
|
Notify.create(this, R.string.error_scan_match, Notify.LENGTH_LONG, Style.ERROR).show();
|
||||||
|
@ -662,8 +662,9 @@ public class ViewKeyActivity extends BaseSecurityTokenActivity implements
|
||||||
byte[] candidateFp = ring.getFingerprint();
|
byte[] candidateFp = ring.getFingerprint();
|
||||||
|
|
||||||
// if the master key of that key matches this one, just show the token dialog
|
// if the master key of that key matches this one, just show the token dialog
|
||||||
if (KeyFormattingUtils.convertFingerprintToHex(candidateFp).equals(mFingerprintString)) {
|
if (Arrays.equals(candidateFp, mFingerprint)) {
|
||||||
showSecurityTokenFragment(mSecurityTokenFingerprints, mSecurityTokenUserId, mSecurityTokenAid, mSecurityTokenVersion);
|
showSecurityTokenFragment(
|
||||||
|
mSecurityTokenFingerprints, mSecurityTokenUserId, mSecurityTokenAid, mSecurityTokenVersion);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -795,13 +796,14 @@ public class ViewKeyActivity extends BaseSecurityTokenActivity implements
|
||||||
/**
|
/**
|
||||||
* Load QR Code asynchronously and with a fade in animation
|
* Load QR Code asynchronously and with a fade in animation
|
||||||
*/
|
*/
|
||||||
private void loadQrCode(final String fingerprint) {
|
private void loadQrCode(final byte[] fingerprint) {
|
||||||
AsyncTask<Void, Void, Bitmap> loadTask =
|
AsyncTask<Void, Void, Bitmap> loadTask =
|
||||||
new AsyncTask<Void, Void, Bitmap>() {
|
new AsyncTask<Void, Void, Bitmap>() {
|
||||||
protected Bitmap doInBackground(Void... unused) {
|
protected Bitmap doInBackground(Void... unused) {
|
||||||
|
String fingerprintStr = KeyFormattingUtils.convertFingerprintToHex(fingerprint);
|
||||||
Uri uri = new Uri.Builder()
|
Uri uri = new Uri.Builder()
|
||||||
.scheme(Constants.FINGERPRINT_SCHEME)
|
.scheme(Constants.FINGERPRINT_SCHEME)
|
||||||
.opaquePart(fingerprint)
|
.opaquePart(fingerprintStr)
|
||||||
.build();
|
.build();
|
||||||
// render with minimal size
|
// render with minimal size
|
||||||
return QrCodeUtils.getQRCodeBitmap(uri, 0);
|
return QrCodeUtils.getQRCodeBitmap(uri, 0);
|
||||||
|
@ -915,7 +917,6 @@ public class ViewKeyActivity extends BaseSecurityTokenActivity implements
|
||||||
|
|
||||||
mMasterKeyId = data.getLong(INDEX_MASTER_KEY_ID);
|
mMasterKeyId = data.getLong(INDEX_MASTER_KEY_ID);
|
||||||
mFingerprint = data.getBlob(INDEX_FINGERPRINT);
|
mFingerprint = data.getBlob(INDEX_FINGERPRINT);
|
||||||
mFingerprintString = KeyFormattingUtils.convertFingerprintToHex(mFingerprint);
|
|
||||||
mIsSecret = data.getInt(INDEX_HAS_ANY_SECRET) != 0;
|
mIsSecret = data.getInt(INDEX_HAS_ANY_SECRET) != 0;
|
||||||
mHasEncrypt = data.getInt(INDEX_HAS_ENCRYPT) != 0;
|
mHasEncrypt = data.getInt(INDEX_HAS_ENCRYPT) != 0;
|
||||||
mIsRevoked = data.getInt(INDEX_IS_REVOKED) > 0;
|
mIsRevoked = data.getInt(INDEX_IS_REVOKED) > 0;
|
||||||
|
@ -1017,8 +1018,8 @@ public class ViewKeyActivity extends BaseSecurityTokenActivity implements
|
||||||
// noinspection deprecation, fix requires api level 23
|
// noinspection deprecation, fix requires api level 23
|
||||||
color = getResources().getColor(R.color.key_flag_green);
|
color = getResources().getColor(R.color.key_flag_green);
|
||||||
// reload qr code only if the fingerprint changed
|
// reload qr code only if the fingerprint changed
|
||||||
if (!mFingerprintString.equals(mQrCodeLoaded)) {
|
if (!Arrays.equals(mFingerprint, mQrCodeLoaded)) {
|
||||||
loadQrCode(mFingerprintString);
|
loadQrCode(mFingerprint);
|
||||||
}
|
}
|
||||||
photoTask.execute(mMasterKeyId);
|
photoTask.execute(mMasterKeyId);
|
||||||
mQrCodeLayout.setVisibility(View.VISIBLE);
|
mQrCodeLayout.setVisibility(View.VISIBLE);
|
||||||
|
|
Loading…
Reference in a new issue