You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juddi.apache.org by ks...@apache.org on 2012/11/16 20:46:33 UTC
svn commit: r1410551 [3/3] - in /juddi/trunk: docs/db/ddl/
docs/devguide/en-US/extras/ docs/userguide/ docs/userguide/en-US/extras/
juddi-core/src/main/java/org/apache/juddi/mapping/
juddi-core/src/main/java/org/apache/juddi/model/ juddi-core/src/main/...
Added: juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/SignatureTransform.java
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/SignatureTransform.java?rev=1410551&view=auto
==============================================================================
--- juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/SignatureTransform.java (added)
+++ juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/SignatureTransform.java Fri Nov 16 19:46:28 2012
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2012 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.juddi.model;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.OrderBy;
+import javax.persistence.Table;
+
+/**
+ *
+ */
+@Entity
+@Table(name="j3_signature_transform")
+public class SignatureTransform implements java.io.Serializable {
+ private static final long serialVersionUID = -3233157941119408702L;
+
+ private Long id;
+ private Reference reference;
+ private String transform;
+ private List<SignatureTransformDataValue> signatureTransformDataValue = new ArrayList<SignatureTransformDataValue>(0);
+
+ @Id
+ @GeneratedValue(strategy=GenerationType.AUTO)
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ @ManyToOne(fetch = FetchType.LAZY)
+ @JoinColumn(name = "reference_key", nullable = false)
+ public Reference getReference() {
+ return reference;
+ }
+
+ public void setReference(Reference reference) {
+ this.reference = reference;
+ }
+
+ @Column(name="transform")
+ public String getTransform() {
+ return transform;
+ }
+
+ public void setTransform(String transform) {
+ this.transform = transform;
+ }
+
+ @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "signatureTransform")
+ @OrderBy
+ public List<SignatureTransformDataValue> getSignatureTransformDataValue() {
+ return signatureTransformDataValue;
+ }
+
+ public void setSignatureTransformDataValue(List<SignatureTransformDataValue> signatureDataValue) {
+ this.signatureTransformDataValue = signatureDataValue;
+ }
+}
Added: juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/SignatureTransformDataValue.java
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/SignatureTransformDataValue.java?rev=1410551&view=auto
==============================================================================
--- juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/SignatureTransformDataValue.java (added)
+++ juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/SignatureTransformDataValue.java Fri Nov 16 19:46:28 2012
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2012 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.juddi.model;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.Lob;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+/**
+ *
+ */
+@Entity
+@Table(name="j3_signature_transform_data_value")
+public class SignatureTransformDataValue implements java.io.Serializable {
+ private static final long serialVersionUID = -2233157941119408702L;
+
+ private Long id;
+ private String contentType;
+ private byte[] contentBytes;
+ private SignatureTransform signatureTransform;
+
+ @Id
+ @GeneratedValue(strategy=GenerationType.AUTO)
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ @ManyToOne(fetch = FetchType.LAZY)
+ @JoinColumn(name = "signature_transform_key", nullable = false)
+ public SignatureTransform getSignatureTransform() {
+ return signatureTransform;
+ }
+
+ public void setSignatureTransform(SignatureTransform signatureTransform) {
+ this.signatureTransform = signatureTransform;
+ }
+
+ @Column(name="content_type")
+ public String getContentType() {
+ return contentType;
+ }
+
+ public void setContentType(String contentType) {
+ this.contentType = contentType;
+ }
+
+ @Lob
+ @Column(name="content_bytes")
+ public byte[] getContentBytes() {
+ return contentBytes;
+ }
+
+ public void setContentBytes(byte[] contentBytes) {
+ this.contentBytes = contentBytes;
+ }
+}
Added: juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/SignatureValue.java
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/SignatureValue.java?rev=1410551&view=auto
==============================================================================
--- juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/SignatureValue.java (added)
+++ juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/SignatureValue.java Fri Nov 16 19:46:28 2012
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2012 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.juddi.model;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+import javax.persistence.Table;
+
+/**
+ *
+ */
+@Entity
+@Table(name="j3_signature_value")
+public class SignatureValue implements java.io.Serializable {
+ private static final long serialVersionUID = -3233157941119408717L;
+
+ private Long id;
+ private byte[] value;
+ private String xmlID;
+
+ @Id
+ @GeneratedValue(strategy=GenerationType.AUTO)
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ @Column(name="value_bytes")
+ @Lob
+ public byte[] getValue() {
+ return value;
+ }
+
+ public void setValue(byte[] value) {
+ this.value = value;
+ }
+
+ @Column(name="xml_id")
+ public String getXmlID() {
+ return xmlID;
+ }
+
+ public void setXmlID(String xmlID) {
+ this.xmlID = xmlID;
+ }
+}
Added: juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/SignedInfo.java
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/SignedInfo.java?rev=1410551&view=auto
==============================================================================
--- juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/SignedInfo.java (added)
+++ juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/SignedInfo.java Fri Nov 16 19:46:28 2012
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2012 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.juddi.model;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.OrderBy;
+import javax.persistence.Table;
+
+/**
+ *
+ */
+@Entity
+@Table(name="j3_signed_info")
+public class SignedInfo implements java.io.Serializable {
+ private static final long serialVersionUID = -2233157941119408719L;
+
+ private Long id;
+ private CanonicalizationMethod canonicalizationMethod;
+ private SignatureMethod signatureMethod;
+ private List<Reference> reference = new ArrayList<Reference>(0);
+ private String xmlID;
+
+ @Id
+ @GeneratedValue(strategy=GenerationType.AUTO)
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ @ManyToOne(fetch = FetchType.LAZY, cascade=CascadeType.ALL)
+ @JoinColumn(name = "canonicalization_method", nullable = false)
+ public CanonicalizationMethod getCanonicalizationMethod() {
+ return canonicalizationMethod;
+ }
+
+ public void setCanonicalizationMethod(CanonicalizationMethod canonicalizationMethod) {
+ this.canonicalizationMethod = canonicalizationMethod;
+ }
+
+ @ManyToOne(fetch = FetchType.LAZY, cascade=CascadeType.ALL)
+ @JoinColumn(name = "signature_method", nullable = false)
+ public SignatureMethod getSignatureMethod() {
+ return signatureMethod;
+ }
+
+ public void setSignatureMethod(SignatureMethod signatureMethod) {
+ this.signatureMethod = signatureMethod;
+ }
+
+ @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "signedInfo")
+ @OrderBy
+ public List<Reference> getReference() {
+ return reference;
+ }
+
+ public void setReference(List<Reference> reference) {
+ this.reference = reference;
+ }
+
+ @Column(name="xml_id")
+ public String getXmlID() {
+ return xmlID;
+ }
+
+ public void setXmlID(String xmlID) {
+ this.xmlID = xmlID;
+ }
+}
Modified: juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/Tmodel.java
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/Tmodel.java?rev=1410551&r1=1410550&r2=1410551&view=diff
==============================================================================
--- juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/Tmodel.java (original)
+++ juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/Tmodel.java Fri Nov 16 19:46:28 2012
@@ -45,6 +45,7 @@ public class Tmodel extends UddiEntity i
private List<TmodelDescr> tmodelDescrs = new ArrayList<TmodelDescr>(0);
private List<TmodelIdentifier> tmodelIdentifiers = new ArrayList<TmodelIdentifier>(0);
private TmodelCategoryBag categoryBag;
+ private List<Signature> signatures = new ArrayList<Signature>(0);
public Tmodel() {
}
@@ -132,4 +133,13 @@ public class Tmodel extends UddiEntity i
this.categoryBag = categoryBag;
}
+ @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "tmodel")
+ @OrderBy
+ public List<Signature> getSignatures() {
+ return signatures;
+ }
+
+ public void setSignatures(List<Signature> signatures) {
+ this.signatures = signatures;
+ }
}
Modified: juddi/trunk/juddi-core/src/main/resources/persistence/openjpa-persistence.xml
URL: http://svn.apache.org/viewvc/juddi/trunk/juddi-core/src/main/resources/persistence/openjpa-persistence.xml?rev=1410551&r1=1410550&r2=1410551&view=diff
==============================================================================
--- juddi/trunk/juddi-core/src/main/resources/persistence/openjpa-persistence.xml (original)
+++ juddi/trunk/juddi-core/src/main/resources/persistence/openjpa-persistence.xml Fri Nov 16 19:46:28 2012
@@ -19,6 +19,7 @@
<class>org.apache.juddi.model.BusinessIdentifier</class>
<class>org.apache.juddi.model.BusinessName</class>
<class>org.apache.juddi.model.BusinessService</class>
+ <class>org.apache.juddi.model.CanonicalizationMethod</class>
<class>org.apache.juddi.model.CategoryBag</class>
<class>org.apache.juddi.model.Clerk</class>
<class>org.apache.juddi.model.ClientSubscriptionInfo</class>
@@ -30,7 +31,11 @@
<class>org.apache.juddi.model.InstanceDetailsDocDescr</class>
<class>org.apache.juddi.model.KeyedReference</class>
<class>org.apache.juddi.model.KeyedReferenceGroup</class>
+ <class>org.apache.juddi.model.KeyDataValue</class>
+ <class>org.apache.juddi.model.KeyInfo</class>
<class>org.apache.juddi.model.Node</class>
+ <class>org.apache.juddi.model.ObjectType</class>
+ <class>org.apache.juddi.model.ObjectTypeContent</class>
<class>org.apache.juddi.model.OverviewDoc</class>
<class>org.apache.juddi.model.OverviewDocDescr</class>
<class>org.apache.juddi.model.PersonName</class>
@@ -38,11 +43,18 @@
<class>org.apache.juddi.model.Publisher</class>
<class>org.apache.juddi.model.PublisherAssertion</class>
<class>org.apache.juddi.model.PublisherAssertionId</class>
+ <class>org.apache.juddi.model.Reference</class>
<class>org.apache.juddi.model.ServiceCategoryBag</class>
<class>org.apache.juddi.model.ServiceDescr</class>
<class>org.apache.juddi.model.ServiceName</class>
<class>org.apache.juddi.model.ServiceProjection</class>
<class>org.apache.juddi.model.ServiceProjectionId</class>
+ <class>org.apache.juddi.model.Signature</class>
+ <class>org.apache.juddi.model.SignatureMethod</class>
+ <class>org.apache.juddi.model.SignatureTransform</class>
+ <class>org.apache.juddi.model.SignatureTransformDataValue</class>
+ <class>org.apache.juddi.model.SignatureValue</class>
+ <class>org.apache.juddi.model.SignedInfo</class>
<class>org.apache.juddi.model.Subscription</class>
<class>org.apache.juddi.model.SubscriptionChunkToken</class>
<class>org.apache.juddi.model.SubscriptionMatch</class>
Modified: juddi/trunk/juddiv3-war/persistence/hibernate-persistence.xml
URL: http://svn.apache.org/viewvc/juddi/trunk/juddiv3-war/persistence/hibernate-persistence.xml?rev=1410551&r1=1410550&r2=1410551&view=diff
==============================================================================
--- juddi/trunk/juddiv3-war/persistence/hibernate-persistence.xml (original)
+++ juddi/trunk/juddiv3-war/persistence/hibernate-persistence.xml Fri Nov 16 19:46:28 2012
@@ -19,6 +19,7 @@
<class>org.apache.juddi.model.BusinessIdentifier</class>
<class>org.apache.juddi.model.BusinessName</class>
<class>org.apache.juddi.model.BusinessService</class>
+ <class>org.apache.juddi.model.CanonicalizationMethod</class>
<class>org.apache.juddi.model.CategoryBag</class>
<class>org.apache.juddi.model.Clerk</class>
<class>org.apache.juddi.model.ClientSubscriptionInfo</class>
@@ -30,7 +31,11 @@
<class>org.apache.juddi.model.InstanceDetailsDocDescr</class>
<class>org.apache.juddi.model.KeyedReference</class>
<class>org.apache.juddi.model.KeyedReferenceGroup</class>
+ <class>org.apache.juddi.model.KeyDataValue</class>
+ <class>org.apache.juddi.model.KeyInfo</class>
<class>org.apache.juddi.model.Node</class>
+ <class>org.apache.juddi.model.ObjectType</class>
+ <class>org.apache.juddi.model.ObjectTypeContent</class>
<class>org.apache.juddi.model.OverviewDoc</class>
<class>org.apache.juddi.model.OverviewDocDescr</class>
<class>org.apache.juddi.model.PersonName</class>
@@ -38,10 +43,18 @@
<class>org.apache.juddi.model.Publisher</class>
<class>org.apache.juddi.model.PublisherAssertion</class>
<class>org.apache.juddi.model.PublisherAssertionId</class>
+ <class>org.apache.juddi.model.Reference</class>
<class>org.apache.juddi.model.ServiceCategoryBag</class>
<class>org.apache.juddi.model.ServiceDescr</class>
<class>org.apache.juddi.model.ServiceName</class>
<class>org.apache.juddi.model.ServiceProjection</class>
+ <class>org.apache.juddi.model.ServiceProjectionId</class>
+ <class>org.apache.juddi.model.Signature</class>
+ <class>org.apache.juddi.model.SignatureMethod</class>
+ <class>org.apache.juddi.model.SignatureTransform</class>
+ <class>org.apache.juddi.model.SignatureTransformDataValue</class>
+ <class>org.apache.juddi.model.SignatureValue</class>
+ <class>org.apache.juddi.model.SignedInfo</class>
<class>org.apache.juddi.model.Subscription</class>
<class>org.apache.juddi.model.SubscriptionChunkToken</class>
<class>org.apache.juddi.model.SubscriptionMatch</class>
Modified: juddi/trunk/juddiv3-war/persistence/openjpa-persistence.xml
URL: http://svn.apache.org/viewvc/juddi/trunk/juddiv3-war/persistence/openjpa-persistence.xml?rev=1410551&r1=1410550&r2=1410551&view=diff
==============================================================================
--- juddi/trunk/juddiv3-war/persistence/openjpa-persistence.xml (original)
+++ juddi/trunk/juddiv3-war/persistence/openjpa-persistence.xml Fri Nov 16 19:46:28 2012
@@ -19,6 +19,7 @@
<class>org.apache.juddi.model.BusinessIdentifier</class>
<class>org.apache.juddi.model.BusinessName</class>
<class>org.apache.juddi.model.BusinessService</class>
+ <class>org.apache.juddi.model.CanonicalizationMethod</class>
<class>org.apache.juddi.model.CategoryBag</class>
<class>org.apache.juddi.model.Clerk</class>
<class>org.apache.juddi.model.ClientSubscriptionInfo</class>
@@ -30,7 +31,11 @@
<class>org.apache.juddi.model.InstanceDetailsDocDescr</class>
<class>org.apache.juddi.model.KeyedReference</class>
<class>org.apache.juddi.model.KeyedReferenceGroup</class>
+ <class>org.apache.juddi.model.KeyDataValue</class>
+ <class>org.apache.juddi.model.KeyInfo</class>
<class>org.apache.juddi.model.Node</class>
+ <class>org.apache.juddi.model.ObjectType</class>
+ <class>org.apache.juddi.model.ObjectTypeContent</class>
<class>org.apache.juddi.model.OverviewDoc</class>
<class>org.apache.juddi.model.OverviewDocDescr</class>
<class>org.apache.juddi.model.PersonName</class>
@@ -38,11 +43,18 @@
<class>org.apache.juddi.model.Publisher</class>
<class>org.apache.juddi.model.PublisherAssertion</class>
<class>org.apache.juddi.model.PublisherAssertionId</class>
+ <class>org.apache.juddi.model.Reference</class>
<class>org.apache.juddi.model.ServiceCategoryBag</class>
<class>org.apache.juddi.model.ServiceDescr</class>
<class>org.apache.juddi.model.ServiceName</class>
<class>org.apache.juddi.model.ServiceProjection</class>
<class>org.apache.juddi.model.ServiceProjectionId</class>
+ <class>org.apache.juddi.model.Signature</class>
+ <class>org.apache.juddi.model.SignatureMethod</class>
+ <class>org.apache.juddi.model.SignatureTransform</class>
+ <class>org.apache.juddi.model.SignatureTransformDataValue</class>
+ <class>org.apache.juddi.model.SignatureValue</class>
+ <class>org.apache.juddi.model.SignedInfo</class>
<class>org.apache.juddi.model.Subscription</class>
<class>org.apache.juddi.model.SubscriptionChunkToken</class>
<class>org.apache.juddi.model.SubscriptionMatch</class>
Modified: juddi/trunk/uddi-tck-base/pom.xml
URL: http://svn.apache.org/viewvc/juddi/trunk/uddi-tck-base/pom.xml?rev=1410551&r1=1410550&r2=1410551&view=diff
==============================================================================
--- juddi/trunk/uddi-tck-base/pom.xml (original)
+++ juddi/trunk/uddi-tck-base/pom.xml Fri Nov 16 19:46:28 2012
@@ -35,5 +35,11 @@
<artifactId>junit</artifactId>
<version>4.5</version>
</dependency>
+ <dependency>
+ <groupId>xmlunit</groupId>
+ <artifactId>xmlunit</artifactId>
+ <version>1.3</version>
+ </dependency>
+
</dependencies>
</project>
\ No newline at end of file
Modified: juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckBusiness.java
URL: http://svn.apache.org/viewvc/juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckBusiness.java?rev=1410551&r1=1410550&r2=1410551&view=diff
==============================================================================
--- juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckBusiness.java (original)
+++ juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckBusiness.java Fri Nov 16 19:46:28 2012
@@ -14,11 +14,23 @@
*/
package org.apache.juddi.v3.tck;
+import java.io.File;
+import java.io.FileInputStream;
+import java.net.URL;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertTrue;
import java.rmi.RemoteException;
+import java.security.KeyStore;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.cert.Certificate;
+import java.util.Arrays;
import java.util.List;
+import javax.xml.bind.JAXB;
+import javax.xml.transform.dom.DOMResult;
+import javax.xml.transform.dom.DOMSource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -32,6 +44,8 @@ import org.uddi.api_v3.GetBusinessDetail
import org.uddi.api_v3.SaveBusiness;
import org.uddi.v3_service.UDDIInquiryPortType;
import org.uddi.v3_service.UDDIPublicationPortType;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
/**
* @author <a href="mailto:kstam@apache.org">Kurt T Stam</a>
* @author <a href="mailto:jfaath@apache.org">Jeff Faath</a>
@@ -53,6 +67,10 @@ public class TckBusiness
public final static String RIFTSAW_BUSINESS_KEY = "uddi:riftsaw.jboss.org:business_redhat-jboss";
public final static String RIFTSAW_BUSINESS_XML = "uddi_data/bpel/riftsaw/businessEntity.xml";
+ final static String SIGNATURE_KEYSTORE = "uddi_data/signature/signature.jks";
+ final static String SIGNATURE_KEYSTORE_TYPE = "JKS";
+ final static String SIGNATURE_KEYSTORE_PASSWORD = "changeit";
+ final static String SIGNATURE_KEYSTORE_ALIAS = "mykey";
private Log logger = LogFactory.getLog(this.getClass());
private UDDIPublicationPortType publication = null;
@@ -85,8 +103,14 @@ public class TckBusiness
deleteBusinesses(authInfoSam, SAM_BUSINESS_XML, SAM_BUSINESS_KEY, numberOfCopies);
}
+ public void saveJoePublisherBusinessX509Signature(String authInfoJoe) {
+ saveBusiness(authInfoJoe, JOE_BUSINESS_XML, JOE_BUSINESS_KEY);
+ signBusiness(authInfoJoe, JOE_BUSINESS_KEY);
+ verifyBusinessSignature(authInfoJoe, JOE_BUSINESS_KEY);
+ }
+
public void saveJoePublisherBusiness(String authInfoJoe) {
- saveBusiness(authInfoJoe, JOE_BUSINESS_XML, JOE_BUSINESS_KEY);
+ saveBusiness(authInfoJoe, JOE_BUSINESS_XML, JOE_BUSINESS_KEY, true);
}
public void saveCombineCatBagsPublisherBusiness(String authInfoJoe) {
@@ -176,8 +200,91 @@ public class TckBusiness
Assert.fail("No exception should be thrown");
}
}
-
- public void saveBusiness(String authInfo, String businessXML, String businessKey) {
+
+ public void signBusiness(String authInfo, String businessKey) {
+ try {
+ GetBusinessDetail gb = new GetBusinessDetail();
+ gb.getBusinessKey().add(businessKey);
+ BusinessDetail bd = inquiry.getBusinessDetail(gb);
+ List<BusinessEntity> beOutList = bd.getBusinessEntity();
+ BusinessEntity bizEntity = beOutList.get(0);
+ bizEntity.getSignature().clear();
+ BusinessEntity bizEntitySigned = signJAXBObject(bizEntity);
+
+ SaveBusiness sb = new SaveBusiness();
+ sb.setAuthInfo(authInfo);
+ sb.getBusinessEntity().add(bizEntitySigned);
+ publication.saveBusiness(sb);
+ } catch(Throwable e) {
+ logger.error(e.getMessage(),e);
+ Assert.fail("No exception should be thrown");
+ }
+ }
+
+ public void verifyBusinessSignature(String authInfo, String businessKey) {
+ try {
+ GetBusinessDetail gb = new GetBusinessDetail();
+ gb.getBusinessKey().add(businessKey);
+ BusinessDetail bd = inquiry.getBusinessDetail(gb);
+ List<BusinessEntity> beOutList = bd.getBusinessEntity();
+ BusinessEntity bizEntity = beOutList.get(0);
+
+ boolean sigOk = verifySignedJAXBObject(bizEntity);
+ assertTrue("Signature invalid!", sigOk);
+ } catch(Throwable e) {
+ logger.error(e.getMessage(),e);
+ Assert.fail("No exception should be thrown");
+ }
+ }
+
+ private <T> T signJAXBObject(T jaxbObj) {
+ DOMResult domResult = new DOMResult();
+ JAXB.marshal(jaxbObj, domResult);
+ Document doc = ((Document)domResult.getNode());
+ Element docElement = doc.getDocumentElement();
+
+ try {
+ KeyStore ks = KeyStore.getInstance(SIGNATURE_KEYSTORE_TYPE);
+ URL url = Thread.currentThread().getContextClassLoader().getResource(SIGNATURE_KEYSTORE);
+ ks.load(url.openStream(), SIGNATURE_KEYSTORE_PASSWORD.toCharArray());
+ KeyStore.PrivateKeyEntry keyEntry = (KeyStore.PrivateKeyEntry)ks.getEntry(SIGNATURE_KEYSTORE_ALIAS, new KeyStore.PasswordProtection(SIGNATURE_KEYSTORE_PASSWORD.toCharArray()));
+ PrivateKey privateKey = keyEntry.getPrivateKey();
+ Certificate origCert = keyEntry.getCertificate();
+ PublicKey validatingKey = origCert.getPublicKey();
+ TckSigningUtil.signDOM(docElement, privateKey, origCert);
+
+ DOMSource domSource = new DOMSource(doc);
+ T result = (T)JAXB.unmarshal(domSource, jaxbObj.getClass());
+ return result;
+ } catch (Exception e) {
+ throw new RuntimeException("Signature failure due to: " + e.getMessage(), e);
+ }
+ }
+
+ private boolean verifySignedJAXBObject(Object obj) {
+ try {
+ DOMResult domResult = new DOMResult();
+ JAXB.marshal(obj, domResult);
+ Document doc = ((Document)domResult.getNode());
+ Element docElement = doc.getDocumentElement();
+
+ KeyStore ks = KeyStore.getInstance(SIGNATURE_KEYSTORE_TYPE);
+ URL url = Thread.currentThread().getContextClassLoader().getResource(SIGNATURE_KEYSTORE);
+ ks.load(url.openStream(), SIGNATURE_KEYSTORE_PASSWORD.toCharArray());
+ KeyStore.PrivateKeyEntry keyEntry = (KeyStore.PrivateKeyEntry)ks.getEntry(SIGNATURE_KEYSTORE_ALIAS, new KeyStore.PasswordProtection(SIGNATURE_KEYSTORE_PASSWORD.toCharArray()));
+ PrivateKey privateKey = keyEntry.getPrivateKey();
+ Certificate origCert = keyEntry.getCertificate();
+ PublicKey validatingKey = origCert.getPublicKey();
+ return TckSigningUtil.verifySignature(docElement, validatingKey);
+ } catch (Exception e) {
+ throw new RuntimeException (e);
+ }
+ }
+
+ public void saveBusiness(String authInfo, String businessXML, String businessKey) {
+ saveBusiness(authInfo, businessXML, businessKey, false);
+ }
+ public void saveBusiness(String authInfo, String businessXML, String businessKey, boolean serialize) {
try {
SaveBusiness sb = new SaveBusiness();
sb.setAuthInfo(authInfo);
@@ -194,6 +301,10 @@ public class TckBusiness
List<BusinessEntity> beOutList = bd.getBusinessEntity();
BusinessEntity beOut = beOutList.get(0);
+ if (serialize) {
+ JAXB.marshal(beOut, new File("target/aftersave.xml"));
+ }
+
assertEquals(beIn.getBusinessKey(), beOut.getBusinessKey());
TckValidator.checkNames(beIn.getName(), beOut.getName());
@@ -201,7 +312,7 @@ public class TckBusiness
TckValidator.checkDiscoveryUrls(beIn.getDiscoveryURLs(), beOut.getDiscoveryURLs());
TckValidator.checkContacts(beIn.getContacts(), beOut.getContacts());
TckValidator.checkCategories(beIn.getCategoryBag(), beOut.getCategoryBag());
-
+ TckValidator.checkSignatures(beIn.getSignature(), beOut.getSignature());
} catch(Throwable e) {
logger.error(e.getMessage(),e);
Assert.fail("No exception should be thrown");
Added: juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckSigningUtil.java
URL: http://svn.apache.org/viewvc/juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckSigningUtil.java?rev=1410551&view=auto
==============================================================================
--- juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckSigningUtil.java (added)
+++ juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckSigningUtil.java Fri Nov 16 19:46:28 2012
@@ -0,0 +1,165 @@
+package org.apache.juddi.v3.tck;
+
+import java.io.BufferedReader;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.cert.Certificate;
+import java.security.cert.X509Certificate;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.crypto.dsig.CanonicalizationMethod;
+import javax.xml.crypto.dsig.DigestMethod;
+import javax.xml.crypto.dsig.Reference;
+import javax.xml.crypto.dsig.SignatureMethod;
+import javax.xml.crypto.dsig.SignedInfo;
+import javax.xml.crypto.dsig.Transform;
+import javax.xml.crypto.dsig.XMLSignature;
+import javax.xml.crypto.dsig.XMLSignatureFactory;
+import javax.xml.crypto.dsig.dom.DOMSignContext;
+import javax.xml.crypto.dsig.dom.DOMValidateContext;
+import javax.xml.crypto.dsig.keyinfo.KeyInfo;
+import javax.xml.crypto.dsig.keyinfo.KeyInfoFactory;
+import javax.xml.crypto.dsig.keyinfo.X509Data;
+import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;
+import javax.xml.crypto.dsig.spec.TransformParameterSpec;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class TckSigningUtil {
+
+ private static XMLSignatureFactory initXMLSigFactory() {
+ XMLSignatureFactory fac = XMLSignatureFactory.getInstance();
+ return fac;
+ }
+
+ private static Reference initReference(XMLSignatureFactory fac) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException {
+ List transformers = new ArrayList();
+ transformers.add(fac.newTransform(Transform.ENVELOPED, (TransformParameterSpec) null));
+ Reference ref = fac.newReference("", fac.newDigestMethod(DigestMethod.SHA1, null), transformers, null, null);
+ return ref;
+ }
+
+ private static SignedInfo initSignedInfo(XMLSignatureFactory fac) throws Exception {
+ Reference ref = initReference(fac);
+ SignedInfo si = fac.newSignedInfo(fac.newCanonicalizationMethod(CanonicalizationMethod.EXCLUSIVE, (C14NMethodParameterSpec) null), fac.newSignatureMethod(SignatureMethod.DSA_SHA1, null), Collections.singletonList(ref));
+ return si;
+ }
+
+ public static boolean verifySignature(Element element, PublicKey validatingKey) {
+ XMLSignatureFactory fac = initXMLSigFactory();
+ NodeList nl = element.getElementsByTagNameNS(XMLSignature.XMLNS, "Signature");
+ if (nl.getLength() == 0) {
+ throw new RuntimeException("Cannot find Signature element");
+ }
+ DOMValidateContext valContext = new DOMValidateContext(validatingKey, nl.item(0));
+ try {
+ valContext.setProperty("javax.xml.crypto.dsig.cacheReference", Boolean.TRUE);
+ XMLSignature signature = fac.unmarshalXMLSignature(valContext);
+ boolean coreValidity = signature.validate(valContext);
+ // Check core validation status.
+ if (coreValidity == false) {
+ System.err.println("Signature failed core validation");
+ boolean sv = signature.getSignatureValue().validate(valContext);
+ System.out.println("signature validation status: " + sv);
+ // Check the validation status of each Reference.
+ @SuppressWarnings("unchecked")
+ Iterator<Reference> i = signature.getSignedInfo().getReferences().iterator();
+ System.out.println("---------------------------------------------");
+ for (int j = 0; i.hasNext(); j++) {
+ Reference ref = (Reference) i.next();
+ boolean refValid = ref.validate(valContext);
+ System.out.println("ref[" + j + "] validity status: " + refValid);
+ System.out.println("Ref type: " + ref.getType() + ", URI: " + ref.getURI());
+ for (Object xform : ref.getTransforms()) {
+ System.out.println("Transform: " + xform);
+ }
+ String calcDigValStr = digestToString(ref.getCalculatedDigestValue());
+ String expectedDigValStr = digestToString(ref.getDigestValue());
+ System.out.println(" Calc Digest: " + calcDigValStr);
+ System.out.println("Expected Digest: " + expectedDigValStr);
+ InputStream is = ref.getDigestInputStream();
+ InputStreamReader isr = new InputStreamReader(is);
+ BufferedReader br = new BufferedReader(isr);
+ String line;
+ while ((line = br.readLine()) != null) {
+ System.out.println(line);
+ }
+ is.close();
+ System.out.println("---------------------------------------------");
+ }
+ } else {
+ System.out.println("Signature passed core validation");
+ }
+ return coreValidity;
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ private static String digestToString(byte[] digest) {
+ StringBuilder sb = new StringBuilder();
+ for (byte b : digest) {
+ String hex = Integer.toHexString(0xFF & b);
+ if (hex.length() == 1) {
+ sb.append('0');
+ }
+ sb.append(hex);
+ }
+ return sb.toString();
+ }
+
+ public static void signDOM(Node node, PrivateKey privateKey, Certificate origCert) {
+ XMLSignatureFactory fac = initXMLSigFactory();
+ X509Certificate cert = (X509Certificate) origCert;
+ // Create the KeyInfo containing the X509Data.
+ KeyInfoFactory kif = fac.getKeyInfoFactory();
+ List<Object> x509Content = new ArrayList<Object>();
+ x509Content.add(cert.getSubjectX500Principal().getName());
+ x509Content.add(cert);
+ X509Data xd = kif.newX509Data(x509Content);
+ KeyInfo ki = kif.newKeyInfo(Collections.singletonList(xd));
+
+ // Create a DOMSignContext and specify the RSA PrivateKey and
+ // location of the resulting XMLSignature's parent element.
+ DOMSignContext dsc = new DOMSignContext(privateKey, node);
+ dsc.putNamespacePrefix("http://www.w3.org/2000/09/xmldsig#", "ns2");
+
+ // Create the XMLSignature, but don't sign it yet.
+ try {
+ SignedInfo si = initSignedInfo(fac);
+ XMLSignature signature = fac.newXMLSignature(si, ki);
+
+ // Marshal, generate, and sign the enveloped signature.
+ signature.sign(dsc);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public static void serializeNode(Node node, String filename) {
+ try {
+ Transformer xform = TransformerFactory.newInstance().newTransformer();
+ DOMSource domSrc = new DOMSource(node);
+ FileOutputStream fos = new FileOutputStream(filename);
+ StreamResult streamResult = new StreamResult(fos);
+ xform.transform(domSrc, streamResult);
+ fos.close();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+}
Modified: juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckValidator.java
URL: http://svn.apache.org/viewvc/juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckValidator.java?rev=1410551&r1=1410550&r2=1410551&view=diff
==============================================================================
--- juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckValidator.java (original)
+++ juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckValidator.java Fri Nov 16 19:46:28 2012
@@ -19,12 +19,19 @@ package org.apache.juddi.v3.tck;
* @author <a href="mailto:kstam@apache.org">Kurt T Stam</a>
* @author <a href="mailto:tcunning@apache.org">Tom Cunningham</a>
*/
+import java.util.Arrays;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertTrue;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
+import javax.xml.bind.JAXB;
+import javax.xml.bind.JAXBElement;
+import javax.xml.transform.dom.DOMResult;
+import javax.xml.transform.dom.DOMSource;
+import org.custommonkey.xmlunit.Diff;
+import org.custommonkey.xmlunit.XMLUnit;
import org.uddi.api_v3.BindingTemplate;
import org.uddi.api_v3.BindingTemplates;
@@ -43,6 +50,20 @@ import org.uddi.api_v3.OverviewURL;
import org.uddi.api_v3.PersonName;
import org.uddi.api_v3.TModelInstanceDetails;
import org.uddi.api_v3.TModelInstanceInfo;
+import org.w3._2000._09.xmldsig_.CanonicalizationMethodType;
+import org.w3._2000._09.xmldsig_.DigestMethodType;
+import org.w3._2000._09.xmldsig_.KeyInfoType;
+import org.w3._2000._09.xmldsig_.ObjectType;
+import org.w3._2000._09.xmldsig_.ReferenceType;
+import org.w3._2000._09.xmldsig_.SignatureMethodType;
+import org.w3._2000._09.xmldsig_.SignatureType;
+import org.w3._2000._09.xmldsig_.SignatureValueType;
+import org.w3._2000._09.xmldsig_.SignedInfoType;
+import org.w3._2000._09.xmldsig_.TransformType;
+import org.w3._2000._09.xmldsig_.TransformsType;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
public class TckValidator {
@@ -104,6 +125,198 @@ public class TckValidator {
}
}
+ public static void checkSignatures(List<SignatureType> sigs1, List<SignatureType> sigs2) {
+ if (sigs1 == null || sigs2 == null) {
+ assertEquals(sigs1, sigs2);
+ return;
+ }
+ assertEquals(sigs1.size(), sigs2.size());
+ Iterator<SignatureType> sigsList1Itr = sigs1.iterator();
+ Iterator<SignatureType> sigsList2Itr = sigs2.iterator();
+ while (sigsList1Itr.hasNext()) {
+ SignatureType sig1 = sigsList1Itr.next();
+ SignatureType sig2 = sigsList2Itr.next();
+
+ assertEquals(sig1.getId(), sig2.getId());
+ checkKeyInfo(sig1.getKeyInfo(), sig2.getKeyInfo());
+ checkObjectType(sig1.getObject(), sig2.getObject());
+ checkSignatureValue(sig1.getSignatureValue(), sig2.getSignatureValue());
+ checkSignedInfo(sig1.getSignedInfo(), sig2.getSignedInfo());
+ }
+ }
+
+ public static void checkKeyInfo(KeyInfoType kit1, KeyInfoType kit2) {
+ if (kit1 == null || kit2 == null) {
+ assertEquals(kit1, kit2);
+ return;
+ }
+ assertEquals(kit1.getId(), kit2.getId());
+
+ DOMResult domResult1 = new DOMResult();
+ DOMResult domResult2 = new DOMResult();
+ JAXB.marshal(kit1, domResult1);
+ JAXB.marshal(kit2, domResult2);
+
+ Document doc1 = (Document)domResult1.getNode();
+ DOMSource domSource1 = new DOMSource(doc1.getDocumentElement());
+ Document doc2 = (Document)domResult2.getNode();
+ DOMSource domSource2 = new DOMSource(doc2.getDocumentElement());
+ XMLUnit.setIgnoreAttributeOrder(true);
+ XMLUnit.setIgnoreComments(true);
+ XMLUnit.setIgnoreWhitespace(true);
+ Diff diff = new Diff(domSource1, domSource2);
+ assertTrue("Key info elements should match", diff.similar());
+ }
+
+ public static void checkObjectType(List<ObjectType> obj1List, List<ObjectType> obj2List) {
+ if (obj1List == null || obj2List == null) {
+ assertEquals(obj1List, obj2List);
+ return;
+ }
+ assertEquals(obj1List.size(), obj2List.size());
+ Iterator<ObjectType> objList1Itr = obj1List.iterator();
+ Iterator<ObjectType> objList2Itr = obj2List.iterator();
+ while (objList1Itr.hasNext()) {
+ ObjectType obj1 = objList1Itr.next();
+ ObjectType obj2 = objList2Itr.next();
+ assertEquals(obj1.getEncoding(), obj2.getEncoding());
+ assertEquals(obj1.getId(), obj2.getId());
+ assertEquals(obj1.getMimeType(), obj2.getMimeType());
+ }
+ }
+
+ public static void checkSignatureValue(SignatureValueType sv1, SignatureValueType sv2) {
+ if (sv1 == null || sv2 == null) {
+ assertEquals(sv1, sv2);
+ return;
+ }
+ assertEquals(sv1.getId(), sv2.getId());
+ assertTrue(Arrays.equals(sv1.getValue(), sv2.getValue()));
+ }
+
+ public static void checkSignedInfo(SignedInfoType si1, SignedInfoType si2) {
+ if (si1 == null || si2 == null) {
+ assertEquals(si1, si2);
+ return;
+ }
+ assertEquals(si1.getId(), si2.getId());
+ checkCanonicalizationMethod(si1.getCanonicalizationMethod(), si2.getCanonicalizationMethod());
+ checkReference(si1.getReference(), si2.getReference());
+ checkSignatureMethod(si1.getSignatureMethod(), si2.getSignatureMethod());
+ }
+
+ public static void checkCanonicalizationMethod(CanonicalizationMethodType cm1, CanonicalizationMethodType cm2) {
+ if (cm1 == null || cm2 == null) {
+ assertEquals(cm1, cm2);
+ return;
+ }
+ assertEquals(cm1.getAlgorithm(), cm2.getAlgorithm());
+ }
+
+ public static void checkReference(List<ReferenceType> r1List, List<ReferenceType> r2List) {
+ if (r1List == null || r2List == null) {
+ assertEquals(r1List, r2List);
+ return;
+ }
+ assertEquals(r1List.size(), r2List.size());
+
+ Iterator<ReferenceType> rList1Itr = r1List.iterator();
+ Iterator<ReferenceType> rList2Itr = r2List.iterator();
+ while (rList1Itr.hasNext()) {
+ ReferenceType r1 = rList1Itr.next();
+ ReferenceType r2 = rList2Itr.next();
+ checkReference(r1, r2);
+ }
+ }
+
+ public static void checkReference(ReferenceType r1, ReferenceType r2) {
+ assertTrue(Arrays.equals(r1.getDigestValue(), r2.getDigestValue()));
+ assertEquals(r1.getId(), r2.getId());
+ assertEquals(r1.getType(), r2.getType());
+ assertEquals(r1.getURI(), r2.getURI());
+
+ checkDigestMethod(r1.getDigestMethod(), r2.getDigestMethod());
+ checkTransforms(r1.getTransforms(), r2.getTransforms());
+ }
+
+ public static void checkDigestMethod(DigestMethodType dm1, DigestMethodType dm2) {
+ if (dm1 == null || dm2 == null) {
+ assertEquals(dm1, dm2);
+ return;
+ }
+ assertEquals(dm1.getAlgorithm(), dm2.getAlgorithm());
+ }
+
+ public static void checkTransforms(TransformsType tTypes1, TransformsType tTypes2) {
+ if (tTypes1 == null || tTypes2 == null) {
+ assertEquals(tTypes1, tTypes2);
+ return;
+ }
+ List<TransformType> tt1List = tTypes1.getTransform();
+ List<TransformType> tt2List = tTypes2.getTransform();
+ if (tt1List == null || tt2List == null) {
+ assertEquals(tt1List, tt2List);
+ return;
+ }
+ assertEquals(tt1List.size(), tt2List.size());
+
+ Iterator<TransformType> ttList1Itr = tt1List.iterator();
+ Iterator<TransformType> ttList2Itr = tt2List.iterator();
+ while (ttList1Itr.hasNext()) {
+ TransformType tx1 = ttList1Itr.next();
+ TransformType tx2 = ttList2Itr.next();
+
+ assertEquals(tx1.getAlgorithm(), tx2.getAlgorithm());
+ checkTransformContentList(tx1.getContent(), tx2.getContent());
+ }
+ }
+
+ public static void checkTransformContentList(List<Object> list1, List<Object> list2) {
+ if (list1 == null || list2 == null) {
+ assertEquals(list1, list2);
+ return;
+ }
+ assertEquals(list1.size(), list2.size());
+
+ Iterator<Object> list1Itr = list1.iterator();
+ Iterator<Object> list2Itr = list2.iterator();
+ while (list1Itr.hasNext()) {
+ Object obj1 = list1Itr.next();
+ Object obj2 = list2Itr.next();
+
+ if (obj1 instanceof String) {
+ assertEquals((String)obj1, obj2);
+ } else if (obj1 instanceof Element || obj1 instanceof JAXBElement) {
+ if (obj1 instanceof JAXBElement) {
+ DOMResult domResult = new DOMResult();
+ JAXB.marshal(obj1, domResult);
+ obj1 = ((Document)domResult.getNode()).getDocumentElement();
+ }
+ if (obj2 instanceof JAXBElement) {
+ DOMResult domResult = new DOMResult();
+ JAXB.marshal(obj2, domResult);
+ obj2 = ((Document)domResult.getNode()).getDocumentElement();
+ }
+ XMLUnit.setIgnoreAttributeOrder(true);
+ XMLUnit.setIgnoreComments(true);
+ DOMSource domSrc1 = new DOMSource((Element)obj1);
+ DOMSource domSrc2 = new DOMSource((Element)obj2);
+ Diff diff = new Diff(domSrc1, domSrc2);
+ assertTrue("Element should be the same", diff.similar());
+ } else {
+ throw new RuntimeException("Unrecognized type: " + obj1.getClass());
+ }
+ }
+ }
+
+ public static void checkSignatureMethod(SignatureMethodType smt1, SignatureMethodType smt2) {
+ if (smt1 == null || smt2 == null) {
+ assertEquals(smt1, smt2);
+ return;
+ }
+ assertEquals(smt1.getAlgorithm(), smt2.getAlgorithm());
+ }
+
public static void checkContacts(Contacts contacts1, Contacts contacts2) {
if (contacts1 == null || contacts2 == null) {
assertEquals(contacts1, contacts2);
Modified: juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/joepublisher/businessEntity.xml
URL: http://svn.apache.org/viewvc/juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/joepublisher/businessEntity.xml?rev=1410551&r1=1410550&r2=1410551&view=diff
==============================================================================
--- juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/joepublisher/businessEntity.xml (original)
+++ juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/joepublisher/businessEntity.xml Fri Nov 16 19:46:28 2012
@@ -15,7 +15,14 @@
* limitations under the License.
*
*/ -->
-<businessEntity xmlns="urn:uddi-org:api_v3" xmlns:xml="http://www.w3.org/XML/1998/namespace" businessKey="uddi:uddi.joepublisher.com:businessone">
+<businessEntity
+ xmlns="urn:uddi-org:api_v3"
+ xmlns:xml="http://www.w3.org/XML/1998/namespace"
+ businessKey="uddi:uddi.joepublisher.com:businessone"
+ xmlns:ns2="http://www.w3.org/2000/09/xmldsig#"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.w3.org/2000/09/xmldsig# http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"
+>
<discoveryURLs>
<discoveryURL useType="home">http://www.businessone.com</discoveryURL>
<discoveryURL useType="serviceList">http://www.businessone.com/services</discoveryURL>
@@ -57,4 +64,65 @@
<identifierBag>
<keyedReference tModelKey="uddi:tmodelkey:identifier" keyName="identify" keyValue="identity" />
</identifierBag>
+ <ns2:Signature>
+ <ns2:SignedInfo>
+ <ns2:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
+ <ns2:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/>
+ <ns2:Reference URI="">
+ <ns2:Transforms>
+ <ns2:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+ <ns2:XPath>
+ not(ancestor-or-self::Signature)
+ </ns2:XPath>
+ <a xmlns="http://mycustomernamespace/" xmlns:myotherothersigprefix="http://www.other2.com/">
+ </a>
+ </ns2:Transform>
+ </ns2:Transforms>
+ <ns2:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
+ <ns2:DigestValue>LfYUewvRm4ezL9t4X2d8Kxdzrj8=</ns2:DigestValue>
+ </ns2:Reference>
+ </ns2:SignedInfo>
+ <ns2:SignatureValue>UJYI43pA5O7gGfz3bXp8JOL4/YNE7nyDh3HoTAIYYkSn3xfbIf/MZg==</ns2:SignatureValue>
+ <ns2:KeyInfo>
+ <ns2:KeyName>Test Key Name</ns2:KeyName>
+ <ns2:KeyValue>
+ <ns2:DSAKeyValue>
+ <ns2:P>TstP</ns2:P>
+ <ns2:Q>TstQ</ns2:Q>
+ <ns2:G>TstG</ns2:G>
+ <ns2:Y>TstY</ns2:Y>
+ <ns2:J>TstJ</ns2:J>
+ <ns2:Seed>TestSeed</ns2:Seed>
+ <ns2:PgenCounter>TestPGenCounter</ns2:PgenCounter>
+ </ns2:DSAKeyValue>
+ <ns2:RSAKeyValue>
+ <ns2:Modulus>xA7SEU+e0yQH5rm9kbCDN9o3aPIo7HbP7tX6WOocLZAtNfyxSZDU16ksL6W
+ jubafOqNEpcwR3RdFsT7bCqnXPBe5ELh5u4VEy19MzxkXRgrMvavzyBpVRgBUwUlV
+ 5foK5hhmbktQhyNdy/6LpQRhDUDsTvK+g9Ucj47es9AQJ3U=</ns2:Modulus>
+ <ns2:Exponent>AQAB</ns2:Exponent>
+ </ns2:RSAKeyValue>
+ </ns2:KeyValue>
+ <ns2:MgmtData>Test Mgmt Data</ns2:MgmtData>
+ <ns2:RetrievalMethod Type="TestType" URI="TestURI">
+ <ns2:Transforms>
+ <ns2:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+ <ns2:XPath xmlns:mydsigprefix="http://www.w3.org/2000/09/xmldsig#">
+ not(ancestor-or-self::mydsigprefix:RetrievalMethod)
+ </ns2:XPath>
+ </ns2:Transform>
+ </ns2:Transforms>
+ </ns2:RetrievalMethod>
+ <ns2:PGPData>
+ <ns2:PGPKeyID>TstKeyID</ns2:PGPKeyID>
+ <ns2:PGPKeyPacket>TestPGPKeyPacket</ns2:PGPKeyPacket>
+ </ns2:PGPData>
+ <ns2:SPKIData>
+ <ns2:SPKISexp>TestSPKISexp</ns2:SPKISexp>
+ </ns2:SPKIData>
+ <ns2:X509Data xmlns="urn:uddi-org:api_v3">
+ <ns2:X509Certificate>MIIC9TCCArOgAwIBAgIET/GwbTALBgcqhkjOOAQDBQAwXjELMAkGA1UEBhMCQ0MxCzAJBgNVBAgTAlNUMQ0wCwYDVQQHEwRDaXR5MQwwCgYDVQQKEwNPcmcxEDAOBgNVBAsTB09yZ1VuaXQxEzARBgNVBAMTCkZpcnN0IExhc3QwHhcNMTIwNzAyMTQzMDA1WhcNMTIwOTMwMTQzMDA1WjBeMQswCQYDVQQGEwJDQzELMAkGA1UECBMCU1QxDTALBgNVBAcTBENpdHkxDDAKBgNVBAoTA09yZzEQMA4GA1UECxMHT3JnVW5pdDETMBEGA1UEAxMKRmlyc3QgTGFzdDCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQD9f1OBHXUSKVLfSpwu7OTn9hG3UjzvRADDHj+AtlEmaUVdQCJR+1k9jVj6v8X1ujD2y5tVbNeBO4AdNG/yZmC3a5lQpaSfn+gEexAiwk+7qdf+t8Yb+DtX58aophUPBPuD9tPFHsMCNVQTWhaRMvZ1864rYdcq7/IiAxmd0UgBxwIVAJdgUI8VIwvMspK5gqLrhAvwWBz1AoGBAPfhoIXWmz3ey7yrXDa4V7l5lK+7+jrqgvlXTAs9B4JnUVlXjrrUWU/mcQcQgYC0SRZxI+hMKBYTt88JMozIpuE8FnqLVHyNKOCjrh4rs6Z1kW6jfwv6ITVi8ftiegEkO8yk8b6oUZCJqIPf4VrlnwaSi2ZegHtVJWQBTDv+z0kqA4GEAAKBgGt63jF7cdAX8c43zp3IclOIp2nF5GOnqtRMXSjgNzk23gD7YwclqOkXz5rWnpLUsVVWZ1QYg6Bb0cOeh90rNrD6u5TqMQ9piJgoT9FENfdJs3B/YcpMfrBdsTk4Z7ESpS0HUTFnAymf8gQNSw9nQa0kPkAKBpJeV3Lh0X2FeU9DMAsGByqGSM44BAMFAAMvAD
AsAhQ4pPzahHdxHjey/WxXZgMW+1Y8uwIUI+G1wC6N1+zUcn1rJqp/2IbuXO4=</ns2:X509Certificate>
+ <ns2:X509SubjectName>CN=First Last,OU=OrgUnit,O=Org,L=City,ST=ST,C=CC</ns2:X509SubjectName>
+ </ns2:X509Data>
+ </ns2:KeyInfo>
+ </ns2:Signature>
</businessEntity>
\ No newline at end of file
Added: juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/signature/signature.jks
URL: http://svn.apache.org/viewvc/juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/signature/signature.jks?rev=1410551&view=auto
==============================================================================
Binary file - no diff available.
Propchange: juddi/trunk/uddi-tck-base/src/main/resources/uddi_data/signature/signature.jks
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Modified: juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_030_BusinessEntityIntegrationTest.java
URL: http://svn.apache.org/viewvc/juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_030_BusinessEntityIntegrationTest.java?rev=1410551&r1=1410550&r2=1410551&view=diff
==============================================================================
--- juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_030_BusinessEntityIntegrationTest.java (original)
+++ juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_030_BusinessEntityIntegrationTest.java Fri Nov 16 19:46:28 2012
@@ -73,7 +73,17 @@ public class UDDI_030_BusinessEntityInte
}
}
-
+ @Test
+ public void testJoePublisherBusinessEntitySignature() {
+ try {
+ tckTModel.saveJoePublisherTmodel(authInfoJoe);
+ tckBusiness.saveJoePublisherBusinessX509Signature(authInfoJoe);
+ tckFindEntity.findAllBusiness();
+ tckBusiness.deleteJoePublisherBusiness(authInfoJoe);
+ } finally {
+ tckTModel.deleteJoePublisherTmodel(authInfoJoe);
+ }
+ }
@Test
public void testJoePublisherBusinessEntity() {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@juddi.apache.org
For additional commands, e-mail: commits-help@juddi.apache.org