public CryptographerTests()
        {
            m_tester        = AgentTester.CreateTest();
            m_cryptographer = m_tester.AgentA.Cryptographer;
            MemoryX509Store certs = AgentTester.LoadPrivateCerts("redmond");

            m_cert = certs.First();
        }
Esempio n. 2
0
        internal byte[] GetEncryptedBytes(SMIMECryptographer cryptographer)
        {
            if (m_encryptedBytes == null)
            {
                m_encryptedBytes = cryptographer.GetEncryptedBytes(this.Message);
            }

            return(m_encryptedBytes);
        }
Esempio n. 3
0
        public CryptographerTests()
        {
            m_tester        = AgentTester.CreateTest();
            m_cryptographer = m_tester.AgentA.Cryptographer as SMIMECryptographer;

            MemoryX509Store certs = AgentTester.LoadPrivateCerts("redmond");

            m_cert = certs
                     .ToList()
                     .First(c => c.HasPrivateKey);
        }
Esempio n. 4
0
        public void TestSignatureOIDs(DigestAlgorithm algo)
        {
            string messageText = m_tester.ReadMessageText("simple.eml");

            m_cryptographer.DigestAlgorithm = algo;
            SignedCms signedData = null;

            signedData = m_cryptographer.CreateSignature(Encoding.ASCII.GetBytes(messageText), new X509Certificate2Collection(m_cert));

            Assert.True(signedData.SignerInfos.Count == 1);
            Assert.True(signedData.SignerInfos[0].DigestAlgorithm.Value == SMIMECryptographer.ToDigestAlgorithmOid(algo).Value);
        }
Esempio n. 5
0
        /// <summary>
        /// Creates a DirectAgent instance, specifying private, external and trust anchor certificate stores, and
        /// trust and cryptography models.
        /// </summary>
        /// <param name="domainResolver">
        /// An <see cref="IDomainResolver"/> instance providing array of local domain name managed by this agent.
        /// </param>
        /// <param name="privateCerts">
        /// An <see cref="ICertificateResolver"/> instance providing private certificates
        /// for senders of outgoing messages and receivers of incoming messages.
        /// </param>
        /// <param name="publicCerts">
        /// An <see cref="ICertificateResolver"/> instance providing public certificates
        /// for receivers of outgoing messages and senders of incoming messages.
        /// </param>
        /// <param name="anchors">
        /// An <see cref="ITrustAnchorResolver"/> instance providing trust anchors.
        /// </param>
        /// <param name="trustModel">
        /// An instance or subclass of <see cref="SMIMECryptographer"/> providing a custom trust model.
        /// </param>
        /// <param name="cryptographer">
        /// An instance or subclass of <see cref="Health.Direct.Agent"/> providing a custom cryptography model.
        /// </param>
        /// <param name="certPolicyResolvers">Certificate <see cref="ICertPolicyResolvers">policy container</see></param>
        /// <param name="policyFilter"><see cref="IPolicyFilter"/></param>
        public DirectAgent(IDomainResolver domainResolver, ICertificateResolver privateCerts, ICertificateResolver publicCerts
                           , ITrustAnchorResolver anchors, TrustModel trustModel, SMIMECryptographer cryptographer,
                           ICertPolicyResolvers certPolicyResolvers, IPolicyFilter policyFilter)
        {
            m_managedDomains = new AgentDomains(domainResolver);

            if (privateCerts == null)
            {
                throw new ArgumentNullException("privateCerts");
            }
            if (publicCerts == null)
            {
                throw new ArgumentNullException("publicCerts");
            }
            if (anchors == null)
            {
                throw new ArgumentNullException("anchors");
            }
            if (trustModel == null)
            {
                throw new ArgumentNullException("trustModel");
            }
            if (cryptographer == null)
            {
                throw new ArgumentNullException("cryptographer");
            }

            m_privateCertResolver = privateCerts;
            m_publicCertResolver  = publicCerts;
            m_cryptographer       = cryptographer;
            m_trustAnchors        = anchors;
            m_trustModel          = trustModel;
            if (!m_trustModel.CertChainValidator.HasCertificateResolver)
            {
                m_trustModel.CertChainValidator.IssuerResolver = m_publicCertResolver;
            }

            m_minTrustRequirement = TrustEnforcementStatus.Success;

            m_privatePolicyResolver = certPolicyResolvers.PrivateResolver;
            m_publicPolicyResolver  = certPolicyResolvers.PublicResolver;
            m_policyFilter          = policyFilter;
        }
Esempio n. 6
0
        /// <summary>
        /// Creates a agent from settings.
        /// </summary>
        /// <returns>The configured agent instance.</returns>
        public DirectAgent CreateAgent()
        {
            this.Validate();

            ICertificateResolver privateCerts  = this.PrivateCerts.CreateResolver();
            ICertificateResolver publicCerts   = this.PublicCerts.CreateResolver();
            ITrustAnchorResolver trustAnchors  = this.Anchors.Resolver.CreateResolver();
            TrustModel           trustModel    = (this.Trust != null) ? this.Trust.CreateTrustModel() : TrustModel.Default;
            SMIMECryptographer   cryptographer = this.Cryptographer.Create();

            IDomainResolver domainResolver = this.CreateResolver();

            DirectAgent agent = new DirectAgent(domainResolver, privateCerts, publicCerts, trustAnchors, trustModel, cryptographer);

            agent.AllowNonWrappedIncoming = m_allowNonWrappedIncoming;
            agent.WrapMessages            = m_wrapOutgoing;

            return(agent);
        }
Esempio n. 7
0
 /// <summary>
 /// Creates a DirectAgent instance, specifying private, external and trust anchor certificate stores, and
 /// trust and cryptography models.
 /// </summary>
 /// <param name="domainResolver">
 /// An <see cref="IDomainResolver"/> instance providing array of local domain name managed by this agent.
 /// </param>
 /// <param name="privateCerts">
 /// An <see cref="ICertificateResolver"/> instance providing private certificates
 /// for senders of outgoing messages and receivers of incoming messages.
 /// </param>
 /// <param name="publicCerts">
 /// An <see cref="ICertificateResolver"/> instance providing public certificates
 /// for receivers of outgoing messages and senders of incoming messages.
 /// </param>
 /// <param name="anchors">
 /// An <see cref="ITrustAnchorResolver"/> instance providing trust anchors.
 /// </param>
 /// <param name="trustModel">
 /// An instance or subclass of <see cref="SMIMECryptographer"/> providing a custom trust model.
 /// </param>
 /// <param name="cryptographer">
 /// An instance or subclass of <see cref="Health.Direct.Agent"/> providing a custom cryptography model.
 /// </param>
 public DirectAgent(IDomainResolver domainResolver, ICertificateResolver privateCerts, ICertificateResolver publicCerts, ITrustAnchorResolver anchors, TrustModel trustModel, SMIMECryptographer cryptographer)
     : this(domainResolver, privateCerts, publicCerts, anchors, trustModel, cryptographer, CertPolicyResolvers.Default, null)
 {
 }