Author: davsclaus
Date: Sat Nov  5 07:30:32 2011
New Revision: 1197898

URL: http://svn.apache.org/viewvc?rev=1197898&view=rev
Log:
CAMEL-4549: Applied patch. Thanks to Adam.

Modified:
    
camel/trunk/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/PGPDataFormatUtil.java
    
camel/trunk/components/camel-crypto/src/test/java/org/apache/camel/converter/crypto/PGPDataFormatTest.java

Modified: 
camel/trunk/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/PGPDataFormatUtil.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/PGPDataFormatUtil.java?rev=1197898&r1=1197897&r2=1197898&view=diff
==============================================================================
--- 
camel/trunk/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/PGPDataFormatUtil.java
 (original)
+++ 
camel/trunk/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/PGPDataFormatUtil.java
 Sat Nov  5 07:30:32 2011
@@ -22,6 +22,7 @@ import java.io.InputStream;
 import java.security.NoSuchProviderException;
 import java.util.Iterator;
 
+import org.apache.camel.util.IOHelper;
 import org.bouncycastle.openpgp.PGPException;
 import org.bouncycastle.openpgp.PGPPrivateKey;
 import org.bouncycastle.openpgp.PGPPublicKey;
@@ -33,42 +34,40 @@ import org.bouncycastle.openpgp.PGPSecre
 import org.bouncycastle.openpgp.PGPUtil;
 
 public final class PGPDataFormatUtil {
-    
+
     private PGPDataFormatUtil() {
-        
     }
-    
+
     public static PGPPublicKey findPublicKey(String filename, String userid) 
throws IOException, PGPException,
-        NoSuchProviderException {
+            NoSuchProviderException {
         FileInputStream fis = new FileInputStream(filename);
         PGPPublicKey privKey;
         try {
             privKey = findPublicKey(fis, userid);
         } finally {
-            fis.close();
+            IOHelper.close(fis);
         }
         return privKey;
     }
 
+    @SuppressWarnings("unchecked")
     public static PGPPublicKey findPublicKey(InputStream input, String userid) 
throws IOException, PGPException,
-        NoSuchProviderException {
+            NoSuchProviderException {
         PGPPublicKeyRingCollection pgpSec = new 
PGPPublicKeyRingCollection(PGPUtil.getDecoderStream(input));
 
-        @SuppressWarnings("unchecked")
-        Iterator<PGPPublicKeyRing> keyRingIter = 
(Iterator<PGPPublicKeyRing>)pgpSec.getKeyRings();
+        Iterator<PGPPublicKeyRing> keyRingIter = (Iterator<PGPPublicKeyRing>) 
pgpSec.getKeyRings();
         while (keyRingIter.hasNext()) {
             PGPPublicKeyRing keyRing = keyRingIter.next();
 
-            @SuppressWarnings("unchecked")
-            Iterator<PGPPublicKey> keyIter = 
(Iterator<PGPPublicKey>)keyRing.getPublicKeys();
+            Iterator<PGPPublicKey> keyIter = (Iterator<PGPPublicKey>) 
keyRing.getPublicKeys();
+            String keyUserId = null;
             while (keyIter.hasNext()) {
-                PGPPublicKey key = (PGPPublicKey)keyIter.next();
-                for (@SuppressWarnings("unchecked")
-                Iterator<String> iterator = 
(Iterator<String>)key.getUserIDs(); iterator.hasNext();) {
-                    String userId = iterator.next();
-                    if (key.isEncryptionKey() && userId.contains(userid)) {
-                        return key;
-                    }
+                PGPPublicKey key = keyIter.next();
+                for (Iterator<String> iterator = (Iterator<String>) 
key.getUserIDs(); iterator.hasNext();) {
+                    keyUserId = iterator.next();
+                }
+                if (key.isEncryptionKey() && keyUserId != null && 
keyUserId.contains(userid)) {
+                    return key;
                 }
             }
         }
@@ -76,33 +75,31 @@ public final class PGPDataFormatUtil {
         return null;
     }
 
-    public static PGPPrivateKey findPrivateKey(String filename, String userid, 
String passphrase)
-        throws IOException, PGPException, NoSuchProviderException {
+    public static PGPPrivateKey findPrivateKey(String filename, String userid, 
String passphrase) throws IOException,
+            PGPException, NoSuchProviderException {
         FileInputStream fis = new FileInputStream(filename);
         PGPPrivateKey privKey;
         try {
             privKey = findPrivateKey(fis, userid, passphrase);
         } finally {
-            fis.close();
+            IOHelper.close(fis);
         }
         return privKey;
     }
 
-    public static PGPPrivateKey findPrivateKey(InputStream input, String 
userid, String passphrase)
-        throws IOException, PGPException, NoSuchProviderException {
+    @SuppressWarnings("unchecked")
+    public static PGPPrivateKey findPrivateKey(InputStream input, String 
userid, String passphrase) throws IOException,
+            PGPException, NoSuchProviderException {
         PGPSecretKeyRingCollection pgpSec = new 
PGPSecretKeyRingCollection(PGPUtil.getDecoderStream(input));
 
-        @SuppressWarnings("unchecked")
-        Iterator<PGPSecretKeyRing> keyRingIter = 
(Iterator<PGPSecretKeyRing>)pgpSec.getKeyRings();
+        Iterator<PGPSecretKeyRing> keyRingIter = (Iterator<PGPSecretKeyRing>) 
pgpSec.getKeyRings();
         while (keyRingIter.hasNext()) {
             PGPSecretKeyRing keyRing = keyRingIter.next();
 
-            @SuppressWarnings("unchecked")
-            Iterator<PGPSecretKey> keyIter = 
(Iterator<PGPSecretKey>)keyRing.getSecretKeys();
+            Iterator<PGPSecretKey> keyIter = (Iterator<PGPSecretKey>) 
keyRing.getSecretKeys();
             while (keyIter.hasNext()) {
-                PGPSecretKey key = (PGPSecretKey)keyIter.next();
-                for (@SuppressWarnings("unchecked")
-                Iterator<String> iterator = 
(Iterator<String>)key.getUserIDs(); iterator.hasNext();) {
+                PGPSecretKey key = keyIter.next();
+                for (Iterator<String> iterator = (Iterator<String>) 
key.getUserIDs(); iterator.hasNext();) {
                     String userId = iterator.next();
                     if (key.isSigningKey() && userId.contains(userid)) {
                         return key.extractPrivateKey(passphrase.toCharArray(), 
"BC");

Modified: 
camel/trunk/components/camel-crypto/src/test/java/org/apache/camel/converter/crypto/PGPDataFormatTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-crypto/src/test/java/org/apache/camel/converter/crypto/PGPDataFormatTest.java?rev=1197898&r1=1197897&r2=1197898&view=diff
==============================================================================
--- 
camel/trunk/components/camel-crypto/src/test/java/org/apache/camel/converter/crypto/PGPDataFormatTest.java
 (original)
+++ 
camel/trunk/components/camel-crypto/src/test/java/org/apache/camel/converter/crypto/PGPDataFormatTest.java
 Sat Nov  5 07:30:32 2011
@@ -22,13 +22,12 @@ import java.util.Map;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
-import org.apache.camel.InvalidPayloadException;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.apache.camel.util.ExchangeHelper;
 import org.bouncycastle.openpgp.PGPPrivateKey;
-import org.bouncycastle.openpgp.PGPPublicKey;  
+import org.bouncycastle.openpgp.PGPPublicKey;
 import org.junit.Test;
 
 public class PGPDataFormatTest extends CamelTestSupport {
@@ -60,8 +59,7 @@ public class PGPDataFormatTest extends C
         assertMocksSatisfied(encrypted, unencrypted, payload);
     }
 
-    private void assertMocksSatisfied(MockEndpoint encrypted, MockEndpoint 
unencrypted, String payload)
-        throws InterruptedException, InvalidPayloadException {
+    private void assertMocksSatisfied(MockEndpoint encrypted, MockEndpoint 
unencrypted, String payload) throws Exception {
         awaitAndAssert(unencrypted);
         awaitAndAssert(encrypted);
         for (Exchange e : unencrypted.getReceivedExchanges()) {
@@ -73,26 +71,36 @@ public class PGPDataFormatTest extends C
         }
     }
 
-    @Override
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             public void configure() throws Exception {
-                PGPDataFormat cryptoFormat = new PGPDataFormat();
+                // START SNIPPET: pgp-format
+                PGPDataFormat pgpDataFormat = new PGPDataFormat();
                 PGPPublicKey pKey = 
PGPDataFormatUtil.findPublicKey(keyFileName, keyUserid);
                 PGPPrivateKey sKey = 
PGPDataFormatUtil.findPrivateKey(keyFileNameSec, keyUserid, keyPassword);
-                cryptoFormat.setPublicKey(pKey);
-                cryptoFormat.setPrivateKey(sKey);
+                pgpDataFormat.setPublicKey(pKey);
+                pgpDataFormat.setPrivateKey(sKey);
 
-                
from("direct:inline").marshal(cryptoFormat).to("mock:encrypted").unmarshal(cryptoFormat)
+                from("direct:inline")
+                    .marshal(pgpDataFormat)
+                    .to("mock:encrypted")
+                    .unmarshal(pgpDataFormat)
                     .to("mock:unencrypted");
+                // END SNIPPET: pgp-format
 
-                PGPDataFormat cryptoFormatNoKey = new PGPDataFormat();
-                cryptoFormat.setPublicKey(pKey);
-                cryptoFormat.setPrivateKey(sKey);
-
-                
from("direct:inlineHeaders").setHeader(PGPDataFormat.KEY_PUB).constant(pKey)
-                    
.setHeader(PGPDataFormat.KEY_PRI).constant(sKey).marshal(cryptoFormatNoKey)
-                    
.to("mock:encrypted").unmarshal(cryptoFormatNoKey).to("mock:unencrypted");
+                // START SNIPPET: pgp-format-header
+                PGPDataFormat pgpDataFormatNoKey = new PGPDataFormat();
+                pgpDataFormat.setPublicKey(pKey);
+                pgpDataFormat.setPrivateKey(sKey);
+
+                from("direct:inlineHeaders")
+                    .setHeader(PGPDataFormat.KEY_PUB).constant(pKey)
+                    .setHeader(PGPDataFormat.KEY_PRI).constant(sKey)
+                    .marshal(pgpDataFormatNoKey)
+                    .to("mock:encrypted")
+                    .unmarshal(pgpDataFormatNoKey)
+                    .to("mock:unencrypted");
+                // END SNIPPET: pgp-format-header
             }
         };
     }


Reply via email to