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();
}
}