25 #ifndef yaSSL_HANDSHAKE_HPP
26 #define yaSSL_HANDSHAKE_HPP
28 #include "yassl_types.hpp"
40 enum BufferOutput { buffered, unbuffered };
42 void sendClientHello(SSL&);
43 void sendServerHello(SSL&, BufferOutput = buffered);
44 void sendServerHelloDone(SSL&, BufferOutput = buffered);
45 void sendClientKeyExchange(SSL&, BufferOutput = buffered);
46 void sendServerKeyExchange(SSL&, BufferOutput = buffered);
47 void sendChangeCipher(SSL&, BufferOutput = buffered);
48 void sendFinished(SSL&, ConnectionEnd, BufferOutput = buffered);
49 void sendCertificate(SSL&, BufferOutput = buffered);
50 void sendCertificateRequest(SSL&, BufferOutput = buffered);
51 void sendCertificateVerify(SSL&, BufferOutput = buffered);
52 int sendData(SSL&,
const void*,
int);
53 int sendAlert(SSL& ssl,
const Alert& alert);
55 int receiveData(SSL&,
Data&,
bool peek =
false);
56 void processReply(SSL&);
58 void buildFinished(SSL&, Finished&,
const opaque*);
59 void build_certHashes(SSL&, Hashes&);
61 void hmac(SSL&, byte*,
const byte*, uint, ContentType,
bool verify =
false);
62 void TLS_hmac(SSL&, byte*,
const byte*, uint, ContentType,
64 void PRF(byte* digest, uint digLen,
const byte* secret, uint secLen,
65 const byte* label, uint labLen,
const byte* seed, uint seedLen);
69 #endif // yaSSL_HANDSHAKE_HPP