1*6d49e1aeSJan Lentfer /* 2*6d49e1aeSJan Lentfer * TLSv1 server (RFC 2246) 3*6d49e1aeSJan Lentfer * Copyright (c) 2006-2007, Jouni Malinen <j@w1.fi> 4*6d49e1aeSJan Lentfer * 5*6d49e1aeSJan Lentfer * This program is free software; you can redistribute it and/or modify 6*6d49e1aeSJan Lentfer * it under the terms of the GNU General Public License version 2 as 7*6d49e1aeSJan Lentfer * published by the Free Software Foundation. 8*6d49e1aeSJan Lentfer * 9*6d49e1aeSJan Lentfer * Alternatively, this software may be distributed under the terms of BSD 10*6d49e1aeSJan Lentfer * license. 11*6d49e1aeSJan Lentfer * 12*6d49e1aeSJan Lentfer * See README and COPYING for more details. 13*6d49e1aeSJan Lentfer */ 14*6d49e1aeSJan Lentfer 15*6d49e1aeSJan Lentfer #ifndef TLSV1_SERVER_H 16*6d49e1aeSJan Lentfer #define TLSV1_SERVER_H 17*6d49e1aeSJan Lentfer 18*6d49e1aeSJan Lentfer #include "tlsv1_cred.h" 19*6d49e1aeSJan Lentfer 20*6d49e1aeSJan Lentfer struct tlsv1_server; 21*6d49e1aeSJan Lentfer 22*6d49e1aeSJan Lentfer int tlsv1_server_global_init(void); 23*6d49e1aeSJan Lentfer void tlsv1_server_global_deinit(void); 24*6d49e1aeSJan Lentfer struct tlsv1_server * tlsv1_server_init(struct tlsv1_credentials *cred); 25*6d49e1aeSJan Lentfer void tlsv1_server_deinit(struct tlsv1_server *conn); 26*6d49e1aeSJan Lentfer int tlsv1_server_established(struct tlsv1_server *conn); 27*6d49e1aeSJan Lentfer int tlsv1_server_prf(struct tlsv1_server *conn, const char *label, 28*6d49e1aeSJan Lentfer int server_random_first, u8 *out, size_t out_len); 29*6d49e1aeSJan Lentfer u8 * tlsv1_server_handshake(struct tlsv1_server *conn, 30*6d49e1aeSJan Lentfer const u8 *in_data, size_t in_len, size_t *out_len); 31*6d49e1aeSJan Lentfer int tlsv1_server_encrypt(struct tlsv1_server *conn, 32*6d49e1aeSJan Lentfer const u8 *in_data, size_t in_len, 33*6d49e1aeSJan Lentfer u8 *out_data, size_t out_len); 34*6d49e1aeSJan Lentfer int tlsv1_server_decrypt(struct tlsv1_server *conn, 35*6d49e1aeSJan Lentfer const u8 *in_data, size_t in_len, 36*6d49e1aeSJan Lentfer u8 *out_data, size_t out_len); 37*6d49e1aeSJan Lentfer int tlsv1_server_get_cipher(struct tlsv1_server *conn, char *buf, 38*6d49e1aeSJan Lentfer size_t buflen); 39*6d49e1aeSJan Lentfer int tlsv1_server_shutdown(struct tlsv1_server *conn); 40*6d49e1aeSJan Lentfer int tlsv1_server_resumed(struct tlsv1_server *conn); 41*6d49e1aeSJan Lentfer int tlsv1_server_get_keys(struct tlsv1_server *conn, struct tls_keys *keys); 42*6d49e1aeSJan Lentfer int tlsv1_server_get_keyblock_size(struct tlsv1_server *conn); 43*6d49e1aeSJan Lentfer int tlsv1_server_set_cipher_list(struct tlsv1_server *conn, u8 *ciphers); 44*6d49e1aeSJan Lentfer int tlsv1_server_set_verify(struct tlsv1_server *conn, int verify_peer); 45*6d49e1aeSJan Lentfer 46*6d49e1aeSJan Lentfer typedef int (*tlsv1_server_session_ticket_cb) 47*6d49e1aeSJan Lentfer (void *ctx, const u8 *ticket, size_t len, const u8 *client_random, 48*6d49e1aeSJan Lentfer const u8 *server_random, u8 *master_secret); 49*6d49e1aeSJan Lentfer 50*6d49e1aeSJan Lentfer void tlsv1_server_set_session_ticket_cb(struct tlsv1_server *conn, 51*6d49e1aeSJan Lentfer tlsv1_server_session_ticket_cb cb, 52*6d49e1aeSJan Lentfer void *ctx); 53*6d49e1aeSJan Lentfer 54*6d49e1aeSJan Lentfer #endif /* TLSV1_SERVER_H */ 55