using System; using System.IO; using Org.BouncyCastle.Tls.Crypto; namespace Org.BouncyCastle.Tls { /// A generic interface for key exchange implementations in (D)TLS. public interface TlsKeyExchange { void Init(TlsContext context); /// void SkipServerCredentials(); /// void ProcessServerCredentials(TlsCredentials serverCredentials); /// void ProcessServerCertificate(Certificate serverCertificate); bool RequiresServerKeyExchange { get; } /// byte[] GenerateServerKeyExchange(); /// void SkipServerKeyExchange(); /// void ProcessServerKeyExchange(Stream input); short[] GetClientCertificateTypes(); /// void SkipClientCredentials(); /// void ProcessClientCredentials(TlsCredentials clientCredentials); /// void ProcessClientCertificate(Certificate clientCertificate); /// void GenerateClientKeyExchange(Stream output); /// void ProcessClientKeyExchange(Stream input); bool RequiresCertificateVerify { get; } /// TlsSecret GeneratePreMasterSecret(); } }