public CryptographerTests() { m_tester = AgentTester.CreateTest(); m_cryptographer = m_tester.AgentA.Cryptographer; MemoryX509Store certs = AgentTester.LoadPrivateCerts("redmond"); m_cert = certs.First(); }
internal byte[] GetEncryptedBytes(SMIMECryptographer cryptographer) { if (m_encryptedBytes == null) { m_encryptedBytes = cryptographer.GetEncryptedBytes(this.Message); } return(m_encryptedBytes); }
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); }
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); }
/// <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; }
/// <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); }
/// <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) { }