Index: juddi-core/src/main/java/org/apache/juddi/model/X509SubjectName.java
===================================================================
--- juddi-core/src/main/java/org/apache/juddi/model/X509SubjectName.java	(revision 0)
+++ juddi-core/src/main/java/org/apache/juddi/model/X509SubjectName.java	(revision 0)
@@ -0,0 +1,69 @@
+/*
+ * 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.ManyToOne;
+import javax.persistence.Table;
+
+/**
+ *
+ */
+@Entity
+@Table(name="j3_x509_subject_name")
+public class X509SubjectName implements java.io.Serializable {
+    private static final long serialVersionUID = -6353389848796421616L;
+    
+    private Long id;
+    private X509KeyInfo x509KeyInfo;
+    private String content;
+    
+    @Id
+    @GeneratedValue(strategy=GenerationType.AUTO)
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "x509_key_info_key", nullable = false)
+    public X509KeyInfo getX509KeyInfo() {
+        return x509KeyInfo;
+    }
+
+    public void setX509KeyInfo(X509KeyInfo x509KeyInfo) {
+        this.x509KeyInfo = x509KeyInfo;
+    }
+
+    @Column(name="content")
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+    
+}
Index: juddi-core/src/main/java/org/apache/juddi/model/BusinessEntity.java
===================================================================
--- juddi-core/src/main/java/org/apache/juddi/model/BusinessEntity.java	(revision 1355564)
+++ juddi-core/src/main/java/org/apache/juddi/model/BusinessEntity.java	(working copy)
@@ -45,8 +45,8 @@
 	private BusinessCategoryBag categoryBag;
 	private List<BusinessService> businessServices = new ArrayList<BusinessService>(0);
 	private List<BusinessDescr> businessDescrs = new ArrayList<BusinessDescr>(0);
-	
 	private List<ServiceProjection> serviceProjections = new ArrayList<ServiceProjection>(0);
+        private List<Signature> signatures = new ArrayList<Signature>(0);
 
 	public BusinessEntity() {
 	}
@@ -169,6 +169,16 @@
 	public void setServiceProjections(List<ServiceProjection> serviceProjections) {
 		this.serviceProjections = serviceProjections;
 	}
+
+        @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "businessEntity")
+	@OrderBy
+        public List<Signature> getSignatures() {
+                return signatures;
+        }
+
+        public void setSignatures(List<Signature> signatures) {
+                this.signatures = signatures;
+        }
 	
 	
 }
Index: juddi-core/src/main/java/org/apache/juddi/model/X509KeyInfo.java
===================================================================
--- juddi-core/src/main/java/org/apache/juddi/model/X509KeyInfo.java	(revision 0)
+++ juddi-core/src/main/java/org/apache/juddi/model/X509KeyInfo.java	(revision 0)
@@ -0,0 +1,106 @@
+/*
+ * 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.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_x509_key_info")
+public class X509KeyInfo implements java.io.Serializable {
+    private static final long serialVersionUID = -7353389848796421618L;
+    
+    private Long id;
+    private KeyInfo keyInfo;
+    private List<X509SKI> x509SKI = new ArrayList<X509SKI>();
+    private List<X509SubjectName> x509SubjectName = new ArrayList<X509SubjectName>();
+    private List<X509Certificate> x509Certificate = new ArrayList<X509Certificate>();
+    private List<X509CRL> x509CRL = new ArrayList<X509CRL>();
+    
+    @Id
+    @GeneratedValue(strategy=GenerationType.AUTO)
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "key_info_key", nullable = false)
+    public KeyInfo getKeyInfo() {
+        return keyInfo;
+    }
+
+    public void setKeyInfo(KeyInfo keyInfo) {
+        this.keyInfo = keyInfo;
+    }
+
+    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "x509KeyInfo")
+    @OrderBy
+    public List<X509SKI> getX509SKI() {
+        return x509SKI;
+    }
+
+    public void setX509SKI(List<X509SKI> x509SKI) {
+        this.x509SKI = x509SKI;
+    }
+
+    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "x509KeyInfo")
+    @OrderBy
+    public List<X509SubjectName> getX509SubjectName() {
+        return x509SubjectName;
+    }
+
+    public void setX509SubjectName(List<X509SubjectName> x509SubjectName) {
+        this.x509SubjectName = x509SubjectName;
+    }
+
+    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "x509KeyInfo")
+    @OrderBy
+    public List<X509Certificate> getX509Certificate() {
+        return x509Certificate;
+    }
+
+    public void setX509Certificate(List<X509Certificate> x509Certificate) {
+        this.x509Certificate = x509Certificate;
+    }
+
+    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "x509KeyInfo")
+    @OrderBy
+    public List<X509CRL> getX509CRL() {
+        return x509CRL;
+    }
+
+    public void setX509CRL(List<X509CRL> x509CRL) {
+        this.x509CRL = x509CRL;
+    }
+}
Index: juddi-core/src/main/java/org/apache/juddi/model/Publisher.java
===================================================================
--- juddi-core/src/main/java/org/apache/juddi/model/Publisher.java	(revision 1355564)
+++ juddi-core/src/main/java/org/apache/juddi/model/Publisher.java	(working copy)
@@ -15,8 +15,14 @@
  * limitations under the License.
  */
 
+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.OneToMany;
+import javax.persistence.OrderBy;
 import javax.persistence.Table;
 import javax.persistence.Transient;
 
@@ -38,6 +44,7 @@
 	private Integer maxServicesPerBusiness;
 	private Integer maxBindingsPerService;
 	private Integer maxTmodels;
+        private List<Signature> signatures = new ArrayList<Signature>(0);
 
 	public Publisher() {
 		super(null);
@@ -150,4 +157,13 @@
 		this.maxTmodels = maxTmodels;
 	}
 
+        @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "publisher")
+	@OrderBy
+        public List<Signature> getSignatures() {
+                return signatures;
+        }
+
+        public void setSignatures(List<Signature> signatures) {
+                this.signatures = signatures;
+        }
 }
Index: juddi-core/src/main/java/org/apache/juddi/model/BindingTemplate.java
===================================================================
--- juddi-core/src/main/java/org/apache/juddi/model/BindingTemplate.java	(revision 1355564)
+++ juddi-core/src/main/java/org/apache/juddi/model/BindingTemplate.java	(working copy)
@@ -47,6 +47,7 @@
 	private String hostingRedirector;
 	private BindingCategoryBag categoryBag;
 	private List<TmodelInstanceInfo> tmodelInstanceInfos = new ArrayList<TmodelInstanceInfo>(0);
+        private List<Signature> signatures = new ArrayList<Signature>(0);
 	
 	public BindingTemplate() {
 	}
@@ -131,4 +132,14 @@
 	public void setBindingDescrs(List<BindingDescr> bindingDescrs) {
 		this.bindingDescrs = bindingDescrs;
 	}
