aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedKeyRing.java
diff options
context:
space:
mode:
authorVincent Breitmoser <valodim@mugenguild.com>2014-07-31 17:08:33 +0200
committerVincent Breitmoser <valodim@mugenguild.com>2014-07-31 17:09:30 +0200
commitb156a057e8c5b715f515725ab051087a86ecd547 (patch)
tree84f321e44796e684f8aede8653a131cc7cedf1b4 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedKeyRing.java
parent9475285013accafd24d5bc14da9ba01ca218cbe8 (diff)
downloadopen-keychain-b156a057e8c5b715f515725ab051087a86ecd547.tar.gz
open-keychain-b156a057e8c5b715f515725ab051087a86ecd547.tar.bz2
open-keychain-b156a057e8c5b715f515725ab051087a86ecd547.zip
rename Wrapped*Key* to Canonicalized*Key*
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedKeyRing.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedKeyRing.java114
1 files changed, 114 insertions, 0 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedKeyRing.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedKeyRing.java
new file mode 100644
index 000000000..ee0dfefa4
--- /dev/null
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/CanonicalizedKeyRing.java
@@ -0,0 +1,114 @@
+package org.sufficientlysecure.keychain.pgp;
+
+import org.spongycastle.openpgp.PGPKeyRing;
+import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException;
+import org.sufficientlysecure.keychain.util.IterableIterator;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+/** A generic wrapped PGPKeyRing object.
+ *
+ * This class provides implementations for all basic getters which both
+ * PublicKeyRing and SecretKeyRing have in common. To make the wrapped keyring
+ * class typesafe in implementing subclasses, the field is stored in the
+ * implementing class, providing properly typed access through the getRing
+ * getter method.
+ *
+ */
+public abstract class CanonicalizedKeyRing extends KeyRing {
+
+ private final int mVerified;
+
+ CanonicalizedKeyRing(int verified) {
+ mVerified = verified;
+ }
+
+ public long getMasterKeyId() {
+ return getRing().getPublicKey().getKeyID();
+ }
+
+ public int getVerified() {
+ return mVerified;
+ }
+
+ public String getPrimaryUserId() throws PgpGeneralException {
+ return getPublicKey().getPrimaryUserId();
+ }
+
+ public String getPrimaryUserIdWithFallback() throws PgpGeneralException {
+ return getPublicKey().getPrimaryUserIdWithFallback();
+ }
+
+ public boolean isRevoked() throws PgpGeneralException {
+ // Is the master key revoked?
+ return getRing().getPublicKey().isRevoked();
+ }
+
+ public boolean canCertify() throws PgpGeneralException {
+ return getRing().getPublicKey().isEncryptionKey();
+ }
+
+ public long getEncryptId() throws PgpGeneralException {
+ for(CanonicalizedPublicKey key : publicKeyIterator()) {
+ if(key.canEncrypt()) {
+ return key.getKeyId();
+ }
+ }
+ throw new PgpGeneralException("No valid encryption key found!");
+ }
+
+ public boolean hasEncrypt() throws PgpGeneralException {
+ try {
+ getEncryptId();
+ return true;
+ } catch(PgpGeneralException e) {
+ return false;
+ }
+ }
+
+ public long getSignId() throws PgpGeneralException {
+ for(CanonicalizedPublicKey key : publicKeyIterator()) {
+ if(key.canSign()) {
+ return key.getKeyId();
+ }
+ }
+ throw new PgpGeneralException("No valid signing key found!");
+ }
+
+ public boolean hasSign() throws PgpGeneralException {
+ try {
+ getSignId();
+ return true;
+ } catch (PgpGeneralException e) {
+ return false;
+ }
+ }
+
+ public void encode(OutputStream stream) throws IOException {
+ getRing().encode(stream);
+ }
+
+ /** Returns an UncachedKeyRing which wraps the same data as this ring. This method should
+ * only be used */
+ public UncachedKeyRing getUncachedKeyRing() {
+ return new UncachedKeyRing(getRing());
+ }
+
+ abstract PGPKeyRing getRing();
+
+ abstract public IterableIterator<CanonicalizedPublicKey> publicKeyIterator();
+
+ public CanonicalizedPublicKey getPublicKey() {
+ return new CanonicalizedPublicKey(this, getRing().getPublicKey());
+ }
+
+ public CanonicalizedPublicKey getPublicKey(long id) {
+ return new CanonicalizedPublicKey(this, getRing().getPublicKey(id));
+ }
+
+ public byte[] getEncoded() throws IOException {
+ return getRing().getEncoded();
+ }
+
+}