Ejemplo n.º 1
0
 public SignatureBuilder(ICertificateManager certificateManager, ILogProvider logProvider, IXmlSignatureManager xmlSignatureManager)
 {
     this._certificateManager  = certificateManager;
     this._logProvider         = logProvider;
     this._xmlSignatureManager = xmlSignatureManager;
 }
 public MetadataGeneratorBase(IFederationMetadataWriter federationMetadataWriter, ICertificateManager certificateManager, IXmlSignatureManager xmlSignatureManager)
 {
     this._federationMetadataWriter = federationMetadataWriter;
     this._certificateManager       = certificateManager;
     this._xmlSignatureManager      = xmlSignatureManager;
 }
 public ResponseSignatureRule(ILogProvider logProvider, ICertificateManager certificateManager, IXmlSignatureManager signatureManager) : base(logProvider)
 {
     this._certificateManager = certificateManager;
     this._signatureManager   = signatureManager;
 }
Ejemplo n.º 4
0
 public SPSSOMetadataProvider(IFederationMetadataWriter metadataWriter, ICertificateManager certificateManager, IXmlSignatureManager xmlSignatureManager)
     : base(metadataWriter, certificateManager, xmlSignatureManager)
 {
 }
 public IdpSSOMetadataProvider(IFederationMetadataWriter metadataWriter, ICertificateManager certificateManager, IXmlSignatureManager xmlSignatureManager, IMetadataSerialiser <MetadataBase> serialiser, Func <IMetadataGenerator, IMetadataConfiguration> configuration)
     : base(metadataWriter, certificateManager, xmlSignatureManager, serialiser, configuration)
 {
 }
Ejemplo n.º 6
0
        public static bool ValidateMessageSignature(SamlInboundMessageContext inboundContext, IXmlSignatureManager signatureManager)
        {
            var validated = false;
            var cspParams = new CspParameters();

            cspParams.KeyContainerName = "XML_DSIG_RSA_KEY";
            var rsaKey = new RSACryptoServiceProvider(cspParams);
            var doc    = new XmlDocument {
                PreserveWhitespace = true
            };

            doc.LoadXml(inboundContext.SamlMassage);

            var signEl = TokenHelper.GetAllElements("Signature", "http://www.w3.org/2000/09/xmldsig#", doc.DocumentElement)
                         .FirstOrDefault(x => x.ParentNode == doc.DocumentElement);

            if (signEl == null)
            {
                return(true);
            }

            foreach (var k in inboundContext.Keys.SelectMany(x => x.KeyInfo))
            {
                var binaryClause = k as BinaryKeyIdentifierClause;
                if (binaryClause == null)
                {
                    throw new InvalidOperationException(String.Format("Expected type: {0} but it was: {1}", typeof(BinaryKeyIdentifierClause), k.GetType()));
                }

                var certContent = binaryClause.GetBuffer();
                var cert        = new X509Certificate2(certContent);
                validated = signatureManager.VerifySignature(doc, signEl, cert.PublicKey.Key);
                if (validated)
                {
                    break;
                }
            }

            if (!validated)
            {
                var certEl = TokenHelper.GetElement("X509Certificate", "http://www.w3.org/2000/09/xmldsig#", signEl);
                if (certEl != null)
                {
                    var dcert2 = new X509Certificate2(Convert.FromBase64String(certEl.InnerText));
                    validated = signatureManager.VerifySignature(doc, signEl, dcert2.PublicKey.Key);//signedXml.CheckSignature(dcert2, true);
                }
            }
            return(validated);
        }