token-import: use entire fingerprint for promote operation
This commit is contained in:
@@ -979,22 +979,21 @@ public class SecurityTokenHelper {
|
||||
}
|
||||
|
||||
public SecurityTokenInfo getTokenInfo() throws IOException {
|
||||
byte[] fingerprints = getFingerprints();
|
||||
byte[] rawFingerprints = getFingerprints();
|
||||
|
||||
byte[] fpSign = new byte[20];
|
||||
byte[] fpDecrypt = new byte[20];
|
||||
byte[] fpAuth = new byte[20];
|
||||
ByteBuffer buf = ByteBuffer.wrap(fingerprints);
|
||||
buf.get(fpSign);
|
||||
buf.get(fpDecrypt);
|
||||
buf.get(fpAuth);
|
||||
byte[][] fingerprints = new byte[rawFingerprints.length / 20][];
|
||||
ByteBuffer buf = ByteBuffer.wrap(rawFingerprints);
|
||||
for (int i = 0; i < rawFingerprints.length / 20; i++) {
|
||||
fingerprints[i] = new byte[20];
|
||||
buf.get(fingerprints[i]);
|
||||
}
|
||||
|
||||
byte[] aid = getAid();
|
||||
String userId = getUserId();
|
||||
String url = getUrl();
|
||||
byte[] pwInfo = getPwStatusBytes();
|
||||
|
||||
return SecurityTokenInfo.create(fpSign, fpDecrypt, fpAuth, aid, userId, url, pwInfo[4], pwInfo[6]);
|
||||
return SecurityTokenInfo.create(fingerprints, aid, userId, url, pwInfo[4], pwInfo[6]);
|
||||
}
|
||||
|
||||
private static class LazyHolder {
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
package org.sufficientlysecure.keychain.securitytoken;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.Nullable;
|
||||
@@ -16,12 +18,7 @@ import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils;
|
||||
public abstract class SecurityTokenInfo implements Parcelable {
|
||||
private static final byte[] EMPTY_ARRAY = new byte[20];
|
||||
|
||||
@Nullable
|
||||
public abstract byte[] getFingerprintSign();
|
||||
@Nullable
|
||||
public abstract byte[] getFingerprintDecrypt();
|
||||
@Nullable
|
||||
public abstract byte[] getFingerprintAuth();
|
||||
public abstract List<byte[]> getFingerprints();
|
||||
@Nullable
|
||||
public abstract byte[] getAid();
|
||||
@Nullable
|
||||
@@ -31,23 +28,19 @@ public abstract class SecurityTokenInfo implements Parcelable {
|
||||
public abstract int getVerifyRetries();
|
||||
public abstract int getVerifyAdminRetries();
|
||||
|
||||
public byte[][] getAllFingerprints() {
|
||||
byte[][] fingerprints = new byte[3][];
|
||||
fingerprints[0] = getFingerprintSign();
|
||||
fingerprints[1] = getFingerprintDecrypt();
|
||||
fingerprints[2] = getFingerprintAuth();
|
||||
return fingerprints;
|
||||
}
|
||||
|
||||
public boolean isEmpty() {
|
||||
return Arrays.equals(EMPTY_ARRAY, getFingerprintSign()) && Arrays.equals(EMPTY_ARRAY, getFingerprintDecrypt()) &&
|
||||
Arrays.equals(EMPTY_ARRAY, getFingerprintAuth());
|
||||
return getFingerprints().isEmpty();
|
||||
}
|
||||
|
||||
public static SecurityTokenInfo create(byte[] fpSign, byte[] fpDecrypt, byte[] fpAuth,
|
||||
byte[] aid, String userId, String url, int verifyRetries, int verifyAdminRetries) {
|
||||
return new AutoValue_SecurityTokenInfo(fpSign, fpDecrypt, fpAuth, aid,
|
||||
userId, url, verifyRetries, verifyAdminRetries);
|
||||
public static SecurityTokenInfo create(byte[][] fingerprints, byte[] aid, String userId, String url,
|
||||
int verifyRetries, int verifyAdminRetries) {
|
||||
ArrayList<byte[]> fingerprintList = new ArrayList<>(fingerprints.length);
|
||||
for (byte[] fingerprint : fingerprints) {
|
||||
if (!Arrays.equals(EMPTY_ARRAY, fingerprint)) {
|
||||
fingerprintList.add(fingerprint);
|
||||
}
|
||||
}
|
||||
return new AutoValue_SecurityTokenInfo(fingerprintList, aid, userId, url, verifyRetries, verifyAdminRetries);
|
||||
}
|
||||
|
||||
public static SecurityTokenInfo newInstanceDebugKeyserver() {
|
||||
@@ -55,8 +48,8 @@ public abstract class SecurityTokenInfo implements Parcelable {
|
||||
throw new UnsupportedOperationException("This operation is only available in debug builds!");
|
||||
}
|
||||
return SecurityTokenInfo.create(
|
||||
KeyFormattingUtils.convertFingerprintHexFingerprint("1efdb4845ca242ca6977fddb1f788094fd3b430a"),
|
||||
new byte[20], new byte[20], Hex.decode("010203040506"), "yubinu2@mugenguild.com", null, 3, 3);
|
||||
new byte[][] { KeyFormattingUtils.convertFingerprintHexFingerprint("1efdb4845ca242ca6977fddb1f788094fd3b430a") },
|
||||
Hex.decode("010203040506"), "yubinu2@mugenguild.com", null, 3, 3);
|
||||
}
|
||||
|
||||
public static SecurityTokenInfo newInstanceDebugUri() {
|
||||
@@ -64,9 +57,8 @@ public abstract class SecurityTokenInfo implements Parcelable {
|
||||
throw new UnsupportedOperationException("This operation is only available in debug builds!");
|
||||
}
|
||||
return SecurityTokenInfo.create(
|
||||
KeyFormattingUtils.convertFingerprintHexFingerprint("4700BA1AC417ABEF3CC7765AD686905837779C3E"),
|
||||
new byte[20], new byte[20], Hex.decode("010203040506"),
|
||||
"yubinu2@mugenguild.com", "http://valodim.stratum0.net/mryubinu2.asc", 3, 3);
|
||||
new byte[][] { KeyFormattingUtils.convertFingerprintHexFingerprint("4700BA1AC417ABEF3CC7765AD686905837779C3E") },
|
||||
Hex.decode("010203040506"), "yubinu2@mugenguild.com", "http://valodim.stratum0.net/mryubinu2.asc", 3, 3);
|
||||
}
|
||||
|
||||
public static SecurityTokenInfo newInstanceDebugLocked() {
|
||||
@@ -74,9 +66,8 @@ public abstract class SecurityTokenInfo implements Parcelable {
|
||||
throw new UnsupportedOperationException("This operation is only available in debug builds!");
|
||||
}
|
||||
return SecurityTokenInfo.create(
|
||||
KeyFormattingUtils.convertFingerprintHexFingerprint("4700BA1AC417ABEF3CC7765AD686905837779C3E"),
|
||||
new byte[20], new byte[20], Hex.decode("010203040506"),
|
||||
"yubinu2@mugenguild.com", "http://valodim.stratum0.net/mryubinu2.asc", 0, 3);
|
||||
new byte[][] { KeyFormattingUtils.convertFingerprintHexFingerprint("4700BA1AC417ABEF3CC7765AD686905837779C3E") },
|
||||
Hex.decode("010203040506"), "yubinu2@mugenguild.com", "http://valodim.stratum0.net/mryubinu2.asc", 0, 3);
|
||||
}
|
||||
|
||||
public static SecurityTokenInfo newInstanceDebugLockedHard() {
|
||||
@@ -84,9 +75,8 @@ public abstract class SecurityTokenInfo implements Parcelable {
|
||||
throw new UnsupportedOperationException("This operation is only available in debug builds!");
|
||||
}
|
||||
return SecurityTokenInfo.create(
|
||||
KeyFormattingUtils.convertFingerprintHexFingerprint("4700BA1AC417ABEF3CC7765AD686905837779C3E"),
|
||||
new byte[20], new byte[20], Hex.decode("010203040506"),
|
||||
"yubinu2@mugenguild.com", "http://valodim.stratum0.net/mryubinu2.asc", 0, 0);
|
||||
new byte[][] { KeyFormattingUtils.convertFingerprintHexFingerprint("4700BA1AC417ABEF3CC7765AD686905837779C3E") },
|
||||
Hex.decode("010203040506"), "yubinu2@mugenguild.com", "http://valodim.stratum0.net/mryubinu2.asc", 0, 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user