Annotation of embedaddon/strongswan/src/libtls/tls_handshake.h, revision 1.1.1.1
1.1 misho 1: /*
2: * Copyright (C) 2010 Martin Willi
3: * Copyright (C) 2010 revosec AG
4: *
5: * This program is free software; you can redistribute it and/or modify it
6: * under the terms of the GNU General Public License as published by the
7: * Free Software Foundation; either version 2 of the License, or (at your
8: * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
9: *
10: * This program is distributed in the hope that it will be useful, but
11: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13: * for more details.
14: */
15:
16: /**
17: * @defgroup tls_handshake tls_handshake
18: * @{ @ingroup libtls
19: */
20:
21: #ifndef TLS_HANDSHAKE_H_
22: #define TLS_HANDSHAKE_H_
23:
24: typedef struct tls_handshake_t tls_handshake_t;
25:
26: #include "tls.h"
27:
28: #include <bio/bio_reader.h>
29: #include <bio/bio_writer.h>
30:
31: /**
32: * TLS handshake state machine interface.
33: */
34: struct tls_handshake_t {
35:
36: /**
37: * Process received TLS handshake message.
38: *
39: * @param type TLS handshake message type
40: * @param reader TLS data buffer
41: * @return
42: * - SUCCESS if TLS negotiation complete
43: * - FAILED if a fatal TLS alert queued
44: * - NEED_MORE if more invocations to process/build needed
45: * - DESTROY_ME if a fatal TLS alert received
46: */
47: status_t (*process)(tls_handshake_t *this,
48: tls_handshake_type_t type, bio_reader_t *reader);
49:
50: /**
51: * Build TLS handshake messages to send out.
52: *
53: * @param type type of created handshake message
54: * @param writer TLS data buffer to write to
55: * @return
56: * - SUCCESS if handshake complete
57: * - FAILED if handshake failed
58: * - NEED_MORE if more messages ready for delivery
59: * - INVALID_STATE if more input to process() required
60: */
61: status_t (*build)(tls_handshake_t *this,
62: tls_handshake_type_t *type, bio_writer_t *writer);
63:
64: /**
65: * Check if the cipher spec should be changed for outgoing messages.
66: *
67: * @param inbound TRUE to check for inbound cipherspec change
68: * @return TRUE if cipher spec should be changed
69: */
70: bool (*cipherspec_changed)(tls_handshake_t *this, bool inbound);
71:
72: /**
73: * Change the cipher for a direction.
74: *
75: * @param inbound TRUE to change inbound cipherspec, FALSE for outbound
76: */
77: void (*change_cipherspec)(tls_handshake_t *this, bool inbound);
78:
79: /**
80: * Check if the finished message was decoded successfully.
81: *
82: * @return TRUE if finished message was decoded successfully
83: */
84: bool (*finished)(tls_handshake_t *this);
85:
86: /**
87: * Get the peer identity authenticated/to authenticate during handshake.
88: *
89: * @return peer identity
90: */
91: identification_t* (*get_peer_id)(tls_handshake_t *this);
92:
93: /**
94: * Get the server identity authenticated/to authenticate during handshake.
95: *
96: * @return server identity
97: */
98: identification_t* (*get_server_id)(tls_handshake_t *this);
99:
100: /**
101: * Get the peers authentication information after completing the handshake.
102: *
103: * @return authentication data, internal data
104: */
105: auth_cfg_t* (*get_auth)(tls_handshake_t *this);
106:
107: /**
108: * Destroy a tls_handshake_t.
109: */
110: void (*destroy)(tls_handshake_t *this);
111: };
112:
113: #endif /** TLS_HANDSHAKE_H_ @}*/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>