make sure ID info is saved

This commit is contained in:
Ashley Hughes 2014-03-24 16:47:02 +00:00
parent 974514e470
commit 300b90bcac

View File

@ -368,7 +368,7 @@ public class PgpKeyOperation {
} }
/* /*
IDs - IDs - NB This might not need to happen later, if we change the way the primary ID is chosen
remove deleted ids remove deleted ids
if the primary ID changed we need to: if the primary ID changed we need to:
remove all of the IDs from the keyring, saving their certifications remove all of the IDs from the keyring, saving their certifications
@ -382,8 +382,6 @@ public class PgpKeyOperation {
do we need to remove and add in? do we need to remove and add in?
*/ */
//todo: flag changes of master key if IDs changed maybe?
for (PGPSecretKey dKey : saveParcel.deletedKeys) { for (PGPSecretKey dKey : saveParcel.deletedKeys) {
mKR = PGPSecretKeyRing.removeSecretKey(mKR, dKey); mKR = PGPSecretKeyRing.removeSecretKey(mKR, dKey);
} }
@ -406,7 +404,9 @@ public class PgpKeyOperation {
} }
int user_id_index = 0; int user_id_index = 0;
boolean anyIDChanged = false;
if (saveParcel.primaryIDChanged) { if (saveParcel.primaryIDChanged) {
anyIDChanged = true;
ArrayList<Pair<String, PGPSignature>> sigList = new ArrayList<Pair<String, PGPSignature>>(); ArrayList<Pair<String, PGPSignature>> sigList = new ArrayList<Pair<String, PGPSignature>>();
for (String userId : saveParcel.userIDs) { for (String userId : saveParcel.userIDs) {
String orig_id = saveParcel.originalIDs.get(user_id_index); String orig_id = saveParcel.originalIDs.get(user_id_index);
@ -437,6 +437,7 @@ public class PgpKeyOperation {
for (String userId : saveParcel.userIDs) { for (String userId : saveParcel.userIDs) {
String orig_id = saveParcel.originalIDs.get(user_id_index); String orig_id = saveParcel.originalIDs.get(user_id_index);
if (!orig_id.equals(userId)) { if (!orig_id.equals(userId)) {
anyIDChanged = true;
PGPContentSignerBuilder signerBuilder = new JcaPGPContentSignerBuilder( PGPContentSignerBuilder signerBuilder = new JcaPGPContentSignerBuilder(
masterPublicKey.getAlgorithm(), HashAlgorithmTags.SHA1) masterPublicKey.getAlgorithm(), HashAlgorithmTags.SHA1)
.setProvider(Constants.BOUNCY_CASTLE_PROVIDER_NAME); .setProvider(Constants.BOUNCY_CASTLE_PROVIDER_NAME);
@ -452,6 +453,12 @@ public class PgpKeyOperation {
} }
} }
//update the keyring with the new ID information
if (anyIDChanged) {
pKR = PGPPublicKeyRing.insertPublicKey(pKR, masterPublicKey);
mKR = PGPSecretKeyRing.replacePublicKeys(mKR, pKR);
}
PGPKeyPair masterKeyPair = new PGPKeyPair(masterPublicKey, masterPrivateKey); PGPKeyPair masterKeyPair = new PGPKeyPair(masterPublicKey, masterPrivateKey);
PGPSignatureSubpacketGenerator hashedPacketsGen = new PGPSignatureSubpacketGenerator(); PGPSignatureSubpacketGenerator hashedPacketsGen = new PGPSignatureSubpacketGenerator();