Resolves 1107013 - resteasy ftbfs in rawhide

This commit is contained in:
Ade Lee 2014-06-26 19:37:40 +08:00
parent 3b3fefd87f
commit 68fb258fc3
2 changed files with 142 additions and 6 deletions

View File

@ -0,0 +1,129 @@
diff -up ./jaxrs/security/resteasy-crypto/src/main/java/org/jboss/resteasy/security/smime/EnvelopedInputImpl.java.ade1 ./jaxrs/security/resteasy-crypto/src/main/java/org/jboss/resteasy/security/smime/EnvelopedInputImpl.java
--- ./jaxrs/security/resteasy-crypto/src/main/java/org/jboss/resteasy/security/smime/EnvelopedInputImpl.java.ade1 2014-06-26 16:24:28.166315424 +0800
+++ ./jaxrs/security/resteasy-crypto/src/main/java/org/jboss/resteasy/security/smime/EnvelopedInputImpl.java 2014-06-26 17:32:29.632936971 +0800
@@ -3,6 +3,7 @@ package org.jboss.resteasy.security.smim
import org.bouncycastle.cms.RecipientInformation;
import org.bouncycastle.cms.RecipientInformationStore;
import org.bouncycastle.cms.jcajce.JceKeyTransRecipientId;
+import org.bouncycastle.cms.jcajce.JceKeyTransEnvelopedRecipient;
import org.bouncycastle.mail.smime.SMIMEEnveloped;
import org.bouncycastle.mail.smime.SMIMEUtil;
import org.jboss.resteasy.core.Headers;
@@ -159,7 +160,8 @@ public class EnvelopedInputImpl implemen
RecipientInformationStore recipients = m.getRecipientInfos();
RecipientInformation recipient = recipients.get(recId);
- decrypted = SMIMEUtil.toMimeBodyPart(recipient.getContent(pKey, "BC"));
+ decrypted = SMIMEUtil.toMimeBodyPart(recipient.getContent(
+ new JceKeyTransEnvelopedRecipient(pKey).setProvider("BC")));
}
catch (Exception e1)
{
diff -up ./jaxrs/security/resteasy-crypto/src/main/java/org/jboss/resteasy/security/smime/MultipartSignedInputImpl.java.ade1 ./jaxrs/security/resteasy-crypto/src/main/java/org/jboss/resteasy/security/smime/MultipartSignedInputImpl.java
--- ./jaxrs/security/resteasy-crypto/src/main/java/org/jboss/resteasy/security/smime/MultipartSignedInputImpl.java.ade1 2014-06-26 17:07:37.679401083 +0800
+++ ./jaxrs/security/resteasy-crypto/src/main/java/org/jboss/resteasy/security/smime/MultipartSignedInputImpl.java 2014-06-26 17:11:10.734149755 +0800
@@ -2,6 +2,7 @@ package org.jboss.resteasy.security.smim
import org.bouncycastle.cms.SignerInformation;
import org.bouncycastle.cms.SignerInformationStore;
+import org.bouncycastle.cms.jcajce.JcaSimpleSignerInfoVerifierBuilder;
import org.bouncycastle.mail.smime.SMIMESigned;
import org.jboss.resteasy.util.GenericType;
@@ -157,7 +158,8 @@ public class MultipartSignedInputImpl im
SignerInformationStore signers = signed.getSignerInfos();
SignerInformation signer = (SignerInformation) signers.getSigners().iterator().next();
- return signer.verify(publicKey, "BC");
+ return signer.verify(new JcaSimpleSignerInfoVerifierBuilder()
+ .setProvider("BC").build(publicKey));
}
diff -up ./jaxrs/security/resteasy-crypto/src/main/java/org/jboss/resteasy/security/smime/PKCS7SignatureInput.java.ade1 ./jaxrs/security/resteasy-crypto/src/main/java/org/jboss/resteasy/security/smime/PKCS7SignatureInput.java
--- ./jaxrs/security/resteasy-crypto/src/main/java/org/jboss/resteasy/security/smime/PKCS7SignatureInput.java.ade1 2014-06-26 16:36:24.564853001 +0800
+++ ./jaxrs/security/resteasy-crypto/src/main/java/org/jboss/resteasy/security/smime/PKCS7SignatureInput.java 2014-06-26 18:52:43.301108577 +0800
@@ -3,6 +3,7 @@ package org.jboss.resteasy.security.smim
import org.bouncycastle.cms.CMSException;
import org.bouncycastle.cms.CMSSignedData;
import org.bouncycastle.cms.SignerInformation;
+import org.bouncycastle.cms.jcajce.JcaSimpleSignerInfoVerifierBuilder;
import org.jboss.resteasy.specimpl.MultivaluedMapImpl;
import org.jboss.resteasy.util.Base64;
import org.jboss.resteasy.util.GenericType;
@@ -206,7 +207,8 @@ public class PKCS7SignatureInput<T>
for (Object info : data.getSignerInfos().getSigners())
{
SignerInformation signer = (SignerInformation)info;
- if (signer.verify(certificate, "BC"))
+ if (signer.verify(new JcaSimpleSignerInfoVerifierBuilder()
+ .setProvider("BC").build(certificate)))
{
return true;
}
@@ -218,7 +220,8 @@ public class PKCS7SignatureInput<T>
for (Object info : data.getSignerInfos().getSigners())
{
SignerInformation signer = (SignerInformation)info;
- if (signer.verify(publicKey, "BC"))
+ if (signer.verify(new JcaSimpleSignerInfoVerifierBuilder()
+ .setProvider("BC").build(publicKey)))
{
return true;
}
diff -up ./jaxrs/security/resteasy-crypto/src/main/java/org/jboss/resteasy/security/smime/PKCS7SignatureWriter.java.ade1 ./jaxrs/security/resteasy-crypto/src/main/java/org/jboss/resteasy/security/smime/PKCS7SignatureWriter.java
--- ./jaxrs/security/resteasy-crypto/src/main/java/org/jboss/resteasy/security/smime/PKCS7SignatureWriter.java.ade1 2014-06-24 23:38:42.464516920 +0800
+++ ./jaxrs/security/resteasy-crypto/src/main/java/org/jboss/resteasy/security/smime/PKCS7SignatureWriter.java 2014-06-26 18:05:06.601349666 +0800
@@ -4,7 +4,13 @@ import org.bouncycastle.cms.CMSException
import org.bouncycastle.cms.CMSProcessable;
import org.bouncycastle.cms.CMSProcessableByteArray;
import org.bouncycastle.cms.CMSSignedData;
+import org.bouncycastle.cms.CMSTypedData;
import org.bouncycastle.cms.CMSSignedDataGenerator;
+import org.bouncycastle.operator.ContentSigner;
+import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder;
+import org.bouncycastle.cms.jcajce.JcaSignerInfoGeneratorBuilder;
+import org.bouncycastle.operator.jcajce.JcaDigestCalculatorProviderBuilder;
+import org.bouncycastle.operator.OperatorCreationException;
import org.jboss.resteasy.security.BouncyIntegration;
import org.jboss.resteasy.specimpl.MultivaluedMapImpl;
import org.jboss.resteasy.spi.WriterException;
@@ -25,6 +31,7 @@ import java.lang.reflect.Type;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.cert.X509Certificate;
+import java.security.cert.CertificateEncodingException;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
@@ -70,7 +77,7 @@ public class PKCS7SignatureWriter implem
}
}
- public static byte[] sign(Providers providers, SignedOutput out) throws IOException, NoSuchAlgorithmException, NoSuchProviderException, CMSException
+ public static byte[] sign(Providers providers, SignedOutput out) throws IOException, NoSuchAlgorithmException, NoSuchProviderException, CMSException, OperatorCreationException, CertificateEncodingException
{
ByteArrayOutputStream bodyOs = new ByteArrayOutputStream();
MessageBodyWriter writer = providers.getMessageBodyWriter(out.getType(), out.getGenericType(), null, out.getMediaType());
@@ -82,11 +89,18 @@ public class PKCS7SignatureWriter implem
bodyHeaders.add("Content-Type", out.getMediaType().toString());
writer.writeTo(out.getEntity(), out.getType(), out.getGenericType(), null, out.getMediaType(), bodyHeaders, bodyOs);
CMSSignedDataGenerator signGen = new CMSSignedDataGenerator();
- signGen.addSigner(out.getPrivateKey(), (X509Certificate)out.getCertificate(), CMSSignedDataGenerator.DIGEST_SHA1);
+
+ ContentSigner sha1Signer = new JcaContentSignerBuilder("SHA1withRSA").setProvider("BC").build(out.getPrivateKey());
+ signGen.addSignerInfoGenerator(
+ new JcaSignerInfoGeneratorBuilder(
+ new JcaDigestCalculatorProviderBuilder().setProvider("BC").build())
+ .build(sha1Signer, (X509Certificate)out.getCertificate()));
+
+ //signGen.addSigner(out.getPrivateKey(), (X509Certificate)out.getCertificate(), CMSSignedDataGenerator.DIGEST_SHA1);
//signGen.addCertificatesAndCRLs(certs);
- CMSProcessable content = new CMSProcessableByteArray(bodyOs.toByteArray());
+ CMSTypedData content = new CMSProcessableByteArray(bodyOs.toByteArray());
- CMSSignedData signedData = signGen.generate(content, true, "BC");
+ CMSSignedData signedData = signGen.generate(content, true);
return signedData.getEncoded();
}
}

