2 Copyright (C) 2000-2007 MySQL AB
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; version 2 of the License.
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
13 You should have received a copy of the GNU General Public License
14 along with this program; see the file COPYING. If not, write to the
15 Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
19 /* The handshake header declares function prototypes for creating and reading
20 * the various handshake messages.
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