+        
+        @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "bindingTemplate")
+	@OrderBy
+        public List<Signature> getSignatures() {
+                return signatures;
+        }
+
+        public void setSignatures(List<Signature> signatures) {
+                this.signatures = signatures;
+        }
 }
Index: juddi-core/src/main/java/org/apache/juddi/model/ObjectType.java
===================================================================
--- juddi-core/src/main/java/org/apache/juddi/model/ObjectType.java	(revision 0)
+++ juddi-core/src/main/java/org/apache/juddi/model/ObjectType.java	(revision 0)
@@ -0,0 +1,103 @@
+/*
+ * 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.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_object_type")
+public class ObjectType implements java.io.Serializable {
+    private static final long serialVersionUID = -3233157941119408716L;
+    
+    private Long id;
+    private Signature signature;
+    private List<ObjectTypeContent> content;
+    private String xmlID;
+    private String mimeType;
+    private String encoding;
+    
+    @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_key", nullable = false)
+    public Signature getSignature() {
+        return signature;
+    }
+
+    public void setSignature(Signature signature) {
+        this.signature = signature;
+    }
+    
+    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "objectType")
+    @OrderBy
+    public List<ObjectTypeContent> getContent() {
+        return content;
+    }
+
+    public void setContent(List<ObjectTypeContent> content) {
+        this.content = content;
+    }
+
+    @Column(name="xml_id")
+    public String getXmlID() {
+        return xmlID;
+    }
+
+    public void setXmlID(String xmlID) {
+        this.xmlID = xmlID;
+    }
+
+    @Column(name="mime_type")
+    public String getMimeType() {
+        return mimeType;
+    }
+
+    public void setMimeType(String mimeType) {
+        this.mimeType = mimeType;
+    }
+
+    @Column(name="encoding")
+    public String getEncoding() {
+        return encoding;
+    }
+
+    public void setEncoding(String encoding) {
+        this.encoding = encoding;
+    }
+}
Index: juddi-core/src/main/java/org/apache/juddi/model/X509SKI.java
===================================================================
--- juddi-core/src/main/java/org/apache/juddi/model/X509SKI.java	(revision 0)
+++ juddi-core/src/main/java/org/apache/juddi/model/X509SKI.java	(revision 0)
@@ -0,0 +1,70 @@
+/*
+ * 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_x509_ski")
+public class X509SKI implements java.io.Serializable {
+    private static final long serialVersionUID = -6353389848796421617L;
+    
+    private Long id;
+    private X509KeyInfo x509KeyInfo;
+    private byte[] content;
+    
+    @Id
+    @GeneratedValue(strategy=GenerationType.AUTO)
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+    
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "x509_key_info_key", nullable = false)
+    public X509KeyInfo getX509KeyInfo() {
+        return x509KeyInfo;
+    }
+
+    public void setX509KeyInfo(X509KeyInfo x509KeyInfo) {
+        this.x509KeyInfo = x509KeyInfo;
+    }
+    
+    @Lob
+    @Column(name="content")
+    public byte[] getContent() {
+        return content;
+    }
+
+    public void setContent(byte[] content) {
+        this.content = content;
+    }
+}
Index: juddi-core/src/main/java/org/apache/juddi/model/PublisherAssertion.java
===================================================================
--- juddi-core/src/main/java/org/apache/juddi/model/PublisherAssertion.java	(revision 1355564)
+++ juddi-core/src/main/java/org/apache/juddi/model/PublisherAssertion.java	(working copy)
@@ -15,14 +15,19 @@
  * limitations under the License.
  */
 
+import java.util.ArrayList;
+import java.util.List;
 import javax.persistence.AttributeOverride;
 import javax.persistence.AttributeOverrides;
