Add an SSL_has_pending() function
authorMatt Caswell <matt@openssl.org>
Fri, 12 Feb 2016 12:03:58 +0000 (12:03 +0000)
committerMatt Caswell <matt@openssl.org>
Mon, 7 Mar 2016 21:39:27 +0000 (21:39 +0000)
This is similar to SSL_pending() but just returns a 1 if there is data
pending in the internal OpenSSL buffers or 0 otherwise (as opposed to
SSL_pending() which returns the number of bytes available). Unlike
SSL_pending() this will work even if "read_ahead" is set (which is the
case if you are using read pipelining, or if you are doing DTLS). A 1
return value means that we have unprocessed data. It does *not* necessarily
indicate that there will be application data returned from a call to
SSL_read(). The unprocessed data may not be application data or there
could be errors when we attempt to parse the records.

Reviewed-by: Tim Hudson <tjh@openssl.org>
include/openssl/ssl.h
ssl/record/rec_layer_s3.c
ssl/record/record.h
ssl/ssl_lib.c
util/libssl.num
util/ssleay.num [new file with mode: 0755]

index 94ea5ee17a10d956567f16e7ca09ceb1aa76b89f..aa3daca455a744f2b0cd0e3fb945a4fdc29f6a13 100644 (file)
@@ -1408,6 +1408,7 @@ __owur const char *SSL_get_cipher_list(const SSL *s, int n);
 __owur char *SSL_get_shared_ciphers(const SSL *s, char *buf, int len);
 __owur int SSL_get_read_ahead(const SSL *s);
 __owur int SSL_pending(const SSL *s);
+__owur int SSL_has_pending(const SSL *s);
 # ifndef OPENSSL_NO_SOCK
 __owur int SSL_set_fd(SSL *s, int fd);
 __owur int SSL_set_rfd(SSL *s, int fd);
index 83f5cf56db91072b623b4c11ce30dadb195725ba..fb396b9f723b37bd83383a020ceaa7512c6e2aa6 100644 (file)
@@ -186,12 +186,12 @@ void RECORD_LAYER_release(RECORD_LAYER *rl)
     SSL3_RECORD_release(rl->rrec, SSL_MAX_PIPELINES);
 }
 
-int RECORD_LAYER_read_pending(RECORD_LAYER *rl)
+int RECORD_LAYER_read_pending(const RECORD_LAYER *rl)
 {
     return SSL3_BUFFER_get_left(&rl->rbuf) != 0;
 }
 
