mirror of
https://github.com/moparisthebest/open-keychain
synced 2024-11-30 12:32:17 -05:00
UncachedKeyRing.merge: copy over new secret subkeys into secret keyrings
This commit is contained in:
parent
7fe1b00080
commit
7296ac4849
@ -688,7 +688,14 @@ public class UncachedKeyRing {
|
|||||||
final PGPPublicKey resultKey = result.getPublicKey(key.getKeyID());
|
final PGPPublicKey resultKey = result.getPublicKey(key.getKeyID());
|
||||||
if (resultKey == null) {
|
if (resultKey == null) {
|
||||||
log.add(LogLevel.DEBUG, LogType.MSG_MG_NEW_SUBKEY, indent);
|
log.add(LogLevel.DEBUG, LogType.MSG_MG_NEW_SUBKEY, indent);
|
||||||
|
// special case: if both rings are secret, copy over the secret key
|
||||||
|
if (isSecret() && other.isSecret()) {
|
||||||
|
PGPSecretKey sKey = ((PGPSecretKeyRing) candidate).getSecretKey(key.getKeyID());
|
||||||
|
result = PGPSecretKeyRing.insertSecretKey((PGPSecretKeyRing) result, sKey);
|
||||||
|
} else {
|
||||||
|
// otherwise, just insert the public key
|
||||||
result = replacePublicKey(result, key);
|
result = replacePublicKey(result, key);
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -696,17 +703,7 @@ public class UncachedKeyRing {
|
|||||||
PGPPublicKey modified = resultKey;
|
PGPPublicKey modified = resultKey;
|
||||||
|
|
||||||
// Iterate certifications
|
// Iterate certifications
|
||||||
for (PGPSignature cert : new IterableIterator<PGPSignature>(key.getSignatures())) {
|
for (PGPSignature cert : new IterableIterator<PGPSignature>(key.getKeySignatures())) {
|
||||||
int type = cert.getSignatureType();
|
|
||||||
// Disregard certifications on user ids, we will deal with those later
|
|
||||||
if (type == PGPSignature.NO_CERTIFICATION
|
|
||||||
|| type == PGPSignature.DEFAULT_CERTIFICATION
|
|
||||||
|| type == PGPSignature.CASUAL_CERTIFICATION
|
|
||||||
|| type == PGPSignature.POSITIVE_CERTIFICATION
|
|
||||||
|| type == PGPSignature.CERTIFICATION_REVOCATION) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Don't merge foreign stuff into secret keys
|
// Don't merge foreign stuff into secret keys
|
||||||
if (cert.getKeyID() != masterKeyId && isSecret()) {
|
if (cert.getKeyID() != masterKeyId && isSecret()) {
|
||||||
continue;
|
continue;
|
||||||
|
Loading…
Reference in New Issue
Block a user