change some parameters in the library to meet the needs of the website httpbin.org

Fork of MiniTLS-GPL by Donatien Garnier

Committer:
MiniTLS
Date:
Mon Jun 09 14:57:54 2014 +0000
Revision:
2:527a66d0a1a9
Change name to MiniTLS and added doc

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MiniTLS 2:527a66d0a1a9 1 /*
MiniTLS 2:527a66d0a1a9 2 MiniTLS - A super trimmed down TLS/SSL Library for embedded devices
MiniTLS 2:527a66d0a1a9 3 Author: Donatien Garnier
MiniTLS 2:527a66d0a1a9 4 Copyright (C) 2013-2014 AppNearMe Ltd
MiniTLS 2:527a66d0a1a9 5
MiniTLS 2:527a66d0a1a9 6 This program is free software; you can redistribute it and/or
MiniTLS 2:527a66d0a1a9 7 modify it under the terms of the GNU General Public License
MiniTLS 2:527a66d0a1a9 8 as published by the Free Software Foundation; either version 2
MiniTLS 2:527a66d0a1a9 9 of the License, or (at your option) any later version.
MiniTLS 2:527a66d0a1a9 10
MiniTLS 2:527a66d0a1a9 11 This program is distributed in the hope that it will be useful,
MiniTLS 2:527a66d0a1a9 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
MiniTLS 2:527a66d0a1a9 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
MiniTLS 2:527a66d0a1a9 14 GNU General Public License for more details.
MiniTLS 2:527a66d0a1a9 15
MiniTLS 2:527a66d0a1a9 16 You should have received a copy of the GNU General Public License
MiniTLS 2:527a66d0a1a9 17 along with this program; if not, write to the Free Software
MiniTLS 2:527a66d0a1a9 18 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
MiniTLS 2:527a66d0a1a9 19 *//**
MiniTLS 2:527a66d0a1a9 20 * \file tls_record.h
MiniTLS 2:527a66d0a1a9 21 * \copyright Copyright (c) AppNearMe Ltd 2013
MiniTLS 2:527a66d0a1a9 22 * \author Donatien Garnier
MiniTLS 2:527a66d0a1a9 23 */
MiniTLS 2:527a66d0a1a9 24
MiniTLS 2:527a66d0a1a9 25 #ifndef TLS_RECORD_H_
MiniTLS 2:527a66d0a1a9 26 #define TLS_RECORD_H_
MiniTLS 2:527a66d0a1a9 27
MiniTLS 2:527a66d0a1a9 28 #ifdef __cplusplus
MiniTLS 2:527a66d0a1a9 29 extern "C" {
MiniTLS 2:527a66d0a1a9 30 #endif
MiniTLS 2:527a66d0a1a9 31
MiniTLS 2:527a66d0a1a9 32 #include "core/fwk.h"
MiniTLS 2:527a66d0a1a9 33 #include "inc/minitls_errors.h"
MiniTLS 2:527a66d0a1a9 34
MiniTLS 2:527a66d0a1a9 35 #define TLS_DEFAULT_MAX_FRAGMENT_SIZE 18432 //(MAX 2^14 + 2048 = 18432) -- encrypted
MiniTLS 2:527a66d0a1a9 36
MiniTLS 2:527a66d0a1a9 37 #define TLS_ENCRYPTION_MAX_OVERHEAD (20 + 256 + 16) //MAC + Max Padding + IV
MiniTLS 2:527a66d0a1a9 38
MiniTLS 2:527a66d0a1a9 39 #include "tls_socket_defs.h"
MiniTLS 2:527a66d0a1a9 40
MiniTLS 2:527a66d0a1a9 41 /*
MiniTLS 2:527a66d0a1a9 42 * When a new session
MiniTLS 2:527a66d0a1a9 43 begins, the record layer's connection state encryption, hash, and
MiniTLS 2:527a66d0a1a9 44 compression algorithms are initialized to null. The current
MiniTLS 2:527a66d0a1a9 45 connection state is used for renegotiation messages.
MiniTLS 2:527a66d0a1a9 46 */
MiniTLS 2:527a66d0a1a9 47 minitls_err_t tls_record_init(tls_record_t* record, tls_socket_t* socket, uint8_t* buf, size_t buf_size);
MiniTLS 2:527a66d0a1a9 48
MiniTLS 2:527a66d0a1a9 49 //Should be called after server hello message;
MiniTLS 2:527a66d0a1a9 50 void tls_record_set_protocol_version(tls_record_t* record, uint8_t major, uint8_t minor);
MiniTLS 2:527a66d0a1a9 51 void tls_record_get_protocol_version(tls_record_t* record, uint8_t* major, uint8_t* minor);
MiniTLS 2:527a66d0a1a9 52
MiniTLS 2:527a66d0a1a9 53 minitls_err_t tls_record_change_cipher_spec(tls_record_t* record, bool tx_nrx);
MiniTLS 2:527a66d0a1a9 54
MiniTLS 2:527a66d0a1a9 55 bool tls_record_is_secure(tls_record_t* record);
MiniTLS 2:527a66d0a1a9 56
MiniTLS 2:527a66d0a1a9 57 //Read on message and process it
MiniTLS 2:527a66d0a1a9 58 //TODO mutex this
MiniTLS 2:527a66d0a1a9 59 minitls_err_t tls_record_connect(tls_record_t* record, const char* hostname, uint16_t port);
MiniTLS 2:527a66d0a1a9 60
MiniTLS 2:527a66d0a1a9 61 minitls_err_t tls_record_process(tls_record_t* record);
MiniTLS 2:527a66d0a1a9 62 minitls_err_t tls_record_send(tls_record_t* record, tls_content_type_t content_type, buffer_t* payload);
MiniTLS 2:527a66d0a1a9 63
MiniTLS 2:527a66d0a1a9 64 //Keys will be copied in local buffer
MiniTLS 2:527a66d0a1a9 65 minitls_err_t tls_record_set_keys(tls_record_t* record, tls_security_type_t security, const uint8_t* client_write_mac_key,
MiniTLS 2:527a66d0a1a9 66 const uint8_t* server_write_mac_key, const uint8_t* client_write_cipher_key, const uint8_t* server_write_cipher_key);
MiniTLS 2:527a66d0a1a9 67
MiniTLS 2:527a66d0a1a9 68 minitls_err_t tls_record_close(tls_record_t* record);
MiniTLS 2:527a66d0a1a9 69
MiniTLS 2:527a66d0a1a9 70 minitls_err_t tls_record_set_read_timeout(tls_record_t* record, int timeout);
MiniTLS 2:527a66d0a1a9 71 minitls_err_t tls_record_set_write_timeout(tls_record_t* record, int timeout);
MiniTLS 2:527a66d0a1a9 72
MiniTLS 2:527a66d0a1a9 73 #ifdef __cplusplus
MiniTLS 2:527a66d0a1a9 74 }
MiniTLS 2:527a66d0a1a9 75 #endif
MiniTLS 2:527a66d0a1a9 76
MiniTLS 2:527a66d0a1a9 77 #endif /* TLS_RECORD_H_ */