Update to version 3

- Apply patch for bouncycastle 1.47+ on Fedora 21+ and EPEL 7+
- Convert to using xmvn
This commit is contained in:
Mattias Ellert 2014-03-10 16:20:07 +01:00
commit 6ffbd89911
7 changed files with 383 additions and 449 deletions

View file

@ -1,23 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- ====================================================================== -->
<!-- Ant build file (http://ant.apache.org/) for Ant 1.6.2 or above. -->
<!-- ====================================================================== -->
<project name="voms-api-java" default="package" basedir=".">
<!-- ====================================================================== -->
<!-- Import maven-build.xml into the current project -->
<!-- ====================================================================== -->
<import file="maven-build.xml"/>
<!-- ====================================================================== -->
<!-- Help target -->
<!-- ====================================================================== -->
<target name="help">
<echo message="Please run: $ant -projecthelp"/>
</target>
</project>

View file

@ -1,22 +0,0 @@
#Generated by Maven Ant Plugin - DO NOT EDIT THIS FILE!
#Mon Feb 11 23:31:38 CET 2013
bouncycastle.version=1.46
maven.settings.offline=true
maven.build.finalName=voms-api-java-2.0.10
maven.build.resourceDir.0=src/main/resources
maven.build.testOutputDir=${maven.build.dir}/test-classes
maven.build.testResourceDir.0=src/test/resources
maven.reporting.outputDirectory=${maven.build.dir}/site
project.build.sourceEncoding=UTF-8
maven.build.srcDir.0=src/main/java
project.build.directory=${maven.build.dir}
maven.test.reports=${maven.build.dir}/test-reports
maven.build.dir=target
project.build.outputDirectory=${maven.build.outputDir}
assembly.javadoc.dir=/usr/share/javadoc/voms-api-java
assembly.doc.dir=/usr/share/doc/voms-api-java-2.0.10
project.reporting.outputEncoding=UTF-8
maven.build.testDir.0=src/test/java
maven.settings.interactiveMode=true
assembly.java.dir=/usr/share/java
maven.build.outputDir=${maven.build.dir}/classes

View file

@ -1,285 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- ====================================================================== -->
<!-- Ant build file (http://ant.apache.org/) for Ant 1.6.2 or above. -->
<!-- ====================================================================== -->
<!-- ====================================================================== -->
<!-- ===================== - DO NOT EDIT THIS FILE! - ===================== -->
<!-- ====================================================================== -->
<!-- -->
<!-- Any modifications will be overwritten. -->
<!-- -->
<!-- Generated by Maven Ant Plugin on 2/11/13 11:31 PM -->
<!-- See: http://maven.apache.org/plugins/maven-ant-plugin/ -->
<!-- -->
<!-- ====================================================================== -->
<project name="voms-api-java-from-maven" default="package" basedir=".">
<!-- ====================================================================== -->
<!-- Build environment properties -->
<!-- ====================================================================== -->
<property file="${user.home}/.m2/maven.properties"/>
<property file="maven-build.properties"/>
<property name="maven.build.finalName" value="voms-api-java-2.0.10"/>
<property name="maven.build.dir" value="target"/>
<property name="maven.build.outputDir" value="${maven.build.dir}/classes"/>
<property name="maven.build.srcDir.0" value="src/main/java"/>
<property name="maven.build.resourceDir.0" value="src/main/resources"/>
<property name="maven.build.testOutputDir" value="${maven.build.dir}/test-classes"/>
<property name="maven.build.testDir.0" value="src/test/java"/>
<property name="maven.build.testResourceDir.0" value="src/test/resources"/>
<property name="maven.test.reports" value="${maven.build.dir}/test-reports"/>
<property name="maven.reporting.outputDirectory" value="${maven.build.dir}/site"/>
<property name="maven.repo.local" value="${user.home}/.m2/repository"/>
<property name="maven.settings.offline" value="true"/>
<property name="maven.settings.interactiveMode" value="true"/>
<!-- ====================================================================== -->
<!-- Defining classpaths -->
<!-- ====================================================================== -->
<path id="build.classpath">
<pathelement location="${maven.repo.local}/org/bouncycastle/bcprov-jdk16/1.46/bcprov-jdk16-1.46.jar"/>
<pathelement location="${maven.repo.local}/log4j/log4j/1.2.14/log4j-1.2.14.jar"/>
<pathelement location="${maven.repo.local}/commons-cli/commons-cli/1.1/commons-cli-1.1.jar"/>
<pathelement location="${maven.repo.local}/commons-lang/commons-lang/2.3/commons-lang-2.3.jar"/>
</path>
<path id="build.test.classpath">
<pathelement location="${maven.repo.local}/junit/junit/3.8.1/junit-3.8.1.jar"/>
<pathelement location="${maven.repo.local}/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
<pathelement location="${maven.repo.local}/org/bouncycastle/bcprov-jdk16/1.46/bcprov-jdk16-1.46.jar"/>
<pathelement location="${maven.repo.local}/log4j/log4j/1.2.14/log4j-1.2.14.jar"/>
<pathelement location="${maven.repo.local}/commons-cli/commons-cli/1.1/commons-cli-1.1.jar"/>
<pathelement location="${maven.repo.local}/commons-lang/commons-lang/2.3/commons-lang-2.3.jar"/>
<pathelement location="${maven.repo.local}/commons-io/commons-io/2.0.1/commons-io-2.0.1.jar"/>
</path>
<!-- ====================================================================== -->
<!-- Cleaning up target -->
<!-- ====================================================================== -->
<target name="clean" description="Clean the output directory">
<delete dir="${maven.build.dir}"/>
</target>
<!-- ====================================================================== -->
<!-- Compilation target -->
<!-- ====================================================================== -->
<target name="compile" depends="get-deps" description="Compile the code">
<mkdir dir="${maven.build.outputDir}"/>
<javac destdir="${maven.build.outputDir}"
nowarn="false"
debug="true"
optimize="false"
deprecation="true"
target="1.5"
verbose="false"
fork="false"
source="1.5">
<src>
<pathelement location="${maven.build.srcDir.0}"/>
</src>
<classpath refid="build.classpath"/>
</javac>
</target>
<!-- ====================================================================== -->
<!-- Test-compilation target -->
<!-- ====================================================================== -->
<target name="compile-tests"
depends="compile"
description="Compile the test code"
unless="maven.test.skip">
<mkdir dir="${maven.build.testOutputDir}"/>
<javac destdir="${maven.build.testOutputDir}"
nowarn="false"
debug="true"
optimize="false"
deprecation="true"
target="1.5"
verbose="false"
fork="false"
source="1.5">
<src>
<pathelement location="${maven.build.testDir.0}"/>
</src>
<classpath>
<path refid="build.test.classpath"/>
<pathelement location="${maven.build.outputDir}"/>
</classpath>
</javac>
<copy todir="${maven.build.testOutputDir}">
<fileset dir="${maven.build.testResourceDir.0}"/>
</copy>
</target>
<!-- ====================================================================== -->
<!-- Run all tests -->
<!-- ====================================================================== -->
<target name="test"
depends="compile-tests, junit-missing"
unless="junit.skipped"
description="Run the test cases">
<mkdir dir="${maven.test.reports}"/>
<junit printSummary="yes" haltonerror="true" haltonfailure="true" fork="true" dir=".">
<sysproperty key="basedir" value="."/>
<formatter type="xml"/>
<formatter type="plain" usefile="false"/>
<classpath>
<path refid="build.test.classpath"/>
<pathelement location="${maven.build.outputDir}"/>
<pathelement location="${maven.build.testOutputDir}"/>
</classpath>
<batchtest todir="${maven.test.reports}" unless="test">
<fileset dir="${maven.build.testDir.0}">
<include name="**/Test*.java"/>
<include name="**/*Test.java"/>
<include name="**/*TestCase.java"/>
<exclude name="**/TestFixture.java"/>
<exclude name="**/LoadTest.java"/>
<exclude name="**/TestCerts.java"/>
<exclude name="**/TestCRL.java"/>
</fileset>
</batchtest>
<batchtest todir="${maven.test.reports}" if="test">
<fileset dir="${maven.build.testDir.0}">
<include name="**/${test}.java"/>
</fileset>
</batchtest>
</junit>
</target>
<target name="test-junit-present">
<available classname="junit.framework.Test" property="junit.present"/>
</target>
<target name="test-junit-status"
depends="test-junit-present">
<condition property="junit.missing">
<and>
<isfalse value="${junit.present}"/>
<isfalse value="${maven.test.skip}"/>
</and>
</condition>
<condition property="junit.skipped">
<or>
<isfalse value="${junit.present}"/>
<istrue value="${maven.test.skip}"/>
</or>
</condition>
</target>
<target name="junit-missing"
depends="test-junit-status"
if="junit.missing">
<echo>=================================== WARNING ===================================</echo>
<echo> JUnit is not present in your $ANT_HOME/lib directory. Tests not executed.</echo>
<echo>===============================================================================</echo>
</target>
<!-- ====================================================================== -->
<!-- Javadoc target -->
<!-- ====================================================================== -->
<target name="javadoc" description="Generates the Javadoc of the application">
<javadoc sourcepath="${maven.build.srcDir.0}"
packagenames="*"
destdir="${maven.reporting.outputDirectory}/apidocs"
access="protected"
old="false"
verbose="false"
version="true"
use="true"
author="true"
splitindex="false"
nodeprecated="false"
nodeprecatedlist="false"
notree="false"
noindex="false"
nohelp="false"
nonavbar="false"
serialwarn="false"
charset="ISO-8859-1"
linksource="false"
breakiterator="false"/>
</target>
<!-- ====================================================================== -->
<!-- Package target -->
<!-- ====================================================================== -->
<target name="package" depends="compile,test" description="Package the application">
<jar jarfile="${maven.build.dir}/${maven.build.finalName}.jar"
compress="true"
index="false"
basedir="${maven.build.outputDir}"
excludes="**/package.html"/>
</target>
<!-- ====================================================================== -->
<!-- A dummy target for the package named after the type it creates -->
<!-- ====================================================================== -->
<target name="jar" depends="package" description="Builds the jar for the application"/>
<!-- ====================================================================== -->
<!-- Download dependencies target -->
<!-- ====================================================================== -->
<target name="test-offline">
<condition property="maven.mode.offline">
<equals arg1="${maven.settings.offline}" arg2="true"/>
</condition>
</target>
<target name="get-deps"
depends="test-offline"
description="Download all dependencies"
unless="maven.mode.offline">
<mkdir dir="${maven.repo.local}"/>
<mkdir dir="${maven.repo.local}/junit/junit/3.8.1"/>
<get src="http://repo.maven.apache.org/maven2/junit/junit/3.8.1/junit-3.8.1.jar"
dest="${maven.repo.local}/junit/junit/3.8.1/junit-3.8.1.jar"
usetimestamp="false"
ignoreerrors="true"/>
<mkdir dir="${maven.repo.local}/org/hamcrest/hamcrest-core/1.1"/>
<get src="http://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"
dest="${maven.repo.local}/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"
usetimestamp="false"
ignoreerrors="true"/>
<mkdir dir="${maven.repo.local}/org/bouncycastle/bcprov-jdk16/1.46"/>
<get src="http://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk16/1.46/bcprov-jdk16-1.46.jar"
dest="${maven.repo.local}/org/bouncycastle/bcprov-jdk16/1.46/bcprov-jdk16-1.46.jar"
usetimestamp="false"
ignoreerrors="true"/>
<mkdir dir="${maven.repo.local}/log4j/log4j/1.2.14"/>
<get src="http://repo.maven.apache.org/maven2/log4j/log4j/1.2.14/log4j-1.2.14.jar"
dest="${maven.repo.local}/log4j/log4j/1.2.14/log4j-1.2.14.jar"
usetimestamp="false"
ignoreerrors="true"/>
<mkdir dir="${maven.repo.local}/commons-cli/commons-cli/1.1"/>
<get src="http://repo.maven.apache.org/maven2/commons-cli/commons-cli/1.1/commons-cli-1.1.jar"
dest="${maven.repo.local}/commons-cli/commons-cli/1.1/commons-cli-1.1.jar"
usetimestamp="false"
ignoreerrors="true"/>
<mkdir dir="${maven.repo.local}/commons-lang/commons-lang/2.3"/>
<get src="http://repo.maven.apache.org/maven2/commons-lang/commons-lang/2.3/commons-lang-2.3.jar"
dest="${maven.repo.local}/commons-lang/commons-lang/2.3/commons-lang-2.3.jar"
usetimestamp="false"
ignoreerrors="true"/>
<mkdir dir="${maven.repo.local}/commons-io/commons-io/2.0.1"/>
<get src="http://repo.maven.apache.org/maven2/commons-io/commons-io/2.0.1/commons-io-2.0.1.jar"
dest="${maven.repo.local}/commons-io/commons-io/2.0.1/commons-io-2.0.1.jar"
usetimestamp="false"
ignoreerrors="true"/>
</target>
</project>

View file

@ -1 +1 @@
c2b017434cfba3e31b88b28920695cd4 2_0_10.tar.gz
0d9479338b699ee3779ac811bd30e20f 3_0_2.tar.gz

337
voms-api-java-bc147.patch Normal file
View file

@ -0,0 +1,337 @@
diff -ur voms-api-java-3_0_2.orig/pom.xml voms-api-java-3_0_2/pom.xml
--- voms-api-java-3_0_2.orig/pom.xml 2013-10-17 16:29:07.000000000 +0200
+++ voms-api-java-3_0_2/pom.xml 2014-03-08 09:57:54.689276148 +0100
@@ -37,7 +37,7 @@
<assembly.javadoc.dir>/usr/share/javadoc/${project.name}</assembly.javadoc.dir>
<junitVersion>4.10</junitVersion>
<canlVersion>1.3.0</canlVersion>
- <bcVersion>1.46</bcVersion>
+ <bcVersion>1.47</bcVersion>
<licensePluginVersion>1.9.0</licensePluginVersion>
<releasePluginVersion>2.2.2</releasePluginVersion>
<coberturaPluginVersion>2.5.2</coberturaPluginVersion>
@@ -189,7 +189,7 @@
<dependency>
<groupId>org.bouncycastle</groupId>
- <artifactId>bcmail-jdk16</artifactId>
+ <artifactId>bcpkix-jdk15on</artifactId>
<version>${bcVersion}</version>
</dependency>
diff -ur voms-api-java-3_0_2.orig/src/main/java/org/italiangrid/voms/ac/impl/DefaultVOMSValidationStrategy.java voms-api-java-3_0_2/src/main/java/org/italiangrid/voms/ac/impl/DefaultVOMSValidationStrategy.java
--- voms-api-java-3_0_2.orig/src/main/java/org/italiangrid/voms/ac/impl/DefaultVOMSValidationStrategy.java 2013-10-17 16:29:07.000000000 +0200
+++ voms-api-java-3_0_2/src/main/java/org/italiangrid/voms/ac/impl/DefaultVOMSValidationStrategy.java 2014-03-08 09:57:16.678003546 +0100
@@ -39,7 +39,7 @@
import javax.security.auth.x500.X500Principal;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
-import org.bouncycastle.asn1.x509.X509Extension;
+import org.bouncycastle.asn1.x509.Extension;
import org.bouncycastle.cert.X509CertificateHolder;
import org.bouncycastle.cert.jcajce.JcaX509CertificateHolder;
import org.bouncycastle.operator.ContentVerifierProvider;
@@ -215,7 +215,7 @@
private boolean checkNoRevAvailExtension(VOMSAttribute attributes, List<VOMSValidationErrorMessage> validationErrors){
- X509Extension noRevAvail = attributes.getVOMSAC().getExtension(X509Extension.noRevAvail);
+ Extension noRevAvail = attributes.getVOMSAC().getExtension(Extension.noRevAvail);
if (noRevAvail != null && noRevAvail.isCritical()){
validationErrors.add(newErrorMessage(other, "NoRevAvail AC extension cannot be critical!"));
return false;
@@ -225,7 +225,7 @@
private boolean checkAuthorityKeyIdentifierExtension(VOMSAttribute attributes, List<VOMSValidationErrorMessage> validationErrors){
- X509Extension authKeyId = attributes.getVOMSAC().getExtension(X509Extension.authorityKeyIdentifier);
+ Extension authKeyId = attributes.getVOMSAC().getExtension(Extension.authorityKeyIdentifier);
if (authKeyId != null && authKeyId.isCritical()){
validationErrors.add(newErrorMessage(other, "AuthorityKeyIdentifier AC extension cannot be critical!"));
return false;
diff -ur voms-api-java-3_0_2.orig/src/main/java/org/italiangrid/voms/asn1/VOMSACGenerator.java voms-api-java-3_0_2/src/main/java/org/italiangrid/voms/asn1/VOMSACGenerator.java
--- voms-api-java-3_0_2.orig/src/main/java/org/italiangrid/voms/asn1/VOMSACGenerator.java 2013-10-17 16:29:07.000000000 +0200
+++ voms-api-java-3_0_2/src/main/java/org/italiangrid/voms/asn1/VOMSACGenerator.java 2014-03-08 09:57:16.678003546 +0100
@@ -30,20 +30,21 @@
import org.bouncycastle.asn1.ASN1Encodable;
import org.bouncycastle.asn1.ASN1EncodableVector;
import org.bouncycastle.asn1.ASN1InputStream;
+import org.bouncycastle.asn1.ASN1Object;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
-import org.bouncycastle.asn1.DEREncodable;
+import org.bouncycastle.asn1.ASN1Primitive;
import org.bouncycastle.asn1.DERNull;
-import org.bouncycastle.asn1.DERObject;
import org.bouncycastle.asn1.DEROctetString;
import org.bouncycastle.asn1.DERSequence;
import org.bouncycastle.asn1.DERTaggedObject;
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
import org.bouncycastle.asn1.x509.AuthorityKeyIdentifier;
+import org.bouncycastle.asn1.x509.Extension;
import org.bouncycastle.asn1.x509.GeneralName;
import org.bouncycastle.asn1.x509.GeneralNames;
-import org.bouncycastle.asn1.x509.X509Extension;
import org.bouncycastle.cert.AttributeCertificateHolder;
import org.bouncycastle.cert.AttributeCertificateIssuer;
+import org.bouncycastle.cert.CertIOException;
import org.bouncycastle.cert.X509AttributeCertificateHolder;
import org.bouncycastle.cert.X509v2AttributeCertificateBuilder;
import org.bouncycastle.cert.jcajce.JcaX509CertificateHolder;
@@ -160,7 +161,7 @@
return String.format("%s://%s:%d", voName, host, port);
}
- private ASN1Encodable buildACCertsExtensionContent(
+ private ASN1Object buildACCertsExtensionContent(
EnumSet<ACGenerationProperties> properties) {
ASN1EncodableVector issuerCertsContainer = new ASN1EncodableVector();
@@ -169,7 +170,7 @@
issuerCertsContainer.add(new DERSequence());
else
issuerCertsContainer.add(new DERSequence(
- getCertAsDEREncodable(aaCredential.getCertificate())));
+ getCertAsASN1Encodable(aaCredential.getCertificate())));
return new DERSequence(issuerCertsContainer);
}
@@ -177,7 +178,7 @@
private AuthorityKeyIdentifier buildAuthorityKeyIdentifier() {
byte[] authKeyId = aaCredential.getCertificate().getExtensionValue(
- X509Extension.authorityKeyIdentifier.toString());
+ Extension.authorityKeyIdentifier.toString());
if (authKeyId != null) {
return new AuthorityKeyIdentifier(authKeyId);
@@ -186,7 +187,7 @@
return null;
}
- private ASN1Encodable buildFQANsAttributeContent(List<String> fqans,
+ private ASN1Object buildFQANsAttributeContent(List<String> fqans,
GeneralName policyAuthorityInfo) {
ASN1EncodableVector container = new ASN1EncodableVector();
@@ -204,7 +205,7 @@
return new DERSequence(container);
}
- private ASN1Encodable buildGAExtensionContent(
+ private ASN1Object buildGAExtensionContent(
EnumSet<ACGenerationProperties> properties, List<VOMSGenericAttribute> gas,
GeneralName policyAuthorityInfo) {
@@ -265,7 +266,7 @@
}
- private ASN1Encodable buildTargetsExtensionContent(
+ private ASN1Object buildTargetsExtensionContent(
EnumSet<ACGenerationProperties> properties, List<String> targets) {
ASN1EncodableVector targetSeq = new ASN1EncodableVector();
@@ -329,6 +330,8 @@
GeneralName policyAuthorityInfo = buildPolicyAuthorityInfo(voName, host,
port);
+ try {
+
builder.addAttribute(VOMS_FQANS_OID,
buildFQANsAttributeContent(fqans, policyAuthorityInfo));
@@ -341,7 +344,7 @@
policyAuthorityInfo));
if (targets != null && !targets.isEmpty())
- builder.addExtension(X509Extension.targetInformation, true,
+ builder.addExtension(Extension.targetInformation, true,
buildTargetsExtensionContent(generationProperties, targets));
if (!generationProperties
@@ -365,16 +368,20 @@
.contains(ACGenerationProperties.INCLUDE_CRITICAL_AKID_EXTENSION))
akidIsCritical = true;
- builder.addExtension(X509Extension.noRevAvail,
+ builder.addExtension(Extension.noRevAvail,
noRevAvailIsCritical,
new DERNull());
AuthorityKeyIdentifier akid = buildAuthorityKeyIdentifier();
- builder.addExtension(X509Extension.authorityKeyIdentifier,
+ builder.addExtension(Extension.authorityKeyIdentifier,
akidIsCritical,
akid != null ? akid : new DERNull());
+ } catch (CertIOException e) {
+ throw new VOMSError(e.getMessage(), e);
+ }
+
return builder.build(getSigner(generationProperties));
}
@@ -395,14 +402,14 @@
return ext;
}
- private DEREncodable getCertAsDEREncodable(X509Certificate cert) {
+ private ASN1Encodable getCertAsASN1Encodable(X509Certificate cert) {
try {
byte[] certBytes = cert.getEncoded();
ByteArrayInputStream bais = new ByteArrayInputStream(certBytes);
ASN1InputStream is = new ASN1InputStream(bais);
- DERObject derCert = is.readObject();
+ ASN1Primitive derCert = is.readObject();
is.close();
return derCert;
diff -ur voms-api-java-3_0_2.orig/src/main/java/org/italiangrid/voms/asn1/VOMSACUtils.java voms-api-java-3_0_2/src/main/java/org/italiangrid/voms/asn1/VOMSACUtils.java
--- voms-api-java-3_0_2.orig/src/main/java/org/italiangrid/voms/asn1/VOMSACUtils.java 2013-10-17 16:29:07.000000000 +0200
+++ voms-api-java-3_0_2/src/main/java/org/italiangrid/voms/asn1/VOMSACUtils.java 2014-03-08 11:07:33.203630648 +0100
@@ -31,21 +31,21 @@
import org.bouncycastle.asn1.ASN1InputStream;
import org.bouncycastle.asn1.ASN1OctetString;
+import org.bouncycastle.asn1.ASN1Primitive;
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.ASN1TaggedObject;
import org.bouncycastle.asn1.DERIA5String;
-import org.bouncycastle.asn1.DERObject;
import org.bouncycastle.asn1.DEROctetString;
-import org.bouncycastle.asn1.DERSequence;
+import org.bouncycastle.asn1.DLSequence;
import org.bouncycastle.asn1.x509.Attribute;
import org.bouncycastle.asn1.x509.AttributeCertificate;
+import org.bouncycastle.asn1.x509.Certificate;
+import org.bouncycastle.asn1.x509.Extension;
import org.bouncycastle.asn1.x509.GeneralName;
import org.bouncycastle.asn1.x509.IetfAttrSyntax;
import org.bouncycastle.asn1.x509.Target;
import org.bouncycastle.asn1.x509.TargetInformation;
import org.bouncycastle.asn1.x509.Targets;
-import org.bouncycastle.asn1.x509.X509CertificateStructure;
-import org.bouncycastle.asn1.x509.X509Extension;
import org.bouncycastle.cert.X509AttributeCertificateHolder;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.jce.provider.X509CertificateObject;
@@ -159,7 +159,7 @@
private static List<String> deserializeACTargets(X509AttributeCertificateHolder ac){
List<String> targets = new ArrayList<String>();
- X509Extension targetExtension = ac.getExtension(X509Extension.targetInformation);
+ Extension targetExtension = ac.getExtension(Extension.targetInformation);
if (targetExtension == null)
return targets;
@@ -171,7 +171,7 @@
// The deserialization has to be done by hand since it seems VOMS
// does not correctly encode the ACTargets extension...
- ASN1Sequence targetSequence = (ASN1Sequence) asn1TargetContainer.getDERObject();
+ ASN1Sequence targetSequence = (ASN1Sequence) asn1TargetContainer.toASN1Primitive();
Target[] asn1Targets = new Target[targetSequence.size()];
int count = 0;
@@ -256,8 +256,8 @@
Attribute[] asn1Attrs = acHolder.getAttributes(VOMS_FQANS_OID);
for (Attribute a: asn1Attrs){
- DERObject theVOMSDerObject = a.getAttributeValues()[0].getDERObject();
- IetfAttrSyntax attrSyntax = new IetfAttrSyntax(ASN1Sequence.getInstance(theVOMSDerObject));
+ ASN1Primitive theVOMSDerObject = a.getAttributeValues()[0].toASN1Primitive();
+ IetfAttrSyntax attrSyntax = IetfAttrSyntax.getInstance(ASN1Sequence.getInstance(theVOMSDerObject));
String policyAuthority = policyAuthoritySanityChecks(attrSyntax);
@@ -306,7 +306,7 @@
List<VOMSGenericAttribute> gas = new ArrayList<VOMSGenericAttribute>();
- X509Extension gasExtension = ac.getExtension(VOMS_GENERIC_ATTRS_OID);
+ Extension gasExtension = ac.getExtension(VOMS_GENERIC_ATTRS_OID);
if (gasExtension == null)
return gas;
@@ -364,7 +364,7 @@
private static X509Certificate[] deserializeACCerts(X509AttributeCertificateHolder ac){
List<X509Certificate> certs = new ArrayList<X509Certificate>();
- X509Extension e = ac.getExtension(VOMS_CERTS_OID);
+ Extension e = ac.getExtension(VOMS_CERTS_OID);
if (e == null)
return null;
@@ -377,7 +377,7 @@
certSeq = (ASN1Sequence)certSeq.getObjectAt(0);
@SuppressWarnings("unchecked")
- Enumeration<DERSequence> encodedCerts = certSeq.getObjects();
+ Enumeration<DLSequence> encodedCerts = certSeq.getObjects();
CertificateFactory cf = null;
@@ -389,14 +389,14 @@
while (encodedCerts.hasMoreElements()){
- DERSequence s = encodedCerts.nextElement();
+ DLSequence s = encodedCerts.nextElement();
X509CertificateObject certObj = null;
byte[] certData = null;
X509Certificate theCert = null;
try {
- certObj = new X509CertificateObject(X509CertificateStructure.getInstance(ASN1Sequence.getInstance(s)));
+ certObj = new X509CertificateObject(Certificate.getInstance(ASN1Sequence.getInstance(s)));
certData = certObj.getEncoded();
theCert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(certData));
diff -ur voms-api-java-3_0_2.orig/src/main/java/org/italiangrid/voms/asn1/VOMSConstants.java voms-api-java-3_0_2/src/main/java/org/italiangrid/voms/asn1/VOMSConstants.java
--- voms-api-java-3_0_2.orig/src/main/java/org/italiangrid/voms/asn1/VOMSConstants.java 2013-10-17 16:29:07.000000000 +0200
+++ voms-api-java-3_0_2/src/main/java/org/italiangrid/voms/asn1/VOMSConstants.java 2014-03-08 09:57:16.678003546 +0100
@@ -20,7 +20,7 @@
import java.util.Set;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
-import org.bouncycastle.asn1.x509.X509Extension;
+import org.bouncycastle.asn1.x509.Extension;
/**
* A set of useful constants for ASN.1 parsing of VOMS attributes.
@@ -54,8 +54,8 @@
VOMS_FQANS_OID,
VOMS_CERTS_OID,
VOMS_GENERIC_ATTRS_OID,
- X509Extension.targetInformation,
- X509Extension.noRevAvail,
- X509Extension.authorityKeyIdentifier));
+ Extension.targetInformation,
+ Extension.noRevAvail,
+ Extension.authorityKeyIdentifier));
}
diff -ur voms-api-java-3_0_2.orig/src/test/java/org/italiangrid/voms/test/ac/TestNoExtensionValidation.java voms-api-java-3_0_2/src/test/java/org/italiangrid/voms/test/ac/TestNoExtensionValidation.java
--- voms-api-java-3_0_2.orig/src/test/java/org/italiangrid/voms/test/ac/TestNoExtensionValidation.java 2013-10-17 16:29:07.000000000 +0200
+++ voms-api-java-3_0_2/src/test/java/org/italiangrid/voms/test/ac/TestNoExtensionValidation.java 2014-03-08 09:57:16.679003553 +0100
@@ -15,6 +15,7 @@
*/
package org.italiangrid.voms.test.ac;
+import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SignatureException;
@@ -52,7 +53,7 @@
}
@Test
- public void testNoExtensionValidation() throws InvalidKeyException, CertificateParsingException, SignatureException, NoSuchAlgorithmException {
+ public void testNoExtensionValidation() throws InvalidKeyException, CertificateParsingException, SignatureException, NoSuchAlgorithmException, IOException {
ProxyCertificateOptions options = new ProxyCertificateOptions(cred.getCertificateChain());
options.setType(ProxyType.LEGACY);

View file

@ -1,12 +0,0 @@
diff -ur voms-api-java-2_0_10.orig/pom.xml voms-api-java-2_0_10/pom.xml
--- voms-api-java-2_0_10.orig/pom.xml 2013-01-11 16:15:57.000000000 +0100
+++ voms-api-java-2_0_10/pom.xml 2013-02-11 23:26:58.928257785 +0100
@@ -17,7 +17,7 @@
<assembly.doc.dir>/usr/share/doc/${project.name}-${project.version}</assembly.doc.dir>
<assembly.javadoc.dir>/usr/share/javadoc/${project.name}</assembly.javadoc.dir>
<bouncycastle.version>1.45</bouncycastle.version>
- <excludedTests>**/LoadTest.java</excludedTests>
+ <excludedTests>**/LoadTest.java,**/TestCerts.java,**/TestCRL.java</excludedTests>
</properties>
<profiles>

View file

@ -1,83 +1,37 @@
# Use maven if it is available - otherwise fall back to ant
%if %{?fedora}%{!?fedora:0} >= 15 || %{?rhel}%{!?rhel:0} >= 7
%global maven 1
%else
%global maven 0
%endif
Name: voms-api-java
Version: 2.0.10
Version: 3.0.2
%global tagver %(tr . _ <<< %{version})
Release: 4%{?dist}
Release: 1%{?dist}
Summary: Virtual Organization Membership Service Java API
Group: Development/Libraries
License: ASL 2.0
URL: https://wiki.italiangrid.it/VOMS
Source0: https://github.com/italiangrid/%{name}/archive/%{tagver}.tar.gz
# These are build instructions for ant generated from the maven
# build instrutions using the maven ant plugin.
# These are used for building on EPEL since there is no maven
# available there.
Source1: build.xml
Source2: maven-build.xml
Source3: maven-build.properties
Patch0: %{name}-test.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Patch0: %{name}-bc147.patch
BuildArch: noarch
# There is no bouncycastle in EPEL 5 ppc and EPEL 6 ppc64
%if %{?rhel}%{!?rhel:0} == 5
ExcludeArch: ppc
%endif
%if %{?rhel}%{!?rhel:0} == 6
ExcludeArch: ppc64
%endif
Requires: java
Requires: jpackage-utils
Requires: bouncycastle >= 1.39
%if %{?fedora}%{!?fedora:0} >= 15 || %{?rhel}%{!?rhel:0} >= 7
Requires: apache-commons-cli
Requires: apache-commons-lang
%else
Requires: jakarta-commons-cli
Requires: jakarta-commons-lang
%endif
Requires: log4j
Provides: vomsjapi = %{version}-%{release}
Obsoletes: vomsjapi < 2.0.7
BuildRequires: java-devel >= 1:1.6.0
BuildRequires: jpackage-utils
%if %maven
BuildRequires: maven-local
BuildRequires: maven-compiler-plugin
BuildRequires: maven-install-plugin
BuildRequires: maven-jar-plugin
BuildRequires: maven-javadoc-plugin
BuildRequires: maven-release-plugin
BuildRequires: maven-resources-plugin
BuildRequires: maven-surefire-plugin
BuildRequires: maven-surefire-provider-junit
BuildRequires: mvn(org.apache.maven.plugins:maven-assembly-plugin)
BuildRequires: mvn(org.apache.maven.plugins:maven-compiler-plugin)
BuildRequires: mvn(org.apache.maven.plugins:maven-javadoc-plugin)
BuildRequires: mvn(org.apache.maven.plugins:maven-release-plugin)
BuildRequires: mvn(eu.eu-emi.security:canl)
%if %{?fedora}%{!?fedora:0} >= 21 || %{?rhel}%{!?rhel:0} >= 7
BuildRequires: mvn(org.bouncycastle:bcpkix-jdk15on)
%else
BuildRequires: ant
BuildRequires: ant-junit
BuildRequires: mvn(org.bouncycastle:bcmail-jdk16)
%endif
BuildRequires: bouncycastle >= 1.39
%if %{?fedora}%{!?fedora:0} >= 15 || %{?rhel}%{!?rhel:0} >= 7
BuildRequires: apache-commons-cli
BuildRequires: apache-commons-io
BuildRequires: apache-commons-lang
%else
BuildRequires: jakarta-commons-cli
BuildRequires: jakarta-commons-io
BuildRequires: jakarta-commons-lang
BuildRequires: mvn(junit:junit)
%if %{?fedora}%{!?fedora:0}
# Missing stuff in EPEL (mostly test frameworks)
BuildRequires: mvn(com.mycila.maven-license-plugin:maven-license-plugin)
BuildRequires: mvn(org.codehaus.mojo:cobertura-maven-plugin)
BuildRequires: mvn(org.mockito:mockito-core)
BuildRequires: mvn(net.jcip:jcip-annotations)
%endif
BuildRequires: log4j
%description
The Virtual Organization Membership Service (VOMS) is an attribute authority
@ -92,8 +46,6 @@ This package provides a java client API for VOMS.
%package javadoc
Summary: Virtual Organization Membership Service Java API Documentation
Group: Documentation
Requires: jpackage-utils
Requires: %{name} = %{version}-%{release}
Provides: vomsjapi-javadoc = %{version}-%{release}
Obsoletes: vomsjapi-javadoc < 2.0.7
@ -102,58 +54,45 @@ Virtual Organization Membership Service (VOMS) Java API Documentation.
%prep
%setup -q -n %{name}-%{tagver}
%patch0 -p1
install -m 644 %SOURCE1 .
install -m 644 %SOURCE2 .
install -m 644 %SOURCE3 .
sed -e s/bcprov-ext-jdk16/bcprov-jdk16/ -i pom.xml
%if %{?fedora}%{!?fedora:0} >= 21 || %{?rhel}%{!?rhel:0} >= 7
%patch0 -p1
%endif
%if %{?fedora}%{!?fedora:0}
%pom_xpath_inject "pom:project/pom:build/pom:plugins/pom:plugin[pom:groupId='com.mycila.maven-license-plugin']/pom:configuration/pom:excludes" "<exclude>.xmvn/**</exclude>"
%else
# Missing stuff in EPEL (mostly test frameworks)
%pom_remove_plugin com.mycila.maven-license-plugin:maven-license-plugin
%pom_remove_plugin org.codehaus.mojo:cobertura-maven-plugin
%pom_remove_dep net.jcip:jcip-annotations
%pom_remove_dep org.mockito:mockito-core
%endif
%build
%if %{maven}
mvn-rpmbuild -Dbouncycastle.version=1.46 install javadoc:aggregate
%if %{?fedora}%{!?fedora:0}
%mvn_build
%else
export CLASSPATH=$(build-classpath bcprov log4j commons-cli commons-io commons-lang)
ant -Dbuild.sysclasspath=last package javadoc
# Can not run tests in EPEL due to missing test frameworks
%mvn_build -f
%endif
%install
mkdir -p %{buildroot}%{_javadir}
install -m 644 target/%{name}-%{version}.jar \
%{buildroot}%{_javadir}/%{name}.jar
ln -s %{name}.jar %{buildroot}%{_javadir}/vomsjapi.jar
%mvn_install -J target/site/javadoc/apidocs
mkdir -p %{buildroot}%{_javadocdir}/%{name}
%if %{maven}
cp -pr target/site/javadoc/apidocs %{buildroot}%{_javadocdir}/%{name}
%else
cp -pr target/site/apidocs %{buildroot}%{_javadocdir}/%{name}
%endif
%if %{maven}
mkdir -p %{buildroot}%{_mavenpomdir}
install -m 644 pom.xml %{buildroot}%{_mavenpomdir}/JPP-%{name}.pom
%add_maven_depmap JPP-%{name}.pom %{name}.jar -a org.glite:vomsjapi
%endif
%clean
rm -rf %{buildroot}
%files
%defattr(-,root,root,-)
%{_javadir}/%{name}.jar
%{_javadir}/vomsjapi.jar
%if %{maven}
%{_mavenpomdir}/JPP-%{name}.pom
%{_mavendepmapfragdir}/%{name}
%endif
%files -f .mfiles
%dir %{_javadir}/%{name}
%doc AUTHORS LICENSE README.md
%files javadoc
%defattr(-,root,root,-)
%doc %{_javadocdir}/%{name}
%files javadoc -f .mfiles-javadoc
%doc LICENSE
%changelog
* Sun Mar 09 2014 Mattias Ellert <mattias.ellert@fysast.uu.se> - 3.0.2-1
- Update to version 3
- Apply patch for bouncycastle 1.47+ on Fedora 21+ and EPEL 7+
- Convert to using xmvn
* Mon Oct 14 2013 Mattias Ellert <mattias.ellert@fysast.uu.se> - 2.0.10-4
- Disable CRL tests (the CRL in the sources has expired)