From 5cf07b4a039bb4b03ced54a9d3d939ec7c1cad7c Mon Sep 17 00:00:00 2001 From: Thialfihar Date: Thu, 29 Apr 2010 01:38:19 +0000 Subject: only allow asymmetric encryption or symmetric encryption of files, not both like before --- src/org/thialfihar/android/apg/Apg.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/org/thialfihar/android/apg/Apg.java') diff --git a/src/org/thialfihar/android/apg/Apg.java b/src/org/thialfihar/android/apg/Apg.java index 31720c5af..af4cbf1ed 100644 --- a/src/org/thialfihar/android/apg/Apg.java +++ b/src/org/thialfihar/android/apg/Apg.java @@ -166,6 +166,14 @@ public class Apg { } } + public static class NoAsymmetricEncryptionException extends Exception { + static final long serialVersionUID = 0xf812773343L; + + public NoAsymmetricEncryptionException() { + super(); + } + } + static { mPublicKeyRings = new Vector(); mSecretKeyRings = new Vector(); @@ -1366,7 +1374,7 @@ public class Apg { } public static long getDecryptionKeyId(InputStream inStream) - throws GeneralException, IOException { + throws GeneralException, NoAsymmetricEncryptionException, IOException { InputStream in = PGPUtil.getDecoderStream(inStream); PGPObjectFactory pgpF = new PGPObjectFactory(in); PGPEncryptedDataList enc; @@ -1387,9 +1395,11 @@ public class Apg { // find the secret key PGPSecretKey secretKey = null; Iterator it = enc.getEncryptedDataObjects(); + boolean gotAsymmetricEncryption = false; while (it.hasNext()) { Object obj = it.next(); if (obj instanceof PGPPublicKeyEncryptedData) { + gotAsymmetricEncryption = true; PGPPublicKeyEncryptedData pbe = (PGPPublicKeyEncryptedData) obj; secretKey = findSecretKey(pbe.getKeyID()); if (secretKey != null) { @@ -1398,6 +1408,10 @@ public class Apg { } } + if (!gotAsymmetricEncryption) { + throw new NoAsymmetricEncryptionException(); + } + if (secretKey == null) { return 0; } -- cgit v1.2.3