1189251Ssam/*
2189251Ssam * TLSv1 server (RFC 2246)
3189251Ssam * Copyright (c) 2006-2007, Jouni Malinen <j@w1.fi>
4189251Ssam *
5189251Ssam * This program is free software; you can redistribute it and/or modify
6189251Ssam * it under the terms of the GNU General Public License version 2 as
7189251Ssam * published by the Free Software Foundation.
8189251Ssam *
9189251Ssam * Alternatively, this software may be distributed under the terms of BSD
10189251Ssam * license.
11189251Ssam *
12189251Ssam * See README and COPYING for more details.
13189251Ssam */
14189251Ssam
15189251Ssam#ifndef TLSV1_SERVER_H
16189251Ssam#define TLSV1_SERVER_H
17189251Ssam
18189251Ssam#include "tlsv1_cred.h"
19189251Ssam
20189251Ssamstruct tlsv1_server;
21189251Ssam
22189251Ssamint tlsv1_server_global_init(void);
23189251Ssamvoid tlsv1_server_global_deinit(void);
24189251Ssamstruct tlsv1_server * tlsv1_server_init(struct tlsv1_credentials *cred);
25189251Ssamvoid tlsv1_server_deinit(struct tlsv1_server *conn);
26189251Ssamint tlsv1_server_established(struct tlsv1_server *conn);
27189251Ssamint tlsv1_server_prf(struct tlsv1_server *conn, const char *label,
28189251Ssam		     int server_random_first, u8 *out, size_t out_len);
29189251Ssamu8 * tlsv1_server_handshake(struct tlsv1_server *conn,
30189251Ssam			    const u8 *in_data, size_t in_len, size_t *out_len);
31189251Ssamint tlsv1_server_encrypt(struct tlsv1_server *conn,
32189251Ssam			 const u8 *in_data, size_t in_len,
33189251Ssam			 u8 *out_data, size_t out_len);
34189251Ssamint tlsv1_server_decrypt(struct tlsv1_server *conn,
35189251Ssam			 const u8 *in_data, size_t in_len,
36189251Ssam			 u8 *out_data, size_t out_len);
37189251Ssamint tlsv1_server_get_cipher(struct tlsv1_server *conn, char *buf,
38189251Ssam			    size_t buflen);
39189251Ssamint tlsv1_server_shutdown(struct tlsv1_server *conn);
40189251Ssamint tlsv1_server_resumed(struct tlsv1_server *conn);
41189251Ssamint tlsv1_server_get_keys(struct tlsv1_server *conn, struct tls_keys *keys);
42189251Ssamint tlsv1_server_get_keyblock_size(struct tlsv1_server *conn);
43189251Ssamint tlsv1_server_set_cipher_list(struct tlsv1_server *conn, u8 *ciphers);
44189251Ssamint tlsv1_server_set_verify(struct tlsv1_server *conn, int verify_peer);
45189251Ssam
46189251Ssamtypedef int (*tlsv1_server_session_ticket_cb)
47189251Ssam(void *ctx, const u8 *ticket, size_t len, const u8 *client_random,
48189251Ssam const u8 *server_random, u8 *master_secret);
49189251Ssam
50189251Ssamvoid tlsv1_server_set_session_ticket_cb(struct tlsv1_server *conn,
51189251Ssam					tlsv1_server_session_ticket_cb cb,
52189251Ssam					void *ctx);
53189251Ssam
54189251Ssam#endif /* TLSV1_SERVER_H */
55