예제 #1
0
        /// <summary>
        /// Signs the XML document.
        /// </summary>
        /// <param name="doc">The document.</param>
        /// <param name="cert">The cert.</param>
        /// <param name="xmlPrivateKey">The XML private key.</param>
        /// <returns></returns>
        private XmlElement SignXmlDocument(XmlDocument doc, X509Certificate2 cert, string xmlPrivateKey)
        {
            var key = new RSACryptoServiceProvider(new CspParameters(24));

            key.PersistKeyInCsp = false;
            //Full Framework Only
            //key.FromXmlString(xmlPrivateKey);
            //.Net Standard Extension
            RSAKeyExtensions.FromXmlString(key, xmlPrivateKey);

            SignedXml signedXml = new SignedXml(doc);

            signedXml.SigningKey = key;
            signedXml.SignedInfo.SignatureMethod        = key.SignatureAlgorithm;// "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256";
            signedXml.SignedInfo.CanonicalizationMethod = SignedXml.XmlDsigExcC14NTransformUrl;

            Reference reference = new Reference();

            reference.Uri          = "";
            reference.DigestMethod = "http://www.w3.org/2001/04/xmlenc#sha256";
            reference.AddTransform(new XmlDsigEnvelopedSignatureTransform());
            reference.AddTransform(new XmlDsigExcC14NTransform());

            signedXml.AddReference(reference);

            KeyInfo keyInfo = new KeyInfo();

            keyInfo.AddClause(new KeyInfoX509Data(cert));
            signedXml.KeyInfo = keyInfo;
            signedXml.ComputeSignature();
            XmlElement signature = signedXml.GetXml();

            return(signature);
        }
예제 #2
0
        /// <summary>
        /// Signs the XML document.
        /// </summary>
        /// <param name="doc">The document.</param>
        /// <param name="cert">The cert.</param>
        /// <returns></returns>
        private XmlElement SignXmlDocument(XmlDocument doc, X509Certificate2 cert)
        {
            //Full Framework Only
            //var xmlPrivateKey = cert.PrivateKey.ToXmlString(true);
            //.Net Standard Extension
            var xmlPrivateKey = RSAKeyExtensions.ToXmlString((RSA)cert.PrivateKey, true);

            return(SignXmlDocument(doc, cert, xmlPrivateKey));
        }
예제 #3
0
        /// <summary>
        /// Gets the signed authentication request.
        /// </summary>
        /// <param name="cert">The cert.</param>
        /// <returns></returns>
        public string GetSignedAuthRequest(X509Certificate2 cert)
        {
            var xmlPrivateKey = "";

#if NETFULL
            xmlPrivateKey = cert.PrivateKey.ToXmlString(true);
#else
            xmlPrivateKey = RSAKeyExtensions.ToXmlString((RSA)cert.PrivateKey, true);
#endif

            return(GetSignedAuthRequest(cert, xmlPrivateKey));
        }
예제 #4
0
        /// <summary>
        /// Signs the XML document.
        /// </summary>
        /// <param name="doc">The document.</param>
        /// <param name="cert">The cert.</param>
        /// <returns></returns>
        public static XmlElement SignXmlDocument(XmlDocument doc, X509Certificate2 cert)
        {
            string xmlPrivateKey = "";

            //Full Framework Only
#if NETFULL
            xmlPrivateKey = cert.PrivateKey.ToXmlString(true);
#else
            //.Net Standard Extension
            xmlPrivateKey = RSAKeyExtensions.ToXmlString((RSA)cert.PrivateKey, true);
#endif

            return(SignXmlDocument(doc, cert, xmlPrivateKey));
        }
예제 #5
0
        /// <summary>
        /// Gets the signed authentication request.
        /// </summary>
        /// <param name="cert">The cert.</param>
        /// <returns></returns>
        public string GetSignedAuthRequest(X509Certificate2 cert)
        {
            var xmlPrivateKey = "";

            //Full Framework Only
            //var xmlPrivateKey = cert.PrivateKey.ToXmlString(true);
            //.Net Standard Extension
            //var xmlPrivateKey = RSAKeyExtensions.ToXmlString((RSA)cert.PrivateKey, true);

#if NETFULL
            xmlPrivateKey = cert.PrivateKey.ToXmlString(true);
#endif

#if NETSTANDARD1_0
            xmlPrivateKey = RSAKeyExtensions.ToXmlString((RSA)cert.PrivateKey, true);
#endif


            return(GetSignedAuthRequest(cert, xmlPrivateKey));
        }