Michal Srb a58e0a
diff --git a/ivy.xml b/ivy.xml
Michal Srb a58e0a
index d448897..7d8896a 100644
Michal Srb a58e0a
--- a/ivy.xml
Michal Srb a58e0a
+++ b/ivy.xml
Michal Srb a58e0a
@@ -50,8 +50,8 @@
Michal Srb a58e0a
 		<dependency org="com.jcraft" name="jsch.agentproxy" rev="0.0.6" conf="default,sftp->default"/>
Michal Srb a58e0a
 		<dependency org="com.jcraft" name="jsch.agentproxy.connector-factory" rev="0.0.6" conf="default,sftp->default"/>
Michal Srb a58e0a
 		<dependency org="com.jcraft" name="jsch.agentproxy.jsch" rev="0.0.6" conf="default,sftp->default"/>
Michal Srb a58e0a
-		<dependency org="org.bouncycastle" name="bcpg-jdk14" rev="1.45" conf="default"/>
Michal Srb a58e0a
-        <dependency org="org.bouncycastle" name="bcprov-jdk14" rev="1.45" conf="default"/>
Michal Srb a58e0a
+		<dependency org="org.bouncycastle" name="bcpg-jdk15on" rev="1.52" conf="default"/>
Michal Srb a58e0a
+        <dependency org="org.bouncycastle" name="bcprov-jdk15on" rev="1.52" conf="default"/>
Michal Srb a58e0a
 
Michal Srb a58e0a
 		
Michal Srb a58e0a
 		<dependency org="junit" name="junit" rev="3.8.2" conf="test->default"/>
Michal Srb a58e0a
diff --git a/src/java/org/apache/ivy/plugins/signer/bouncycastle/OpenPGPSignatureGenerator.java b/src/java/org/apache/ivy/plugins/signer/bouncycastle/OpenPGPSignatureGenerator.java
Michal Srb a58e0a
index af7beae..bec8ae4 100644
Michal Srb a58e0a
--- a/src/java/org/apache/ivy/plugins/signer/bouncycastle/OpenPGPSignatureGenerator.java
Michal Srb a58e0a
+++ b/src/java/org/apache/ivy/plugins/signer/bouncycastle/OpenPGPSignatureGenerator.java
Michal Srb a58e0a
@@ -23,16 +23,18 @@ import java.io.FileOutputStream;
Michal Srb a58e0a
 import java.io.IOException;
Michal Srb a58e0a
 import java.io.InputStream;
Michal Srb a58e0a
 import java.io.OutputStream;
Michal Srb a58e0a
-import java.security.NoSuchAlgorithmException;
Michal Srb a58e0a
-import java.security.NoSuchProviderException;
Michal Srb a58e0a
 import java.security.Security;
Michal Srb a58e0a
-import java.security.SignatureException;
Michal Srb a58e0a
 import java.util.Iterator;
Michal Srb a58e0a
 
Michal Srb a58e0a
 import org.apache.ivy.plugins.signer.SignatureGenerator;
Michal Srb a58e0a
 import org.bouncycastle.bcpg.ArmoredOutputStream;
Michal Srb a58e0a
 import org.bouncycastle.bcpg.BCPGOutputStream;
Michal Srb a58e0a
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
Michal Srb a58e0a
+import org.bouncycastle.openpgp.operator.PBESecretKeyDecryptor;
Michal Srb a58e0a
+import org.bouncycastle.openpgp.operator.bc.BcKeyFingerprintCalculator;
Michal Srb a58e0a
+import org.bouncycastle.openpgp.operator.bc.BcPBESecretKeyDecryptorBuilder;
Michal Srb a58e0a
+import org.bouncycastle.openpgp.operator.bc.BcPGPContentSignerBuilder;
Michal Srb a58e0a
+import org.bouncycastle.openpgp.operator.bc.BcPGPDigestCalculatorProvider;
Michal Srb a58e0a
 import org.bouncycastle.openpgp.PGPException;
Michal Srb a58e0a
 import org.bouncycastle.openpgp.PGPPrivateKey;
Michal Srb a58e0a
 import org.bouncycastle.openpgp.PGPSecretKey;
Michal Srb a58e0a
@@ -101,11 +103,13 @@ public class OpenPGPSignatureGenerator implements SignatureGenerator {
Michal Srb a58e0a
                 pgpSec = readSecretKey(keyIn);
Michal Srb a58e0a
             }