View File

@ -3,7 +3,7 @@
Name: resteasy Name: resteasy
Version: 3.0.6 Version: 3.0.6
Release: 4%{?dist} Release: 5%{?dist}
Summary: Framework for RESTful Web services and Java applications Summary: Framework for RESTful Web services and Java applications
License: ASL 2.0 and CDDL License: ASL 2.0 and CDDL
URL: http://www.jboss.org/resteasy URL: http://www.jboss.org/resteasy
@ -11,6 +11,7 @@ Source0: https://github.com/resteasy/Resteasy/archive/%{namedversion}.tar.gz
# Support for mime4j 0.7.2 # Support for mime4j 0.7.2
Patch0: 0001-Mime4j-0.7.2-support.patch Patch0: 0001-Mime4j-0.7.2-support.patch
Patch1: 0002-bcmail-api-change.patch
BuildArch: noarch BuildArch: noarch
@ -24,7 +25,7 @@ BuildRequires: apache-james-project
BuildRequires: bea-stax BuildRequires: bea-stax
BuildRequires: bean-validation-api BuildRequires: bean-validation-api
BuildRequires: bouncycastle #BuildRequires: bouncycastle
BuildRequires: bouncycastle-mail BuildRequires: bouncycastle-mail
BuildRequires: cglib BuildRequires: cglib
BuildRequires: classmate BuildRequires: classmate
@ -54,7 +55,7 @@ BuildRequires: jboss-servlet-3.0-api
BuildRequires: jcip-annotations BuildRequires: jcip-annotations
BuildRequires: jettison BuildRequires: jettison
BuildRequires: jetty-server BuildRequires: jetty-server
BuildRequires: junit4 BuildRequires: junit
BuildRequires: jsonp BuildRequires: jsonp
BuildRequires: netty BuildRequires: netty
BuildRequires: scannotation BuildRequires: scannotation
@ -80,7 +81,7 @@ BuildRequires: maven-site-plugin
BuildRequires: maven-source-plugin BuildRequires: maven-source-plugin
BuildRequires: maven-surefire-plugin BuildRequires: maven-surefire-plugin
BuildRequires: maven-surefire-report-plugin BuildRequires: maven-surefire-report-plugin
BuildRequires: maven-surefire-provider-junit4 BuildRequires: maven-surefire-provider-junit
BuildRequires: jboss-annotations-1.1-api BuildRequires: jboss-annotations-1.1-api
BuildRequires: undertow BuildRequires: undertow
@ -150,6 +151,7 @@ native2ascii -encoding UTF8 ${f} ${f}
done done
%patch0 -p1 %patch0 -p1
%patch1 -p0
%build %build
%mvn_build -f %mvn_build -f
@ -176,6 +178,11 @@ done
%doc jaxrs/License.html %doc jaxrs/License.html
%changelog %changelog
* Tue Jun 24 2014 Ade Lee <alee@redhat.com> - 3.0.6-5
- Replace broken dependencies junit4-> junit
- Add patch to handle new bouncycastle API in version 1.50
- Fix bogus dates in changelog
* Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0.6-4 * Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0.6-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
@ -235,8 +242,8 @@ done
* Mon Apr 23 2012 Juan Hernandez <juan.hernandez@redhat.com> 2.3.2-3 * Mon Apr 23 2012 Juan Hernandez <juan.hernandez@redhat.com> 2.3.2-3
- Added async HTTP Servlet 3.0 module - Added async HTTP Servlet 3.0 module
* Mon Apr 12 2012 Juan Hernandez <juan.hernandez@redhat.com> 2.3.2-2 * Thu Apr 12 2012 Juan Hernandez <juan.hernandez@redhat.com> 2.3.2-2
- Build CDI integration module (bug #812978) - Build CDI integration module (bug #812978)
* Thu Mar 6 2012 Ade Lee <alee@redhat.com> 2.3.2-1 * Tue Mar 6 2012 Ade Lee <alee@redhat.com> 2.3.2-1
- Initial packaging - Initial packaging