<PackageReference Include="BouncyCastle.Cryptography" Version="2.6.2" />

X509CertPairStoreSelector

using Org.BouncyCastle.Utilities.Collections; using System; namespace Org.BouncyCastle.X509.Store { public class X509CertPairStoreSelector : ISelector<X509CertificatePair>, ICloneable { private X509CertificatePair certPair; private X509CertStoreSelector forwardSelector; private X509CertStoreSelector reverseSelector; public X509CertificatePair CertPair { get { return certPair; } set { certPair = value; } } public X509CertStoreSelector ForwardSelector { get { return CloneSelector(forwardSelector); } set { forwardSelector = CloneSelector(value); } } public X509CertStoreSelector ReverseSelector { get { return CloneSelector(reverseSelector); } set { reverseSelector = CloneSelector(value); } } private static X509CertStoreSelector CloneSelector(X509CertStoreSelector s) { if (s != null) return (X509CertStoreSelector)s.Clone(); return null; } public X509CertPairStoreSelector() { } private X509CertPairStoreSelector(X509CertPairStoreSelector o) { certPair = o.CertPair; forwardSelector = o.ForwardSelector; reverseSelector = o.ReverseSelector; } public bool Match(X509CertificatePair pair) { if (pair == null) return false; if (certPair != null && !certPair.Equals(pair)) return false; if (forwardSelector != null && !forwardSelector.Match(pair.Forward)) return false; if (reverseSelector != null && !reverseSelector.Match(pair.Reverse)) return false; return true; } public object Clone() { return new X509CertPairStoreSelector(this); } } }