aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2014-06-18 19:39:16 +0200
committerVincent Breitmoser <valodim@mugenguild.com>2014-06-18 19:39:16 +0200
commit134f8471c05724c312085ce5b8eae2aec8cb8a52 (patch)
treeb3f079c63587df5841cac99f645e0d337d91b458 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java
parentf80228a08dbb6c9cfa350f9f9f71d76ff8f313c2 (diff)
downloadopen-keychain-134f8471c05724c312085ce5b8eae2aec8cb8a52.tar.gz
open-keychain-134f8471c05724c312085ce5b8eae2aec8cb8a52.tar.bz2
open-keychain-134f8471c05724c312085ce5b8eae2aec8cb8a52.zip
consolidate: add key import routines with consolidation
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java23
1 files changed, 22 insertions, 1 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java
index c06255830..0f0d7cca3 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java
@@ -58,10 +58,18 @@ public class UncachedKeyRing {
final PGPKeyRing mRing;
final boolean mIsSecret;
+ final boolean mIsCanonicalized;
UncachedKeyRing(PGPKeyRing ring) {
mRing = ring;
mIsSecret = ring instanceof PGPSecretKeyRing;
+ mIsCanonicalized = false;
+ }
+
+ private UncachedKeyRing(PGPKeyRing ring, boolean canonicalized) {
+ mRing = ring;
+ mIsSecret = ring instanceof PGPSecretKeyRing;
+ mIsCanonicalized = canonicalized;
}
public long getMasterKeyId() {
@@ -92,6 +100,10 @@ public class UncachedKeyRing {
return mIsSecret;
}
+ public boolean isCanonicalized() {
+ return mIsCanonicalized;
+ }
+
public byte[] getEncoded() throws IOException {
return mRing.getEncoded();
}
@@ -606,7 +618,7 @@ public class UncachedKeyRing {
log.add(LogLevel.OK, LogType.MSG_KC_SUCCESS, null, indent);
}
- return new UncachedKeyRing(ring);
+ return new UncachedKeyRing(ring, true);
}
/** This operation merges information from a different keyring, returning a combined
@@ -688,6 +700,11 @@ public class UncachedKeyRing {
continue;
}
+ // Don't merge foreign stuff into secret keys
+ if (cert.getKeyID() != masterKeyId && isSecret()) {
+ continue;
+ }
+
byte[] encoded = cert.getEncoded();
// Known cert, skip it
if (certs.contains(encoded)) {
@@ -709,6 +726,10 @@ public class UncachedKeyRing {
// Copy over all user id certificates
for (String userId : new IterableIterator<String>(key.getUserIDs())) {
for (PGPSignature cert : new IterableIterator<PGPSignature>(key.getSignaturesForID(userId))) {
+ // Don't merge foreign stuff into secret keys
+ if (cert.getKeyID() != masterKeyId && isSecret()) {
+ continue;
+ }
byte[] encoded = cert.getEncoded();
// Known cert, skip it
if (certs.contains(encoded)) {