/// <summary> /// Verify the signature of an XML string against an asymmetric algorithm and return the result. /// </summary> /// <param name="xmlData">XML string which holds the signed XML data.</param> /// <param name="signingKey">RSA public key that is associated with the key that was used in signing the XML.</param> /// <returns>The status of the verification.</returns> /// <exception cref="NotSupportedException">The key algorithm is not supported.</exception> /// <exception cref="XmlException">There is a load or parse error in the XML.</exception> /// <exception cref="ArgumentNullException">Any of the passed arguments is null.</exception> /// <exception cref="CryptographicException">The key value is not an RSA key, or the key is unreadable. /// -OR- No signature found or more than one signature found. /// -OR- The value parameter does not contain a valid signature or signature info. /// -OR- The signature algorithm of the key parameter does not match the signature method. /// -OR- The signature description could not be created. /// -OR- The hash algorithm could not be created.</exception> public static bool VerifyXml(string xmlData, X509Certificate2 signingKey) { return(XMLSigning.VerifyXml(xmlData, signingKey)); }
/// <summary> /// Verify the signature of an XML string that contains key info against an asymmetric algorithm and return the result. /// </summary> /// <param name="xmlData">XML document as a string which holds the signed XML data with key info tag.</param> /// <returns>The status of the verification.</returns> /// <exception cref="XmlException">There is a load or parse error in the XML.</exception> /// <exception cref="CryptographicException">No signature found or more than one signature found. /// -OR- The value parameter does not contain a valid signature or signature info. /// -OR- The signature algorithm of the key parameter does not match the signature method. /// -OR- The signature description could not be created. /// -OR- The hash algorithm could not be created.</exception> public static bool VerifyXml(string xmlData) { return(XMLSigning.VerifyXml(xmlData)); }
/// <summary> /// Sign XML data. /// </summary> /// <param name="xmlData">XML object as a string which will be signed.</param> /// <param name="signingKey">The certificate which will be used in signing the XML document.</param> /// <param name="addKey">Flag to indicate if the public key should be included in the signed XML document or not (only RSA keys supported).</param> /// <param name="pin">The pin of the CNG certificate.</param> /// <returns>Signed XML string object.</returns> /// <exception cref="XmlException">There is a load or parse error in the XML.</exception> /// <exception cref="ArgumentNullException">Private key is null or any of the passed arguments is null.</exception> /// <exception cref="CryptographicException">The key value is not an RSA key, or the key is unreadable.</exception> /// <exception cref="NotSupportedException">The key algorithm for this private key is not supported.</exception> /// <exception cref="CryptographicUnexpectedOperationException">The X.509 keys do not match.</exception> /// <exception cref="ArgumentException">The cryptographic service provider key is null.</exception> public static string SignXml(string xmlData, X509Certificate2 signingKey, bool addKey, string pin) { return(XMLSigning.SignXml(xmlData, signingKey, addKey, pin)); }