MySQL 5.6.14 Source Code Document
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
handshake.hpp
1 /*
2  Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
3 
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.
7 
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.
12 
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,
16  MA 02110-1301 USA.
17 */
18 
19 /* The handshake header declares function prototypes for creating and reading
20  * the various handshake messages.
21  */
22 
23 
24 
25 #ifndef yaSSL_HANDSHAKE_HPP
26 #define yaSSL_HANDSHAKE_HPP
27 
28 #include "yassl_types.hpp"
29 
30 
31 namespace yaSSL {
32 
33 // forward decls
34 class SSL;
35 class Finished;
36 class Data;
37 class Alert;
38 struct Hashes;
39 
40 enum BufferOutput { buffered, unbuffered };
41 
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);
54 
55 int receiveData(SSL&, Data&, bool peek = false);
56 void processReply(SSL&);
57 
58 void buildFinished(SSL&, Finished&, const opaque*);
59 void build_certHashes(SSL&, Hashes&);
60 
61 void hmac(SSL&, byte*, const byte*, uint, ContentType, bool verify = false);
62 void TLS_hmac(SSL&, byte*, const byte*, uint, ContentType,
63  bool verify = false);
64 void PRF(byte* digest, uint digLen, const byte* secret, uint secLen,
65  const byte* label, uint labLen, const byte* seed, uint seedLen);
66 
67 } // naemspace
68 
69 #endif // yaSSL_HANDSHAKE_HPP