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:[email protected]";>Kurt T Stam</a>
  * @author <a href="mailto:[email protected]";>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:[email protected]";>Kurt T Stam</a>
  * @author <a href="mailto:[email protected]";>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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to