aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorThialfihar <thialfihar@gmail.com>2010-04-29 11:50:25 +0000
committerThialfihar <thialfihar@gmail.com>2010-04-29 11:50:25 +0000
commitb20419fbf3dd6d9da412c95f1c7af8c651e40612 (patch)
treeaf8292bd6ee43e68a1a92fc4b75997578fc27618 /src
parenta6fe3364d10b978f0de3fc785bf2461c10ed9c8d (diff)
downloadopen-keychain-b20419fbf3dd6d9da412c95f1c7af8c651e40612.tar.gz
open-keychain-b20419fbf3dd6d9da412c95f1c7af8c651e40612.tar.bz2
open-keychain-b20419fbf3dd6d9da412c95f1c7af8c651e40612.zip
recognize RSA_SIGN and RSA_ENCRYPT keys correctly, which fixes the hushmail problems
Diffstat (limited to 'src')
-rw-r--r--src/org/thialfihar/android/apg/Apg.java19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/org/thialfihar/android/apg/Apg.java b/src/org/thialfihar/android/apg/Apg.java
index af4cbf1ed..01464dd33 100644
--- a/src/org/thialfihar/android/apg/Apg.java
+++ b/src/org/thialfihar/android/apg/Apg.java
@@ -647,7 +647,7 @@ public class Apg {
ProgressDialogUpdater progress)
throws GeneralException, FileNotFoundException, PGPException, IOException {
Bundle returnData = new Bundle();
- PGPObjectFactory objectFactors = null;
+ PGPObjectFactory objectFactory = null;
if (type == Id.type.secret_key) {
progress.setProgress("importing secret keys...", 0, 100);
@@ -661,13 +661,13 @@ public class Apg {
FileInputStream fileIn = new FileInputStream(filename);
InputStream in = PGPUtil.getDecoderStream(fileIn);
- objectFactors = new PGPObjectFactory(in);
+ objectFactory = new PGPObjectFactory(in);
Vector<Object> objects = new Vector<Object>();
- Object obj = objectFactors.nextObject();
+ Object obj = objectFactory.nextObject();
while (obj != null) {
objects.add(obj);
- obj = objectFactors.nextObject();
+ obj = objectFactory.nextObject();
}
int newKeys = 0;
@@ -1009,11 +1009,15 @@ public class Apg {
return key.isEncryptionKey();
}
- // special case, this algorithm, no need to look further
+ // special cases
if (key.getAlgorithm() == PGPPublicKey.ELGAMAL_ENCRYPT) {
return true;
}
+ if (key.getAlgorithm() == PGPPublicKey.RSA_ENCRYPT) {
+ return true;
+ }
+
for (PGPSignature sig : new IterableIterator<PGPSignature>(key.getSignatures())) {
if (!key.isMasterKey() || sig.getKeyID() == key.getKeyID()) {
PGPSignatureSubpacketVector hashed = sig.getHashedSubPackets();
@@ -1036,6 +1040,11 @@ public class Apg {
return true;
}
+ // special case
+ if (key.getAlgorithm() == PGPPublicKey.RSA_SIGN) {
+ return true;
+ }
+
for (PGPSignature sig : new IterableIterator<PGPSignature>(key.getSignatures())) {
if (!key.isMasterKey() || sig.getKeyID() == key.getKeyID()) {
PGPSignatureSubpacketVector hashed = sig.getHashedSubPackets();