1 // 2 // btls-ssl.h 3 // MonoBtls 4 // 5 // Created by Martin Baulig on 14/11/15. 6 // Copyright (c) 2015 Xamarin. All rights reserved. 7 // 8 9 #ifndef __btls__btls_ssl__ 10 #define __btls__btls_ssl__ 11 12 #include <btls-ssl-ctx.h> 13 14 MonoBtlsSsl * 15 mono_btls_ssl_new (MonoBtlsSslCtx *ctx); 16 17 int 18 mono_btls_ssl_use_certificate (MonoBtlsSsl *ptr, X509 *x509); 19 20 int 21 mono_btls_ssl_use_private_key (MonoBtlsSsl *ptr, EVP_PKEY *key); 22 23 int 24 mono_btls_ssl_add_chain_certificate (MonoBtlsSsl *ptr, X509 *x509); 25 26 int 27 mono_btls_ssl_accept (MonoBtlsSsl *ptr); 28 29 int 30 mono_btls_ssl_connect (MonoBtlsSsl *ptr); 31 32 int 33 mono_btls_ssl_handshake (MonoBtlsSsl *ptr); 34 35 void 36 mono_btls_ssl_print_errors_cb (ERR_print_errors_callback_t callback, void *ctx); 37 38 void 39 mono_btls_ssl_set_bio (MonoBtlsSsl *ptr, BIO *bio); 40 41 int 42 mono_btls_ssl_read (MonoBtlsSsl *ptr, void *buf, int count); 43 44 int 45 mono_btls_ssl_write (MonoBtlsSsl *ptr, void *buf, int count); 46 47 int 48 mono_btls_ssl_get_version (MonoBtlsSsl *ptr); 49 50 void 51 mono_btls_ssl_set_min_version (MonoBtlsSsl *ptr, int version); 52 53 void 54 mono_btls_ssl_set_max_version (MonoBtlsSsl *ptr, int version); 55 56 int 57 mono_btls_ssl_get_cipher (MonoBtlsSsl *ptr); 58 59 int 60 mono_btls_ssl_set_cipher_list (MonoBtlsSsl *ptr, const char *str); 61 62 int 63 mono_btls_ssl_get_ciphers (MonoBtlsSsl *ptr, uint16_t **data); 64 65 X509 * 66 mono_btls_ssl_get_peer_certificate (MonoBtlsSsl *ptr); 67 68 void 69 mono_btls_ssl_close (MonoBtlsSsl *ptr); 70 71 int 72 mono_btls_ssl_shutdown (MonoBtlsSsl *ptr); 73 74 MONO_API void 75 mono_btls_ssl_set_quiet_shutdown (MonoBtlsSsl *ptr, int mode); 76 77 int 78 mono_btls_ssl_get_error (MonoBtlsSsl *ptr, int ret_code); 79 80 int 81 mono_btls_ssl_set_verify_param (MonoBtlsSsl *ptr, const MonoBtlsX509VerifyParam *param); 82 83 int 84 mono_btls_ssl_set_server_name (MonoBtlsSsl *ptr, const char *name); 85 86 const char * 87 mono_btls_ssl_get_server_name (MonoBtlsSsl *ptr); 88 89 typedef enum { 90 MONO_BTLS_SSL_RENEGOTIATE_NEVER = 0, 91 MONO_BTLS_SSL_RENEGOTIATE_ONCE, 92 MONO_BTLS_SSL_RENEGOTIATE_FREELY, 93 MONO_BTLS_SSL_RENEGOTIATE_IGNORE 94 } MonoBtlsSslRenegotiateMode; 95 96 void 97 mono_btls_ssl_set_renegotiate_mode (MonoBtlsSsl *ptr, MonoBtlsSslRenegotiateMode mode); 98 99 int 100 mono_btls_ssl_renegotiate_pending (MonoBtlsSsl *ptr); 101 102 void 103 mono_btls_ssl_destroy (MonoBtlsSsl *ptr); 104 105 #endif /* defined(__btls__btls_ssl__) */ 106