diff --git a/apache-ivy.spec b/apache-ivy.spec index 996c0c4..68c56c1 100644 --- a/apache-ivy.spec +++ b/apache-ivy.spec @@ -1,10 +1,10 @@ Name: apache-ivy Version: 2.4.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Java-based dependency manager License: ASL 2.0 -URL: http://ant.apache.org/ivy/ +URL: http://ant.apache.org/ivy Source0: http://www.apache.org/dist/ant/ivy/%{version}/%{name}-%{version}-src.tar.gz BuildArch: noarch @@ -12,6 +12,8 @@ BuildArch: noarch # settings files Ivy tries to load. This file will be used only as # last resort, when no other setting files exist. Patch0: %{name}-global-settings.patch +# probably upstreamable, missing test case +Patch1: port-to-bc-1.52.patch Provides: ivy = %{version}-%{release} @@ -51,6 +53,7 @@ JavaDoc documentation for %{name} %prep %setup -q %patch0 +%patch1 -p1 %mvn_alias : jayasoft:ivy %mvn_file : %{name}/ivy ivy @@ -96,6 +99,9 @@ echo "apache-ivy/ivy" > $RPM_BUILD_ROOT%{_sysconfdir}/ant.d/%{name} %license LICENSE NOTICE %changelog +* Mon May 04 2015 Michal Srb - 2.4.0-2 +- Port to bouncycastle 1.52 + * Wed Apr 1 2015 Mikolaj Izdebski - 2.4.0-1 - Update to upstream version 2.4.0 diff --git a/port-to-bc-1.52.patch b/port-to-bc-1.52.patch new file mode 100644 index 0000000..0bdddab --- /dev/null +++ b/port-to-bc-1.52.patch @@ -0,0 +1,93 @@ +diff --git a/ivy.xml b/ivy.xml +index d448897..7d8896a 100644 +--- a/ivy.xml ++++ b/ivy.xml +@@ -50,8 +50,8 @@ + + + +- +- ++ ++ + + + +diff --git a/src/java/org/apache/ivy/plugins/signer/bouncycastle/OpenPGPSignatureGenerator.java b/src/java/org/apache/ivy/plugins/signer/bouncycastle/OpenPGPSignatureGenerator.java +index af7beae..bec8ae4 100644 +--- a/src/java/org/apache/ivy/plugins/signer/bouncycastle/OpenPGPSignatureGenerator.java ++++ b/src/java/org/apache/ivy/plugins/signer/bouncycastle/OpenPGPSignatureGenerator.java +@@ -23,16 +23,18 @@ import java.io.FileOutputStream; + import java.io.IOException; + import java.io.InputStream; + import java.io.OutputStream; +-import java.security.NoSuchAlgorithmException; +-import java.security.NoSuchProviderException; + import java.security.Security; +-import java.security.SignatureException; + import java.util.Iterator; + + import org.apache.ivy.plugins.signer.SignatureGenerator; + import org.bouncycastle.bcpg.ArmoredOutputStream; + import org.bouncycastle.bcpg.BCPGOutputStream; + import org.bouncycastle.jce.provider.BouncyCastleProvider; ++import org.bouncycastle.openpgp.operator.PBESecretKeyDecryptor; ++import org.bouncycastle.openpgp.operator.bc.BcKeyFingerprintCalculator; ++import org.bouncycastle.openpgp.operator.bc.BcPBESecretKeyDecryptorBuilder; ++import org.bouncycastle.openpgp.operator.bc.BcPGPContentSignerBuilder; ++import org.bouncycastle.openpgp.operator.bc.BcPGPDigestCalculatorProvider; + import org.bouncycastle.openpgp.PGPException; + import org.bouncycastle.openpgp.PGPPrivateKey; + import org.bouncycastle.openpgp.PGPSecretKey; +@@ -101,11 +103,13 @@ public class OpenPGPSignatureGenerator implements SignatureGenerator { + pgpSec = readSecretKey(keyIn); + } + +- PGPPrivateKey pgpPrivKey = pgpSec.extractPrivateKey(password.toCharArray(), +- BouncyCastleProvider.PROVIDER_NAME); +- PGPSignatureGenerator sGen = new PGPSignatureGenerator(pgpSec.getPublicKey() +- .getAlgorithm(), PGPUtil.SHA1, BouncyCastleProvider.PROVIDER_NAME); +- sGen.initSign(PGPSignature.BINARY_DOCUMENT, pgpPrivKey); ++ PBESecretKeyDecryptor decryptor = new BcPBESecretKeyDecryptorBuilder( ++ new BcPGPDigestCalculatorProvider()).build(password.toCharArray()); ++ PGPPrivateKey pgpPrivKey = pgpSec.extractPrivateKey(decryptor); ++ PGPSignatureGenerator sGen = new PGPSignatureGenerator( ++ new BcPGPContentSignerBuilder(pgpSec.getPublicKey() ++ .getAlgorithm(), PGPUtil.SHA1)); ++ sGen.init(PGPSignature.BINARY_DOCUMENT, pgpPrivKey); + + in = new FileInputStream(src); + out = new BCPGOutputStream(new ArmoredOutputStream(new FileOutputStream(dest))); +@@ -116,22 +120,10 @@ public class OpenPGPSignatureGenerator implements SignatureGenerator { + } + + sGen.generate().encode(out); +- } catch (SignatureException e) { +- IOException ioexc = new IOException(); +- ioexc.initCause(e); +- throw ioexc; + } catch (PGPException e) { + IOException ioexc = new IOException(); + ioexc.initCause(e); + throw ioexc; +- } catch (NoSuchAlgorithmException e) { +- IOException ioexc = new IOException(); +- ioexc.initCause(e); +- throw ioexc; +- } catch (NoSuchProviderException e) { +- IOException ioexc = new IOException(); +- ioexc.initCause(e); +- throw ioexc; + } finally { + if (out != null) { + try { +@@ -156,7 +148,8 @@ public class OpenPGPSignatureGenerator implements SignatureGenerator { + + private PGPSecretKey readSecretKey(InputStream in) throws IOException, PGPException { + in = PGPUtil.getDecoderStream(in); +- PGPSecretKeyRingCollection pgpSec = new PGPSecretKeyRingCollection(in); ++ PGPSecretKeyRingCollection pgpSec = new PGPSecretKeyRingCollection(in, ++ new BcKeyFingerprintCalculator()); + + PGPSecretKey key = null; + for (Iterator it = pgpSec.getKeyRings(); key == null && it.hasNext();) {