+import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.EmbeddedId;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.OrderBy;
 import javax.persistence.Table;
 
 /**
@@ -139,5 +144,4 @@
 	public void setToCheck(String toCheck) {
 		this.toCheck = toCheck;
 	}
-
 }
Index: juddi-core/src/main/java/org/apache/juddi/model/SignatureValue.java
===================================================================
--- juddi-core/src/main/java/org/apache/juddi/model/SignatureValue.java	(revision 0)
+++ juddi-core/src/main/java/org/apache/juddi/model/SignatureValue.java	(revision 0)
@@ -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;
+    }
+}
Index: juddi-core/src/main/java/org/apache/juddi/model/Reference.java
===================================================================
--- juddi-core/src/main/java/org/apache/juddi/model/Reference.java	(revision 0)
+++ juddi-core/src/main/java/org/apache/juddi/model/Reference.java	(revision 0)
@@ -0,0 +1,125 @@
+/*
+ * 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.Lob;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.OrderBy;
+import javax.persistence.Table;
+
+/**
+ *
+ */
+@Entity
+@Table(name="j3_reference")
+public class Reference {
+    private static final long serialVersionUID = -3233157941119408701L;
+    
+    private Long id;
+    private SignedInfo signedInfo;
+    private List<SignatureTransform> transforms = new ArrayList<SignatureTransform>(0);
+    private String digestMethod;
+    private byte[] digestValue;
+    private String xmlID;
+    private String uri;
+    private String type;
+    
+    @Id
+    @GeneratedValue(strategy=GenerationType.AUTO)
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "signed_info_key", nullable = false)
+    public SignedInfo getSignedInfo() {
+        return signedInfo;
+    }
+
+    public void setSignedInfo(SignedInfo signedInfo) {
+        this.signedInfo = signedInfo;
+    }
+    
+    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "reference")
+    @OrderBy
+    public List<SignatureTransform> getTransforms() {
+        return transforms;
+    }
+
+    public void setTransforms(List<SignatureTransform> transforms) {
+        this.transforms = transforms;
+    }
+
+    @Column(name="digest_method")
+    public String getDigestMethod() {
+        return digestMethod;
+    }
+
+    public void setDigestMethod(String digestMethod) {
+        this.digestMethod = digestMethod;
+    }
+
+    @Lob
+    @Column(name="digest_value")
+    public byte[] getDigestValue() {
+        return digestValue;
+    }
+
+    public void setDigestValue(byte[] digestValue) {
+        this.digestValue = digestValue;
+    }
+
+    @Column(name="uri")
+    public String getUri() {
+        return uri;
+    }
+
+    public void setUri(String uri) {
+        this.uri = uri;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+    
+    @Column(name="xml_id")
+    public String getXmlID() {
+        return xmlID;
+    }
+
+    public void setXmlID(String xmlID) {
+        this.xmlID = xmlID;
+    }
+}
Index: juddi-core/src/main/java/org/apache/juddi/model/X509CRL.java
===================================================================
--- juddi-core/src/main/java/org/apache/juddi/model/X509CRL.java	(revision 0)
+++ juddi-core/src/main/java/org/apache/juddi/model/X509CRL.java	(revision 0)
@@ -0,0 +1,70 @@
+/*
+ * 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_x509_crl")
+public class X509CRL implements java.io.Serializable {
+    private static final long serialVersionUID = -6353389848796421614L;
+    
+    private Long id;
+    private X509KeyInfo x509KeyInfo;
+    private byte[] content;
+    
+    @Id
+    @GeneratedValue(strategy=GenerationType.AUTO)
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }    
+
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "x509_key_info_key", nullable = false)
+    public X509KeyInfo getX509KeyInfo() {
+        return x509KeyInfo;
+    }
+
+    public void setX509KeyInfo(X509KeyInfo x509KeyInfo) {
+        this.x509KeyInfo = x509KeyInfo;
+    }
+    
+    @Lob
+    @Column(name="content")
+    public byte[] getContent() {
+        return content;
+    }
+
+    public void setContent(byte[] content) {
+        this.content = content;
+    }
+}
Index: juddi-core/src/main/java/org/apache/juddi/model/X509Certificate.java
===================================================================
--- juddi-core/src/main/java/org/apache/juddi/model/X509Certificate.java	(revision 0)
+++ juddi-core/src/main/java/org/apache/juddi/model/X509Certificate.java	(revision 0)
@@ -0,0 +1,70 @@
+/*
+ * 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_x509_cert")
+public class X509Certificate implements java.io.Serializable {
+    private static final long serialVersionUID = -6353389848796421615L;
+    
+    private Long id;
+    private X509KeyInfo x509KeyInfo;
+    private byte[] content;
+    
+    @Id
+    @GeneratedValue(strategy=GenerationType.AUTO)
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+    
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "x509_key_info_key", nullable = false)
+    public X509KeyInfo getX509KeyInfo() {
+        return x509KeyInfo;
+    }
+
+    public void setX509KeyInfo(X509KeyInfo x509KeyInfo) {
+        this.x509KeyInfo = x509KeyInfo;
+    }
+    
+    @Lob
+    @Column(name="content")
+    public byte[] getContent() {
+        return content;
+    }
+
+    public void setContent(byte[] content) {
+        this.content = content;
+    }
+}
Index: juddi-core/src/main/java/org/apache/juddi/model/BusinessService.java
===================================================================
--- juddi-core/src/main/java/org/apache/juddi/model/BusinessService.java	(revision 1355564)
+++ juddi-core/src/main/java/org/apache/juddi/model/BusinessService.java	(working copy)
@@ -43,7 +43,8 @@
 	private List<ServiceDescr> serviceDescrs = new ArrayList<ServiceDescr>(0);
 	private List<BindingTemplate> bindingTemplates = new ArrayList<BindingTemplate>(0);
 	private ServiceCategoryBag categoryBag;
-    private List<ServiceProjection> projectingBusinesses = new ArrayList<ServiceProjection>(0);
+        private List<ServiceProjection> projectingBusinesses = new ArrayList<ServiceProjection>(0);
+        private List<Signature> signatures = new ArrayList<Signature>(0);
 
 	public BusinessService() {
 	}
@@ -117,4 +118,14 @@
 	public void setProjectingBusinesses(List<ServiceProjection> projectingBusinesses) {
 		this.projectingBusinesses = projectingBusinesses;
 	}
+        
+        @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "businessService")
+	@OrderBy
+        public List<Signature> getSignatures() {
+                return signatures;
+        }
+
+        public void setSignatures(List<Signature> signatures) {
+                this.signatures = signatures;
+        }
 }
Index: juddi-core/src/main/java/org/apache/juddi/model/Tmodel.java
===================================================================
--- juddi-core/src/main/java/org/apache/juddi/model/Tmodel.java	(revision 1355564)
+++ juddi-core/src/main/java/org/apache/juddi/model/Tmodel.java	(working copy)
@@ -45,6 +45,7 @@
 	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 @@
 		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;
+        }
 }
Index: juddi-core/src/main/java/org/apache/juddi/model/SignatureTransform.java
===================================================================
--- juddi-core/src/main/java/org/apache/juddi/model/SignatureTransform.java	(revision 0)
+++ juddi-core/src/main/java/org/apache/juddi/model/SignatureTransform.java	(revision 0)
@@ -0,0 +1,70 @@
+/*
+ * 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.ManyToOne;
+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;
+    
+    @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;
+    }
+    
+    
+}
Index: juddi-core/src/main/java/org/apache/juddi/model/Signature.java
===================================================================
--- juddi-core/src/main/java/org/apache/juddi/model/Signature.java	(revision 0)
+++ juddi-core/src/main/java/org/apache/juddi/model/Signature.java	(revision 0)
@@ -0,0 +1,160 @@
+/*
+ * 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.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")
+public class Signature implements java.io.Serializable {
+    private static final long serialVersionUID = -3233157941119408718L;
+    
+    private Long id;
+    private SignedInfo signedInfo;
+    private SignatureValue signatureValue;
+    private KeyInfo keyInfo;
+    private List<ObjectType> object;
+    private BusinessEntity businessEntity;
+    private BusinessService businessService;
+    private Publisher publisher;
+    private BindingTemplate bindingTemplate;
+    private Tmodel tmodel;
+    private String xmlID;
+
+    @Id
+    @GeneratedValue(strategy=GenerationType.AUTO)
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    @ManyToOne
+    @JoinColumn(name = "binding_template_key", nullable = true)
+    public BindingTemplate getBindingTemplate() {
+        return bindingTemplate;
+    }
+
+    public void setBindingTemplate(BindingTemplate bindingTemplate) {
+        this.bindingTemplate = bindingTemplate;
+    }
+
+    @ManyToOne
+    @JoinColumn(name = "tmodel_key", nullable = true)
+    public Tmodel getTmodel() {
+        return tmodel;
+    }
+
+    public void setTmodel(Tmodel tmodel) {
+        this.tmodel = tmodel;
+    }
+    
+    @ManyToOne
+    @JoinColumn(name = "publisher_key", nullable = true)
+    public Publisher getPublisher() {
+        return publisher;
+    }
+
+    public void setPublisher(Publisher publisher) {
+        this.publisher = publisher;
+    }
+    
+    @ManyToOne
+    @JoinColumn(name = "business_service_key", nullable = true)
+    public BusinessService getBusinessService() {
+        return businessService;
+    }
+
+    public void setBusinessService(BusinessService businessService) {
+        this.businessService = businessService;
+    }
+    
+    @ManyToOne
+    @JoinColumn(name = "business_key", nullable = true)
+    public BusinessEntity getBusinessEntity() {
+        return businessEntity;
+    }
+
+    public void setBusinessEntity(BusinessEntity businessEntity) {
+        this.businessEntity = businessEntity;
+    }
+
+    @ManyToOne(fetch = FetchType.LAZY, cascade=CascadeType.ALL)
+    @JoinColumn(name = "signed_info", nullable = false)
+    public SignedInfo getSignedInfo() {
+        return signedInfo;
+    }
+
+    public void setSignedInfo(SignedInfo signedInfo) {
+        this.signedInfo = signedInfo;
+    }
+
+    @ManyToOne(fetch = FetchType.LAZY, cascade=CascadeType.ALL)
+    @JoinColumn(name = "signature_value", nullable = false)
+    public SignatureValue getSignatureValue() {
+        return signatureValue;
+    }
+
+    public void setSignatureValue(SignatureValue signatureValue) {
+        this.signatureValue = signatureValue;
+    }
+
+    @ManyToOne(fetch = FetchType.LAZY, cascade=CascadeType.ALL)
+    @JoinColumn(name = "key_info", nullable = false)
+    public KeyInfo getKeyInfo() {
+        return keyInfo;
+    }
+
+    public void setKeyInfo(KeyInfo keyInfo) {
+        this.keyInfo = keyInfo;
+    }
+
+    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "signature")
+    @OrderBy
+    public List<ObjectType> getObject() {
+        return object;
+    }
+
+    public void setObject(List<ObjectType> object) {
+        this.object = object;
+    }
+
+    @Column(name="xml_id")
+    public String getXmlID() {
+        return xmlID;
+    }
+
+    public void setXmlID(String xmlID) {
+        this.xmlID = xmlID;
+    }
+}
Index: juddi-core/src/main/java/org/apache/juddi/model/SignatureMethod.java
===================================================================
--- juddi-core/src/main/java/org/apache/juddi/model/SignatureMethod.java	(revision 0)
+++ juddi-core/src/main/java/org/apache/juddi/model/SignatureMethod.java	(revision 0)
@@ -0,0 +1,52 @@
+/*
+ * 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.Table;
+
+/**
+ *
+ */
+@Entity
+@Table(name="j3_signature_method")
+public class SignatureMethod {
+    private Long id;
+    private String algorithm;
+    
+    @Id
+    @GeneratedValue(strategy=GenerationType.AUTO)
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    @Column(name="algorithm")
+    public String getAlgorithm() {
+        return algorithm;
+    }
+
+    public void setAlgorithm(String algorithm) {
+        this.algorithm = algorithm;
+    }
+}
Index: juddi-core/src/main/java/org/apache/juddi/model/ObjectTypeContent.java
===================================================================
--- juddi-core/src/main/java/org/apache/juddi/model/ObjectTypeContent.java	(revision 0)
+++ juddi-core/src/main/java/org/apache/juddi/model/ObjectTypeContent.java	(revision 0)
@@ -0,0 +1,68 @@
+/*
+ * 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.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_object_type_content")
+public class ObjectTypeContent implements java.io.Serializable {
+    private static final long serialVersionUID = -3233157941119408715L;
+    
+    private Long id;
+    private ObjectType objectType;
+    private byte[] content;
+    
+    @Id
+    @GeneratedValue(strategy=GenerationType.AUTO)
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "object_type_key", nullable = false)
+    public ObjectType getObjectType() {
+        return objectType;
+    }
+
+    public void setObjectType(ObjectType objectType) {
+        this.objectType = objectType;
+    }
+    
+    @Lob
+    public byte[] getContent() {
+        return content;
+    }
+    
+    public void setContent(byte[] content) {
+        this.content = content;
+    }
+}
Index: juddi-core/src/main/java/org/apache/juddi/model/KeyInfo.java
===================================================================
--- juddi-core/src/main/java/org/apache/juddi/model/KeyInfo.java	(revision 0)
+++ juddi-core/src/main/java/org/apache/juddi/model/KeyInfo.java	(revision 0)
@@ -0,0 +1,71 @@
+/*
+ * 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.OneToMany;
+import javax.persistence.OrderBy;
+import javax.persistence.Table;
+
+/**
+ *
+ */
+@Entity
+@Table(name="j3_key_info")
+public class KeyInfo implements java.io.Serializable {
+    private static final long serialVersionUID = -7353389848796421615L;
+
+    private Long id;
+    private List<X509KeyInfo> x509KeyInfo = new ArrayList<X509KeyInfo>(0);
+    private String xmlID;
+    
+    @Id
+    @GeneratedValue(strategy=GenerationType.AUTO)
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "keyInfo")
+    @OrderBy
+    public List<X509KeyInfo> getX509KeyInfo() {
+        return x509KeyInfo;
+    }
+
+    public void setX509KeyInfo(List<X509KeyInfo> x509KeyInfo) {
+        this.x509KeyInfo = x509KeyInfo;
+    }
+    
+    @Column(name="xml_id")
+    public String getXmlID() {
+        return xmlID;
+    }
+
+    public void setXmlID(String xmlID) {
+        this.xmlID = xmlID;
+    }
+}
Index: juddi-core/src/main/java/org/apache/juddi/model/SignedInfo.java
===================================================================
--- juddi-core/src/main/java/org/apache/juddi/model/SignedInfo.java	(revision 0)
+++ juddi-core/src/main/java/org/apache/juddi/model/SignedInfo.java	(revision 0)
@@ -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;
+    }
+}
Index: juddi-core/src/main/java/org/apache/juddi/model/CanonicalizationMethod.java
===================================================================
--- juddi-core/src/main/java/org/apache/juddi/model/CanonicalizationMethod.java	(revision 0)
+++ juddi-core/src/main/java/org/apache/juddi/model/CanonicalizationMethod.java	(revision 0)
@@ -0,0 +1,53 @@
+/*
+ * 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.Table;
+
+/**
+ *
+ * @author jsightler
+ */
+@Entity
+@Table(name="j3_canonicalization_method")
+public class CanonicalizationMethod {
+    private Long id;
+    private String algorithm;
+    
+    @Id
+    @GeneratedValue(strategy=GenerationType.AUTO)
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    @Column(name="algorithm")
+    public String getAlgorithm() {
+        return algorithm;
+    }
+
+    public void setAlgorithm(String algorithm) {
+        this.algorithm = algorithm;
+    }
+}
Index: juddi-core/src/main/java/org/apache/juddi/config/Release.java
===================================================================
--- juddi-core/src/main/java/org/apache/juddi/config/Release.java	(revision 1355564)
+++ juddi-core/src/main/java/org/apache/juddi/config/Release.java	(working copy)
@@ -20,7 +20,7 @@
  * in main/java/resources/version
  */
 public class Release {
-	private static final String REGISTRY_VERSION = "3.1.3-SNAPSHOT";
+	private static final String REGISTRY_VERSION = "3.1.4-SNAPSHOT";
 	private static final String UDDI_VERSION = "3.0";
    
 	private Release () {
Index: juddi-core/src/main/java/org/apache/juddi/mapping/MappingApiToModel.java
===================================================================
--- juddi-core/src/main/java/org/apache/juddi/mapping/MappingApiToModel.java	(revision 1355564)
+++ juddi-core/src/main/java/org/apache/juddi/mapping/MappingApiToModel.java	(working copy)
@@ -17,20 +17,43 @@
 
 package org.apache.juddi.mapping;
 
+import com.sun.media.sound.ModelAbstractChannelMixer;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.GregorianCalendar;
 import java.util.List;
+import javax.xml.bind.JAXBElement;
 
 import javax.xml.bind.JAXBException;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.juddi.jaxb.JAXBMarshaller;
+import org.apache.juddi.model.BindingTemplate;
+import org.apache.juddi.model.BusinessService;
+import org.apache.juddi.model.CanonicalizationMethod;
+import org.apache.juddi.model.KeyInfo;
+import org.apache.juddi.model.Publisher;
+import org.apache.juddi.model.PublisherAssertion;
+import org.apache.juddi.model.Reference;
+import org.apache.juddi.model.Signature;
+import org.apache.juddi.model.SignatureMethod;
+import org.apache.juddi.model.SignatureTransform;
+import org.apache.juddi.model.SignatureValue;
+import org.apache.juddi.model.SignedInfo;
+import org.apache.juddi.model.Tmodel;
+import org.apache.juddi.model.X509CRL;
+import org.apache.juddi.model.X509Certificate;
+import org.apache.juddi.model.X509KeyInfo;
+import org.apache.juddi.model.X509SKI;
+import org.apache.juddi.model.X509SubjectName;
 import org.apache.juddi.v3.error.ErrorMessage;
 import org.apache.juddi.v3.error.FatalErrorException;
 import org.uddi.api_v3.Description;
 import org.uddi.sub_v3.ObjectFactory;
 import org.uddi.v3_service.DispositionReportFaultMessage;
+import org.w3._2000._09.xmldsig_.X509DataType;
+import org.w3._2000._09.xmldsig_.X509IssuerSerialType;
 
 
 /**
@@ -55,6 +78,7 @@
 		modelPublisher.setMaxBusinesses(apiPublisher.getMaxBusinesses());
 		modelPublisher.setMaxServicesPerBusiness(apiPublisher.getMaxServicePerBusiness());
 		modelPublisher.setMaxTmodels(apiPublisher.getMaxTModels());
+                mapPublisherSignatures(apiPublisher.getSignature(), modelPublisher);
 	}
 	
 	public static void mapBusinessEntity(org.uddi.api_v3.BusinessEntity apiBusinessEntity, 
@@ -77,8 +101,184 @@
 							modelBusinessEntity.getBusinessServices(), 
 							modelBusinessEntity.getServiceProjections(), 
 							modelBusinessEntity);
+                
+                mapBusinessSignature(apiBusinessEntity.getSignature(), modelBusinessEntity);
 	}
-	
+        
+        private static List<Signature> mapApiSignaturesToModelSignatures(List<org.w3._2000._09.xmldsig_.SignatureType> apiSignatures) 
+				   throws DispositionReportFaultMessage {
+            List<Signature> modelSignatures = new ArrayList<Signature>();
+            modelSignatures.clear();
+            for (org.w3._2000._09.xmldsig_.SignatureType signatureType : apiSignatures) {
+                Signature modelSignature = new Signature();
+                
+                org.w3._2000._09.xmldsig_.SignedInfoType apiSignedInfo = signatureType.getSignedInfo();
+                SignedInfo modelSignedInfo = new SignedInfo();
+                modelSignature.setSignedInfo(modelSignedInfo);
+                
+                String canonicalizationAlgMethod = apiSignedInfo.getCanonicalizationMethod().getAlgorithm();
+                CanonicalizationMethod modelCanonMethod = new CanonicalizationMethod();
+                modelSignedInfo.setCanonicalizationMethod(modelCanonMethod);
+                modelCanonMethod.setAlgorithm(canonicalizationAlgMethod);
+                
+                SignatureMethod modelSigMethod = new SignatureMethod();
+                modelSignedInfo.setSignatureMethod(modelSigMethod);
+                String sigMethod = apiSignedInfo.getSignatureMethod().getAlgorithm();
+                modelSigMethod.setAlgorithm(sigMethod);
+                
+                List<org.w3._2000._09.xmldsig_.ReferenceType> apiReferenceList = apiSignedInfo.getReference();
+                for (org.w3._2000._09.xmldsig_.ReferenceType apiReference : apiReferenceList) {
+                    Reference ref = new Reference();
+                    ref.setSignedInfo(modelSignedInfo);
+                    
+                    String refUri = apiReference.getURI();
+                    if (refUri == null) {
+                        refUri = "";
+                    }
+                    ref.setUri(refUri);
+                    
+                    List<org.w3._2000._09.xmldsig_.TransformType> apiTransformList = apiReference.getTransforms().getTransform();
+                    for (org.w3._2000._09.xmldsig_.TransformType apiTransform : apiTransformList) {
+                        SignatureTransform modelTransform = new SignatureTransform();
+                        modelTransform.setReference(ref);
+                        modelTransform.setTransform(apiTransform.getAlgorithm());
+                        ref.getTransforms().add(modelTransform);
+                    }
+                    
+                    String digestMethodStr = apiReference.getDigestMethod().getAlgorithm();
+                    byte[] digestValueBytes = apiReference.getDigestValue();
+                    
+                    ref.setDigestMethod(digestMethodStr);
+                    ref.setDigestValue(digestValueBytes);
+                    
+                    modelSignedInfo.getReference().add(ref);
+                }
+                
+                modelSignedInfo.setCanonicalizationMethod(modelCanonMethod);
+                
+                org.w3._2000._09.xmldsig_.SignatureValueType apiSignatureValue = signatureType.getSignatureValue();
+                SignatureValue modelSignatureValue = new SignatureValue();
+                byte[] signatureValueBytes = apiSignatureValue.getValue();
+                String signatureValueXmlID = apiSignatureValue.getId();
+                modelSignatureValue.setValue(signatureValueBytes);
+                modelSignatureValue.setXmlID(signatureValueXmlID);
+                modelSignature.setSignatureValue(modelSignatureValue);
+                
+                org.w3._2000._09.xmldsig_.KeyInfoType apiKeyInfo = signatureType.getKeyInfo();
+                String apiKeyInfoXmlID = apiKeyInfo.getId();
+                KeyInfo modelKeyInfo = new KeyInfo();
+                modelSignature.setKeyInfo(modelKeyInfo);
+                modelKeyInfo.setXmlID(apiKeyInfoXmlID);
+                
+                List<Object> apiKeyInfoContentList = apiKeyInfo.getContent();
+                List<X509KeyInfo> x509KeyInfoList = modelKeyInfo.getX509KeyInfo();
+                for (Object apiKeyInfoContentObj : apiKeyInfoContentList) {
+                    JAXBElement apiKeyInfoContentJAXB = (JAXBElement)apiKeyInfoContentObj;
+                    if (apiKeyInfoContentJAXB.getValue() instanceof X509DataType) {
+                        X509DataType apiKeyInfoContent = (X509DataType)apiKeyInfoContentJAXB.getValue();
+                        X509KeyInfo modelX509KeyInfo = new X509KeyInfo();
+                        modelX509KeyInfo.setKeyInfo(modelKeyInfo);
+                        
+                        List<Object> x509IssuerSerialOrX509SKIOrX509SubjectNameList = apiKeyInfoContent.getX509IssuerSerialOrX509SKIOrX509SubjectName();
+                        for (Object x509IssuerSerialOrX509SKIOrX509SubjectNameObj : x509IssuerSerialOrX509SKIOrX509SubjectNameList) {
+                            JAXBElement x509IssuerSerialOrX509SKIOrX509SubjectNameJAXB = (JAXBElement)x509IssuerSerialOrX509SKIOrX509SubjectNameObj;
+                            String tagName = x509IssuerSerialOrX509SKIOrX509SubjectNameJAXB.getName().getLocalPart();
+                            Object x509IssuerSerialOrX509SKIOrX509SubjectName = x509IssuerSerialOrX509SKIOrX509SubjectNameJAXB.getValue();
+                            if ("X509Certificate".equals(tagName)) {
+                                byte[] contents = (byte[])x509IssuerSerialOrX509SKIOrX509SubjectName;
+                                X509Certificate modelX509Cert = new X509Certificate();
+                                modelX509Cert.setContent(contents);
+                                modelX509Cert.setX509KeyInfo(modelX509KeyInfo);
+                                modelX509KeyInfo.getX509Certificate().add(modelX509Cert);
+                            } else if ("X509SKI".equals(tagName)) {
+                                byte[] contents = (byte[])x509IssuerSerialOrX509SKIOrX509SubjectName;
+                                X509SKI modelX509SKI = new X509SKI();
+                                modelX509SKI.setContent(contents);
+                                modelX509SKI.setX509KeyInfo(modelX509KeyInfo);
+                                modelX509KeyInfo.getX509SKI().add(modelX509SKI);
+                            } else if ("X509CRL".equals(tagName)) {    
+                                byte[] contents = (byte[])x509IssuerSerialOrX509SKIOrX509SubjectName;
+                                X509CRL modelX509CRL = new X509CRL();
+                                modelX509CRL.setContent(contents);
+                                modelX509CRL.setX509KeyInfo(modelX509KeyInfo);
+                                modelX509CRL.setX509KeyInfo(modelX509KeyInfo);
+                                modelX509KeyInfo.getX509CRL().add(modelX509CRL);
+                            } else if ("X509IssuerSerial".equals(tagName)) {    
+                                // NOT YET IMPLEMENTED
+                            } else if ("X509SubjectName".equals(tagName)) {
+                                String val = (String)x509IssuerSerialOrX509SKIOrX509SubjectName;
+                                X509SubjectName modelX509SubjectName = new X509SubjectName();
+                                modelX509SubjectName.setContent(val);
+                                modelX509SubjectName.setX509KeyInfo(modelX509KeyInfo);
+                                modelX509KeyInfo.getX509SubjectName().add(modelX509SubjectName);
+                            } else {
+                                throw new RuntimeException("Unrecognized type: " + x509IssuerSerialOrX509SKIOrX509SubjectName.getClass().getName() + ", tag: " + tagName + ", value: " + x509IssuerSerialOrX509SKIOrX509SubjectName);
+                            }
+                        }
+                        x509KeyInfoList.add(modelX509KeyInfo);
+                    }
+                }
+                
+                
+                modelSignatures.add(modelSignature);
+            }
+            return modelSignatures;
+        }
+        
+        public static void mapBusinessServiceSignature (List<org.w3._2000._09.xmldsig_.SignatureType> apiSignatures, BusinessService modelBusinessService)
+				   throws DispositionReportFaultMessage {
+            List<Signature> modelSignatures = mapApiSignaturesToModelSignatures(apiSignatures);
+            for (Signature modelSignature : modelSignatures) {
+                modelSignature.setBusinessService(modelBusinessService);
+            }
+            modelBusinessService.setSignatures(modelSignatures);
+        }
+        
+        public static void mapTmodelSignatures(List<org.w3._2000._09.xmldsig_.SignatureType> apiSignatures, Tmodel modelTmodel)
+				   throws DispositionReportFaultMessage {
+            List<Signature> modelSignatures = mapApiSignaturesToModelSignatures(apiSignatures);
+            for (Signature modelSignature : modelSignatures) {
+                modelSignature.setTmodel(modelTmodel);
+            }
+            modelTmodel.setSignatures(modelSignatures);
+        }
+        
+        public static void mapPublisherAssertionSignatures(List<org.w3._2000._09.xmldsig_.SignatureType> apiSignatures, PublisherAssertion modelPublisherAssertion)
+				   throws DispositionReportFaultMessage {
+            List<Signature> modelSignatures = mapApiSignaturesToModelSignatures(apiSignatures);
+            for (Signature modelSignature : modelSignatures) {
+                modelSignature.setPublisherAssertion(modelPublisherAssertion);
+            }
+            modelPublisherAssertion.setSignatures(modelSignatures);
+        }
+        
+        public static void mapBindingTemplateSignatures(List<org.w3._2000._09.xmldsig_.SignatureType> apiSignatures, BindingTemplate modelBindingTemplate)
+				   throws DispositionReportFaultMessage {
+            List<Signature> modelSignatures = mapApiSignaturesToModelSignatures(apiSignatures);
+            for (Signature modelSignature : modelSignatures) {
+                modelSignature.setBindingTemplate(modelBindingTemplate);
+            }
+            modelBindingTemplate.setSignatures(modelSignatures);
+        }
+        
+        public static void mapPublisherSignatures(List<org.w3._2000._09.xmldsig_.SignatureType> apiSignatures, Publisher modelPublisher)
+				   throws DispositionReportFaultMessage {
+            List<Signature> modelSignatures = mapApiSignaturesToModelSignatures(apiSignatures);
+            for (Signature modelSignature : modelSignatures) {
+                modelSignature.setPublisher(modelPublisher);
+            }
+            modelPublisher.setSignatures(modelSignatures);
+        }
+        
+        public static void mapBusinessSignature(List<org.w3._2000._09.xmldsig_.SignatureType> apiSignatures, 
+										 org.apache.juddi.model.BusinessEntity modelBusinessEntity)
+				   throws DispositionReportFaultMessage {
+            List<Signature> modelSignatures = mapApiSignaturesToModelSignatures(apiSignatures);
+            for (Signature modelSignature : modelSignatures) {
+                modelSignature.setBusinessEntity(modelBusinessEntity);
+            }
+            modelBusinessEntity.setSignatures(modelSignatures);
+        }	
 
 	public static void mapBusinessNames(List<org.uddi.api_v3.Name> apiNameList, 
 										List<org.apache.juddi.model.BusinessName> modelNameList,
@@ -278,11 +478,9 @@
 		}
 		
 		mapBindingTemplates(apiBusinessService.getBindingTemplates(), modelBusinessService.getBindingTemplates(), modelBusinessService);
-
+                mapBusinessServiceSignature(apiBusinessService.getSignature(), modelBusinessService);
 	}
-
 	
-	
 	public static void mapServiceNames(List<org.uddi.api_v3.Name> apiNameList, 
 									   List<org.apache.juddi.model.ServiceName> modelNameList,
 									   org.apache.juddi.model.BusinessService modelBusinessService) 
@@ -342,6 +540,7 @@
 			mapCategoryBag(apiBindingTemplate.getCategoryBag(), modelBindingTemplate.getCategoryBag());
 		}
 		mapTModelInstanceDetails(apiBindingTemplate.getTModelInstanceDetails(), modelBindingTemplate.getTmodelInstanceInfos(), modelBindingTemplate);
+                mapBindingTemplateSignatures(apiBindingTemplate.getSignature(), modelBindingTemplate);
 	}
 	
 	public static void mapBindingDescriptions(List<org.uddi.api_v3.Description> apiDescList, 
@@ -501,6 +700,7 @@
 			mapCategoryBag(apiTModel.getCategoryBag(), modelTModel.getCategoryBag());
 		}
 		mapTModelOverviewDocs(apiTModel.getOverviewDoc(), modelTModel.getOverviewDocs(), modelTModel);
+                mapTmodelSignatures(apiTModel.getSignature(), modelTModel);
 	}
 
 	public static void mapTModelDescriptions(List<org.uddi.api_v3.Description> apiDescList, 
@@ -561,6 +761,7 @@
 			modelPubAssertion.setKeyName(apiKeyedRef.getKeyName());
 			modelPubAssertion.setKeyValue(apiKeyedRef.getKeyValue());
 		}
+                mapPublisherAssertionSignatures(apiPubAssertion.getSignature(), modelPubAssertion);
 	}
 
 	public static void mapSubscription(org.uddi.sub_v3.Subscription apiSubscription,
Index: juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java
===================================================================
--- juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java	(revision 1355564)
+++ juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java	(working copy)
@@ -20,8 +20,10 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import javax.xml.bind.JAXBElement;
 
 import javax.xml.bind.JAXBException;
+import javax.xml.namespace.QName;
 
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.logging.Log;
@@ -29,8 +31,19 @@
 import org.apache.juddi.config.AppConfig;
 import org.apache.juddi.config.Property;
 import org.apache.juddi.jaxb.JAXBMarshaller;
+import org.apache.juddi.model.CanonicalizationMethod;
+import org.apache.juddi.model.KeyInfo;
 import org.apache.juddi.model.OverviewDoc;
+import org.apache.juddi.model.Reference;
+import org.apache.juddi.model.SignatureTransform;
+import org.apache.juddi.model.SignatureValue;
+import org.apache.juddi.model.SignedInfo;
 import org.apache.juddi.model.UddiEntity;
+import org.apache.juddi.model.X509CRL;
+import org.apache.juddi.model.X509Certificate;
+import org.apache.juddi.model.X509KeyInfo;
+import org.apache.juddi.model.X509SKI;
+import org.apache.juddi.model.X509SubjectName;
 import org.apache.juddi.subscription.TypeConvertor;
 import org.apache.juddi.v3.error.ErrorMessage;
 import org.apache.juddi.v3.error.FatalErrorException;
@@ -38,6 +51,17 @@
 import org.uddi.api_v3.OperationalInfo;
 import org.uddi.sub_v3.SubscriptionFilter;
 import org.uddi.v3_service.DispositionReportFaultMessage;
+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_.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.w3._2000._09.xmldsig_.X509DataType;
 
 /**
  * @author <a href="mailto:jfaath@apache.org">Jeff Faath</a>
@@ -60,6 +84,7 @@
 		apiPublisher.setMaxBusinesses(modelPublisher.getMaxBusinesses());
 		apiPublisher.setMaxServicePerBusiness(modelPublisher.getMaxServicesPerBusiness());
 		apiPublisher.setMaxTModels(modelPublisher.getMaxTmodels());
+                mapSignature(modelPublisher.getSignatures(), apiPublisher.getSignature());
 	}
 	
 	public static void mapBusinessEntity(org.apache.juddi.model.BusinessEntity modelBusinessEntity, 
@@ -78,8 +103,120 @@
 		
 		mapBusinessServices(modelBusinessEntity.getBusinessServices(), modelBusinessEntity.getServiceProjections(), apiBusinessEntity.getBusinessServices(), apiBusinessEntity);
 	
+                mapSignature(modelBusinessEntity.getSignatures(), apiBusinessEntity.getSignature());
 	}
 
+        public static void mapSignature(List<org.apache.juddi.model.Signature> signatureList,
+										List<org.w3._2000._09.xmldsig_.SignatureType> apiSignatureList) 
+				   throws DispositionReportFaultMessage {
+            apiSignatureList.clear();
+            for (org.apache.juddi.model.Signature modelSig : signatureList) {
+                SignatureType apiSignature = new SignatureType();
+                apiSignature.setId(modelSig.getXmlID());
+                
+                SignedInfo modelSignedInfo = modelSig.getSignedInfo();
+                SignedInfoType apiSignedInfoType = new SignedInfoType();
+                apiSignature.setSignedInfo(apiSignedInfoType);
+                // Canonicalization method
+                CanonicalizationMethod modelCanonMethod = modelSignedInfo.getCanonicalizationMethod();
+                CanonicalizationMethodType apiCanonMethod = new CanonicalizationMethodType();
+                apiCanonMethod.setAlgorithm(modelCanonMethod.getAlgorithm());
+                apiSignedInfoType.setCanonicalizationMethod(apiCanonMethod);
+                
+                // Signature Method
+                String sigAlg = modelSignedInfo.getSignatureMethod().getAlgorithm();
+                SignatureMethodType apiSigMethod = new SignatureMethodType();
+                apiSigMethod.setAlgorithm(sigAlg);
+                apiSignedInfoType.setSignatureMethod(apiSigMethod);
+                
+                // References
+                List<Reference> modelReferenceList = modelSignedInfo.getReference();
+                List<ReferenceType> apiReferenceList = apiSignedInfoType.getReference();
+                for (Reference modelRef : modelReferenceList) {
+                    ReferenceType apiRef = new ReferenceType();
+                    String refUri = modelRef.getUri();
+                    if (refUri == null) {
+                        refUri = "";
+                    }
+                    apiRef.setURI(refUri);
+                    
+                    List<SignatureTransform> modelSigTransformList = modelRef.getTransforms();
+                    TransformsType apiTransformsType = apiRef.getTransforms();
+                    if (apiTransformsType == null) {
+                        apiTransformsType = new TransformsType();
+                        apiRef.setTransforms(apiTransformsType);
+                    }
+                    List<TransformType> apiTransformList = apiTransformsType.getTransform();
+                    for (SignatureTransform modelSigTransform : modelSigTransformList) {
+                        String modelTransformAlgStr = modelSigTransform.getTransform();
+                        TransformType apiTransform = new TransformType();
+                        apiTransform.setAlgorithm(modelTransformAlgStr);
+                        apiTransformList.add(apiTransform);
+                    }
+                    
+                    String digestMethodStr = modelRef.getDigestMethod();
+                    byte[] digestValBytes = modelRef.getDigestValue();
+                    
+                    DigestMethodType apiDigestMethod = new DigestMethodType();
+                    apiDigestMethod.setAlgorithm(digestMethodStr);
+                    apiRef.setDigestMethod(apiDigestMethod);
+                    apiRef.setDigestValue(digestValBytes);
+                    
+                    apiReferenceList.add(apiRef);
+                }
+                
+                // Signature Value
+                SignatureValueType apiSignatureValue = new SignatureValueType();
+                SignatureValue modelSigValue = modelSig.getSignatureValue();
+                apiSignatureValue.setId(modelSigValue.getXmlID());
+                apiSignatureValue.setValue(modelSigValue.getValue());
+                
+                apiSignature.setSignatureValue(apiSignatureValue);
+                
+                KeyInfoType apiKeyInfo = new KeyInfoType();
+                KeyInfo modelKeyInfo = modelSig.getKeyInfo();
+                apiKeyInfo.setId(modelKeyInfo.getXmlID());
+                
+                List<X509KeyInfo> modelX509KeyInfoList = modelKeyInfo.getX509KeyInfo();
+                List<Object> apiX509KeyInfoList = apiKeyInfo.getContent();
+                for (X509KeyInfo modelX509KeyInfo : modelX509KeyInfoList) {
+                    X509DataType apiX509Data = new X509DataType();
+                    
+                    List<X509CRL> modelX509CRLList = modelX509KeyInfo.getX509CRL();
+                    for (X509CRL modelX509CRL : modelX509CRLList) {
+                        byte[] contents = modelX509CRL.getContent();
+                        JAXBElement dataJAXB = new JAXBElement(new QName("http://www.w3.org/2000/09/xmldsig#", "X509CRL"), byte[].class, contents);
+                        apiX509Data.getX509IssuerSerialOrX509SKIOrX509SubjectName().add(dataJAXB);
+                    }
+                    List<X509Certificate> modelX509CertificateList = modelX509KeyInfo.getX509Certificate();
+                    for (X509Certificate modelX509Certificate : modelX509CertificateList) {
+                        byte[] contents = modelX509Certificate.getContent();
+                        JAXBElement dataJAXB = new JAXBElement(new QName("http://www.w3.org/2000/09/xmldsig#", "X509Certificate"), byte[].class, contents);
+                        apiX509Data.getX509IssuerSerialOrX509SKIOrX509SubjectName().add(dataJAXB);
+                    }
+                    List<X509SKI> modelX509SKIList = modelX509KeyInfo.getX509SKI();
+                    for (X509SKI modelX509SKI : modelX509SKIList) {
+                        byte[] contents = modelX509SKI.getContent();
+                        JAXBElement dataJAXB = new JAXBElement(new QName("http://www.w3.org/2000/09/xmldsig#", "X509SKI"), byte[].class, contents);
+                        apiX509Data.getX509IssuerSerialOrX509SKIOrX509SubjectName().add(dataJAXB);
+                    }
+                    List<X509SubjectName> modelX509SubjectNameList = modelX509KeyInfo.getX509SubjectName();
+                    for (X509SubjectName modelX509SubjectName : modelX509SubjectNameList) {
+                        String contents = modelX509SubjectName.getContent();
+                        JAXBElement dataJAXB = new JAXBElement(new QName("http://www.w3.org/2000/09/xmldsig#", "X509SubjectName"), String.class, contents);
+                        apiX509Data.getX509IssuerSerialOrX509SKIOrX509SubjectName().add(dataJAXB);
+                    }
+                    
+                    JAXBElement apiX509DataJAXB = new JAXBElement(new QName("http://www.w3.org/2000/09/xmldsig#", "X509DataType"), X509DataType.class, apiX509Data);
+                    apiX509KeyInfoList.add(apiX509DataJAXB);
+                }
+                
+                apiSignature.setKeyInfo(apiKeyInfo);
+                
+                apiSignatureList.add(apiSignature);
+            }
+        }
+                
 	public static void mapBusinessNames(List<org.apache.juddi.model.BusinessName> modelNameList, 
 										List<org.uddi.api_v3.Name> apiNameList) 
 				   throws DispositionReportFaultMessage {
@@ -308,6 +445,7 @@
         mapBindingTemplates(modelBusinessService.getBindingTemplates(), apiBusinessService.getBindingTemplates(), apiBusinessService);
 		apiBusinessService.setCategoryBag(mapCategoryBag(modelBusinessService.getCategoryBag(), apiBusinessService.getCategoryBag()));
 
+                mapSignature(modelBusinessService.getSignatures(), apiBusinessService.getSignature());
 	}
 
 	public static void mapServiceNames(List<org.apache.juddi.model.ServiceName> modelNameList, 
@@ -390,7 +528,7 @@
 		mapBindingDescriptions(modelBindingTemplate.getBindingDescrs(), apiBindingTemplate.getDescription());
 
 		apiBindingTemplate.setCategoryBag(mapCategoryBag(modelBindingTemplate.getCategoryBag(), apiBindingTemplate.getCategoryBag()));
-
+                mapSignature(modelBindingTemplate.getSignatures(), apiBindingTemplate.getSignature());
 	}
 
 	public static void mapBindingDescriptions(List<org.apache.juddi.model.BindingDescr> modelDescList, 
@@ -559,6 +697,7 @@
 		apiTModel.setCategoryBag(mapCategoryBag(modelTModel.getCategoryBag(), apiTModel.getCategoryBag()));
 		
 		mapOverviewDocs(modelTModel.getOverviewDocs(), null, apiTModel);
+                mapSignature(modelTModel.getSignatures(), apiTModel.getSignature());
 	}
 
 	public static void mapTModelDescriptions(List<org.apache.juddi.model.TmodelDescr> modelDescList, 
@@ -674,7 +813,7 @@
 		keyedRef.setKeyValue(modelPublisherAssertion.getKeyValue());
 		
 		apiPublisherAssertion.setKeyedReference(keyedRef);
-		
+		mapSignature(modelPublisherAssertion.getSignatures(), apiPublisherAssertion.getSignature());
 	}
 	
 	public static void mapAssertionStatusItem(org.apache.juddi.model.PublisherAssertion modelPublisherAssertion, 
