AaltoTLS.PluginInterface.CipherSuitePluginManager.GetSupportedCipherSuiteIDs C# (CSharp) Method

GetSupportedCipherSuiteIDs() public method

public GetSupportedCipherSuiteIDs ( ProtocolVersion version, X509Certificate certificate, bool includeAnonymous ) : System.UInt16[]
version ProtocolVersion
certificate System.Security.Cryptography.X509Certificates.X509Certificate
includeAnonymous bool
return System.UInt16[]
        public UInt16[] GetSupportedCipherSuiteIDs(ProtocolVersion version, X509Certificate certificate, bool includeAnonymous)
        {
            List<UInt16> suites = new List<UInt16>();
            foreach (CipherSuitePlugin plugin in _plugins) {
                UInt16[] suiteIDs = plugin.SupportedCipherSuites;
                foreach (UInt16 id in suiteIDs) {
                    CipherSuite cipherSuite = GetCipherSuite(version, id);
                    if (cipherSuite == null) {
                        continue;
                    }
                    if (cipherSuite.IsAnonymous) {
                        if (includeAnonymous) {
                            suites.Add(id);
                        }
                        continue;
                    }

                    string keyexAlg = cipherSuite.KeyExchangeAlgorithm.CertificateKeyAlgorithm;
                    string sigAlg = cipherSuite.SignatureAlgorithm.CertificateKeyAlgorithm;

                    if (keyexAlg != null && !keyexAlg.Equals(certificate.GetKeyAlgorithm())) {
                        continue;
                    }
                    if (sigAlg != null && !sigAlg.Equals(certificate.GetKeyAlgorithm())) {
                        continue;
                    }
                    suites.Add(id);
                }
            }
            return suites.ToArray();
        }