1 module deimos.wolfssl.wolfssl; 2 3 public: 4 5 enum SSL_ERROR_NONE = 0; /* for most functions */ 6 enum SSL_FAILURE = 0; /* for some functions */ 7 enum SSL_SUCCESS = 1; 8 9 enum SSL_SHUTDOWN_NOT_DONE = 2; /* call wolfSSL_shutdown again to complete */ 10 11 enum SSL_ALPN_NOT_FOUND = -9; 12 enum SSL_BAD_CERTTYPE = -8; 13 enum SSL_BAD_STAT = -7; 14 enum SSL_BAD_PATH = -6; 15 enum SSL_BAD_FILETYPE = -5; 16 enum SSL_BAD_FILE = -4; 17 enum SSL_NOT_IMPLEMENTED = -3; 18 enum SSL_UNKNOWN = -2; 19 enum SSL_FATAL_ERROR = -1; 20 21 enum SSL_FILETYPE_PEM = 1; 22 enum SSL_FILETYPE_ASN1 = 2; 23 enum SSL_FILETYPE_DEFAULT = 2; /* ASN1 */ 24 enum SSL_FILETYPE_RAW = 3; /* NTRU raw key blob */ 25 26 enum SSL_VERIFY_NONE = 0; 27 enum SSL_VERIFY_PEER = 1; 28 enum SSL_VERIFY_FAIL_IF_NO_PEER_CERT = 2; 29 enum SSL_VERIFY_CLIENT_ONCE = 4; 30 enum SSL_VERIFY_FAIL_EXCEPT_PSK = 8; 31 32 enum SSL_SESS_CACHE_OFF = 0x0000; 33 enum SSL_SESS_CACHE_CLIENT = 0x0001; 34 enum SSL_SESS_CACHE_SERVER = 0x0002; 35 enum SSL_SESS_CACHE_BOTH = 0x0003; 36 enum SSL_SESS_CACHE_NO_AUTO_CLEAR = 0x0008; 37 enum SSL_SESS_CACHE_NO_INTERNAL_LOOKUP = 0x0100; 38 enum SSL_SESS_CACHE_NO_INTERNAL_STORE = 0x0200; 39 enum SSL_SESS_CACHE_NO_INTERNAL = 0x0300; 40 41 enum SSL_ERROR_WANT_READ = 2; 42 enum SSL_ERROR_WANT_WRITE = 3; 43 enum SSL_ERROR_WANT_CONNECT = 7; 44 enum SSL_ERROR_WANT_ACCEPT = 8; 45 enum SSL_ERROR_SYSCALL = 5; 46 enum SSL_ERROR_WANT_X509_LOOKUP = 83; 47 enum SSL_ERROR_ZERO_RETURN = 6; 48 enum SSL_ERROR_SSL = 85; 49 50 enum SSL_SENT_SHUTDOWN = 1; 51 enum SSL_RECEIVED_SHUTDOWN = 2; 52 enum SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER = 4; 53 54 enum SSL_R_SSL_HANDSHAKE_FAILURE = 101; 55 enum SSL_R_TLSV1_ALERT_UNKNOWN_CA = 102; 56 enum SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN = 103; 57 enum SSL_R_SSLV3_ALERT_BAD_CERTIFICATE = 104; 58 59 enum SSL_CBIO_ERR_GENERAL = -1; /* general unexpected err */ 60 enum SSL_CBIO_ERR_WANT_READ = -2; /* need to call read again */ 61 enum SSL_CBIO_ERR_WANT_WRITE = -2; /* need to call write again */ 62 enum SSL_CBIO_ERR_CONN_RST = -3; /* connection reset */ 63 enum SSL_CBIO_ERR_ISR = -4; /* interrupt */ 64 enum SSL_CBIO_ERR_CONN_CLOSE = -5; /* connection closed or epipe */ 65 enum SSL_CBIO_ERR_TIMEOUT = -6; /* socket timeout */ 66 67 68 alias SSL = WOLFSSL; 69 alias SSL_CTX = WOLFSSL_CTX; 70 71 alias SSL_library_init = wolfSSL_library_init; 72 alias SSL_load_error_strings = wolfSSL_load_error_strings; 73 alias ERR_print_errors_fp = wolfSSL_ERR_dump_errors_fp; 74 alias ERR_free_strings = wolfSSL_ERR_free_strings; 75 alias OpenSSL_add_ssl_algorithms = wolfSSL_add_all_algorithms; 76 77 alias TLSv1_server_method = wolfTLSv1_server_method; 78 alias TLSv1_client_method = wolfTLSv1_client_method; 79 80 alias SSL_CTX_new = wolfSSL_CTX_new; 81 alias SSL_CTX_load_verify_locations = wolfSSL_CTX_load_verify_locations; 82 alias SSL_CTX_use_certificate_chain_file = wolfSSL_CTX_use_certificate_chain_file; 83 alias SSL_CTX_use_PrivateKey_file = wolfSSL_CTX_use_PrivateKey_file; 84 alias SSL_CTX_check_private_key = wolfSSL_CTX_check_private_key; 85 alias SSL_new = wolfSSL_new; 86 alias SSL_CTX_free = wolfSSL_CTX_free; 87 alias SSL_set_fd = wolfSSL_set_fd; 88 alias SSL_get_fd = wolfSSL_get_fd; 89 alias SSL_connect = wolfSSL_connect; 90 alias SSL_shutdown = wolfSSL_shutdown; 91 alias SSL_free = wolfSSL_free; 92 alias SSL_read = wolfSSL_read; 93 alias SSL_get_error = wolfSSL_get_error; 94 alias SSL_write = wolfSSL_write; 95 alias SSL_set_accept_state = wolfSSL_set_accept_state; 96 alias SSL_SSL_do_handshake = wolfSSL_SSL_do_handshake; 97 alias SSL_SSLSetIOSend = wolfSSL_SSLSetIOSend; 98 alias SSL_SSLSetIORecv = wolfSSL_SSLSetIORecv; 99 100 extern (C): 101 102 alias SSL_sendFunc = int function(WOLFSSL*, const void*, int, void*); 103 alias SSL_recvFunc = int function(WOLFSSL*, void*, int, void*); 104 105 struct FILE; 106 struct WOLFSSL_METHOD; 107 struct WOLFSSL_CTX; 108 struct WOLFSSL; 109 110 void wolfSSL_library_init(); 111 void wolfSSL_load_error_strings(); 112 void wolfSSL_ERR_dump_errors_fp(FILE* fp); 113 void wolfSSL_ERR_free_strings(); 114 int wolfSSL_add_all_algorithms(); 115 116 WOLFSSL_METHOD* wolfTLSv1_server_method(); 117 WOLFSSL_METHOD* wolfTLSv1_client_method(); 118 119 WOLFSSL_CTX* wolfSSL_CTX_new(WOLFSSL_METHOD* method); 120 int wolfSSL_CTX_load_verify_locations(WOLFSSL_CTX* ctx, const char* file, const char* path); 121 int wolfSSL_CTX_use_certificate_chain_file(WOLFSSL_CTX* ctx, const char* file); 122 int wolfSSL_CTX_use_PrivateKey_file(WOLFSSL_CTX* ctx, const char* file, int format); 123 int wolfSSL_CTX_check_private_key(const WOLFSSL_CTX* ctx); 124 WOLFSSL* wolfSSL_new(WOLFSSL_CTX* ctx); 125 void wolfSSL_CTX_free(WOLFSSL_CTX* ctx); 126 int wolfSSL_set_fd(WOLFSSL* ssl, int fd); 127 int wolfSSL_get_fd(WOLFSSL* ssl); 128 int wolfSSL_connect(WOLFSSL* ssl); 129 int wolfSSL_shutdown(WOLFSSL* ssl); 130 void wolfSSL_free(WOLFSSL* ssl); 131 int wolfSSL_read(WOLFSSL* ssl, void* data, int sz); 132 int wolfSSL_get_error(WOLFSSL* ssl, int ret); 133 int wolfSSL_write(WOLFSSL* ssl, const void* data, int sz); 134 void wolfSSL_set_accept_state(WOLFSSL* ssl); 135 int wolfSSL_SSL_do_handshake(WOLFSSL* ssl); 136 void wolfSSL_SSLSetIOSend(WOLFSSL* ssl, SSL_sendFunc sendFunc); 137 void wolfSSL_SSLSetIORecv(WOLFSSL* ssl, SSL_recvFunc recvFunc);