Michal Srb a58e0a
 
Michal Srb a58e0a
-            PGPPrivateKey pgpPrivKey = pgpSec.extractPrivateKey(password.toCharArray(),
Michal Srb a58e0a
-                BouncyCastleProvider.PROVIDER_NAME);
Michal Srb a58e0a
-            PGPSignatureGenerator sGen = new PGPSignatureGenerator(pgpSec.getPublicKey()
Michal Srb a58e0a
-                    .getAlgorithm(), PGPUtil.SHA1, BouncyCastleProvider.PROVIDER_NAME);
Michal Srb a58e0a
-            sGen.initSign(PGPSignature.BINARY_DOCUMENT, pgpPrivKey);
Michal Srb a58e0a
+            PBESecretKeyDecryptor decryptor = new BcPBESecretKeyDecryptorBuilder(
Michal Srb a58e0a
+                new BcPGPDigestCalculatorProvider()).build(password.toCharArray());
Michal Srb a58e0a
+            PGPPrivateKey pgpPrivKey = pgpSec.extractPrivateKey(decryptor);
Michal Srb a58e0a
+            PGPSignatureGenerator sGen = new PGPSignatureGenerator(
Michal Srb a58e0a
+                new BcPGPContentSignerBuilder(pgpSec.getPublicKey()
Michal Srb a58e0a
+                    .getAlgorithm(), PGPUtil.SHA1));
Michal Srb a58e0a
+            sGen.init(PGPSignature.BINARY_DOCUMENT, pgpPrivKey);
Michal Srb a58e0a
 
Michal Srb a58e0a
             in = new FileInputStream(src);
Michal Srb a58e0a
             out = new BCPGOutputStream(new ArmoredOutputStream(new FileOutputStream(dest)));
Michal Srb a58e0a
@@ -116,22 +120,10 @@ public class OpenPGPSignatureGenerator implements SignatureGenerator {
Michal Srb a58e0a
             }
Michal Srb a58e0a
 
Michal Srb a58e0a
             sGen.generate().encode(out);
Michal Srb a58e0a
-        } catch (SignatureException e) {
Michal Srb a58e0a
-            IOException ioexc = new IOException();
Michal Srb a58e0a
-            ioexc.initCause(e);
Michal Srb a58e0a
-            throw ioexc;
Michal Srb a58e0a
         } catch (PGPException e) {
Michal Srb a58e0a
             IOException ioexc = new IOException();
Michal Srb a58e0a
             ioexc.initCause(e);
Michal Srb a58e0a
             throw ioexc;
Michal Srb a58e0a
-        } catch (NoSuchAlgorithmException e) {
Michal Srb a58e0a
-            IOException ioexc = new IOException();
Michal Srb a58e0a
-            ioexc.initCause(e);
Michal Srb a58e0a
-            throw ioexc;
Michal Srb a58e0a
-        } catch (NoSuchProviderException e) {
Michal Srb a58e0a
-            IOException ioexc = new IOException();
Michal Srb a58e0a
-            ioexc.initCause(e);
Michal Srb a58e0a
-            throw ioexc;
Michal Srb a58e0a
         } finally {
Michal Srb a58e0a
             if (out != null) {
Michal Srb a58e0a
                 try {
Michal Srb a58e0a
@@ -156,7 +148,8 @@ public class OpenPGPSignatureGenerator implements SignatureGenerator {
Michal Srb a58e0a
 
Michal Srb a58e0a
     private PGPSecretKey readSecretKey(InputStream in) throws IOException, PGPException {
Michal Srb a58e0a
         in = PGPUtil.getDecoderStream(in);
Michal Srb a58e0a
-        PGPSecretKeyRingCollection pgpSec = new PGPSecretKeyRingCollection(in);
Michal Srb a58e0a
+        PGPSecretKeyRingCollection pgpSec = new PGPSecretKeyRingCollection(in,
Michal Srb a58e0a
+            new BcKeyFingerprintCalculator());
Michal Srb a58e0a
 
Michal Srb a58e0a
         PGPSecretKey key = null;
Michal Srb a58e0a
         for (Iterator it = pgpSec.getKeyRings(); key == null && it.hasNext();) {