1 // 2 // btls-bio.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_bio__ 10 #define __btls__btls_bio__ 11 12 #include <stdio.h> 13 #include <btls-ssl.h> 14 15 typedef enum { 16 MONO_BTLS_CONTROL_COMMAND_FLUSH = 1 17 } MonoBtlsControlCommand; 18 19 typedef int (* MonoBtlsReadFunc) (const void *instance, const void *buf, int size, int *wantMore); 20 typedef int (* MonoBtlsWriteFunc) (const void *instance, const void *buf, int size); 21 typedef int64_t (* MonoBtlsControlFunc) (const void *instance, MonoBtlsControlCommand command, int64_t arg); 22 23 BIO * 24 mono_btls_bio_mono_new (void); 25 26 void 27 mono_btls_bio_mono_initialize (BIO *bio, const void *instance, 28 MonoBtlsReadFunc read_func, MonoBtlsWriteFunc write_func, 29 MonoBtlsControlFunc control_func); 30 31 int 32 mono_btls_bio_read (BIO *bio, void *data, int len); 33 34 int 35 mono_btls_bio_write (BIO *bio, const void *data, int len); 36 37 int 38 mono_btls_bio_flush (BIO *bio); 39 40 int 41 mono_btls_bio_indent (BIO *bio, unsigned indent, unsigned max_indent); 42 43 int 44 mono_btls_bio_hexdump (BIO *bio, const uint8_t *data, int len, unsigned indent); 45 46 void 47 mono_btls_bio_print_errors (BIO *bio); 48 49 void 50 mono_btls_bio_free (BIO *bio); 51 52 BIO * 53 mono_btls_bio_mem_new (void); 54 55 int 56 mono_btls_bio_mem_get_data (BIO *bio, void **data); 57 58 #endif /* defined(__btls__btls_bio__) */ 59