private XmlElement CreateXadesObject(Org.BouncyCastle.X509.X509Certificate cert) { X509Name old = cert.SubjectDN; X509Name n = new X509Name(old.GetOidList(), old.GetValueList()); byte[] data = n.GetDerEncoded(); Sha1Digest hash = new Sha1Digest(); hash.BlockUpdate(data, 0, data.Length); byte[] result = new byte[hash.GetDigestSize()]; hash.DoFinal(result, 0); string sCertDigest = Convert.ToBase64String(result); string Issuer = cert.IssuerDN.ToString(true, X509Name.RFC2253Symbols); string Serial = cert.SerialNumber.LongValue.ToString(); XmlElement XmlObject = m_doc.CreateElement(ns_dsig_prefix, "Object", ns_dsig_uri); XmlAttribute Id = m_doc.CreateAttribute("Id"); Id.Value = "etsi-signed-1-1"; XmlObject.Attributes.Append(Id); XmlElement QualifyingProperties = m_doc.CreateElement(ns_etsi_prefix, "QualifyingProperties", ns_etsi_uri); XmlObject.AppendChild(QualifyingProperties); XmlAttribute Target = m_doc.CreateAttribute("Target"); Target.Value = "#signature-1-1"; QualifyingProperties.Attributes.Append(Target); XmlAttribute nsxml = m_doc.CreateAttribute("xmlns:" + ns_etsi_prefix); nsxml.Value = ns_etsi_uri; QualifyingProperties.Attributes.Append(nsxml); XmlElement SignedProperties = m_doc.CreateElement(ns_etsi_prefix, "SignedProperties", ns_etsi_uri); QualifyingProperties.AppendChild(SignedProperties); XmlElement SignedSignatureProperties = m_doc.CreateElement(ns_etsi_prefix, "SignedSignatureProperties", ns_etsi_uri); SignedProperties.AppendChild(SignedSignatureProperties); XmlElement SigningTime = m_doc.CreateElement(ns_etsi_prefix, "SigningTime", ns_etsi_uri); SignedSignatureProperties.AppendChild(SigningTime); SigningTime.AppendChild(m_doc.CreateTextNode(DateTime.UtcNow.ToString("s") + "Z")); XmlElement SigningCertificate = m_doc.CreateElement(ns_etsi_prefix, "SigningCertificate", ns_etsi_uri); SignedSignatureProperties.AppendChild(SigningCertificate); XmlElement Cert = m_doc.CreateElement(ns_etsi_prefix, "Cert", ns_etsi_uri); SigningCertificate.AppendChild(Cert); XmlElement CertDigest = m_doc.CreateElement(ns_etsi_prefix, "CertDigest", ns_etsi_uri); Cert.AppendChild(CertDigest); XmlElement DigestMethod = m_doc.CreateElement(ns_etsi_prefix, "DigestMethod", ns_etsi_uri); CertDigest.AppendChild(DigestMethod); XmlAttribute Algorithm = m_doc.CreateAttribute("Algorithm"); Algorithm.Value = "http://www.w3.org/2000/09/xmldsig#sha1"; DigestMethod.Attributes.Append(Algorithm); XmlElement DigestValue = m_doc.CreateElement(ns_etsi_prefix, "DigestValue", ns_etsi_uri); CertDigest.AppendChild(DigestValue); DigestValue.AppendChild(m_doc.CreateTextNode(sCertDigest)); XmlElement IssuerSerial = m_doc.CreateElement(ns_etsi_prefix, "IssuerSerial", ns_etsi_uri); Cert.AppendChild(IssuerSerial); XmlElement X509IssuerName = m_doc.CreateElement(ns_dsig_prefix, "X509IssuerName", ns_dsig_uri); IssuerSerial.AppendChild(X509IssuerName); X509IssuerName.AppendChild(m_doc.CreateTextNode(Issuer)); XmlElement X509SerialNumber = m_doc.CreateElement(ns_dsig_prefix, "X509SerialNumber", ns_dsig_uri); IssuerSerial.AppendChild(X509SerialNumber); X509SerialNumber.AppendChild(m_doc.CreateTextNode(Serial)); XmlElement SignaturePolicyIdentifier = m_doc.CreateElement(ns_etsi_prefix, "SignaturePolicyIdentifier", ns_etsi_uri); SignedSignatureProperties.AppendChild(SignaturePolicyIdentifier); XmlElement SignaturePolicyImplied = m_doc.CreateElement(ns_etsi_prefix, "SignaturePolicyImplied", ns_etsi_uri); SignaturePolicyIdentifier.AppendChild(SignaturePolicyImplied); XmlElement SignedDataObjectProperties = m_doc.CreateElement(ns_etsi_prefix, "SignedDataObjectProperties", ns_etsi_uri); SignedProperties.AppendChild(SignedDataObjectProperties); XmlElement DataObjectFormat = m_doc.CreateElement(ns_etsi_prefix, "DataObjectFormat", ns_etsi_uri); SignedDataObjectProperties.AppendChild(DataObjectFormat); XmlAttribute ObjectReference = m_doc.CreateAttribute("ObjectReference"); ObjectReference.Value = "#reference-1-1"; DataObjectFormat.Attributes.Append(ObjectReference); XmlElement MimeType = m_doc.CreateElement(ns_etsi_prefix, "MimeType", ns_etsi_uri); DataObjectFormat.AppendChild(MimeType); MimeType.AppendChild(m_doc.CreateTextNode("text/xml")); return(XmlObject); }