/** * Signs the xml using the enveloped mode, with optional xpath transform (see XmlSignatureAppearance). * @param sap the XmlSignatureAppearance * @param externalSignature the interface providing the actual signing * @param keyInfo KeyInfo for verification * @throws GeneralSecurityException * @throws IOException * @throws DocumentException */ public static void SignXmlDSig(XmlSignatureAppearance sap, IExternalSignature externalSignature, KeyInfoClause keyInfo) { VerifyArguments(sap, externalSignature); List<XmlElement> references = new List<XmlElement>(1); references.Add(GenerateContentReference(sap.GetXmlLocator().GetDocument(), sap, null)); XmlElement signature = GenerateSignatureElement(sap.GetXmlLocator(), null, false); Sign(signature, sap.GetXmlLocator(), externalSignature, references, null, keyInfo); sap.Close(); }
/** * Signs the xml using the enveloped mode, with optional xpath transform (see XmlSignatureAppearance). * @param sap the XmlSignatureAppearance * @param externalSignature the interface providing the actual signing * @param keyInfo KeyInfo for verification * @throws GeneralSecurityException * @throws IOException * @throws DocumentException */ public static void SignXmlDSig(XmlSignatureAppearance sap, IExternalSignature externalSignature, KeyInfoClause keyInfo) { VerifyArguments(sap, externalSignature); List <XmlElement> references = new List <XmlElement>(1); references.Add(GenerateContentReference(sap.GetXmlLocator().GetDocument(), sap, null)); XmlElement signature = GenerateSignatureElement(sap.GetXmlLocator(), null, false); Sign(signature, sap.GetXmlLocator(), externalSignature, references, null, keyInfo); sap.Close(); }
/** * Signs the xml with XAdES BES using the enveloped mode, with optional xpath transform (see XmlSignatureAppearance). * @param sap the XmlSignatureAppearance * @param externalSignature the interface providing the actual signing * @param chain the certificate chain * @param includeSignaturePolicy if true SignaturePolicyIdentifier will be included (XAdES-EPES) * @throws GeneralSecurityException * @throws IOException * @throws DocumentException */ public static void SignXades(XmlSignatureAppearance sap, IExternalSignature externalSignature, X509Certificate[] chain, bool includeSignaturePolicy) { VerifyArguments(sap, externalSignature); String contentReferenceId = SecurityConstants.Reference_ + GetRandomId(); String signedPropertiesId = SecurityConstants.SignedProperties_ + GetRandomId(); String signatureId = SecurityConstants.Signature_ + GetRandomId(); XmlDocument doc = sap.GetXmlLocator().GetDocument(); doc.XmlResolver = null; KeyInfoClause keyInfo = GenerateKeyInfo(chain, sap); List <XmlElement> references = new List <XmlElement>(2); XmlElement signature = GenerateSignatureElement(sap.GetXmlLocator(), signatureId, true); String[] signaturePolicy = null; if (includeSignaturePolicy) { signaturePolicy = new String[2]; if (externalSignature.GetEncryptionAlgorithm().Equals(SecurityConstants.RSA)) { signaturePolicy[0] = SecurityConstants.OID_RSA_SHA1; signaturePolicy[1] = SecurityConstants.OID_RSA_SHA1_DESC; } else { signaturePolicy[0] = SecurityConstants.OID_DSA_SHA1; signaturePolicy[1] = SecurityConstants.OID_DSA_SHA1_DESC; } } XmlElement signedProperty; XmlElement dsObject = GenerateXadesObject(sap, signatureId, contentReferenceId, signedPropertiesId, signaturePolicy, out signedProperty); references.Add(GenerateCustomReference(doc, signedProperty, "#" + signedPropertiesId, SecurityConstants.SignedProperties_Type, null)); references.Add(GenerateContentReference(doc, sap, contentReferenceId)); Sign(signature, sap.GetXmlLocator(), externalSignature, references, dsObject, keyInfo); sap.Close(); }
/** * Signs the xml with XAdES BES using the enveloped mode, with optional xpath transform (see XmlSignatureAppearance). * @param sap the XmlSignatureAppearance * @param externalSignature the interface providing the actual signing * @param chain the certificate chain * @throws GeneralSecurityException * @throws IOException * @throws DocumentException */ public static void SignXadesBes(XmlSignatureAppearance sap, IExternalSignature externalSignature, X509Certificate[] chain) { VerifyArguments(sap, externalSignature); String contentReferenceId = SecurityConstants.Reference_ + GetRandomId(); String signedPropertiesId = SecurityConstants.SignedProperties_ + GetRandomId(); String signatureId = SecurityConstants.Signature_ + GetRandomId(); XmlDocument doc = sap.GetXmlLocator().GetDocument(); KeyInfoClause keyInfo = GenerateKeyInfo(chain, sap); List <XmlElement> references = new List <XmlElement>(2); XmlElement signature = GenerateSignatureElement(sap.GetXmlLocator(), signatureId, true); XmlElement signedProperty; XmlElement dsObject = GenerateXadesBesObject(sap, signatureId, contentReferenceId, signedPropertiesId, out signedProperty); references.Add(GenerateCustomReference(doc, signedProperty, "#" + signedPropertiesId, SecurityConstants.SignedProperties_Type, null)); references.Add(GenerateContentReference(doc, sap, contentReferenceId)); Sign(signature, sap.GetXmlLocator(), externalSignature, references, dsObject, keyInfo); sap.Close(); }
/** * Signs the xml with XAdES BES using the enveloped mode, with optional xpath transform (see XmlSignatureAppearance). * @param sap the XmlSignatureAppearance * @param externalSignature the interface providing the actual signing * @param chain the certificate chain * @throws GeneralSecurityException * @throws IOException * @throws DocumentException */ public static void SignXadesBes(XmlSignatureAppearance sap, IExternalSignature externalSignature, X509Certificate[] chain) { VerifyArguments(sap, externalSignature); String contentReferenceId = SecurityConstants.Reference_ + GetRandomId(); String signedPropertiesId = SecurityConstants.SignedProperties_ + GetRandomId(); String signatureId = SecurityConstants.Signature_ + GetRandomId(); XmlDocument doc = sap.GetXmlLocator().GetDocument(); KeyInfoClause keyInfo = GenerateKeyInfo(chain, sap); List<XmlElement> references = new List<XmlElement>(2); XmlElement signature = GenerateSignatureElement(sap.GetXmlLocator(), signatureId, true); XmlElement signedProperty; XmlElement dsObject = GenerateXadesBesObject(sap, signatureId, contentReferenceId, signedPropertiesId, out signedProperty); references.Add(GenerateCustomReference(doc, signedProperty, "#" + signedPropertiesId, SecurityConstants.SignedProperties_Type, null)); references.Add(GenerateContentReference(doc, sap, contentReferenceId)); Sign(signature, sap.GetXmlLocator(), externalSignature, references, dsObject, keyInfo); sap.Close(); }
/** * Signs the xml with XAdES BES using the enveloped mode, with optional xpath transform (see XmlSignatureAppearance). * @param sap the XmlSignatureAppearance * @param externalSignature the interface providing the actual signing * @param chain the certificate chain * @param includeSignaturePolicy if true SignaturePolicyIdentifier will be included (XAdES-EPES) * @throws GeneralSecurityException * @throws IOException * @throws DocumentException */ public static void SignXades(XmlSignatureAppearance sap, IExternalSignature externalSignature, X509Certificate[] chain, bool includeSignaturePolicy) { VerifyArguments(sap, externalSignature); String contentReferenceId = SecurityConstants.Reference_ + GetRandomId(); String signedPropertiesId = SecurityConstants.SignedProperties_ + GetRandomId(); String signatureId = SecurityConstants.Signature_ + GetRandomId(); XmlDocument doc = sap.GetXmlLocator().GetDocument(); KeyInfoClause keyInfo = GenerateKeyInfo(chain, sap); List<XmlElement> references = new List<XmlElement>(2); XmlElement signature = GenerateSignatureElement(sap.GetXmlLocator(), signatureId, true); String[] signaturePolicy = null; if(includeSignaturePolicy) { signaturePolicy = new String[2]; if(externalSignature.GetEncryptionAlgorithm().Equals(SecurityConstants.RSA)) { signaturePolicy[0] = SecurityConstants.OID_RSA_SHA1; signaturePolicy[1] = SecurityConstants.OID_RSA_SHA1_DESC; } else { signaturePolicy[0] = SecurityConstants.OID_DSA_SHA1; signaturePolicy[1] = SecurityConstants.OID_DSA_SHA1_DESC; } } XmlElement signedProperty; XmlElement dsObject = GenerateXadesObject(sap, signatureId, contentReferenceId, signedPropertiesId, signaturePolicy, out signedProperty); references.Add(GenerateCustomReference(doc, signedProperty, "#" + signedPropertiesId, SecurityConstants.SignedProperties_Type, null)); references.Add(GenerateContentReference(doc, sap, contentReferenceId)); Sign(signature, sap.GetXmlLocator(), externalSignature, references, dsObject, keyInfo); sap.Close(); }