static SamlFubuApplication()
        {
            var location = AppDomain.CurrentDomain.BaseDirectory;

            var certPath = location.AppendPath("cert2.pfx");

            if (!File.Exists(certPath))
            {
                throw new InvalidOperationException("Couldn't find path " + certPath);
            }

            var cert = new X509Certificate2(certPath, new SecureString(), X509KeyStorageFlags.Exportable);
            Certificate = new X509Certificate2(cert);

            var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
            store.Open(OpenFlags.ReadWrite);
            store.Add(Certificate);
            

            SamlCertificate = new SamlCertificate
            {
                Issuer = "fake:saml:issuer",
                CertificateIssuer = Certificate.Issuer,
                SerialNumber = Certificate.SerialNumber,
                Thumbprint = Certificate.Thumbprint
            };
        }
        public void find_all_known()
        {
            var issuers = new SamlCertificate[]
            {
                new SamlCertificate{Issuer = "foo:bar1"}, 
                new SamlCertificate{Issuer = "foo:bar2"}, 
                new SamlCertificate{Issuer = "foo:bar3"} 
            };

            var repository = new BasicSamlCertificateRepository(issuers);

            repository.AllKnownCertificates().ShouldHaveTheSameElementsAs(issuers);
        }
        public void find_by_issuer()
        {
            var issuers = new SamlCertificate[]
            {
                new SamlCertificate{Issuer = "foo:bar1"}, 
                new SamlCertificate{Issuer = "foo:bar2"}, 
                new SamlCertificate{Issuer = "foo:bar3"} 
            };

            var repository = new BasicSamlCertificateRepository(issuers);
            repository.Find(issuers[0].Issuer).ShouldBeTheSameAs(issuers[0]);
            repository.Find(issuers[1].Issuer).ShouldBeTheSameAs(issuers[1]);
            repository.Find(issuers[2].Issuer).ShouldBeTheSameAs(issuers[2]);
        }
        public void formats_and_load_via_string()
        {
            var cert1 = new SamlCertificate
            {
                Issuer = "foo:bar1",
                SerialNumber = "12345",
                CertificateIssuer = "DN=Foo",
                Thumbprint = "ab cd ef"
            };

            var cert2 = new SamlCertificate(cert1.ToString());

            cert2.ShouldNotBeTheSameAs(cert1);

            cert2.Issuer.ShouldEqual(cert1.Issuer);
            cert2.SerialNumber.ShouldEqual(cert1.SerialNumber);
            cert2.CertificateIssuer.ShouldEqual(cert1.CertificateIssuer);
            cert2.Thumbprint.ShouldEqual(cert1.Thumbprint);
        }
        public void SetUp()
        {
            samlResponse = ObjectMother.Response();

            samlResponse.ShouldNotBeNull();
            samlResponse.Status.ShouldNotBeNull();

            cert = ObjectMother.Certificate2();
            samlCert = ObjectMother.SamlCertificateMatching(samlResponse.Issuer, new X509CertificateWrapper(cert));

            var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
            store.Open(OpenFlags.ReadWrite);
            store.Add(cert);

            var certificates = new InMemoryCertificateService(samlCert, cert);

            var xml = new SamlResponseWriter(certificates, new SamlResponseXmlSigner(), new AssertionXmlEncryptor()).Write(samlResponse);

            readResponse = new SamlResponseReader(certificates, new AssertionXmlDecryptor()).Read(xml);
        }
 public InMemoryCertificateService(SamlCertificate certificate, X509Certificate2 realCertificate)
 {
     _certificate = certificate;
     _realCertificate = realCertificate;
 }