public ECDHEKeyExchange( IServiceProvider serviceProvider, IRandom random, MasterSecretCalculator masterSecretCalculator, CipherSuitesRegistry cipherSuitesRegistry, NamedCurvesRegistry namedCurvesRegistry, ECDHExchangeConfig ecdhExchangeConfig, SupportedGroupsConfig supportedGroupsConfig, CertificateConfig certificateConfig) : base( masterSecretCalculator, cipherSuitesRegistry, ecdhExchangeConfig, certificateConfig) { _serviceProvider = serviceProvider; _random = random; _namedCurvesRegistry = namedCurvesRegistry; _supportedGroupsConfig = supportedGroupsConfig; }
protected ECDHKeyExchangeBase( MasterSecretCalculator masterSecretCalculator, CipherSuitesRegistry cipherSuitesRegistry, ECDHExchangeConfig ecdhExchangeConfig, CertificateConfig certificateConfig) { MasterSecretCalculator = masterSecretCalculator; CipherSuitesRegistry = cipherSuitesRegistry; ECDHExchangeConfig = ecdhExchangeConfig; CertificateConfig = certificateConfig; }
public SignatureAlgorithmsExtension( ICipherSuitesProvider cipherSuiteProvider, CipherSuitesRegistry cipherSuitesRegistry, HashAlgorithmRegistry hashAlgorithmRegistry, SignatureAlgorithmsRegistry signatureAlgorithmsRegistry, EndConfig endConfig, Config config) { _cipherSuiteProvider = cipherSuiteProvider; _cipherSuitesRegistry = cipherSuitesRegistry; _hashAlgorithmRegistry = hashAlgorithmRegistry; _signatureAlgorithmsRegistry = signatureAlgorithmsRegistry; _endConfig = endConfig; _config = config; }
public virtual bool IsCompatible(CipherSuite cipherSuite, X509Certificate certificate) { var signatureAlgorithm = CipherSuitesRegistry.MapSignatureAlgorithm(cipherSuite); var requiresECKey = Equals(CipherSuitesRegistry.MapKeyExchange(cipherSuite), ECIdentifiers.ECDH); if (signatureAlgorithm.Equals(ECIdentifiers.ECDSA)) { if (certificate.SignatureAlgorithm.Algorithm != ECIdentifiers.ECDSAWithSHA256) { return(false); } if (!(certificate.SubjectPublicKey is ECPublicKey)) { return(false); } return(true); } if (signatureAlgorithm.Equals(RSAIdentifiers.RSASig)) { if (!RSAKeyReader.IsRSAIdentifier(certificate.SignatureAlgorithm.Algorithm)) { return(false); } if (requiresECKey && !(certificate.SubjectPublicKey is ECPublicKey)) { return(false); } if (!requiresECKey && !(certificate.SubjectPublicKey is RSAPublicKey)) { return(false); } return(true); } return(false); }
public ECDHKeyExchange( MasterSecretCalculator masterSecretCalculator, CertificateManager certificateManager, CipherSuitesRegistry cipherSuitesRegistry, NamedCurvesRegistry namedCurvesRegistry, ECDHExchangeConfig ecdhExchangeConfig, SupportedGroupsConfig supportedGroupsConfig, CertificateConfig certificateConfig) : base( masterSecretCalculator, cipherSuitesRegistry, ecdhExchangeConfig, certificateConfig) { _certificateManager = certificateManager; _namedCurvesRegistry = namedCurvesRegistry; _supportedGroupsConfig = supportedGroupsConfig; }
public CipherSuitesProvider( CipherSuitesRegistry registry, CipherAlgorithmRegistry cipherAlgorithmRegistry, HashAlgorithmRegistry hashAlgorithmRegistry, PRFHashRegistry prfHashRegistry, SignatureAlgorithmsRegistry signatureAlgorithmsRegistry, IKeyExchangeProvider keyExchangeProvider, ICipherParameterFactoryProvider cipherParameterFactoryProvider, ISignatureCipherParameterFactoryProvider signatureCipherParameterFactoryProvider) { _registry = registry; _cipherAlgorithmRegistry = cipherAlgorithmRegistry; _hashAlgorithmRegistry = hashAlgorithmRegistry; _prfHashRegistry = prfHashRegistry; _signatureAlgorithmsRegistry = signatureAlgorithmsRegistry; _keyExchangeProvider = keyExchangeProvider; _cipherParameterFactoryProvider = cipherParameterFactoryProvider; _signatureCipherParameterFactoryProvider = signatureCipherParameterFactoryProvider; }
public SendingClientHelloState( IServiceProvider serviceProvider, ICipherSuitesProvider cipherSuitesProvider, CipherSuitesRegistry cipherSuitesRegistry, IRandom random, HandshakeWriter writer, VersionConfig versionConfig, RandomConfig randomConfig, SessionConfig sessionConfig) { _serviceProvider = serviceProvider; _cipherSuitesProvider = cipherSuitesProvider; _cipherSuitesRegistry = cipherSuitesRegistry; _random = random; _writer = writer; _versionConfig = versionConfig; _randomConfig = randomConfig; _sessionConfig = sessionConfig; }
public static IReadOnlyCollection <CipherSuite> GetAllSupportedSuites(this ICipherSuitesProvider cipherSuiteProvider, CipherSuitesRegistry cipherSuitesRegistry) { var suites = cipherSuitesRegistry.GetAll(); return(suites .Where(cipherSuiteProvider.IsSupported) .OrderByDescending(x => x) .ToList()); }