コード例 #1
0
        private static XmlDsigExcC14NTransform BuildC14(CanonicalizationMethods canonicalizationMethod)
        {
            switch (canonicalizationMethod)
            {
            case CanonicalizationMethods.C14WithComments:
                return(new XmlDsigExcC14NWithCommentsTransform());

            default:
                return(new XmlDsigExcC14NTransform());
            }
        }
コード例 #2
0
        /// <summary>
        /// Sign and build.
        /// </summary>
        /// <param name="certificate"></param>
        /// <param name="digestMethod"></param>
        /// <param name="canonicalizationMethod"></param>
        /// <returns></returns>
        public ResponseType SignAndBuild(X509Certificate2 certificate, SignatureAlgorithms signatureAlgorithm, CanonicalizationMethods canonicalizationMethod)
        {
            foreach (var assertion in _response.Items.Where(i => i is AssertionType).Cast <AssertionType>())
            {
                var assertionSigned = new SamlSignedRequest(assertion.SerializeToXmlElement(), certificate, signatureAlgorithm, canonicalizationMethod);
                assertionSigned.ComputeSignature(assertion.ID);
                var assertionSignature = assertionSigned.GetXml().OuterXml.DeserializeXml <SignatureType>();
                assertion.Signature = assertionSignature;
            }

            var signedRequest = new SamlSignedRequest(_response.SerializeToXmlElement(), certificate, signatureAlgorithm, canonicalizationMethod);

            signedRequest.ComputeSignature(_response.ID);
            var signature = signedRequest.GetXml().OuterXml.DeserializeXml <SignatureType>();

            _response.Signature = signature;
            return(_response);
        }
コード例 #3
0
 internal SamlSignedRequest(XmlElement xmlElement, X509Certificate2 certificate, SignatureAlgorithms signatureAlgorithm, CanonicalizationMethods canonicalizationMethod) : base(xmlElement)
 {
     _certificate            = certificate;
     _signatureAlgorithm     = signatureAlgorithm;
     _canonicalizationMethod = canonicalizationMethod;
 }
コード例 #4
0
        /// <summary>
        /// Sign and build.
        /// </summary>
        /// <param name="certificate"></param>
        /// <param name="digestMethod"></param>
        /// <param name="canonicalizationMethod"></param>
        /// <returns></returns>
        public XmlElement SignAndBuild(X509Certificate2 certificate, SignatureAlgorithms signatureAlgorithm, CanonicalizationMethods canonicalizationMethod)
        {
            var xmlDocument   = _authRequest.SerializeToXmlDocument();
            var signedRequest = new SamlSignedRequest(xmlDocument.DocumentElement, certificate, signatureAlgorithm, canonicalizationMethod);

            signedRequest.ComputeSignature(_authRequest.ID);
            var issuer = xmlDocument.DocumentElement.GetElementsByTagName("//Issuer", "urn:oasis:names:tc:SAML:2.0:assertion")[0] as XmlElement;

            xmlDocument.DocumentElement.InsertAfter(xmlDocument.ImportNode(signedRequest.GetXml(), true), issuer);
            return(xmlDocument.DocumentElement);
        }