-int RECORD_LAYER_write_pending(RECORD_LAYER *rl)
+int RECORD_LAYER_write_pending(const RECORD_LAYER *rl)
 {
     return (rl->numwpipes > 0)
             && SSL3_BUFFER_get_left(&rl->wbuf[rl->numwpipes-1]) != 0;
index a1febc55514481aaa62ec2168dd61d48655e0597..c8c73d84706c897d1411b94cdf6ddc442898ec3c 100644 (file)
@@ -322,8 +322,8 @@ typedef struct record_layer_st {
 void RECORD_LAYER_init(RECORD_LAYER *rl, SSL *s);
 void RECORD_LAYER_clear(RECORD_LAYER *rl);
 void RECORD_LAYER_release(RECORD_LAYER *rl);
-int RECORD_LAYER_read_pending(RECORD_LAYER *rl);
-int RECORD_LAYER_write_pending(RECORD_LAYER *rl);
+int RECORD_LAYER_read_pending(const RECORD_LAYER *rl);
+int RECORD_LAYER_write_pending(const RECORD_LAYER *rl);
 int RECORD_LAYER_set_data(RECORD_LAYER *rl, const unsigned char *buf, int len);
 void RECORD_LAYER_reset_read_sequence(RECORD_LAYER *rl);
 void RECORD_LAYER_reset_write_sequence(RECORD_LAYER *rl);
index 4df83399791c956ef36ef1dcb46d06468d3b26c8..89d228600c5a87b3563090653841ad748c66d2cf 100644 (file)
@@ -1310,6 +1310,22 @@ int SSL_pending(const SSL *s)
     return (s->method->ssl_pending(s));
 }
 
+int SSL_has_pending(const SSL *s)
+{
+    /*
+     * Similar to SSL_pending() but returns a 1 to indicate that we have
+     * unprocessed data available or 0 otherwise (as opposed to the number of
+     * bytes available). Unlike SSL_pending() this will take into account
+     * read_ahead data. A 1 return simply indicates that we have unprocessed
+     * data. That data may not result in any application data, or we may fail
+     * to parse the records for some reason.
+     */
+    if (SSL_pending(s))
+        return 1;
+
+    return RECORD_LAYER_read_pending(&s->rlayer);
+}
+
 X509 *SSL_get_peer_certificate(const SSL *s)
 {
     X509 *r;
index 3ba959dc56408af4493d061f8c986e06440496cc..b73962a0e4be3fba3126df12955be83e3586af02 100644 (file)
@@ -383,3 +383,4 @@ SSL_CTX_set_ct_validation_callback      382 1_1_0   EXIST::FUNCTION:CT
 SSL_CTX_get_ct_validation_callback      383    1_1_0   EXIST::FUNCTION:CT
 SSL_set_default_read_buffer_len         384    1_1_0   EXIST::FUNCTION:
 SSL_CTX_set_default_read_buffer_len     385    1_1_0   EXIST::FUNCTION:
+SSL_has_pending                         386    1_1_0   EXIST::FUNCTION:
diff --git a/util/ssleay.num b/util/ssleay.num
new file mode 100755 (executable)
index 0000000..7377ffe
--- /dev/null
@@ -0,0 +1,422 @@
+ERR_load_SSL_strings                    1      1_1_0   EXIST::FUNCTION:
+SSL_CIPHER_description                  2      1_1_0   EXIST::FUNCTION:
+SSL_CTX_add_client_CA                   3      1_1_0   EXIST::FUNCTION:
+SSL_CTX_add_session                     4      1_1_0   EXIST::FUNCTION:
+SSL_CTX_check_private_key               5      1_1_0   EXIST::FUNCTION:
+SSL_CTX_ctrl                            6      1_1_0   EXIST::FUNCTION:
+SSL_CTX_flush_sessions                  7      1_1_0   EXIST::FUNCTION:
+SSL_CTX_free                            8      1_1_0   EXIST::FUNCTION:
+SSL_CTX_get_client_CA_list              9      1_1_0   EXIST::FUNCTION:
+SSL_CTX_get_verify_callback             10     1_1_0   EXIST::FUNCTION:
+SSL_CTX_get_verify_mode                 11     1_1_0   EXIST::FUNCTION:
+SSL_CTX_new                             12     1_1_0   EXIST::FUNCTION:
+SSL_CTX_remove_session                  13     1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_cipher_list                 15     1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_client_CA_list              16     1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_default_passwd_cb           17     1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_ssl_version                 19     1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_verify                      21     1_1_0   EXIST::FUNCTION:
+SSL_CTX_use_PrivateKey                  22     1_1_0   EXIST::FUNCTION:
+SSL_CTX_use_PrivateKey_ASN1             23     1_1_0   EXIST::FUNCTION:
+SSL_CTX_use_PrivateKey_file             24     1_1_0   EXIST::FUNCTION:
+SSL_CTX_use_RSAPrivateKey               25     1_1_0   EXIST::FUNCTION:RSA
+SSL_CTX_use_RSAPrivateKey_ASN1          26     1_1_0   EXIST::FUNCTION:RSA
+SSL_CTX_use_RSAPrivateKey_file          27     1_1_0   EXIST::FUNCTION:RSA
+SSL_CTX_use_certificate                 28     1_1_0   EXIST::FUNCTION:
+SSL_CTX_use_certificate_ASN1            29     1_1_0   EXIST::FUNCTION:
+SSL_CTX_use_certificate_file            30     1_1_0   EXIST::FUNCTION:
+SSL_SESSION_free                        31     1_1_0   EXIST::FUNCTION:
+SSL_SESSION_new                         32     1_1_0   EXIST::FUNCTION:
+SSL_SESSION_print                       33     1_1_0   EXIST::FUNCTION:
+SSL_SESSION_print_fp                    34     1_1_0   EXIST::FUNCTION:STDIO
+SSL_accept                              35     1_1_0   EXIST::FUNCTION:
+SSL_add_client_CA                       36     1_1_0   EXIST::FUNCTION:
+SSL_alert_desc_string                   37     1_1_0   EXIST::FUNCTION:
+SSL_alert_desc_string_long              38     1_1_0   EXIST::FUNCTION:
+SSL_alert_type_string                   39     1_1_0   EXIST::FUNCTION:
+SSL_alert_type_string_long              40     1_1_0   EXIST::FUNCTION:
+SSL_check_private_key                   41     1_1_0   EXIST::FUNCTION:
+SSL_clear                               42     1_1_0   EXIST::FUNCTION:
+SSL_connect                             43     1_1_0   EXIST::FUNCTION:
+SSL_copy_session_id                     44     1_1_0   EXIST::FUNCTION:
+SSL_ctrl                                45     1_1_0   EXIST::FUNCTION:
+SSL_dup                                 46     1_1_0   EXIST::FUNCTION:
+SSL_dup_CA_list                         47     1_1_0   EXIST::FUNCTION:
+SSL_free                                48     1_1_0   EXIST::FUNCTION:
+SSL_get_certificate                     49     1_1_0   EXIST::FUNCTION:
+SSL_get_cipher_list                     52     1_1_0   EXIST::FUNCTION:
+SSL_get_ciphers                         55     1_1_0   EXIST::FUNCTION:
+SSL_get_client_CA_list                  56     1_1_0   EXIST::FUNCTION:
+SSL_get_default_timeout                 57     1_1_0   EXIST::FUNCTION:
+SSL_get_error                           58     1_1_0   EXIST::FUNCTION:
+SSL_get_fd                              59     1_1_0   EXIST::FUNCTION:
+SSL_get_peer_cert_chain                 60     1_1_0   EXIST::FUNCTION:
+SSL_get_peer_certificate                61     1_1_0   EXIST::FUNCTION:
+SSL_get_rbio                            63     1_1_0   EXIST::FUNCTION:
+SSL_get_read_ahead                      64     1_1_0   EXIST::FUNCTION:
+SSL_get_shared_ciphers                  65     1_1_0   EXIST::FUNCTION:
+SSL_get_ssl_method                      66     1_1_0   EXIST::FUNCTION:
+SSL_get_verify_callback                 69     1_1_0   EXIST::FUNCTION:
+SSL_get_verify_mode                     70     1_1_0   EXIST::FUNCTION:
+SSL_get_version                         71     1_1_0   EXIST::FUNCTION:
+SSL_get_wbio                            72     1_1_0   EXIST::FUNCTION:
+SSL_load_client_CA_file                 73     1_1_0   EXIST::FUNCTION:
+SSL_load_error_strings                  74     1_1_0   NOEXIST::FUNCTION:
+SSL_new                                 75     1_1_0   EXIST::FUNCTION:
+SSL_peek                                76     1_1_0   EXIST::FUNCTION:
+SSL_pending                             77     1_1_0   EXIST::FUNCTION:
+SSL_read                                78     1_1_0   EXIST::FUNCTION:
+SSL_renegotiate                         79     1_1_0   EXIST::FUNCTION:
+SSL_rstate_string                       80     1_1_0   EXIST::FUNCTION:
+SSL_rstate_string_long                  81     1_1_0   EXIST::FUNCTION:
+SSL_set_accept_state                    82     1_1_0   EXIST::FUNCTION:
+SSL_set_bio                             83     1_1_0   EXIST::FUNCTION:
+SSL_set_cipher_list                     84     1_1_0   EXIST::FUNCTION:
+SSL_set_client_CA_list                  85     1_1_0   EXIST::FUNCTION:
+SSL_set_connect_state                   86     1_1_0   EXIST::FUNCTION:
+SSL_set_fd                              87     1_1_0   EXIST::FUNCTION:SOCK
+SSL_set_read_ahead                      88     1_1_0   EXIST::FUNCTION:
+SSL_set_rfd                             89     1_1_0   EXIST::FUNCTION:SOCK
+SSL_set_session                         90     1_1_0   EXIST::FUNCTION:
+SSL_set_ssl_method                      91     1_1_0   EXIST::FUNCTION:
+SSL_set_verify                          94     1_1_0   EXIST::FUNCTION:
+SSL_set_wfd                             95     1_1_0   EXIST::FUNCTION:SOCK
+SSL_shutdown                            96     1_1_0   EXIST::FUNCTION:
+SSL_state_string                        97     1_1_0   EXIST::FUNCTION:
+SSL_state_string_long                   98     1_1_0   EXIST::FUNCTION:
+SSL_use_PrivateKey                      99     1_1_0   EXIST::FUNCTION:
+SSL_use_PrivateKey_ASN1                 100    1_1_0   EXIST::FUNCTION:
+SSL_use_PrivateKey_file                 101    1_1_0   EXIST::FUNCTION:
+SSL_use_RSAPrivateKey                   102    1_1_0   EXIST::FUNCTION:RSA
+SSL_use_RSAPrivateKey_ASN1              103    1_1_0   EXIST::FUNCTION:RSA
+SSL_use_RSAPrivateKey_file              104    1_1_0   EXIST::FUNCTION:RSA
+SSL_use_certificate                     105    1_1_0   EXIST::FUNCTION:
+SSL_use_certificate_ASN1                106    1_1_0   EXIST::FUNCTION:
+SSL_use_certificate_file                107    1_1_0   EXIST::FUNCTION:
+SSL_write                               108    1_1_0   EXIST::FUNCTION:
+SSLeay_add_ssl_algorithms               109    1_1_0   NOEXIST::FUNCTION:
+SSLv23_client_method                    110    1_1_0   NOEXIST::FUNCTION:
+SSLv23_method                           111    1_1_0   NOEXIST::FUNCTION:
+SSLv23_server_method                    112    1_1_0   NOEXIST::FUNCTION:
+SSLv2_client_method                     113    1_1_0   NOEXIST::FUNCTION:
+SSLv2_method                            114    1_1_0   NOEXIST::FUNCTION:
+SSLv2_server_method                     115    1_1_0   NOEXIST::FUNCTION:
+SSLv3_client_method                     116    1_1_0   EXIST::FUNCTION:SSL3_METHOD
+SSLv3_method                            117    1_1_0   EXIST::FUNCTION:SSL3_METHOD
+SSLv3_server_method                     118    1_1_0   EXIST::FUNCTION:SSL3_METHOD
+d2i_SSL_SESSION                         119    1_1_0   EXIST::FUNCTION:
+i2d_SSL_SESSION                         120    1_1_0   EXIST::FUNCTION:
+BIO_f_ssl                               121    1_1_0   EXIST::FUNCTION:
+BIO_new_ssl                             122    1_1_0   EXIST::FUNCTION:
+BIO_proxy_ssl_copy_session_id           123    1_1_0   NOEXIST::FUNCTION:
+BIO_ssl_copy_session_id                 124    1_1_0   EXIST::FUNCTION:
+SSL_do_handshake                        125    1_1_0   EXIST::FUNCTION:
+SSL_get_privatekey                      126    1_1_0   EXIST::FUNCTION:
+SSL_get_current_cipher                  127    1_1_0   EXIST::FUNCTION:
+SSL_CIPHER_get_bits                     128    1_1_0   EXIST::FUNCTION:
+SSL_CIPHER_get_version                  129    1_1_0   EXIST::FUNCTION:
+SSL_CIPHER_get_name                     130    1_1_0   EXIST::FUNCTION:
+BIO_ssl_shutdown                        131    1_1_0   EXIST::FUNCTION:
+SSL_SESSION_cmp                         132    1_1_0   NOEXIST::FUNCTION:
+SSL_SESSION_hash                        133    1_1_0   NOEXIST::FUNCTION:
+SSL_SESSION_get_time                    134    1_1_0   EXIST::FUNCTION:
+SSL_SESSION_set_time                    135    1_1_0   EXIST::FUNCTION:
+SSL_SESSION_get_timeout                 136    1_1_0   EXIST::FUNCTION:
+SSL_SESSION_set_timeout                 137    1_1_0   EXIST::FUNCTION:
+SSL_CTX_get_ex_data                     138    1_1_0   EXIST::FUNCTION:
+SSL_CTX_get_quiet_shutdown              140    1_1_0   EXIST::FUNCTION:
+SSL_CTX_load_verify_locations           141    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_default_verify_paths        142    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_ex_data                     143    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_quiet_shutdown              145    1_1_0   EXIST::FUNCTION:
+SSL_SESSION_get_ex_data                 146    1_1_0   EXIST::FUNCTION:
+SSL_SESSION_set_ex_data                 148    1_1_0   EXIST::FUNCTION:
+SSL_get_SSL_CTX                         150    1_1_0   EXIST::FUNCTION:
+SSL_get_ex_data                         151    1_1_0   EXIST::FUNCTION:
+SSL_get_quiet_shutdown                  153    1_1_0   EXIST::FUNCTION:
+SSL_get_session                         154    1_1_0   EXIST::FUNCTION:
+SSL_get_shutdown                        155    1_1_0   EXIST::FUNCTION:
+SSL_get_verify_result                   157    1_1_0   EXIST::FUNCTION:
+SSL_set_ex_data                         158    1_1_0   EXIST::FUNCTION:
+SSL_set_info_callback                   160    1_1_0   EXIST::FUNCTION:
+SSL_set_quiet_shutdown                  161    1_1_0   EXIST::FUNCTION:
+SSL_set_shutdown                        162    1_1_0   EXIST::FUNCTION:
+SSL_set_verify_result                   163    1_1_0   EXIST::FUNCTION:
+SSL_version                             164    1_1_0   EXIST::FUNCTION:
+SSL_get_info_callback                   165    1_1_0   EXIST::FUNCTION:
+SSL_state                               166    1_1_0   NOEXIST::FUNCTION:
+SSL_CTX_get_ex_new_index                167    1_1_0   NOEXIST::FUNCTION:
+SSL_SESSION_get_ex_new_index            168    1_1_0   NOEXIST::FUNCTION:
+SSL_get_ex_new_index                    169    1_1_0   NOEXIST::FUNCTION:
+TLSv1_method                            170    1_1_0   EXIST::FUNCTION:
+TLSv1_server_method                     171    1_1_0   EXIST::FUNCTION:
+TLSv1_client_method                     172    1_1_0   EXIST::FUNCTION:
+BIO_new_buffer_ssl_connect              173    1_1_0   EXIST::FUNCTION:
+BIO_new_ssl_connect                     174    1_1_0   EXIST::FUNCTION:
+SSL_get_ex_data_X509_STORE_CTX_idx      175    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_tmp_dh_callback             176    1_1_0   EXIST::FUNCTION:DH
+SSL_CTX_set_tmp_rsa_callback            177    1_1_0   NOEXIST::FUNCTION:
+SSL_CTX_set_timeout                     178    1_1_0   EXIST::FUNCTION:
+SSL_CTX_get_timeout                     179    1_1_0   EXIST::FUNCTION:
+SSL_CTX_get_cert_store                  180    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_cert_store                  181    1_1_0   EXIST::FUNCTION:
+SSL_want                                182    1_1_0   EXIST::FUNCTION:
+SSL_library_init                        183    1_1_0   NOEXIST::FUNCTION:
+SSL_COMP_add_compression_method         184    1_1_0   EXIST::FUNCTION:
+SSL_add_file_cert_subjects_to_stack     185    1_1_0   EXIST::FUNCTION:
+SSL_set_tmp_rsa_callback                186    1_1_0   NOEXIST::FUNCTION:
+SSL_set_tmp_dh_callback                 187    1_1_0   EXIST::FUNCTION:DH
+SSL_add_dir_cert_subjects_to_stack      188    1_1_0   EXIST::FUNCTION:
+SSL_set_session_id_context              189    1_1_0   EXIST::FUNCTION:
+SSL_CTX_use_certificate_chain_file      222    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_verify_depth                225    1_1_0   EXIST::FUNCTION:
+SSL_set_verify_depth                    226    1_1_0   EXIST::FUNCTION:
+SSL_CTX_get_verify_depth                228    1_1_0   EXIST::FUNCTION:
+SSL_get_verify_depth                    229    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_session_id_context          231    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_cert_verify_callback        232    1_1_0   EXIST::FUNCTION:
+SSL_test_functions                      233    1_1_0   EXIST::FUNCTION:UNIT_TEST
+SSL_CTX_set_default_passwd_cb_userdata  235    1_1_0   EXIST::FUNCTION:
+SSL_set_purpose                         236    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_trust                       237    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_purpose                     238    1_1_0   EXIST::FUNCTION:
+SSL_set_trust                           239    1_1_0   EXIST::FUNCTION:
+SSL_get_finished                        240    1_1_0   EXIST::FUNCTION:
+SSL_get_peer_finished                   241    1_1_0   EXIST::FUNCTION:
+SSL_get1_session                        242    1_1_0   EXIST::FUNCTION:
+SSL_CTX_callback_ctrl                   243    1_1_0   EXIST::FUNCTION:
+SSL_callback_ctrl                       244    1_1_0   EXIST::FUNCTION:
+SSL_CTX_sessions                        245    1_1_0   EXIST::FUNCTION:
+SSL_get_rfd                             246    1_1_0   EXIST::FUNCTION:
+SSL_get_wfd                             247    1_1_0   EXIST::FUNCTION:
+kssl_cget_tkt                           248    1_1_0   NOEXIST::FUNCTION:
+SSL_has_matching_session_id             249    1_1_0   EXIST::FUNCTION:
+kssl_err_set                            250    1_1_0   NOEXIST::FUNCTION:
+kssl_ctx_show                           251    1_1_0   NOEXIST::FUNCTION:
+kssl_validate_times                     252    1_1_0   NOEXIST::FUNCTION:
+kssl_check_authent                      253    1_1_0   NOEXIST::FUNCTION:
+kssl_ctx_new                            254    1_1_0   NOEXIST::FUNCTION:
+kssl_build_principal_2                  255    1_1_0   NOEXIST::FUNCTION:
+kssl_skip_confound                      256    1_1_0   NOEXIST::FUNCTION:
+kssl_sget_tkt                           257    1_1_0   NOEXIST::FUNCTION:
+SSL_set_generate_session_id             258    1_1_0   EXIST::FUNCTION:
+kssl_ctx_setkey                         259    1_1_0   NOEXIST::FUNCTION:
+kssl_ctx_setprinc                       260    1_1_0   NOEXIST::FUNCTION:
+kssl_ctx_free                           261    1_1_0   NOEXIST::FUNCTION:
+kssl_krb5_free_data_contents            262    1_1_0   NOEXIST::FUNCTION:
+kssl_ctx_setstring                      263    1_1_0   NOEXIST::FUNCTION:
+SSL_CTX_set_generate_session_id         264    1_1_0   EXIST::FUNCTION:
+SSL_renegotiate_pending                 265    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_msg_callback                266    1_1_0   EXIST::FUNCTION:
+SSL_set_msg_callback                    267    1_1_0   EXIST::FUNCTION:
+DTLSv1_client_method                    268    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_tmp_ecdh_callback           269    1_1_0   NOEXIST::FUNCTION:
+SSL_set_tmp_ecdh_callback               270    1_1_0   NOEXIST::FUNCTION:
+SSL_COMP_get_name                       271    1_1_0   EXIST::FUNCTION:
+SSL_get_current_compression             272    1_1_0   EXIST::FUNCTION:
+DTLSv1_method                           273    1_1_0   EXIST::FUNCTION:
+SSL_get_current_expansion               274    1_1_0   EXIST::FUNCTION:
+DTLSv1_server_method                    275    1_1_0   EXIST::FUNCTION:
+SSL_COMP_get_compression_methods        276    1_1_0   EXIST::FUNCTION:
+SSL_SESSION_get_id                      277    1_1_0   EXIST::FUNCTION:
+SSL_CTX_sess_set_new_cb                 278    1_1_0   EXIST::FUNCTION:
+SSL_CTX_sess_get_get_cb                 279    1_1_0   EXIST::FUNCTION:
+SSL_CTX_sess_set_get_cb                 280    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_cookie_verify_cb            281    1_1_0   EXIST::FUNCTION:
+SSL_CTX_get_info_callback               282    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_cookie_generate_cb          283    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_client_cert_cb              284    1_1_0   EXIST::FUNCTION:
+SSL_CTX_sess_set_remove_cb              285    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_info_callback               286    1_1_0   EXIST::FUNCTION:
+SSL_CTX_sess_get_new_cb                 287    1_1_0   EXIST::FUNCTION:
+SSL_CTX_get_client_cert_cb              288    1_1_0   EXIST::FUNCTION:
+SSL_CTX_sess_get_remove_cb              289    1_1_0   EXIST::FUNCTION:
+SSL_set_SSL_CTX                         290    1_1_0   EXIST::FUNCTION:
+SSL_get_servername                      291    1_1_0   EXIST::FUNCTION:
+SSL_get_servername_type                 292    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_client_cert_engine          293    1_1_0   EXIST::FUNCTION:ENGINE
+SSL_CTX_use_psk_identity_hint           294    1_1_0   EXIST::FUNCTION:PSK
+SSL_CTX_set_psk_client_callback         295    1_1_0   EXIST::FUNCTION:PSK
+PEM_write_bio_SSL_SESSION               296    1_1_0   EXIST::FUNCTION:
+SSL_get_psk_identity_hint               297    1_1_0   EXIST::FUNCTION:PSK
+SSL_set_psk_server_callback             298    1_1_0   EXIST::FUNCTION:PSK
+SSL_use_psk_identity_hint               299    1_1_0   EXIST::FUNCTION:PSK
+SSL_set_psk_client_callback             300    1_1_0   EXIST::FUNCTION:PSK
+PEM_read_SSL_SESSION                    301    1_1_0   EXIST::FUNCTION:
+PEM_read_bio_SSL_SESSION                302    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_psk_server_callback         303    1_1_0   EXIST::FUNCTION:PSK
+SSL_get_psk_identity                    304    1_1_0   EXIST::FUNCTION:PSK
+PEM_write_SSL_SESSION                   305    1_1_0   EXIST::FUNCTION:
+SSL_set_session_ticket_ext              306    1_1_0   EXIST::FUNCTION:
+SSL_set_session_secret_cb               307    1_1_0   EXIST::FUNCTION:
+SSL_set_session_ticket_ext_cb           308    1_1_0   EXIST::FUNCTION:
+SSL_set1_param                          309    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set1_param                      310    1_1_0   EXIST::FUNCTION:
+SSL_tls1_key_exporter                   311    1_1_0   NOEXIST::FUNCTION:
+SSL_renegotiate_abbreviated             312    1_1_0   EXIST::FUNCTION:
+TLSv1_1_method                          313    1_1_0   EXIST::FUNCTION:
+TLSv1_1_client_method                   314    1_1_0   EXIST::FUNCTION:
+TLSv1_1_server_method                   315    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_srp_client_pwd_callback     316    1_1_0   EXIST::FUNCTION:SRP
+SSL_get_srp_g                           317    1_1_0   EXIST::FUNCTION:SRP
+SSL_CTX_set_srp_username_callback       318    1_1_0   EXIST::FUNCTION:SRP
+SSL_get_srp_userinfo                    319    1_1_0   EXIST::FUNCTION:SRP
+SSL_set_srp_server_param                320    1_1_0   EXIST::FUNCTION:SRP
+SSL_set_srp_server_param_pw             321    1_1_0   EXIST::FUNCTION:SRP
+SSL_get_srp_N                           322    1_1_0   EXIST::FUNCTION:SRP
+SSL_get_srp_username                    323    1_1_0   EXIST::FUNCTION:SRP
+SSL_CTX_set_srp_password                324    1_1_0   EXIST::FUNCTION:SRP
+SSL_CTX_set_srp_strength                325    1_1_0   EXIST::FUNCTION:SRP
+SSL_CTX_set_srp_verify_param_callback   326    1_1_0   EXIST::FUNCTION:SRP
+SSL_CTX_set_srp_missing_srp_username_callback 327      1_1_0   NOEXIST::FUNCTION:
+SSL_CTX_set_srp_cb_arg                  328    1_1_0   EXIST::FUNCTION:SRP
+SSL_CTX_set_srp_username                329    1_1_0   EXIST::FUNCTION:SRP
+SSL_CTX_SRP_CTX_init                    330    1_1_0   EXIST::FUNCTION:SRP
+SSL_SRP_CTX_init                        331    1_1_0   EXIST::FUNCTION:SRP
+SRP_Calc_A_param                        332    1_1_0   EXIST::FUNCTION:SRP
+SRP_generate_server_master_secret       333    1_1_0   NOEXIST::FUNCTION:
+SSL_CTX_SRP_CTX_free                    334    1_1_0   EXIST::FUNCTION:SRP
+SRP_generate_client_master_secret       335    1_1_0   NOEXIST::FUNCTION:
+SSL_srp_server_param_with_username      336    1_1_0   EXIST::FUNCTION:SRP
+SRP_have_to_put_srp_username            337    1_1_0   NOEXIST::FUNCTION:
+SSL_SRP_CTX_free                        338    1_1_0   EXIST::FUNCTION:SRP
+SSL_set_debug                           339    1_1_0   EXIST::FUNCTION:DEPRECATEDIN_1_1_0
+SSL_SESSION_get0_peer                   340    1_1_0   EXIST::FUNCTION:
+TLSv1_2_client_method                   341    1_1_0   EXIST::FUNCTION:
+SSL_SESSION_set1_id_context             342    1_1_0   EXIST::FUNCTION:
+TLSv1_2_server_method                   343    1_1_0   EXIST::FUNCTION:
+SSL_session_reused                      344    1_1_0   EXIST::FUNCTION:
+SSL_get0_kssl_ctx                       345    1_1_0   NOEXIST::FUNCTION:
+SSL_set0_kssl_ctx                       346    1_1_0   NOEXIST::FUNCTION:
+SSL_SESSION_get0_id                     347    1_1_0   NOEXIST::FUNCTION:
+SSL_set_state                           348    1_1_0   NOEXIST::FUNCTION:
+SSL_CIPHER_get_id                       349    1_1_0   EXIST::FUNCTION:
+TLSv1_2_method                          350    1_1_0   EXIST::FUNCTION:
+SSL_SESSION_get_id_len                  351    1_1_0   NOEXIST::FUNCTION:
+kssl_ctx_get0_client_princ              352    1_1_0   NOEXIST::FUNCTION:
+SSL_export_keying_material              353    1_1_0   EXIST::FUNCTION:
+SSL_set_tlsext_use_srtp                 354    1_1_0   EXIST::FUNCTION:SRTP
+SSL_CTX_set_next_protos_advertised_cb   355    1_1_0   EXIST::FUNCTION:NEXTPROTONEG
+SSL_get0_next_proto_negotiated          356    1_1_0   EXIST::FUNCTION:NEXTPROTONEG
+SSL_get_selected_srtp_profile           357    1_1_0   EXIST::FUNCTION:SRTP
+SSL_CTX_set_tlsext_use_srtp             358    1_1_0   EXIST::FUNCTION:SRTP
+SSL_select_next_proto                   359    1_1_0   EXIST::FUNCTION:
+SSL_get_srtp_profiles                   360    1_1_0   EXIST::FUNCTION:SRTP
+SSL_CTX_set_next_proto_select_cb        361    1_1_0   EXIST::FUNCTION:NEXTPROTONEG
+SSL_SESSION_get_compress_id             362    1_1_0   EXIST::FUNCTION:
+SSL_get0_param                          363    1_1_0   EXIST::FUNCTION:
+SSL_CTX_get0_privatekey                 364    1_1_0   EXIST::FUNCTION:
+SSL_get_shared_sigalgs                  365    1_1_0   EXIST::FUNCTION:
+SSL_CONF_CTX_finish                     366    1_1_0   EXIST::FUNCTION:
+DTLS_method                             367    1_1_0   EXIST::FUNCTION:
+DTLS_client_method                      368    1_1_0   EXIST::FUNCTION:
+SSL_CIPHER_standard_name                369    1_1_0   EXIST::FUNCTION:SSL_TRACE
+SSL_set_alpn_protos                     370    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_srv_supp_data               371    1_1_0   NOEXIST::FUNCTION:
+SSL_CONF_cmd_argv                       372    1_1_0   EXIST::FUNCTION:
+DTLSv1_2_server_method                  373    1_1_0   EXIST::FUNCTION:
+SSL_COMP_set0_compress_methods          374    1_1_0   NOEXIST::FUNCTION:
+SSL_COMP_set0_compression_methods       374    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_cert_cb                     375    1_1_0   EXIST::FUNCTION:
+SSL_CTX_add_client_custom_ext           376    1_1_0   EXIST::FUNCTION:
+SSL_is_server                           377    1_1_0   EXIST::FUNCTION:
+SSL_CTX_get0_param                      378    1_1_0   EXIST::FUNCTION:
+SSL_CONF_cmd                            379    1_1_0   EXIST::FUNCTION:
+SSL_CTX_get_ssl_method                  380    1_1_0   EXIST::FUNCTION:
+SSL_CONF_CTX_set_ssl_ctx                381    1_1_0   EXIST::FUNCTION:
+SSL_CIPHER_find                         382    1_1_0   EXIST::FUNCTION:
+SSL_CTX_use_serverinfo                  383    1_1_0   EXIST::FUNCTION:
+DTLSv1_2_client_method                  384    1_1_0   EXIST::FUNCTION:
+SSL_get0_alpn_selected                  385    1_1_0   EXIST::FUNCTION:
+SSL_CONF_CTX_clear_flags                386    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_alpn_protos                 387    1_1_0   EXIST::FUNCTION:
+SSL_CTX_add_server_custom_ext           389    1_1_0   EXIST::FUNCTION:
+SSL_CTX_get0_certificate                390    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_alpn_select_cb              391    1_1_0   EXIST::FUNCTION:
+SSL_CONF_cmd_value_type                 392    1_1_0   EXIST::FUNCTION:
+SSL_set_cert_cb                         393    1_1_0   EXIST::FUNCTION:
+SSL_get_sigalgs                         394    1_1_0   EXIST::FUNCTION:
+SSL_CONF_CTX_set1_prefix                395    1_1_0   EXIST::FUNCTION:
+SSL_CONF_CTX_new                        396    1_1_0   EXIST::FUNCTION:
+SSL_CONF_CTX_set_flags                  397    1_1_0   EXIST::FUNCTION:
+SSL_CONF_CTX_set_ssl                    398    1_1_0   EXIST::FUNCTION:
+SSL_check_chain                         399    1_1_0   EXIST::FUNCTION:
+SSL_certs_clear                         400    1_1_0   EXIST::FUNCTION:
+SSL_CONF_CTX_free                       401    1_1_0   EXIST::FUNCTION:
+SSL_trace                               402    1_1_0   EXIST::FUNCTION:SSL_TRACE
+SSL_CTX_set_cli_supp_data               403    1_1_0   NOEXIST::FUNCTION:
+DTLSv1_2_method                         404    1_1_0   EXIST::FUNCTION:
+DTLS_server_method                      405    1_1_0   EXIST::FUNCTION:
+SSL_CTX_use_serverinfo_file             406    1_1_0   EXIST::FUNCTION:
+SSL_COMP_free_compress_methods          407    1_1_0   NOEXIST::FUNCTION:
+SSL_COMP_free_compression_methods       407    1_1_0   EXIST::FUNCTION:
+SSL_extension_supported                 409    1_1_0   EXIST::FUNCTION:
+SSL_CTX_get_security_callback           410    1_1_0   EXIST::FUNCTION:
+SSL_SESSION_print_keylog                411    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_not_resumable_session_callback 412 1_1_0   EXIST::FUNCTION:
+SSL_get0_security_ex_data               413    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_security_callback           414    1_1_0   EXIST::FUNCTION:
+SSL_get1_supported_ciphers              415    1_1_0   EXIST::FUNCTION:
+SSL_set_security_level                  416    1_1_0   EXIST::FUNCTION:
+SSL_set0_security_ex_data               417    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_security_level              418    1_1_0   EXIST::FUNCTION:
+SSL_set_not_resumable_session_callback  419    1_1_0   EXIST::FUNCTION:
+SSL_get_security_callback               420    1_1_0   EXIST::FUNCTION:
+SSL_get_security_level                  421    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set0_security_ex_data           422    1_1_0   EXIST::FUNCTION:
+SSL_set_security_callback               423    1_1_0   EXIST::FUNCTION:
+SSL_CTX_get_security_level              424    1_1_0   EXIST::FUNCTION:
+SSL_CTX_get0_security_ex_data           425    1_1_0   EXIST::FUNCTION:
+SSL_SESSION_has_ticket                  426    1_1_0   EXIST::FUNCTION:
+SSL_set_wbio                            427    1_1_0   EXIST::FUNCTION:
+SSL_SESSION_get0_ticket                 428    1_1_0   EXIST::FUNCTION:
+SSL_SESSION_get_ticket_lifetime_hint    429    1_1_0   EXIST::FUNCTION:
+SSL_set_rbio                            430    1_1_0   EXIST::FUNCTION:
+SSL_CIPHER_get_digest_nid               431    1_1_0   EXIST::FUNCTION:
+SSL_CIPHER_get_cipher_nid               432    1_1_0   EXIST::FUNCTION:
+SSL_use_certificate_chain_file          433    1_1_0   EXIST::FUNCTION:
+TLS_server_method                       434    1_1_0   EXIST::FUNCTION:
+TLS_method                              435    1_1_0   EXIST::FUNCTION:
+TLS_client_method                       436    1_1_0   EXIST::FUNCTION:
+SSL_get_server_random                   437    1_1_0   EXIST::FUNCTION:
+SSL_get_client_ciphers                  438    1_1_0   EXIST::FUNCTION:
+SSL_get_client_random                   439    1_1_0   EXIST::FUNCTION:
+SSL_SESSION_get_master_key              440    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_default_verify_dir          441    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_default_verify_file         442    1_1_0   EXIST::FUNCTION:
+SSL_in_init                             443    1_1_0   EXIST::FUNCTION:
+SSL_in_before                           444    1_1_0   EXIST::FUNCTION:
+SSL_is_init_finished                    445    1_1_0   EXIST::FUNCTION:
+SSL_get_state                           446    1_1_0   EXIST::FUNCTION:
+SSL_set_default_passwd_cb               447    1_1_0   EXIST::FUNCTION:
+SSL_set_default_passwd_cb_userdata      448    1_1_0   EXIST::FUNCTION:
+SSL_waiting_for_async                   449    1_1_0   EXIST::FUNCTION:
+SSL_get_async_wait_fd                   450    1_1_0   EXIST::FUNCTION:
+SSL_add_ssl_module                      451    1_1_0   EXIST::FUNCTION:
+SSL_CTX_config                          452    1_1_0   EXIST::FUNCTION:
+SSL_config                              453    1_1_0   EXIST::FUNCTION:
+SSL_dane_tlsa_add                       454    1_1_0   EXIST::FUNCTION:
+SSL_set1_host                           455    1_1_0   EXIST::FUNCTION:
+SSL_get0_peername                       456    1_1_0   EXIST::FUNCTION:
+SSL_add1_host                           457    1_1_0   EXIST::FUNCTION:
+SSL_CTX_dane_mtype_set                  458    1_1_0   EXIST::FUNCTION:
+SSL_CTX_dane_enable                     459    1_1_0   EXIST::FUNCTION:
+SSL_get0_dane_authority                 460    1_1_0   EXIST::FUNCTION:
+SSL_get0_dane_tlsa                      461    1_1_0   EXIST::FUNCTION:
+SSL_set_hostflags                       462    1_1_0   EXIST::FUNCTION:
+SSL_dane_enable                         463    1_1_0   EXIST::FUNCTION:
+SSL_get0_dane                           464    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_options                     465    1_1_0   EXIST::FUNCTION:
+SSL_CTX_clear_options                   466    1_1_0   EXIST::FUNCTION:
+SSL_CTX_get_options                     467    1_1_0   EXIST::FUNCTION:
+SSL_clear_options                       468    1_1_0   EXIST::FUNCTION:
+SSL_set_options                         469    1_1_0   EXIST::FUNCTION:
+SSL_get_options                         470    1_1_0   EXIST::FUNCTION:
+SSL_up_ref                              471    1_1_0   EXIST::FUNCTION:
+SSL_CTX_up_ref                          472    1_1_0   EXIST::FUNCTION:
+DTLSv1_listen                           473    1_1_0   EXIST::FUNCTION:
+SSL_get0_verified_chain                 474    1_1_0   EXIST::FUNCTION:
+OPENSSL_init_ssl                        475    1_1_0   EXIST::FUNCTION:
+SSL_CTX_set_default_read_buffer_len     476    1_1_0   EXIST::FUNCTION:
+SSL_set_default_read_buffer_len         477    1_1_0   EXIST::FUNCTION:
+SSL_has_pending                         478    1_1_0   EXIST::FUNCTION: