iTextSharp.text.pdf.security.MakeXmlSignature.GenerateXadesBesObject C# (CSharp) Method

GenerateXadesBesObject() private static method

private static GenerateXadesBesObject ( XmlSignatureAppearance sap, String signatureId, String contentReferenceId, String signedPropertiesId, XmlElement &signedProperty ) : XmlElement
sap XmlSignatureAppearance
signatureId String
contentReferenceId String
signedPropertiesId String
signedProperty XmlElement
return XmlElement
        private static XmlElement GenerateXadesBesObject(XmlSignatureAppearance sap,
            String signatureId, String contentReferenceId, String signedPropertiesId, out XmlElement signedProperty) {

            HashAlgorithm md = new SHA1Managed();
            X509Certificate cert = sap.GetCertificate();

            XmlDocument doc = sap.GetXmlLocator().GetDocument();

            XmlElement dsObject = doc.CreateElement("Object", SecurityConstants.XMLDSIG_URI);

            XmlElement QualifyingProperties = doc.CreateElement(SecurityConstants.XADES_QualifyingProperties, SecurityConstants.XADES_132_URI);
            QualifyingProperties.SetAttribute("Target", "#"+signatureId);
            XmlElement SignedProperties = doc.CreateElement(SecurityConstants.XADES_SignedProperties, SecurityConstants.XADES_132_URI);
                SignedProperties.SetAttribute("Id", signedPropertiesId);
                XmlElement SignedSignatureProperties = doc.CreateElement(SecurityConstants.XADES_SignedSignatureProperties, SecurityConstants.XADES_132_URI);
                XmlElement SigningTime = doc.CreateElement(SecurityConstants.XADES_SigningTime, SecurityConstants.XADES_132_URI);
                            String result = sap.GetSignDate().ToString(SecurityConstants.SigningTimeFormat);
                        SigningTime.AppendChild(doc.CreateTextNode(result));
                    SignedSignatureProperties.AppendChild(SigningTime);
                    XmlElement SigningCertificate = doc.CreateElement(SecurityConstants.XADES_SigningCertificate, SecurityConstants.XADES_132_URI);
                    XmlElement Cert = doc.CreateElement(SecurityConstants.XADES_Cert, SecurityConstants.XADES_132_URI);
                    XmlElement CertDigest = doc.CreateElement(SecurityConstants.XADES_CertDigest, SecurityConstants.XADES_132_URI);
                                    XmlElement DigestMethod = doc.CreateElement(SecurityConstants.DigestMethod, SecurityConstants.XMLDSIG_URI);
                                    DigestMethod.SetAttribute(SecurityConstants.Algorithm, SecurityConstants.XMLDSIG_URI_SHA1);
                                CertDigest.AppendChild(DigestMethod);
                                    XmlElement DigestValue = doc.CreateElement(SecurityConstants.DigestValue, SecurityConstants.XMLDSIG_URI);
                                    DigestValue.AppendChild(doc.CreateTextNode(Convert.ToBase64String(md.ComputeHash(cert.GetEncoded()))));
                                CertDigest.AppendChild(DigestValue);
                            Cert.AppendChild(CertDigest);
                            XmlElement IssueSerial = doc.CreateElement(SecurityConstants.XADES_IssuerSerial, SecurityConstants.XADES_132_URI);
                                    XmlElement X509IssuerName = doc.CreateElement(SecurityConstants.X509IssuerName, SecurityConstants.XMLDSIG_URI);
                                    X509IssuerName.AppendChild(doc.CreateTextNode(GetX509IssuerName(cert)));
                                IssueSerial.AppendChild(X509IssuerName);
                                    XmlElement X509SerialNumber = doc.CreateElement(SecurityConstants.X509SerialNumber, SecurityConstants.XMLDSIG_URI);
                                    X509SerialNumber.AppendChild(doc.CreateTextNode(GetX509SerialNumber(cert)));
                                IssueSerial.AppendChild(X509SerialNumber);
                            Cert.AppendChild(IssueSerial);
                        SigningCertificate.AppendChild(Cert);
                    SignedSignatureProperties.AppendChild(SigningCertificate);
                    SignedProperties.AppendChild(SignedSignatureProperties);
                    XmlElement SignedDataObjectProperties = doc.CreateElement(SecurityConstants.XADES_SignedDataObjectProperties, SecurityConstants.XADES_132_URI);
                    XmlElement DataObjectFormat = doc.CreateElement(SecurityConstants.XADES_DataObjectFormat, SecurityConstants.XADES_132_URI);
                        DataObjectFormat.SetAttribute(SecurityConstants.ObjectReference, "#" + contentReferenceId);
                            String descr = sap.GetDescription();
                        if (descr != null) {
                            XmlElement Description = doc.CreateElement(SecurityConstants.XADES_Description, SecurityConstants.XADES_132_URI);
                            Description.AppendChild(doc.CreateTextNode(descr));
                        DataObjectFormat.AppendChild(Description);
                        }
                        XmlElement MimeType = doc.CreateElement(SecurityConstants.XADES_MimeType, SecurityConstants.XADES_132_URI);
                            MimeType.AppendChild(doc.CreateTextNode(sap.GetMimeType()));
                        DataObjectFormat.AppendChild(MimeType);
                            String enc = sap.GetXmlLocator().GetEncoding();
                        if (enc != null) {
                            XmlElement Encoding = doc.CreateElement(SecurityConstants.XADES_Encoding, SecurityConstants.XADES_132_URI);
                            Encoding.AppendChild(doc.CreateTextNode(enc));
                        DataObjectFormat.AppendChild(Encoding);
                        }
                    SignedDataObjectProperties.AppendChild(DataObjectFormat);
                SignedProperties.AppendChild(SignedDataObjectProperties);
            QualifyingProperties.AppendChild(SignedProperties);
            dsObject.AppendChild(QualifyingProperties);

            signedProperty = SignedProperties;
            return dsObject;
        }