[openssl-commits] [openssl] master update
Matt Caswell
matt at openssl.org
Mon Mar 7 21:45:25 UTC 2016
The branch master has been updated
via 3720597107b957b48e4a57b503c56feb5bff653f (commit)
via ea71906ed7437671c434fccddc8c4c41bb3aeb51 (commit)
via e38c2e8535bec4660c00c8394ff181d622bd41bd (commit)
via 11780ac3e22e9214dd1e0b71279b5e787f203163 (commit)
via de69bc5d1af9a0c91636b8ee804fd3688e51b4eb (commit)
via 44ab2dfdf9dc519e6d081646119bdda3ddfd9e85 (commit)
via e2d5183d7cd5479d7c63ba524b3ddc4abd707dba (commit)
via ccd82ef4c2ca0b1e931e8f6e5f3848a2110b8680 (commit)
via f482740f2389946b8738b963f2cf12c5a3b4d399 (commit)
via d3b324a1614c1fa8acaaa448eb2a101e49e86ee2 (commit)
via 0df8088132af29b3069aa15408fc1ea49e5cabb4 (commit)
via d7ded13af1a1fdf6bc55a3a961d64c0e27aad19d (commit)
via 8061d964e794b9f3beafec155ffe2e1d3c9eaf60 (commit)
via 0707741532b6f5f6c03a6016bd41cbc7f9e2cc7a (commit)
via fd068d50c4e19b6e860a303a6bec1c1803f5465e (commit)
via 49580f25b3e6239a277c9fc2708c0354f419ec17 (commit)
via dad78fb13d790cd06afd6e88067c038d22d7780f (commit)
via 0220fee47f912c9c89efe24c09e10f4d452a4d42 (commit)
via 94777c9c86a2b2ea2726c49d6c8f61078558beba (commit)
via 2f2c9caa727d7d2a5ce4bfb8266e019546ce77df (commit)
via 032c6d21fc53d5ec8b7ef78b0997627d1d240dad (commit)
via d102d9df8625cb6f75c537b7f2a696bb5f305ff2 (commit)
via 98ee75439d7e844de6c063a4be5bd09b3cc9db53 (commit)
via 4e3925227a65ade92f3052ee54a810f5d6c4e96e (commit)
from 122499dd145ba7456ad9ee32fe93a1727bea7be7 (commit)
- Log -----------------------------------------------------------------
commit 3720597107b957b48e4a57b503c56feb5bff653f
Author: Matt Caswell <matt at openssl.org>
Date: Mon Mar 7 12:17:42 2016 +0000
Rename the numpipes argument to ssl3_enc/tls1_enc
The numpipes argument to ssl3_enc/tls1_enc is actually the number of
records passed in the array. To make this clearer rename the argument to
|n_recs|.
Reviewed-by: Tim Hudson <tjh at openssl.org>
commit ea71906ed7437671c434fccddc8c4c41bb3aeb51
Author: Matt Caswell <matt at openssl.org>
Date: Mon Mar 7 12:11:42 2016 +0000
Rename a function
Rename the have_whole_app_data_record_waiting() function to include the
ssl3_record prefix...and make it a bit shorter.
Reviewed-by: Tim Hudson <tjh at openssl.org>
commit e38c2e8535bec4660c00c8394ff181d622bd41bd
Author: Matt Caswell <matt at openssl.org>
Date: Mon Mar 7 12:03:48 2016 +0000
Refactor dasync cipher implementations to improve code reuse
Move out most of the boiler plate code that is common between aes128-cbc
and aes128-cbc-hmac-sha1 into helper functions to improve code reuse.
Reviewed-by: Tim Hudson <tjh at openssl.org>
commit 11780ac3e22e9214dd1e0b71279b5e787f203163
Author: Matt Caswell <matt at openssl.org>
Date: Mon Mar 7 11:08:02 2016 +0000
Move the _hidden_* static variables in dasync to be constructed in bind
The _hidden_* variables were being created on-the-fly. It is better to
create them once up front during bind to avoid any potential race
conditions.
Reviewed-by: Tim Hudson <tjh at openssl.org>
commit de69bc5d1af9a0c91636b8ee804fd3688e51b4eb
Author: Matt Caswell <matt at openssl.org>
Date: Mon Mar 7 10:31:48 2016 +0000
Fix typo in SSL_pending docs
Reviewed-by: Tim Hudson <tjh at openssl.org>
commit 44ab2dfdf9dc519e6d081646119bdda3ddfd9e85
Author: Matt Caswell <matt at openssl.org>
Date: Mon Mar 7 10:17:27 2016 +0000
Rename EVP_CIPHER_CTX_cipher_data to EVP_CIPHER_CTX_get_cipher_data
We had the function EVP_CIPHER_CTX_cipher_data which is newly added for
1.1.0. As we now also need an EVP_CIPHER_CTX_set_cipher_data it makes
more sense for the former to be called EVP_CIPHER_CTX_get_cipher_data.
Reviewed-by: Tim Hudson <tjh at openssl.org>
commit e2d5183d7cd5479d7c63ba524b3ddc4abd707dba
Author: Matt Caswell <matt at openssl.org>
Date: Mon Mar 7 10:06:42 2016 +0000
Fix s_server/s_client handling of the split_send_frag argument
Ensure that a value of 0 is correctly handled for the split_send_frag
argument.
Reviewed-by: Tim Hudson <tjh at openssl.org>
commit ccd82ef4c2ca0b1e931e8f6e5f3848a2110b8680
Author: Matt Caswell <matt at openssl.org>
Date: Tue Feb 16 14:00:55 2016 +0000
Add documentation for the EVP_CIPHER_CTX_cipher_data functions
The new pipeline code added a new function
EVP_CIPHER_CTX_set_cipher_data(). Add documentation for this and the
existing EVP_CIPHER_CTX_cipher_data() function.
Reviewed-by: Tim Hudson <tjh at openssl.org>
commit f482740f2389946b8738b963f2cf12c5a3b4d399
Author: Matt Caswell <matt at openssl.org>
Date: Tue Feb 16 12:10:53 2016 +0000
Remove the wrec record layer field
We used to use the wrec field in the record layer for keeping track of the
current record that we are writing out. As part of the pipelining changes
this has been moved to stack allocated variables to do the same thing,
therefore the field is no longer needed.
Reviewed-by: Tim Hudson <tjh at openssl.org>
commit d3b324a1614c1fa8acaaa448eb2a101e49e86ee2
Author: Matt Caswell <matt at openssl.org>
Date: Tue Feb 16 11:58:24 2016 +0000
Update a comment
Update a comment that was out of date due to the pipelining changes
Reviewed-by: Tim Hudson <tjh at openssl.org>
commit 0df8088132af29b3069aa15408fc1ea49e5cabb4
Author: Matt Caswell <matt at openssl.org>
Date: Tue Feb 16 11:13:33 2016 +0000
Add documentation for new s_server/s_client options
Document the new split_send_frag, max_pipelines and read_buf options.
Reviewed-by: Tim Hudson <tjh at openssl.org>
commit d7ded13af1a1fdf6bc55a3a961d64c0e27aad19d
Author: Matt Caswell <matt at openssl.org>
Date: Tue Feb 16 10:36:18 2016 +0000
Add documentation for SSL_has_pending()
A previous commit added the SSL_has_pending() function which provides a
method for knowing whether OpenSSL has buffered, but as yet unprocessed
record data.
Reviewed-by: Tim Hudson <tjh at openssl.org>
commit 8061d964e794b9f3beafec155ffe2e1d3c9eaf60
Author: Matt Caswell <matt at openssl.org>
Date: Mon Feb 15 15:45:18 2016 +0000
Add pipelining documentation
Add some documentation for all of the SSL/SSL_CTX functions/ctrls for
conrolling read and write pipelining.
Reviewed-by: Tim Hudson <tjh at openssl.org>
commit 0707741532b6f5f6c03a6016bd41cbc7f9e2cc7a
Author: Matt Caswell <matt at openssl.org>
Date: Mon Feb 15 15:43:28 2016 +0000
Fix erroneous fall thgrough in switch statement
Fix an erroenous fall through when setting the max_pipelines value.
Reviewed-by: Tim Hudson <tjh at openssl.org>
commit fd068d50c4e19b6e860a303a6bec1c1803f5465e
Author: Matt Caswell <matt at openssl.org>
Date: Fri Feb 12 13:33:45 2016 +0000
Ensure s_client and s_server work when read_ahead is set
Previously s_client and s_server relied on using SSL_pending() which does
not take into account read_ahead. For read pipelining to work, read_ahead
gets set automatically. Therefore s_client and s_server have been
converted to use SSL_has_pending() instead.
Reviewed-by: Tim Hudson <tjh at openssl.org>
commit 49580f25b3e6239a277c9fc2708c0354f419ec17
Author: Matt Caswell <matt at openssl.org>
Date: Fri Feb 12 12:03:58 2016 +0000
Add an SSL_has_pending() function
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 at openssl.org>
commit dad78fb13d790cd06afd6e88067c038d22d7780f
Author: Matt Caswell <matt at openssl.org>
Date: Wed Jan 13 14:20:25 2016 +0000
Add an ability to set the SSL read buffer size
This capability is required for read pipelining. We will only read in as
many records as will fit in the read buffer (and the network can provide
in one go). The bigger the buffer the more records we can process in
parallel.
Reviewed-by: Tim Hudson <tjh at openssl.org>
commit 0220fee47f912c9c89efe24c09e10f4d452a4d42
Author: Matt Caswell <matt at openssl.org>
Date: Wed Jan 13 11:44:04 2016 +0000
Lazily initialise the compression buffer
With read pipelining we use multiple SSL3_RECORD structures for reading.
There are SSL_MAX_PIPELINES (32) of them defined (typically not all of these
would be used). Each one has a 16k compression buffer allocated! This
results in a significant amount of memory being consumed which, most of the
time, is not needed. This change swaps the allocation of the compression
buffer to be lazy so that it is only done immediately before it is actually
used.
Reviewed-by: Tim Hudson <tjh at openssl.org>
commit 94777c9c86a2b2ea2726c49d6c8f61078558beba
Author: Matt Caswell <matt at openssl.org>
Date: Tue Jan 12 14:52:35 2016 +0000
Implement read pipeline support in libssl
Read pipelining is controlled in a slightly different way than with write
pipelining. While reading we are constrained by the number of records that
the peer (and the network) can provide to us in one go. The more records
we can get in one go the more opportunity we have to parallelise the
processing.
There are two parameters that affect this:
* The number of pipelines that we are willing to process in one go. This is
controlled by max_pipelines (as for write pipelining)
* The size of our read buffer. A subsequent commit will provide an API for
adjusting the size of the buffer.
Another requirement for this to work is that "read_ahead" must be set. The
read_ahead parameter will attempt to read as much data into our read buffer
as the network can provide. Without this set, data is read into the read
buffer on demand. Setting the max_pipelines parameter to a value greater
than 1 will automatically also turn read_ahead on.
Finally, the read pipelining as currently implemented will only parallelise
the processing of application data records. This would only make a
difference for renegotiation so is unlikely to have a significant impact.
Reviewed-by: Tim Hudson <tjh at openssl.org>
commit 2f2c9caa727d7d2a5ce4bfb8266e019546ce77df
Author: Matt Caswell <matt at openssl.org>
Date: Fri Nov 27 12:02:25 2015 +0000
Add dummy pipeline support for aes128_cbc_hmac_sha1
Add dummy pipline support to dasync for the aes128_cbc_hmac_sha1 cipher.
This is treated as an AEAD cipher.
Reviewed-by: Tim Hudson <tjh at openssl.org>
commit 032c6d21fc53d5ec8b7ef78b0997627d1d240dad
Author: Matt Caswell <matt at openssl.org>
Date: Tue Sep 22 11:23:33 2015 +0100
Add pipeline support to s_server and s_client
Add the options min_send_frag and max_pipelines to s_server and s_client
in order to control pipelining capabilities. This will only have an effect
if a pipeline capable cipher is used (such as the one provided by the
dasync engine).
Reviewed-by: Tim Hudson <tjh at openssl.org>
commit d102d9df8625cb6f75c537b7f2a696bb5f305ff2
Author: Matt Caswell <matt at openssl.org>
Date: Tue Sep 22 11:12:50 2015 +0100
Implement write pipeline support in libssl
Use the new pipeline cipher capability to encrypt multiple records being
written out all in one go. Two new SSL/SSL_CTX parameters can be used to
control how this works: max_pipelines and split_send_fragment.
max_pipelines defines the maximum number of pipelines that can ever be used
in one go for a single connection. It must always be less than or equal to
SSL_MAX_PIPELINES (currently defined to be 32). By default only one
pipeline will be used (i.e. normal non-parallel operation).
split_send_fragment defines how data is split up into pipelines. The number
of pipelines used will be determined by the amount of data provided to the
SSL_write call divided by split_send_fragment. For example if
split_send_fragment is set to 2000 and max_pipelines is 4 then:
SSL_write called with 0-2000 bytes == 1 pipeline used
SSL_write called with 2001-4000 bytes == 2 pipelines used
SSL_write called with 4001-6000 bytes == 3 pipelines used
SSL_write_called with 6001+ bytes == 4 pipelines used
split_send_fragment must always be less than or equal to max_send_fragment.
By default it is set to be equal to max_send_fragment. This will mean that
the same number of records will always be created as would have been
created in the non-parallel case, although the data will be apportioned
differently. In the parallel case data will be spread equally between the
pipelines.
Reviewed-by: Tim Hudson <tjh at openssl.org>
commit 98ee75439d7e844de6c063a4be5bd09b3cc9db53
Author: Matt Caswell <matt at openssl.org>
Date: Tue Sep 22 11:11:24 2015 +0100
Update the dasync engine to add a pipeline cipher
Implement aes128-cbc as a pipeline capable cipher in the dasync engine.
As dasync is just a dummy engine, it actually just performs the parallel
encrypts/decrypts in serial.
Reviewed-by: Tim Hudson <tjh at openssl.org>
commit 4e3925227a65ade92f3052ee54a810f5d6c4e96e
Author: Matt Caswell <matt at openssl.org>
Date: Tue Sep 22 11:08:25 2015 +0100
Add defines for pipeline capable ciphers
Add a flag to indicate that a cipher is capable of performing
"pipelining", i.e. multiple encrypts/decrypts in parallel. Also add some
new ctrls that ciphers will need to implement if they are pipeline capable.
Reviewed-by: Tim Hudson <tjh at openssl.org>
-----------------------------------------------------------------------
Summary of changes:
apps/s_client.c | 49 +-
apps/s_server.c | 56 +-
crypto/engine/eng_cryptodev.c | 6 +-
crypto/engine/eng_openssl.c | 2 +-
crypto/evp/e_aes_cbc_hmac_sha1.c | 2 +-
crypto/evp/e_aes_cbc_hmac_sha256.c | 2 +-
crypto/evp/e_camellia.c | 3 +-
crypto/evp/e_des.c | 30 +-
crypto/evp/e_rc4.c | 2 +-
crypto/evp/e_rc4_hmac_md5.c | 2 +-
crypto/evp/evp_lib.c | 12 +-
crypto/include/internal/evp_int.h | 3 +-
doc/apps/s_client.pod | 26 +
doc/apps/s_server.pod | 26 +
doc/crypto/EVP_CIPHER_CTX_get_cipher_data.pod | 42 +
doc/crypto/EVP_CIPHER_meth_new.pod | 7 +-
doc/ssl/SSL_CTX_set_read_ahead.pod | 6 +-
doc/ssl/SSL_CTX_set_split_send_fragment.pod | 127 +
doc/ssl/SSL_pending.pod | 57 +-
engines/afalg/e_afalg.c | 6 +-
engines/e_dasync.c | 407 ++-
engines/e_dasync_err.c | 119 +-
engines/e_dasync_err.h | 27 +-
engines/e_padlock.c | 2 +-
include/openssl/evp.h | 12 +-
include/openssl/ssl.h | 19 +
ssl/record/rec_layer_d1.c | 57 +-
ssl/record/rec_layer_s3.c | 482 ++-
ssl/record/record.h | 29 +-
ssl/record/record_locl.h | 21 +-
ssl/record/ssl3_buffer.c | 60 +-
ssl/record/ssl3_record.c | 839 +++--
ssl/s3_enc.c | 2 -
ssl/s3_msg.c | 4 +-
ssl/ssl_err.c | 2 +
ssl/ssl_lib.c | 53 +-
ssl/ssl_locl.h | 28 +-
ssl/t1_enc.c | 2 -
util/libcrypto.num | 4 +-
util/libeay.num | 4735 +++++++++++++++++++++++++
util/libssl.num | 3 +
util/ssleay.num | 422 +++
42 files changed, 7049 insertions(+), 746 deletions(-)
create mode 100644 doc/crypto/EVP_CIPHER_CTX_get_cipher_data.pod
create mode 100644 doc/ssl/SSL_CTX_set_split_send_fragment.pod
create mode 100755 util/libeay.num
create mode 100755 util/ssleay.num
diff --git a/apps/s_client.c b/apps/s_client.c
index 247bdbf..a1ef64b 100644
--- a/apps/s_client.c
+++ b/apps/s_client.c
@@ -188,6 +188,8 @@ extern int verify_quiet;
static char *prog;
static int async = 0;
+static unsigned int split_send_fragment = 0;
+static unsigned int max_pipelines = 0;
static int c_nbio = 0;
static int c_tlsextdebug = 0;
static int c_status_req = 0;
@@ -654,7 +656,7 @@ typedef enum OPTION_choice {
OPT_CHAINCAFILE, OPT_VERIFYCAFILE, OPT_NEXTPROTONEG, OPT_ALPN,
OPT_SERVERINFO, OPT_STARTTLS, OPT_SERVERNAME,
OPT_USE_SRTP, OPT_KEYMATEXPORT, OPT_KEYMATEXPORTLEN, OPT_SMTPHOST,
- OPT_ASYNC,
+ OPT_ASYNC, OPT_SPLIT_SEND_FRAG, OPT_MAX_PIPELINES, OPT_READ_BUF,
OPT_V_ENUM,
OPT_X_ENUM,
OPT_S_ENUM,
@@ -760,6 +762,12 @@ OPTIONS s_client_options[] = {
"Enable ALPN extension, considering named protocols supported (comma-separated list)"},
{"async", OPT_ASYNC, '-', "Support asynchronous operation"},
{"ssl_config", OPT_SSL_CONFIG, 's', "Use specified configuration file"},
+ {"split_send_frag", OPT_SPLIT_SEND_FRAG, 'n',
+ "Size used to split data for encrypt pipelines"},
+ {"max_pipelines", OPT_MAX_PIPELINES, 'n',
+ "Maximum number of encrypt/decrypt pipelines to be used"},
+ {"read_buf", OPT_READ_BUF, 'n',
+ "Default read buffer size to be used for connections"},
OPT_S_OPTIONS,
OPT_V_OPTIONS,
OPT_X_OPTIONS,
@@ -890,6 +898,7 @@ int s_client_main(int argc, char **argv)
int socket_family = AF_UNSPEC, socket_type = SOCK_STREAM;
int starttls_proto = PROTO_OFF, crl_format = FORMAT_PEM, crl_download = 0;
int write_tty, read_tty, write_ssl, read_ssl, tty_on, ssl_pending;
+ int read_buf_len = 0;
int fallback_scsv = 0;
long socket_mtu = 0, randamt = 0;
OPTION_CHOICE o;
@@ -1377,6 +1386,22 @@ int s_client_main(int argc, char **argv)
case OPT_ASYNC:
async = 1;
break;
+ case OPT_SPLIT_SEND_FRAG:
+ split_send_fragment = atoi(opt_arg());
+ if (split_send_fragment == 0) {
+ /*
+ * Not allowed - set to a deliberately bad value so we get an
+ * error message below
+ */
+ split_send_fragment = SSL3_RT_MAX_PLAIN_LENGTH + 1;
+ }
+ break;
+ case OPT_MAX_PIPELINES:
+ max_pipelines = atoi(opt_arg());
+ break;
+ case OPT_READ_BUF:
+ read_buf_len = atoi(opt_arg());
+ break;
}
}
argc = opt_num_rest();
@@ -1424,6 +1449,16 @@ int s_client_main(int argc, char **argv)
goto end;
}
+ if (split_send_fragment > SSL3_RT_MAX_PLAIN_LENGTH) {
+ BIO_printf(bio_err, "Bad split send fragment size\n");
+ goto end;
+ }
+
+ if (max_pipelines > SSL_MAX_PIPELINES) {
+ BIO_printf(bio_err, "Bad max pipelines value\n");
+ goto end;
+ }
+
#if !defined(OPENSSL_NO_NEXTPROTONEG)
next_proto.status = -1;
if (next_proto_neg_in) {
@@ -1540,6 +1575,16 @@ int s_client_main(int argc, char **argv)
if (async) {
SSL_CTX_set_mode(ctx, SSL_MODE_ASYNC);
}
+ if (split_send_fragment > 0) {
+ SSL_CTX_set_split_send_fragment(ctx, split_send_fragment);
+ }
+ if (max_pipelines > 0) {
+ SSL_CTX_set_max_pipelines(ctx, max_pipelines);
+ }
+
+ if (read_buf_len > 0) {
+ SSL_CTX_set_default_read_buffer_len(ctx, read_buf_len);
+ }
if (!config_ctx(cctx, ssl_args, ctx))
goto end;
@@ -2141,7 +2186,7 @@ int s_client_main(int argc, char **argv)
}
}
- ssl_pending = read_ssl && SSL_pending(con);
+ ssl_pending = read_ssl && SSL_has_pending(con);
if (!ssl_pending) {
#if !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_NETWARE)
diff --git a/apps/s_server.c b/apps/s_server.c
index 99442cd..35a22f7 100644
--- a/apps/s_server.c
+++ b/apps/s_server.c
@@ -244,6 +244,8 @@ static char *keymatexportlabel = NULL;
static int keymatexportlen = 20;
static int async = 0;
+static unsigned int split_send_fragment = 0;
+static unsigned int max_pipelines = 0;
#ifndef OPENSSL_NO_ENGINE
static char *engine_id = NULL;
@@ -402,6 +404,8 @@ static void s_server_init(void)
s_quiet = 0;
s_brief = 0;
async = 0;
+ split_send_fragment = 0;
+ max_pipelines = 0;
#ifndef OPENSSL_NO_ENGINE
engine_id = NULL;
#endif
@@ -805,8 +809,8 @@ typedef enum OPTION_choice {
OPT_QUIET, OPT_BRIEF, OPT_NO_DHE,
OPT_NO_RESUME_EPHEMERAL, OPT_PSK_HINT, OPT_PSK, OPT_SRPVFILE,
OPT_SRPUSERSEED, OPT_REV, OPT_WWW, OPT_UPPER_WWW, OPT_HTTP, OPT_ASYNC,
- OPT_SSL_CONFIG, OPT_SSL3,
- OPT_TLS1_2, OPT_TLS1_1, OPT_TLS1, OPT_DTLS, OPT_DTLS1,
+ OPT_SSL_CONFIG, OPT_SPLIT_SEND_FRAG, OPT_MAX_PIPELINES, OPT_READ_BUF,
+ OPT_SSL3, OPT_TLS1_2, OPT_TLS1_1, OPT_TLS1, OPT_DTLS, OPT_DTLS1,
OPT_DTLS1_2, OPT_TIMEOUT, OPT_MTU, OPT_CHAIN, OPT_LISTEN,
OPT_ID_PREFIX, OPT_RAND, OPT_SERVERNAME, OPT_SERVERNAME_FATAL,
OPT_CERT2, OPT_KEY2, OPT_NEXTPROTONEG, OPT_ALPN,
@@ -938,6 +942,12 @@ OPTIONS s_server_options[] = {
{"async", OPT_ASYNC, '-', "Operate in asynchronous mode"},
{"ssl_config", OPT_SSL_CONFIG, 's', \
"Configure SSL_CTX using the configuration 'val'"},
+ {"split_send_frag", OPT_SPLIT_SEND_FRAG, 'n',
+ "Size used to split data for encrypt pipelines"},
+ {"max_pipelines", OPT_MAX_PIPELINES, 'n',
+ "Maximum number of encrypt/decrypt pipelines to be used"},
+ {"read_buf", OPT_READ_BUF, 'n',
+ "Default read buffer size to be used for connections"},
OPT_S_OPTIONS,
OPT_V_OPTIONS,
OPT_X_OPTIONS,
@@ -1041,6 +1051,7 @@ int s_server_main(int argc, char *argv[])
X509 *s_cert2 = NULL;
tlsextctx tlsextcbp = { NULL, NULL, SSL_TLSEXT_ERR_ALERT_WARNING };
const char *ssl_config = NULL;
+ int read_buf_len = 0;
#ifndef OPENSSL_NO_NEXTPROTONEG
const char *next_proto_neg_in = NULL;
tlsextnextprotoctx next_proto = { NULL, 0 };
@@ -1503,6 +1514,23 @@ int s_server_main(int argc, char *argv[])
case OPT_ASYNC:
async = 1;
break;
+ case OPT_SPLIT_SEND_FRAG:
+ split_send_fragment = atoi(opt_arg());
+ if (split_send_fragment == 0) {
+ /*
+ * Not allowed - set to a deliberately bad value so we get an
+ * error message below
+ */
+ split_send_fragment = SSL3_RT_MAX_PLAIN_LENGTH + 1;
+ }
+ break;
+ case OPT_MAX_PIPELINES:
+ max_pipelines = atoi(opt_arg());
+ break;
+ case OPT_READ_BUF:
+ read_buf_len = atoi(opt_arg());
+ break;
+
}
}
argc = opt_num_rest();
@@ -1528,6 +1556,16 @@ int s_server_main(int argc, char *argv[])
}
#endif
+ if (split_send_fragment > SSL3_RT_MAX_PLAIN_LENGTH) {
+ BIO_printf(bio_err, "Bad split send fragment size\n");
+ goto end;
+ }
+
+ if (max_pipelines > SSL_MAX_PIPELINES) {
+ BIO_printf(bio_err, "Bad max pipelines value\n");
+ goto end;
+ }
+
if (!app_passwd(passarg, dpassarg, &pass, &dpass)) {
BIO_printf(bio_err, "Error getting password\n");
goto end;
@@ -1718,6 +1756,16 @@ int s_server_main(int argc, char *argv[])
if (async) {
SSL_CTX_set_mode(ctx, SSL_MODE_ASYNC);
}
+ if (split_send_fragment > 0) {
+ SSL_CTX_set_split_send_fragment(ctx, split_send_fragment);
+ }
+ if (max_pipelines > 0) {
+ SSL_CTX_set_max_pipelines(ctx, max_pipelines);
+ }
+
+ if (read_buf_len > 0) {
+ SSL_CTX_set_default_read_buffer_len(ctx, read_buf_len);
+ }
#ifndef OPENSSL_NO_SRTP
if (srtp_profiles != NULL) {
@@ -2168,7 +2216,7 @@ static int sv_body(int s, int stype, unsigned char *context)
int read_from_sslcon;
read_from_terminal = 0;
- read_from_sslcon = SSL_pending(con)
+ read_from_sslcon = SSL_has_pending(con)
|| (async && SSL_waiting_for_async(con));
if (!read_from_sslcon) {
@@ -2406,7 +2454,7 @@ static int sv_body(int s, int stype, unsigned char *context)
ascii2ebcdic(buf, buf, i);
#endif
raw_write_stdout(buf, (unsigned int)i);
- if (SSL_pending(con))
+ if (SSL_has_pending(con))
goto again;
break;
case SSL_ERROR_WANT_ASYNC:
diff --git a/crypto/engine/eng_cryptodev.c b/crypto/engine/eng_cryptodev.c
index eb25790..d8ba729 100644
--- a/crypto/engine/eng_cryptodev.c
+++ b/crypto/engine/eng_cryptodev.c
@@ -414,7 +414,7 @@ cryptodev_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
const unsigned char *in, size_t inl)
{
struct crypt_op cryp;
- struct dev_crypto_state *state = EVP_CIPHER_CTX_cipher_data(ctx);
+ struct dev_crypto_state *state = EVP_CIPHER_CTX_get_cipher_data(ctx);
struct session_op *sess = &state->d_sess;
const void *iiv;
unsigned char save_iv[EVP_MAX_IV_LENGTH];
@@ -469,7 +469,7 @@ static int
cryptodev_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
const unsigned char *iv, int enc)
{
- struct dev_crypto_state *state = EVP_CIPHER_CTX_cipher_data(ctx);
+ struct dev_crypto_state *state = EVP_CIPHER_CTX_get_cipher_data(ctx);
struct session_op *sess = &state->d_sess;
int cipher = -1, i;
@@ -510,7 +510,7 @@ cryptodev_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
static int cryptodev_cleanup(EVP_CIPHER_CTX *ctx)
{
int ret = 0;
- struct dev_crypto_state *state = EVP_CIPHER_CTX_cipher_data(ctx);
+ struct dev_crypto_state *state = EVP_CIPHER_CTX_get_cipher_data(ctx);
struct session_op *sess = &state->d_sess;
if (state->d_fd < 0)
diff --git a/crypto/engine/eng_openssl.c b/crypto/engine/eng_openssl.c
index 7e1a58c..914bba5 100644
--- a/crypto/engine/eng_openssl.c
+++ b/crypto/engine/eng_openssl.c
@@ -245,7 +245,7 @@ typedef struct {
unsigned char key[TEST_RC4_KEY_SIZE];
RC4_KEY ks;
} TEST_RC4_KEY;
-# define test(ctx) ((TEST_RC4_KEY *)EVP_CIPHER_CTX_cipher_data(ctx))
+# define test(ctx) ((TEST_RC4_KEY *)EVP_CIPHER_CTX_get_cipher_data(ctx))
static int test_rc4_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
const unsigned char *iv, int enc)
{
diff --git a/crypto/evp/e_aes_cbc_hmac_sha1.c b/crypto/evp/e_aes_cbc_hmac_sha1.c
index 6dca267..6f95f4b 100644
--- a/crypto/evp/e_aes_cbc_hmac_sha1.c
+++ b/crypto/evp/e_aes_cbc_hmac_sha1.c
@@ -116,7 +116,7 @@ void aesni256_cbc_sha1_dec(const void *inp, void *out, size_t blocks,
const AES_KEY *key, unsigned char iv[16],
SHA_CTX *ctx, const void *in0);
-# define data(ctx) ((EVP_AES_HMAC_SHA1 *)EVP_CIPHER_CTX_cipher_data(ctx))
+# define data(ctx) ((EVP_AES_HMAC_SHA1 *)EVP_CIPHER_CTX_get_cipher_data(ctx))
static int aesni_cbc_hmac_sha1_init_key(EVP_CIPHER_CTX *ctx,
const unsigned char *inkey,
diff --git a/crypto/evp/e_aes_cbc_hmac_sha256.c b/crypto/evp/e_aes_cbc_hmac_sha256.c
index f55a5a0..66f536c 100644
--- a/crypto/evp/e_aes_cbc_hmac_sha256.c
+++ b/crypto/evp/e_aes_cbc_hmac_sha256.c
@@ -112,7 +112,7 @@ int aesni_cbc_sha256_enc(const void *inp, void *out, size_t blocks,
const AES_KEY *key, unsigned char iv[16],
SHA256_CTX *ctx, const void *in0);
-# define data(ctx) ((EVP_AES_HMAC_SHA256 *)EVP_CIPHER_CTX_cipher_data(ctx))
+# define data(ctx) ((EVP_AES_HMAC_SHA256 *)EVP_CIPHER_CTX_get_cipher_data(ctx))
static int aesni_cbc_hmac_sha256_init_key(EVP_CIPHER_CTX *ctx,
const unsigned char *inkey,
diff --git a/crypto/evp/e_camellia.c b/crypto/evp/e_camellia.c
index 8ebd226..0d9f7f1 100644
--- a/crypto/evp/e_camellia.c
+++ b/crypto/evp/e_camellia.c
@@ -121,7 +121,8 @@ static int cmll_t4_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
const unsigned char *iv, int enc)
{
int ret, mode, bits;
- EVP_CAMELLIA_KEY *dat = (EVP_CAMELLIA_KEY *) EVP_CIPHER_CTX_cipher_data(ctx);
+ EVP_CAMELLIA_KEY *dat =
+ (EVP_CAMELLIA_KEY *)EVP_CIPHER_CTX_get_cipher_data(ctx);
mode = EVP_CIPHER_CTX_mode(ctx);
bits = EVP_CIPHER_CTX_key_length(ctx) * 8;
diff --git a/crypto/evp/e_des.c b/crypto/evp/e_des.c
index 1afd917..ebdaadf 100644
--- a/crypto/evp/e_des.c
+++ b/crypto/evp/e_des.c
@@ -105,7 +105,7 @@ static int des_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
{
BLOCK_CIPHER_ecb_loop()
DES_ecb_encrypt((DES_cblock *)(in + i), (DES_cblock *)(out + i),
- EVP_CIPHER_CTX_cipher_data(ctx),
+ EVP_CIPHER_CTX_get_cipher_data(ctx),
EVP_CIPHER_CTX_encrypting(ctx));
return 1;
}
@@ -116,7 +116,7 @@ static int des_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
while (inl >= EVP_MAXCHUNK) {
int num = EVP_CIPHER_CTX_num(ctx);
DES_ofb64_encrypt(in, out, (long)EVP_MAXCHUNK,
- EVP_CIPHER_CTX_cipher_data(ctx),
+ EVP_CIPHER_CTX_get_cipher_data(ctx),
(DES_cblock *)EVP_CIPHER_CTX_iv_noconst(ctx), &num);
EVP_CIPHER_CTX_set_num(ctx, num);
inl -= EVP_MAXCHUNK;
@@ -125,7 +125,8 @@ static int des_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
}
if (inl) {
int num = EVP_CIPHER_CTX_num(ctx);
- DES_ofb64_encrypt(in, out, (long)inl, EVP_CIPHER_CTX_cipher_data(ctx),
+ DES_ofb64_encrypt(in, out, (long)inl,
+ EVP_CIPHER_CTX_get_cipher_data(ctx),
(DES_cblock *)EVP_CIPHER_CTX_iv_noconst(ctx), &num);
EVP_CIPHER_CTX_set_num(ctx, num);
}
@@ -135,7 +136,7 @@ static int des_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
static int des_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
const unsigned char *in, size_t inl)
{
- EVP_DES_KEY *dat = (EVP_DES_KEY *) EVP_CIPHER_CTX_cipher_data(ctx);
+ EVP_DES_KEY *dat = (EVP_DES_KEY *) EVP_CIPHER_CTX_get_cipher_data(ctx);
if (dat->stream.cbc != NULL) {
(*dat->stream.cbc) (in, out, inl, &dat->ks.ks,
@@ -144,7 +145,7 @@ static int des_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
}
while (inl >= EVP_MAXCHUNK) {
DES_ncbc_encrypt(in, out, (long)EVP_MAXCHUNK,
- EVP_CIPHER_CTX_cipher_data(ctx),
+ EVP_CIPHER_CTX_get_cipher_data(ctx),
(DES_cblock *)EVP_CIPHER_CTX_iv_noconst(ctx),
EVP_CIPHER_CTX_encrypting(ctx));
inl -= EVP_MAXCHUNK;
@@ -152,7 +153,8 @@ static int des_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
out += EVP_MAXCHUNK;
}
if (inl)
- DES_ncbc_encrypt(in, out, (long)inl, EVP_CIPHER_CTX_cipher_data(ctx),
+ DES_ncbc_encrypt(in, out, (long)inl,
+ EVP_CIPHER_CTX_get_cipher_data(ctx),
(DES_cblock *)EVP_CIPHER_CTX_iv_noconst(ctx),
EVP_CIPHER_CTX_encrypting(ctx));
return 1;
@@ -164,7 +166,7 @@ static int des_cfb64_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
while (inl >= EVP_MAXCHUNK) {
int num = EVP_CIPHER_CTX_num(ctx);
DES_cfb64_encrypt(in, out, (long)EVP_MAXCHUNK,
- EVP_CIPHER_CTX_cipher_data(ctx),
+ EVP_CIPHER_CTX_get_cipher_data(ctx),
(DES_cblock *)EVP_CIPHER_CTX_iv_noconst(ctx), &num,
EVP_CIPHER_CTX_encrypting(ctx));
EVP_CIPHER_CTX_set_num(ctx, num);
@@ -174,7 +176,8 @@ static int des_cfb64_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
}
if (inl) {
int num = EVP_CIPHER_CTX_num(ctx);
- DES_cfb64_encrypt(in, out, (long)inl, EVP_CIPHER_CTX_cipher_data(ctx),
+ DES_cfb64_encrypt(in, out, (long)inl,
+ EVP_CIPHER_CTX_get_cipher_data(ctx),
(DES_cblock *)EVP_CIPHER_CTX_iv_noconst(ctx), &num,
EVP_CIPHER_CTX_encrypting(ctx));
EVP_CIPHER_CTX_set_num(ctx, num);
@@ -198,7 +201,7 @@ static int des_cfb1_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
while (inl && inl >= chunk) {
for (n = 0; n < chunk * 8; ++n) {
c[0] = (in[n / 8] & (1 << (7 - n % 8))) ? 0x80 : 0;
- DES_cfb_encrypt(c, d, 1, 1, EVP_CIPHER_CTX_cipher_data(ctx),
+ DES_cfb_encrypt(c, d, 1, 1, EVP_CIPHER_CTX_get_cipher_data(ctx),
(DES_cblock *)EVP_CIPHER_CTX_iv_noconst(ctx),
EVP_CIPHER_CTX_encrypting(ctx));
out[n / 8] =
@@ -220,7 +223,7 @@ static int des_cfb8_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
{
while (inl >= EVP_MAXCHUNK) {
DES_cfb_encrypt(in, out, 8, (long)EVP_MAXCHUNK,
- EVP_CIPHER_CTX_cipher_data(ctx),
+ EVP_CIPHER_CTX_get_cipher_data(ctx),
(DES_cblock *)EVP_CIPHER_CTX_iv_noconst(ctx),
EVP_CIPHER_CTX_encrypting(ctx));
inl -= EVP_MAXCHUNK;
@@ -228,7 +231,8 @@ static int des_cfb8_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
out += EVP_MAXCHUNK;
}
if (inl)
- DES_cfb_encrypt(in, out, 8, (long)inl, EVP_CIPHER_CTX_cipher_data(ctx),
+ DES_cfb_encrypt(in, out, 8, (long)inl,
+ EVP_CIPHER_CTX_get_cipher_data(ctx),
(DES_cblock *)EVP_CIPHER_CTX_iv_noconst(ctx),
EVP_CIPHER_CTX_encrypting(ctx));
return 1;
@@ -250,7 +254,7 @@ static int des_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
const unsigned char *iv, int enc)
{
DES_cblock *deskey = (DES_cblock *)key;
- EVP_DES_KEY *dat = (EVP_DES_KEY *) EVP_CIPHER_CTX_cipher_data(ctx);
+ EVP_DES_KEY *dat = (EVP_DES_KEY *) EVP_CIPHER_CTX_get_cipher_data(ctx);
dat->stream.cbc = NULL;
# if defined(SPARC_DES_CAPABLE)
@@ -264,7 +268,7 @@ static int des_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
}
}
# endif
- DES_set_key_unchecked(deskey, EVP_CIPHER_CTX_cipher_data(ctx));
+ DES_set_key_unchecked(deskey, EVP_CIPHER_CTX_get_cipher_data(ctx));
return 1;
}
diff --git a/crypto/evp/e_rc4.c b/crypto/evp/e_rc4.c
index ab3cc90..be6b6a0 100644
--- a/crypto/evp/e_rc4.c
+++ b/crypto/evp/e_rc4.c
@@ -73,7 +73,7 @@ typedef struct {
RC4_KEY ks; /* working key */
} EVP_RC4_KEY;
-# define data(ctx) ((EVP_RC4_KEY *)EVP_CIPHER_CTX_cipher_data(ctx))
+# define data(ctx) ((EVP_RC4_KEY *)EVP_CIPHER_CTX_get_cipher_data(ctx))
static int rc4_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
const unsigned char *iv, int enc);
diff --git a/crypto/evp/e_rc4_hmac_md5.c b/crypto/evp/e_rc4_hmac_md5.c
index 05596e4..ded3090 100644
--- a/crypto/evp/e_rc4_hmac_md5.c
+++ b/crypto/evp/e_rc4_hmac_md5.c
@@ -81,7 +81,7 @@ typedef struct {
void rc4_md5_enc(RC4_KEY *key, const void *in0, void *out,
MD5_CTX *ctx, const void *inp, size_t blocks);
-# define data(ctx) ((EVP_RC4_HMAC_MD5 *)EVP_CIPHER_CTX_cipher_data(ctx))
+# define data(ctx) ((EVP_RC4_HMAC_MD5 *)EVP_CIPHER_CTX_get_cipher_data(ctx))
static int rc4_hmac_md5_init_key(EVP_CIPHER_CTX *ctx,
const unsigned char *inkey,
diff --git a/crypto/evp/evp_lib.c b/crypto/evp/evp_lib.c
index a163628..bc24d5a 100644
--- a/crypto/evp/evp_lib.c
+++ b/crypto/evp/evp_lib.c
@@ -256,11 +256,21 @@ void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data)
ctx->app_data = data;
}
-void *EVP_CIPHER_CTX_cipher_data(const EVP_CIPHER_CTX *ctx)
+void *EVP_CIPHER_CTX_get_cipher_data(const EVP_CIPHER_CTX *ctx)
{
return ctx->cipher_data;
}
+void *EVP_CIPHER_CTX_set_cipher_data(EVP_CIPHER_CTX *ctx, void *cipher_data)
+{
+ void *old_cipher_data;
+
+ old_cipher_data = ctx->cipher_data;
+ ctx->cipher_data = cipher_data;
+
+ return old_cipher_data;
+}
+
int EVP_CIPHER_iv_length(const EVP_CIPHER *cipher)
{
return cipher->iv_len;
diff --git a/crypto/include/internal/evp_int.h b/crypto/include/internal/evp_int.h
index 0b1c6b2..cccc1e1 100644
--- a/crypto/include/internal/evp_int.h
+++ b/crypto/include/internal/evp_int.h
@@ -181,7 +181,8 @@ struct evp_cipher_st {
/* Wrapper functions for each cipher mode */
-#define EVP_C_DATA(kstruct, ctx) ((kstruct *)EVP_CIPHER_CTX_cipher_data(ctx))
+#define EVP_C_DATA(kstruct, ctx) \
+ ((kstruct *)EVP_CIPHER_CTX_get_cipher_data(ctx))
#define BLOCK_CIPHER_ecb_loop() \
size_t i, bl; \
diff --git a/doc/apps/s_client.pod b/doc/apps/s_client.pod
index 607ece5..7e03a24 100644
--- a/doc/apps/s_client.pod
+++ b/doc/apps/s_client.pod
@@ -75,6 +75,9 @@ B<openssl> B<s_client>
[B<-dtls1_2>]
[B<-fallback_scsv>]
[B<-async>]
+[B<-split_send_frag>]
+[B<-max_pipelines>]
+[B<-read_buf>]
[B<-bugs>]
[B<-comp>]
[B<-no_comp>]
@@ -338,6 +341,29 @@ asynchronously. This will only have an effect if an asynchronous capable engine
is also used via the B<-engine> option. For test purposes the dummy async engine
(dasync) can be used (if available).
+=item B<-split_send_frag int>
+
+The size used to split data for encrypt pipelines. If more data is written in
+one go than this value then it will be split into multiple pipelines, up to the
+maximum number of pipelines defined by max_pipelines. This only has an effect if
+a suitable ciphersuite has been negotiated, an engine that supports pipelining
+has been loaded, and max_pipelines is greater than 1. See
+L<SSL_CTX_set_split_send_fragment(3)> for further information.
+
+=item B<-max_pipelines int>
+
+The maximum number of encrypt/decrypt pipelines to be used. This will only have
+an effect if an engine has been loaded that supports pipelining (e.g. the dasync
+engine) and a suiteable ciphersuite has been negotiated. The default value is 1.
+See L<SSL_CTX_set_max_pipelines(3)> for further information.
+
+=item B<-read_buf int>
+
+The default read buffer size to be used for connections. This will only have an
+effect if the buffer size is larger than the size that would otherwise be used
+and pipelining is in use (see L<SSL_CTX_set_default_read_buffer_len(3)> for
+further information).
+
=item B<-bugs>
there are several known bug in SSL and TLS implementations. Adding this
diff --git a/doc/apps/s_server.pod b/doc/apps/s_server.pod
index 1453491..d63a206 100644
--- a/doc/apps/s_server.pod
+++ b/doc/apps/s_server.pod
@@ -73,6 +73,9 @@ B<openssl> B<s_server>
[B<-dtls1_2>]
[B<-listen>]
[B<-async>]
+[B<-split_send_frag>]
+[B<-max_pipelines>]
+[B<-read_buf>]
[B<-no_ssl3>]
[B<-no_tls1>]
[B<-no_tls1_1>]
@@ -322,6 +325,29 @@ asynchronously. This will only have an effect if an asynchronous capable engine
is also used via the B<-engine> option. For test purposes the dummy async engine
(dasync) can be used (if available).
+=item B<-split_send_frag int>
+
+The size used to split data for encrypt pipelines. If more data is written in
+one go than this value then it will be split into multiple pipelines, up to the
+maximum number of pipelines defined by max_pipelines. This only has an effect if
+a suitable ciphersuite has been negotiated, an engine that supports pipelining
+has been loaded, and max_pipelines is greater than 1. See
+L<SSL_CTX_set_split_send_fragment(3)> for further information.
+
+=item B<-max_pipelines int>
+
+The maximum number of encrypt/decrypt pipelines to be used. This will only have
+an effect if an engine has been loaded that supports pipelining (e.g. the dasync
+engine) and a suiteable ciphersuite has been negotiated. The default value is 1.
+See L<SSL_CTX_set_max_pipelines(3)> for further information.
+
+=item B<-read_buf int>
+
+The default read buffer size to be used for connections. This will only have an
+effect if the buffer size is larger than the size that would otherwise be used
+and pipelining is in use (see L<SSL_CTX_set_default_read_buffer_len(3)> for
+further information).
+
=item B<-bugs>
There are several known bug in SSL and TLS implementations. Adding this
diff --git a/doc/crypto/EVP_CIPHER_CTX_get_cipher_data.pod b/doc/crypto/EVP_CIPHER_CTX_get_cipher_data.pod
new file mode 100644
index 0000000..fc1d914
--- /dev/null
+++ b/doc/crypto/EVP_CIPHER_CTX_get_cipher_data.pod
@@ -0,0 +1,42 @@
+=pod
+
+=head1 NAME
+
+EVP_CIPHER_CTX_get_cipher_data, EVP_CIPHER_CTX_set_cipher_data - Routines to
+inspect and modify EVP_CIPHER_CTX objects
+
+=head1 SYNOPSIS
+
+ #include <openssl/evp.h>
+
+ void *EVP_CIPHER_CTX_get_cipher_data(const EVP_CIPHER_CTX *ctx);
+ void *EVP_CIPHER_CTX_set_cipher_data(EVP_CIPHER_CTX *ctx, void *cipher_data);
+
+=head1 DESCRIPTION
+
+The EVP_CIPHER_CTX_get_cipher_data() function returns a pointer to the cipher
+data relevant to EVP_CIPHER_CTX. The contents of this data is specific to the
+particular implementation of the cipher. For example this data can be used by
+engines to store engine specific information. The data is automatically
+allocated and freed by OpenSSL, so applications and engines should not normally
+free this directly (but see below).
+
+The EVP_CIPHER_CTX_set_cipher_data() function allows an application or engine to
+replace the cipher data with new data. A pointer to any existing cipher data is
+returned from this function. If the old data is no longer required then it
+should be freed through a call to OPENSSL_free().
+
+=head1 RETURN VALUES
+
+The EVP_CIPHER_CTX_get_cipher_data() function returns a pointer to the current
+cipher data for the EVP_CIPHER_CTX.
+
+The EVP_CIPHER_CTX_set_cipher_data() function returns a pointer to the old
+cipher data for the EVP_CIPHER_CTX.
+
+=head1 HISTORY
+
+The EVP_CIPHER_CTX_get_cipher_data() and EVP_CIPHER_CTX_set_cipher_data()
+functions were added in OpenSSL 1.1.0.
+
+=cut
diff --git a/doc/crypto/EVP_CIPHER_meth_new.pod b/doc/crypto/EVP_CIPHER_meth_new.pod
index 75b2d61..b0076d5 100644
--- a/doc/crypto/EVP_CIPHER_meth_new.pod
+++ b/doc/crypto/EVP_CIPHER_meth_new.pod
@@ -162,7 +162,7 @@ implementation specific data block has been copied.
The destination B<EVP_CIPHER_CTX> is passed to the control with the
B<ptr> parameter.
The implementation specific data block is reached with
-EVP_CIPHER_CTX_cipher_data().
+EVP_CIPHER_CTX_get_cipher_data().
=item EVP_CIPH_FLAG_DEFAULT_ASN1
@@ -207,6 +207,9 @@ I could use some help explaining this one!
=back
+EVP_CIPHER_meth_set_impl_ctx_size() sets the size of the EVP_CIPHER's
+implementation context so that it can be automatically allocated.
+
EVP_CIPHER_meth_set_init() sets the cipher init function for
B<cipher>.
The cipher init function is called by EVP_CipherInit(),
@@ -225,7 +228,7 @@ extra cleanup before the method's privata data structure is cleaned
out and freed.
Note that the cleanup function is passed a B<EVP_CIPHER_CTX *>, the
private data structure is then available with
-EVP_CIPHER_CTX_cipher_data().
+EVP_CIPHER_CTX_get_cipher_data().
This cleanup function is called by EVP_CIPHER_CTX_reset() and
EVP_CIPHER_CTX_free().
diff --git a/doc/ssl/SSL_CTX_set_read_ahead.pod b/doc/ssl/SSL_CTX_set_read_ahead.pod
index a904a85..f7d8c43 100644
--- a/doc/ssl/SSL_CTX_set_read_ahead.pod
+++ b/doc/ssl/SSL_CTX_set_read_ahead.pod
@@ -37,7 +37,9 @@ ahead has been set or not.
=head1 NOTES
These functions have no impact when used with DTLS. The return values for
-SSL_CTX_get_read_head() and SSL_get_read_ahead() are undefined for DTLS.
+SSL_CTX_get_read_head() and SSL_get_read_ahead() are undefined for DTLS. Setting
+B<read_ahead> can impact the behaviour of the SSL_pending() function
+(see L<SSL_pending()>).
=head1 RETURN VALUES
@@ -46,6 +48,6 @@ and non zero otherwise.
=head1 SEE ALSO
-L<ssl(3)>
+L<ssl(3)>, L<SSL_pending(3)>
=cut
diff --git a/doc/ssl/SSL_CTX_set_split_send_fragment.pod b/doc/ssl/SSL_CTX_set_split_send_fragment.pod
new file mode 100644
index 0000000..9e7ab63
--- /dev/null
+++ b/doc/ssl/SSL_CTX_set_split_send_fragment.pod
@@ -0,0 +1,127 @@
+=pod
+
+=head1 NAME
+
+SSL_CTX_set_max_send_fragment, SSL_set_max_send_fragment,
+SSL_CTX_set_split_send_fragment, SSL_set_split_send_fragment,
+SSL_CTX_set_max_pipelines, SSL_set_max_pipelines,
+SSL_CTX_set_default_read_buffer_len, SSL_set_default_read_buffer_len - Control
+fragment sizes and pipelining operations
+
+=head1 SYNOPSIS
+
+ #include <openssl/ssl.h>
+
+ # define SSL_CTX_set_max_send_fragment(ctx,m) \
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL)
+ # define SSL_set_max_send_fragment(ssl,m) \
+ SSL_ctrl(ssl,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL)
+ # define SSL_CTX_set_max_pipelines(ctx,m) \
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_PIPELINES,m,NULL)
+ # define SSL_set_max_pipelines(ssl,m) \
+ SSL_ctrl(ssl,SSL_CTRL_SET_MAX_PIPELINES,m,NULL)
+ # define SSL_CTX_set_split_send_fragment(ctx,m) \
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SPLIT_SEND_FRAGMENT,m,NULL)
+ # define SSL_set_split_send_fragment(ssl,m) \
+ SSL_ctrl(ssl,SSL_CTRL_SET_SPLIT_SEND_FRAGMENT,m,NULL)
+
+ void SSL_CTX_set_default_read_buffer_len(SSL_CTX *ctx, size_t len);
+ void SSL_set_default_read_buffer_len(SSL *s, size_t len);
+
+=head1 DESCRIPTION
+
+Some engines are able to process multiple simultaneous crypto operations. This
+capability could be utilised to parallelise the processing of a single
+connection. For example a single write can be split into multiple records and
+each one encrypted independently and in parallel. Note: this will only work in
+TLS1.1+. There is no support in SSLv3, TLSv1.0 or DTLS (any version). This
+capability is known as "pipelining" within OpenSSL.
+
+In order to benefit from the pipelining capability. You need to have an engine
+that provides ciphers that support this. The OpenSSL "dasync" engine provides
+AES128-SHA based ciphers that have this capability. However these are for
+development and test purposes only.
+
+SSL_CTX_set_max_send_fragment() and SSL_set_max_send_fragment() set the
+B<max_send_fragment> parameter for SSL_CTX and SSL objects respectively. This
+value restricts the amount of plaintext bytes that will be sent in any one
+SSL/TLS record. By default its value is SSL3_RT_MAX_PLAIN_LENGTH (16384). These
+functions will only accept a value in the range 512 - SSL3_RT_MAX_PLAIN_LENGTH.
+
+SSL_CTX_set_max_pipelines() and SSL_set_max_pipelines() set the maximum number
+of pipelines that will be used at any one time. This value applies to both
+"read" pipelining and "write" pipelining. By default only one pipeline will be
+used (i.e. normal non-parallel operation). The number of pipelines set must be
+in the range 1 - SSL_MAX_PIPELINES (32). Setting this to a value > 1 will also
+automatically turn on "read_ahead" (see L<SSL_CTX_set_read_ahead(3)>). This is
+explained further below. OpenSSL will only every use more than one pipeline if
+a ciphersuite is negotiated that uses a pipeline capable cipher provided by an
+engine.
+
+Pipelining operates slighly differently for reading encrypted data compared to
+writing encrypted data. SSL_CTX_set_split_send_fragment() and
+SSL_set_split_send_fragment() define how data is split up into pipelines when
+writing encrypted data. The number of pipelines used will be determined by the
+amount of data provided to the SSL_write() call divided by
+B<split_send_fragment>.
+
+For example if B<split_send_fragment> is set to 2000 and B<max_pipelines> is 4
+then:
+
+SSL_write called with 0-2000 bytes == 1 pipeline used
+
+SSL_write called with 2001-4000 bytes == 2 pipelines used
+
+SSL_write called with 4001-6000 bytes == 3 pipelines used
+
+SSL_write called with 6001+ bytes == 4 pipelines used
+
+B<split_send_fragment> must always be less than or equal to
+B<max_send_fragment>. By default it is set to be equal to B<max_send_fragment>.
+This will mean that the same number of records will always be created as would
+have been created in the non-parallel case, although the data will be
+apportioned differently. In the parallel case data will be spread equally
+between the pipelines.
+
+Read pipelining is controlled in a slightly different way than with write
+pipelining. While reading we are constrained by the number of records that the
+peer (and the network) can provide to us in one go. The more records we can get
+in one go the more opportunity we have to parallelise the processing. As noted
+above when setting B<max_pipelines> to a value greater than one, B<read_ahead>
+is automatically set. The B<read_ahead> parameter causes OpenSSL to attempt to
+read as much data into the read buffer as the network can provide and will fit
+into the buffer. Without this set data is read into the read buffer one record
+at a time. The more data that can be read, the more opportunity there is for
+parallelising the processing at the cost of increased memory overhead per
+connection. Setting B<read_ahead> can impact the behaviour of the SSL_pending()
+function (see L<SSL_pending(3)>).
+
+The SSL_CTX_set_default_read_buffer_len() and SSL_set_default_read_buffer_len()
+functions control the size of the read buffer that will be used. The B<len>
+parameter sets the size of the buffer. The value will only be used if it is
+greater than the default that would have been used anyway. The normal default
+value depends on a number of factors but it will be at least
+SSL3_RT_MAX_PLAIN_LENGTH + SSL3_RT_MAX_ENCRYPTED_OVERHEAD (16704) bytes.
+
+=head1 RETURN VALUES
+
+All non-void functions return 1 on success and 0 on failure.
+
+=head1 NOTES
+
+With the exception of SSL_CTX_set_default_read_buffer_len() and
+SSL_set_default_read_buffer_len() all these functions are implemented using
+macros.
+
+=head1 HISTORY
+
+The SSL_CTX_set_max_pipelines(), SSL_set_max_pipelines(),
+SSL_CTX_set_split_send_fragment(), SSL_set_split_send_fragment(),
+SSL_CTX_set_default_read_buffer_len() and SSL_set_default_read_buffer_len()
+functions were added in OpenSSL 1.1.0.
+
+=head1 SEE ALSO
+
+L<SSL_CTX_set_read_ahead(3)>, L<SSL_pending(3)>
+
+=cut
diff --git a/doc/ssl/SSL_pending.pod b/doc/ssl/SSL_pending.pod
index c6a79dc..d247fa3 100644
--- a/doc/ssl/SSL_pending.pod
+++ b/doc/ssl/SSL_pending.pod
@@ -2,41 +2,58 @@
=head1 NAME
-SSL_pending - obtain number of readable bytes buffered in an SSL object
+SSL_pending, SSL_has_pending - check for readable bytes buffered in an
+SSL object
=head1 SYNOPSIS
#include <openssl/ssl.h>
int SSL_pending(const SSL *ssl);
+ int SSL_has_pending(const SSL *s);
=head1 DESCRIPTION
-SSL_pending() returns the number of bytes which are available inside
-B<ssl> for immediate read.
-
-=head1 NOTES
-
-Data are received in blocks from the peer. Therefore data can be buffered
-inside B<ssl> and are ready for immediate retrieval with
-L<SSL_read(3)>.
+Data is received in whole blocks known as records from the peer. A whole record
+is processed (e.g. decrypted) in one go and is buffered by OpenSSL until it is
+read by the application via a call to L<SSL_read(3)>.
+
+SSL_pending() returns the number of bytes which have been processed, buffered
+and are available inside B<ssl> for immediate read.
+
+If the B<SSL> object's I<read_ahead> flag is set (see
+L<SSL_CTX_set_read_ahead(3)>), additional protocol bytes (beyond the current
+record) may have been read containing more TLS/SSL records. This also applies to
+DTLS and pipelining (see L<SSL_CTX_set_split_send_fragment(3)>). These
+additional bytes will be buffered by OpenSSL but will remain unprocessed until
+they are needed. As these bytes are still in an unprocessed state SSL_pending()
+will ignore them. Therefore it is possible for no more bytes to be readable from
+the underlying BIO (because OpenSSL has already read them) and for SSL_pending()
+to return 0, even though readable application data bytes are available (because
+the data is in unprocessed buffered records).
+
+SSL_has_pending() returns 1 if B<s> has buffered data (whether processed or
+unprocessed) and 0 otherwise. Note that it is possible for SSL_has_pending() to
+return 1, and then a subsequent call to SSL_read() to return no data because the
+unprocessed buffered data when processed yielded no application data (for
+example this can happen during renegotiation). It is also possible in this
+scenario for SSL_has_pending() to continue to return 1 even after an SSL_read()
+call because the buffered and unprocessed data is not yet processable (e.g.
+because OpenSSL has only received a partial record so far).
=head1 RETURN VALUES
-The number of bytes pending is returned.
+SSL_pending() returns the number of buffered and processed application data
+bytes that are pending and are available for immediate read. SSL_has_pending()
+returns 1 if there is buffered record data in the SSL object and 0 otherwise.
-=head1 BUGS
+=head1 SEE ALSO
-SSL_pending() takes into account only bytes from the TLS/SSL record
-that is currently being processed (if any). If the B<SSL> object's
-I<read_ahead> flag is set (see
-L<SSL_CTX_set_read_ahead(3)>), additional protocol
-bytes may have been read containing more TLS/SSL records; these are ignored by
-SSL_pending().
+L<SSL_read(3)>, L<SSL_CTX_set_read_ahead(3)>,
+L<SSL_CTX_set_split_send_fragment(3)>, L<ssl(3)>
-=head1 SEE ALSO
+=head1 HISTORY
-L<SSL_read(3)>,
-L<SSL_CTX_set_read_ahead(3)>, L<ssl(3)>
+The SSL_has_pending() function was added in OpenSSL 1.1.0.
=cut
diff --git a/engines/afalg/e_afalg.c b/engines/afalg/e_afalg.c
index d4b4f6b..51ae68d 100644
--- a/engines/afalg/e_afalg.c
+++ b/engines/afalg/e_afalg.c
@@ -539,7 +539,7 @@ static int afalg_cipher_init(EVP_CIPHER_CTX *ctx, const unsigned char *key,
return 0;
}
- actx = EVP_CIPHER_CTX_cipher_data(ctx);
+ actx = EVP_CIPHER_CTX_get_cipher_data(ctx);
if (actx == NULL) {
ALG_WARN("%s: Cipher data NULL\n", __func__);
return 0;
@@ -602,7 +602,7 @@ static int afalg_do_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
return 0;
}
- actx = (afalg_ctx *) EVP_CIPHER_CTX_cipher_data(ctx);
+ actx = (afalg_ctx *) EVP_CIPHER_CTX_get_cipher_data(ctx);
if (actx == NULL || actx->init_done != MAGIC_INIT_NUM) {
ALG_WARN("%s afalg ctx passed\n",
ctx == NULL ? "NULL" : "Uninitialised");
@@ -649,7 +649,7 @@ static int afalg_cipher_cleanup(EVP_CIPHER_CTX *ctx)
return 0;
}
- actx = (afalg_ctx *) EVP_CIPHER_CTX_cipher_data(ctx);
+ actx = (afalg_ctx *) EVP_CIPHER_CTX_get_cipher_data(ctx);
if (actx == NULL || actx->init_done != MAGIC_INIT_NUM) {
ALG_WARN("%s afalg ctx passed\n",
ctx == NULL ? "NULL" : "Uninitialised");
diff --git a/engines/e_dasync.c b/engines/e_dasync.c
index 25dd233..1f5cc02 100644
--- a/engines/e_dasync.c
+++ b/engines/e_dasync.c
@@ -55,11 +55,14 @@
#include <openssl/engine.h>
#include <openssl/sha.h>
+#include <openssl/aes.h>
#include <openssl/rsa.h>
#include <openssl/evp.h>
#include <openssl/async.h>
#include <openssl/bn.h>
#include <openssl/crypto.h>
+#include <openssl/ssl.h>
+#include <openssl/modes.h>
#if (defined(OPENSSL_SYS_UNIX) || defined(OPENSSL_SYS_CYGWIN)) && defined(OPENSSL_THREADS)
# undef ASYNC_POSIX
@@ -98,26 +101,13 @@ static int dasync_sha1_update(EVP_MD_CTX *ctx, const void *data,
size_t count);
static int dasync_sha1_final(EVP_MD_CTX *ctx, unsigned char *md);
+/*
+ * Holds the EVP_MD object for sha1 in this engine. Set up once only during
+ * engine bind and can then be reused many times.
+ */
static EVP_MD *_hidden_sha1_md = NULL;
static const EVP_MD *dasync_sha1(void)
{
- if (_hidden_sha1_md == NULL) {
- EVP_MD *md;
-
- if ((md = EVP_MD_meth_new(NID_sha1, NID_sha1WithRSAEncryption)) == NULL
- || !EVP_MD_meth_set_result_size(md, SHA_DIGEST_LENGTH)
- || !EVP_MD_meth_set_input_blocksize(md, SHA_CBLOCK)
- || !EVP_MD_meth_set_app_datasize(md,
- sizeof(EVP_MD *) + sizeof(SHA_CTX))
- || !EVP_MD_meth_set_flags(md, EVP_MD_FLAG_DIGALGID_ABSENT)
- || !EVP_MD_meth_set_init(md, dasync_sha1_init)
- || !EVP_MD_meth_set_update(md, dasync_sha1_update)
- || !EVP_MD_meth_set_final(md, dasync_sha1_final)) {
- EVP_MD_meth_free(md);
- md = NULL;
- }
- _hidden_sha1_md = md;
- }
return _hidden_sha1_md;
}
static void destroy_digests(void)
@@ -125,6 +115,7 @@ static void destroy_digests(void)
EVP_MD_meth_free(_hidden_sha1_md);
_hidden_sha1_md = NULL;
}
+
static int dasync_digest_nids(const int **nids)
{
static int digest_nids[2] = { 0, 0 };
@@ -176,6 +167,76 @@ static RSA_METHOD dasync_rsa_method = {
};
+/* AES */
+
+static int dasync_aes128_cbc_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg,
+ void *ptr);
+static int dasync_aes128_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
+ const unsigned char *iv, int enc);
+static int dasync_aes128_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
+ const unsigned char *in, size_t inl);
+static int dasync_aes128_cbc_cleanup(EVP_CIPHER_CTX *ctx);
+
+static int dasync_aes128_cbc_hmac_sha1_ctrl(EVP_CIPHER_CTX *ctx, int type,
+ int arg, void *ptr);
+static int dasync_aes128_cbc_hmac_sha1_init_key(EVP_CIPHER_CTX *ctx,
+ const unsigned char *key,
+ const unsigned char *iv,
+ int enc);
+static int dasync_aes128_cbc_hmac_sha1_cipher(EVP_CIPHER_CTX *ctx,
+ unsigned char *out,
+ const unsigned char *in,
+ size_t inl);
+static int dasync_aes128_cbc_hmac_sha1_cleanup(EVP_CIPHER_CTX *ctx);
+
+struct dasync_pipeline_ctx {
+ void *inner_cipher_data;
+ unsigned int numpipes;
+ unsigned char **inbufs;
+ unsigned char **outbufs;
+ size_t *lens;
+ int enc;
+ unsigned char tlsaad[SSL_MAX_PIPELINES][EVP_AEAD_TLS1_AAD_LEN];
+ unsigned int aadctr;
+};
+
+/*
+ * Holds the EVP_CIPHER object for aes_128_cbc in this engine. Set up once only
+ * during engine bind and can then be reused many times.
+ */
+static EVP_CIPHER *_hidden_aes_128_cbc = NULL;
+static const EVP_CIPHER *dasync_aes_128_cbc(void)
+{
+ return _hidden_aes_128_cbc;
+}
+
+/*
+ * Holds the EVP_CIPHER object for aes_128_cbc_hmac_sha1 in this engine. Set up
+ * once only during engine bind and can then be reused many times.
+ */
+static EVP_CIPHER *_hidden_aes_128_cbc_hmac_sha1 = NULL;
+static const EVP_CIPHER *dasync_aes_128_cbc_hmac_sha1(void)
+{
+ return _hidden_aes_128_cbc_hmac_sha1;
+}
+
+static void destroy_ciphers(void)
+{
+ EVP_CIPHER_meth_free(_hidden_aes_128_cbc);
+ EVP_CIPHER_meth_free(_hidden_aes_128_cbc_hmac_sha1);
+ _hidden_aes_128_cbc = NULL;
+ _hidden_aes_128_cbc_hmac_sha1 = NULL;
+}
+
+static int dasync_ciphers(ENGINE *e, const EVP_CIPHER **cipher,
+ const int **nids, int nid);
+
+static int dasync_cipher_nids[] = {
+ NID_aes_128_cbc,
+ NID_aes_128_cbc_hmac_sha1,
+ 0
+};
+
static int bind_dasync(ENGINE *e)
{
/* Ensure the dasync error handling is set up */
@@ -185,6 +246,7 @@ static int bind_dasync(ENGINE *e)
|| !ENGINE_set_name(e, engine_dasync_name)
|| !ENGINE_set_RSA(e, &dasync_rsa_method)
|| !ENGINE_set_digests(e, dasync_digests)
+ || !ENGINE_set_ciphers(e, dasync_ciphers)
|| !ENGINE_set_destroy_function(e, dasync_destroy)
|| !ENGINE_set_init_function(e, dasync_init)
|| !ENGINE_set_finish_function(e, dasync_finish)) {
@@ -192,6 +254,72 @@ static int bind_dasync(ENGINE *e)
return 0;
}
+ /*
+ * Set up the EVP_CIPHER and EVP_MD objects for the ciphers/digests
+ * supplied by this engine
+ */
+ _hidden_sha1_md = EVP_MD_meth_new(NID_sha1, NID_sha1WithRSAEncryption);
+ if (_hidden_sha1_md == NULL
+ || !EVP_MD_meth_set_result_size(_hidden_sha1_md, SHA_DIGEST_LENGTH)
+ || !EVP_MD_meth_set_input_blocksize(_hidden_sha1_md, SHA_CBLOCK)
+ || !EVP_MD_meth_set_app_datasize(_hidden_sha1_md,
+ sizeof(EVP_MD *) + sizeof(SHA_CTX))
+ || !EVP_MD_meth_set_flags(_hidden_sha1_md, EVP_MD_FLAG_DIGALGID_ABSENT)
+ || !EVP_MD_meth_set_init(_hidden_sha1_md, dasync_sha1_init)
+ || !EVP_MD_meth_set_update(_hidden_sha1_md, dasync_sha1_update)
+ || !EVP_MD_meth_set_final(_hidden_sha1_md, dasync_sha1_final)) {
+ EVP_MD_meth_free(_hidden_sha1_md);
+ _hidden_sha1_md = NULL;
+ }
+
+ _hidden_aes_128_cbc = EVP_CIPHER_meth_new(NID_aes_128_cbc,
+ 16 /* block size */,
+ 16 /* key len */);
+ if (_hidden_aes_128_cbc == NULL
+ || !EVP_CIPHER_meth_set_iv_length(_hidden_aes_128_cbc,16)
+ || !EVP_CIPHER_meth_set_flags(_hidden_aes_128_cbc,
+ EVP_CIPH_FLAG_DEFAULT_ASN1
+ | EVP_CIPH_CBC_MODE
+ | EVP_CIPH_FLAG_PIPELINE)
+ || !EVP_CIPHER_meth_set_init(_hidden_aes_128_cbc,
+ dasync_aes128_init_key)
+ || !EVP_CIPHER_meth_set_do_cipher(_hidden_aes_128_cbc,
+ dasync_aes128_cbc_cipher)
+ || !EVP_CIPHER_meth_set_cleanup(_hidden_aes_128_cbc,
+ dasync_aes128_cbc_cleanup)
+ || !EVP_CIPHER_meth_set_ctrl(_hidden_aes_128_cbc,
+ dasync_aes128_cbc_ctrl)
+ || !EVP_CIPHER_meth_set_impl_ctx_size(_hidden_aes_128_cbc,
+ sizeof(struct dasync_pipeline_ctx))) {
+ EVP_CIPHER_meth_free(_hidden_aes_128_cbc);
+ _hidden_aes_128_cbc = NULL;
+ }
+
+ _hidden_aes_128_cbc_hmac_sha1 = EVP_CIPHER_meth_new(
+ NID_aes_128_cbc_hmac_sha1,
+ 16 /* block size */,
+ 16 /* key len */);
+ if (_hidden_aes_128_cbc_hmac_sha1 == NULL
+ || !EVP_CIPHER_meth_set_iv_length(_hidden_aes_128_cbc_hmac_sha1,16)
+ || !EVP_CIPHER_meth_set_flags(_hidden_aes_128_cbc_hmac_sha1,
+ EVP_CIPH_CBC_MODE
+ | EVP_CIPH_FLAG_DEFAULT_ASN1
+ | EVP_CIPH_FLAG_AEAD_CIPHER
+ | EVP_CIPH_FLAG_PIPELINE)
+ || !EVP_CIPHER_meth_set_init(_hidden_aes_128_cbc_hmac_sha1,
+ dasync_aes128_cbc_hmac_sha1_init_key)
+ || !EVP_CIPHER_meth_set_do_cipher(_hidden_aes_128_cbc_hmac_sha1,
+ dasync_aes128_cbc_hmac_sha1_cipher)
+ || !EVP_CIPHER_meth_set_cleanup(_hidden_aes_128_cbc_hmac_sha1,
+ dasync_aes128_cbc_hmac_sha1_cleanup)
+ || !EVP_CIPHER_meth_set_ctrl(_hidden_aes_128_cbc_hmac_sha1,
+ dasync_aes128_cbc_hmac_sha1_ctrl)
+ || !EVP_CIPHER_meth_set_impl_ctx_size(_hidden_aes_128_cbc_hmac_sha1,
+ sizeof(struct dasync_pipeline_ctx))) {
+ EVP_CIPHER_meth_free(_hidden_aes_128_cbc_hmac_sha1);
+ _hidden_aes_128_cbc_hmac_sha1 = NULL;
+ }
+
return 1;
}
@@ -246,6 +374,7 @@ static int dasync_finish(ENGINE *e)
static int dasync_destroy(ENGINE *e)
{
destroy_digests();
+ destroy_ciphers();
ERR_unload_DASYNC_strings();
return 1;
}
@@ -271,6 +400,32 @@ static int dasync_digests(ENGINE *e, const EVP_MD **digest,
return ok;
}
+static int dasync_ciphers(ENGINE *e, const EVP_CIPHER **cipher,
+ const int **nids, int nid)
+{
+ int ok = 1;
+ if (cipher == NULL) {
+ /* We are returning a list of supported nids */
+ *nids = dasync_cipher_nids;
+ return (sizeof(dasync_cipher_nids) -
+ 1) / sizeof(dasync_cipher_nids[0]);
+ }
+ /* We are being asked for a specific cipher */
+ switch (nid) {
+ case NID_aes_128_cbc:
+ *cipher = dasync_aes_128_cbc();
+ break;
+ case NID_aes_128_cbc_hmac_sha1:
+ *cipher = dasync_aes_128_cbc_hmac_sha1();
+ break;
+ default:
+ ok = 0;
+ *cipher = NULL;
+ break;
+ }
+ return ok;
+}
+
static void wait_cleanup(ASYNC_WAIT_CTX *ctx, const void *key,
OSSL_ASYNC_FD readfd, void *pvwritefd)
{
@@ -431,3 +586,221 @@ static int dasync_rsa_finish(RSA *rsa)
{
return RSA_PKCS1_OpenSSL()->finish(rsa);
}
+
+/* Cipher helper functions */
+
+static int dasync_cipher_ctrl_helper(EVP_CIPHER_CTX *ctx, int type, int arg,
+ void *ptr, int aeadcapable)
+{
+ int ret;
+ struct dasync_pipeline_ctx *pipe_ctx =
+ (struct dasync_pipeline_ctx *)EVP_CIPHER_CTX_get_cipher_data(ctx);
+
+ if (pipe_ctx == NULL)
+ return 0;
+
+ switch (type) {
+ case EVP_CTRL_SET_PIPELINE_OUTPUT_BUFS:
+ pipe_ctx->numpipes = arg;
+ pipe_ctx->outbufs = (unsigned char **)ptr;
+ break;
+
+ case EVP_CTRL_SET_PIPELINE_INPUT_BUFS:
+ pipe_ctx->numpipes = arg;
+ pipe_ctx->inbufs = (unsigned char **)ptr;
+ break;
+
+ case EVP_CTRL_SET_PIPELINE_INPUT_LENS:
+ pipe_ctx->numpipes = arg;
+ pipe_ctx->lens = (size_t *)ptr;
+ break;
+
+ case EVP_CTRL_AEAD_SET_MAC_KEY:
+ if (!aeadcapable)
+ return -1;
+ EVP_CIPHER_CTX_set_cipher_data(ctx, pipe_ctx->inner_cipher_data);
+ ret = EVP_CIPHER_meth_get_ctrl(EVP_aes_128_cbc_hmac_sha1())
+ (ctx, type, arg, ptr);
+ EVP_CIPHER_CTX_set_cipher_data(ctx, pipe_ctx);
+ return ret;
+
+ case EVP_CTRL_AEAD_TLS1_AAD:
+ {
+ unsigned char *p = ptr;
+ unsigned int len;
+
+ if (!aeadcapable || arg != EVP_AEAD_TLS1_AAD_LEN)
+ return -1;
+
+ if (pipe_ctx->aadctr >= SSL_MAX_PIPELINES)
+ return -1;
+
+ memcpy(pipe_ctx->tlsaad[pipe_ctx->aadctr], ptr,
+ EVP_AEAD_TLS1_AAD_LEN);
+ pipe_ctx->aadctr++;
+
+ len = p[arg - 2] << 8 | p[arg - 1];
+
+ if (pipe_ctx->enc) {
+ if ((p[arg - 4] << 8 | p[arg - 3]) >= TLS1_1_VERSION) {
+ len -= AES_BLOCK_SIZE;
+ }
+
+ return ((len + SHA_DIGEST_LENGTH + AES_BLOCK_SIZE)
+ & -AES_BLOCK_SIZE) - len;
+ } else {
+ return SHA_DIGEST_LENGTH;
+ }
+ }
+
+ default:
+ return 0;
+ }
+
+ return 1;
+}
+
+static int dasync_cipher_init_key_helper(EVP_CIPHER_CTX *ctx,
+ const unsigned char *key,
+ const unsigned char *iv, int enc,
+ const EVP_CIPHER *cipher)
+{
+ int ret;
+ struct dasync_pipeline_ctx *pipe_ctx =
+ (struct dasync_pipeline_ctx *)EVP_CIPHER_CTX_get_cipher_data(ctx);
+
+ if (pipe_ctx->inner_cipher_data == NULL
+ && EVP_CIPHER_impl_ctx_size(cipher) != 0) {
+ pipe_ctx->inner_cipher_data = OPENSSL_zalloc(
+ EVP_CIPHER_impl_ctx_size(cipher));
+ if (pipe_ctx->inner_cipher_data == NULL) {
+ DASYNCerr(DASYNC_F_DASYNC_AES128_INIT_KEY,
+ ERR_R_MALLOC_FAILURE);
+ return 0;
+ }
+ }
+
+ pipe_ctx->numpipes = 0;
+ pipe_ctx->aadctr = 0;
+
+ EVP_CIPHER_CTX_set_cipher_data(ctx, pipe_ctx->inner_cipher_data);
+ ret = EVP_CIPHER_meth_get_init(cipher)(ctx, key, iv, enc);
+ EVP_CIPHER_CTX_set_cipher_data(ctx, pipe_ctx);
+
+ return ret;
+}
+
+static int dasync_cipher_helper(EVP_CIPHER_CTX *ctx, unsigned char *out,
+ const unsigned char *in, size_t inl,
+ const EVP_CIPHER *cipher)
+{
+ int ret = 1;
+ unsigned int i, pipes;
+ struct dasync_pipeline_ctx *pipe_ctx =
+ (struct dasync_pipeline_ctx *)EVP_CIPHER_CTX_get_cipher_data(ctx);
+
+ pipes = pipe_ctx->numpipes;
+ EVP_CIPHER_CTX_set_cipher_data(ctx, pipe_ctx->inner_cipher_data);
+ if (pipes == 0) {
+ if (pipe_ctx->aadctr != 0) {
+ if (pipe_ctx->aadctr != 1)
+ return -1;
+ EVP_CIPHER_meth_get_ctrl(cipher)
+ (ctx, EVP_CTRL_AEAD_TLS1_AAD,
+ EVP_AEAD_TLS1_AAD_LEN,
+ pipe_ctx->tlsaad[0]);
+ }
+ ret = EVP_CIPHER_meth_get_do_cipher(cipher)
+ (ctx, out, in, inl);
+ } else {
+ if (pipe_ctx->aadctr > 0 && pipe_ctx->aadctr != pipes)
+ return -1;
+ for (i = 0; i < pipes; i++) {
+ if (pipe_ctx->aadctr > 0) {
+ EVP_CIPHER_meth_get_ctrl(cipher)
+ (ctx, EVP_CTRL_AEAD_TLS1_AAD,
+ EVP_AEAD_TLS1_AAD_LEN,
+ pipe_ctx->tlsaad[i]);
+ }
+ ret = ret && EVP_CIPHER_meth_get_do_cipher(cipher)
+ (ctx, pipe_ctx->outbufs[i], pipe_ctx->inbufs[i],
+ pipe_ctx->lens[i]);
+ }
+ pipe_ctx->numpipes = 0;
+ }
+ pipe_ctx->aadctr = 0;
+ EVP_CIPHER_CTX_set_cipher_data(ctx, pipe_ctx);
+ return ret;
+}
+
+static int dasync_cipher_cleanup_helper(EVP_CIPHER_CTX *ctx,
+ const EVP_CIPHER *cipher)
+{
+ struct dasync_pipeline_ctx *pipe_ctx =
+ (struct dasync_pipeline_ctx *)EVP_CIPHER_CTX_get_cipher_data(ctx);
+
+ OPENSSL_clear_free(pipe_ctx->inner_cipher_data,
+ EVP_CIPHER_impl_ctx_size(cipher));
+
+ return 1;
+}
+
+/*
+ * AES128 CBC Implementation
+ */
+
+static int dasync_aes128_cbc_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg,
+ void *ptr)
+{
+ return dasync_cipher_ctrl_helper(ctx, type, arg, ptr, 0);
+}
+
+static int dasync_aes128_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
+ const unsigned char *iv, int enc)
+{
+ return dasync_cipher_init_key_helper(ctx, key, iv, enc, EVP_aes_128_cbc());
+}
+
+static int dasync_aes128_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
+ const unsigned char *in, size_t inl)
+{
+ return dasync_cipher_helper(ctx, out, in, inl, EVP_aes_128_cbc());
+}
+
+static int dasync_aes128_cbc_cleanup(EVP_CIPHER_CTX *ctx)
+{
+ return dasync_cipher_cleanup_helper(ctx, EVP_aes_128_cbc());
+}
+
+
+/*
+ * AES128 CBC HMAC SHA1 Implementation
+ */
+
+static int dasync_aes128_cbc_hmac_sha1_ctrl(EVP_CIPHER_CTX *ctx, int type,
+ int arg, void *ptr)
+{
+ return dasync_cipher_ctrl_helper(ctx, type, arg, ptr, 1);
+}
+
+static int dasync_aes128_cbc_hmac_sha1_init_key(EVP_CIPHER_CTX *ctx,
+ const unsigned char *key,
+ const unsigned char *iv,
+ int enc)
+{
+ return dasync_cipher_init_key_helper(ctx, key, iv, enc,
+ EVP_aes_128_cbc_hmac_sha1());
+}
+
+static int dasync_aes128_cbc_hmac_sha1_cipher(EVP_CIPHER_CTX *ctx,
+ unsigned char *out,
+ const unsigned char *in,
+ size_t inl)
+{
+ return dasync_cipher_helper(ctx, out, in, inl, EVP_aes_128_cbc_hmac_sha1());
+}
+
+static int dasync_aes128_cbc_hmac_sha1_cleanup(EVP_CIPHER_CTX *ctx)
+{
+ return dasync_cipher_cleanup_helper(ctx, EVP_aes_128_cbc_hmac_sha1());
+}
diff --git a/engines/e_dasync_err.c b/engines/e_dasync_err.c
index 33d4a90..ed5e98e 100644
--- a/engines/e_dasync_err.c
+++ b/engines/e_dasync_err.c
@@ -1,12 +1,12 @@
/* ====================================================================
- * Copyright (c) 1999-2015 The OpenSSL Project. All rights reserved.
+ * Copyright (c) 1999-2016 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
+ * notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
@@ -52,7 +52,8 @@
*
*/
-/* NOTE: this file was auto generated by the mkerr.pl script: any changes
+/*
+ * NOTE: this file was auto generated by the mkerr.pl script: any changes
* made to it will be overwritten when the script next updates this file,
* only reason strings will be preserved.
*/
@@ -64,83 +65,81 @@
/* BEGIN ERROR CODES */
#ifndef OPENSSL_NO_ERR
-#define ERR_FUNC(func) ERR_PACK(0,func,0)
-#define ERR_REASON(reason) ERR_PACK(0,0,reason)
-
-static ERR_STRING_DATA DASYNC_str_functs[]=
- {
-{ERR_FUNC(DASYNC_F_BIND_DASYNC), "BIND_DASYNC"},
-{ERR_FUNC(DASYNC_F_CIPHER_AES_128_CBC_CODE), "CIPHER_AES_128_CBC_CODE"},
-{ERR_FUNC(DASYNC_F_DASYNC_BN_MOD_EXP), "DASYNC_BN_MOD_EXP"},
-{ERR_FUNC(DASYNC_F_DASYNC_MOD_EXP), "DASYNC_MOD_EXP"},
-{ERR_FUNC(DASYNC_F_DASYNC_PRIVATE_DECRYPT), "DASYNC_PRIVATE_DECRYPT"},
-{ERR_FUNC(DASYNC_F_DASYNC_PRIVATE_ENCRYPT), "DASYNC_PRIVATE_ENCRYPT"},
-{ERR_FUNC(DASYNC_F_DASYNC_PUBLIC_DECRYPT), "DASYNC_PUBLIC_DECRYPT"},
-{ERR_FUNC(DASYNC_F_DASYNC_PUBLIC_ENCRYPT), "DASYNC_PUBLIC_ENCRYPT"},
-{0,NULL}
- };
-
-static ERR_STRING_DATA DASYNC_str_reasons[]=
- {
-{ERR_REASON(DASYNC_R_INIT_FAILED) ,"init failed"},
-{ERR_REASON(DASYNC_R_LENGTH_NOT_BLOCK_ALIGNED),"length not block aligned"},
-{ERR_REASON(DASYNC_R_UNKNOWN_FAULT) ,"unknown fault"},
-{0,NULL}
- };
+# define ERR_FUNC(func) ERR_PACK(0,func,0)
+# define ERR_REASON(reason) ERR_PACK(0,0,reason)
+
+static ERR_STRING_DATA DASYNC_str_functs[] = {
+ {ERR_FUNC(DASYNC_F_BIND_DASYNC), "bind_dasync"},
+ {ERR_FUNC(DASYNC_F_CIPHER_AES_128_CBC_CODE), "CIPHER_AES_128_CBC_CODE"},
+ {ERR_FUNC(DASYNC_F_DASYNC_AES128_CBC_HMAC_SHA1_INIT_KEY),
+ "dasync_aes128_cbc_hmac_sha1_init_key"},
+ {ERR_FUNC(DASYNC_F_DASYNC_AES128_INIT_KEY), "dasync_aes128_init_key"},
+ {ERR_FUNC(DASYNC_F_DASYNC_BN_MOD_EXP), "DASYNC_BN_MOD_EXP"},
+ {ERR_FUNC(DASYNC_F_DASYNC_MOD_EXP), "DASYNC_MOD_EXP"},
+ {ERR_FUNC(DASYNC_F_DASYNC_PRIVATE_DECRYPT), "DASYNC_PRIVATE_DECRYPT"},
+ {ERR_FUNC(DASYNC_F_DASYNC_PRIVATE_ENCRYPT), "DASYNC_PRIVATE_ENCRYPT"},
+ {ERR_FUNC(DASYNC_F_DASYNC_PUBLIC_DECRYPT), "DASYNC_PUBLIC_DECRYPT"},
+ {ERR_FUNC(DASYNC_F_DASYNC_PUBLIC_ENCRYPT), "DASYNC_PUBLIC_ENCRYPT"},
+ {0, NULL}
+};
+
+static ERR_STRING_DATA DASYNC_str_reasons[] = {
+ {ERR_REASON(DASYNC_R_INIT_FAILED), "init failed"},
+ {ERR_REASON(DASYNC_R_LENGTH_NOT_BLOCK_ALIGNED),
+ "length not block aligned"},
+ {ERR_REASON(DASYNC_R_UNKNOWN_FAULT), "unknown fault"},
+ {0, NULL}
+};
#endif
#ifdef DASYNC_LIB_NAME
-static ERR_STRING_DATA DASYNC_lib_name[]=
- {
-{0 ,DASYNC_LIB_NAME},
-{0,NULL}
- };
+static ERR_STRING_DATA DASYNC_lib_name[] = {
+ {0, DASYNC_LIB_NAME},
+ {0, NULL}
+};
#endif
-
-static int DASYNC_lib_error_code=0;
-static int DASYNC_error_init=1;
+static int DASYNC_lib_error_code = 0;
+static int DASYNC_error_init = 1;
static void ERR_load_DASYNC_strings(void)
- {
- if (DASYNC_lib_error_code == 0)
- DASYNC_lib_error_code=ERR_get_next_error_library();
+{
+ if (DASYNC_lib_error_code == 0)
+ DASYNC_lib_error_code = ERR_get_next_error_library();
- if (DASYNC_error_init)
- {
- DASYNC_error_init=0;
+ if (DASYNC_error_init) {
+ DASYNC_error_init = 0;
#ifndef OPENSSL_NO_ERR
- ERR_load_strings(DASYNC_lib_error_code,DASYNC_str_functs);
- ERR_load_strings(DASYNC_lib_error_code,DASYNC_str_reasons);
+ ERR_load_strings(DASYNC_lib_error_code, DASYNC_str_functs);
+ ERR_load_strings(DASYNC_lib_error_code, DASYNC_str_reasons);
#endif
#ifdef DASYNC_LIB_NAME
- DASYNC_lib_name->error = ERR_PACK(DASYNC_lib_error_code,0,0);
- ERR_load_strings(0,DASYNC_lib_name);
+ DASYNC_lib_name->error = ERR_PACK(DASYNC_lib_error_code, 0, 0);
+ ERR_load_strings(0, DASYNC_lib_name);
#endif
- }
- }
+ }
+}
static void ERR_unload_DASYNC_strings(void)
- {
- if (DASYNC_error_init == 0)
- {
+{
+ if (DASYNC_error_init == 0) {
#ifndef OPENSSL_NO_ERR
- ERR_unload_strings(DASYNC_lib_error_code,DASYNC_str_functs);
- ERR_unload_strings(DASYNC_lib_error_code,DASYNC_str_reasons);
+ ERR_unload_strings(DASYNC_lib_error_code, DASYNC_str_functs);
+ ERR_unload_strings(DASYNC_lib_error_code, DASYNC_str_reasons);
#endif
#ifdef DASYNC_LIB_NAME
- ERR_unload_strings(0,DASYNC_lib_name);
+ ERR_unload_strings(0, DASYNC_lib_name);
#endif
- DASYNC_error_init=1;
- }
- }
+ DASYNC_error_init = 1;
+ }
+}
static void ERR_DASYNC_error(int function, int reason, char *file, int line)
- {
- if (DASYNC_lib_error_code == 0)
- DASYNC_lib_error_code=ERR_get_next_error_library();
- ERR_PUT_error(DASYNC_lib_error_code,function,reason,file,line);
- }
+{
+ if (DASYNC_lib_error_code == 0)
+ DASYNC_lib_error_code = ERR_get_next_error_library();
+ ERR_PUT_error(DASYNC_lib_error_code, function, reason, file, line);
+}
diff --git a/engines/e_dasync_err.h b/engines/e_dasync_err.h
index a34a099..560f163 100644
--- a/engines/e_dasync_err.h
+++ b/engines/e_dasync_err.h
@@ -60,7 +60,8 @@ extern "C" {
#endif
/* BEGIN ERROR CODES */
-/* The following lines are auto generated by the script mkerr.pl. Any changes
+/*
+ * The following lines are auto generated by the script mkerr.pl. Any changes
* made after this point may be overwritten when the script is next run.
*/
static void ERR_load_DASYNC_strings(void);
@@ -71,19 +72,21 @@ static void ERR_DASYNC_error(int function, int reason, char *file, int line);
/* Error codes for the DASYNC functions. */
/* Function codes. */
-#define DASYNC_F_BIND_DASYNC 107
-#define DASYNC_F_CIPHER_AES_128_CBC_CODE 100
-#define DASYNC_F_DASYNC_BN_MOD_EXP 101
-#define DASYNC_F_DASYNC_MOD_EXP 102
-#define DASYNC_F_DASYNC_PRIVATE_DECRYPT 103
-#define DASYNC_F_DASYNC_PRIVATE_ENCRYPT 104
-#define DASYNC_F_DASYNC_PUBLIC_DECRYPT 105
-#define DASYNC_F_DASYNC_PUBLIC_ENCRYPT 106
+# define DASYNC_F_BIND_DASYNC 107
+# define DASYNC_F_CIPHER_AES_128_CBC_CODE 100
+# define DASYNC_F_DASYNC_AES128_CBC_HMAC_SHA1_INIT_KEY 109
+# define DASYNC_F_DASYNC_AES128_INIT_KEY 108
+# define DASYNC_F_DASYNC_BN_MOD_EXP 101
+# define DASYNC_F_DASYNC_MOD_EXP 102
+# define DASYNC_F_DASYNC_PRIVATE_DECRYPT 103
+# define DASYNC_F_DASYNC_PRIVATE_ENCRYPT 104
+# define DASYNC_F_DASYNC_PUBLIC_DECRYPT 105
+# define DASYNC_F_DASYNC_PUBLIC_ENCRYPT 106
/* Reason codes. */
-#define DASYNC_R_INIT_FAILED 102
-#define DASYNC_R_LENGTH_NOT_BLOCK_ALIGNED 100
-#define DASYNC_R_UNKNOWN_FAULT 101
+# define DASYNC_R_INIT_FAILED 102
+# define DASYNC_R_LENGTH_NOT_BLOCK_ALIGNED 100
+# define DASYNC_R_UNKNOWN_FAULT 101
#ifdef __cplusplus
}
diff --git a/engines/e_padlock.c b/engines/e_padlock.c
index 00732ed..99ac059 100644
--- a/engines/e_padlock.c
+++ b/engines/e_padlock.c
@@ -361,7 +361,7 @@ static int padlock_aes_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
# define NEAREST_ALIGNED(ptr) ( (unsigned char *)(ptr) + \
( (0x10 - ((size_t)(ptr) & 0x0F)) & 0x0F ) )
# define ALIGNED_CIPHER_DATA(ctx) ((struct padlock_cipher_data *)\
- NEAREST_ALIGNED(EVP_CIPHER_CTX_cipher_data(ctx)))
+ NEAREST_ALIGNED(EVP_CIPHER_CTX_get_cipher_data(ctx)))
static int
padlock_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out_arg,
diff --git a/include/openssl/evp.h b/include/openssl/evp.h
index 0b6b82a..4516db1 100644
--- a/include/openssl/evp.h
+++ b/include/openssl/evp.h
@@ -307,6 +307,8 @@ int (*EVP_CIPHER_meth_get_ctrl(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *,
# define EVP_CIPH_FLAG_CUSTOM_CIPHER 0x100000
# define EVP_CIPH_FLAG_AEAD_CIPHER 0x200000
# define EVP_CIPH_FLAG_TLS1_1_MULTIBLOCK 0x400000
+/* Cipher can handle pipeline operations */
+# define EVP_CIPH_FLAG_PIPELINE 0X800000
/*
* Cipher context flag to indicate we can handle wrap mode: if allowed in
@@ -373,6 +375,13 @@ int (*EVP_CIPHER_meth_get_ctrl(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *,
/* EVP_CTRL_BLOCK_PADDING_MODE takes the padding mode */
# define EVP_CTRL_BLOCK_PADDING_MODE 0x21
+/* Set the output buffers to use for a pipelined operation */
+# define EVP_CTRL_SET_PIPELINE_OUTPUT_BUFS 0x22
+/* Set the input buffers to use for a pipelined operation */
+# define EVP_CTRL_SET_PIPELINE_INPUT_BUFS 0x23
+/* Set the input buffer lengths to use for a pipelined operation */
+# define EVP_CTRL_SET_PIPELINE_INPUT_LENS 0x24
+
/* Padding modes */
#define EVP_PADDING_PKCS7 1
#define EVP_PADDING_ISO7816_4 2
@@ -486,7 +495,8 @@ void EVP_CIPHER_CTX_set_num(EVP_CIPHER_CTX *ctx, int num);
int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, const EVP_CIPHER_CTX *in);
void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx);
void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data);
-void *EVP_CIPHER_CTX_cipher_data(const EVP_CIPHER_CTX *ctx);
+void *EVP_CIPHER_CTX_get_cipher_data(const EVP_CIPHER_CTX *ctx);
+void *EVP_CIPHER_CTX_set_cipher_data(EVP_CIPHER_CTX *ctx, void *cipher_data);
# define EVP_CIPHER_CTX_type(c) EVP_CIPHER_type(EVP_CIPHER_CTX_cipher(c))
# if OPENSSL_API_COMPAT < 0x10100000L
# define EVP_CIPHER_CTX_flags(c) EVP_CIPHER_flags(EVP_CIPHER_CTX_cipher(c))
diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h
index e827214..aa3daca 100644
--- a/include/openssl/ssl.h
+++ b/include/openssl/ssl.h
@@ -181,6 +181,9 @@ extern "C" {
# define SSL_MAX_KEY_ARG_LENGTH 8
# define SSL_MAX_MASTER_KEY_LENGTH 48
+/* The maximum number of encrypt/decrypt pipelines we can support */
+# define SSL_MAX_PIPELINES 32
+
/* text strings for the ciphers */
/* These are used to specify which ciphers to use and not to use */
@@ -1233,6 +1236,8 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION)
# define SSL_CTRL_GET_EXTMS_SUPPORT 122
# define SSL_CTRL_SET_MIN_PROTO_VERSION 123
# define SSL_CTRL_SET_MAX_PROTO_VERSION 124
+# define SSL_CTRL_SET_SPLIT_SEND_FRAGMENT 125
+# define SSL_CTRL_SET_MAX_PIPELINES 126
# define SSL_CERT_SET_FIRST 1
# define SSL_CERT_SET_NEXT 2
# define SSL_CERT_SET_SERVER 3
@@ -1403,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);
@@ -1794,6 +1800,17 @@ __owur int SSL_get_ex_data_X509_STORE_CTX_idx(void);
SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL)
# define SSL_set_max_send_fragment(ssl,m) \
SSL_ctrl(ssl,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL)
+# define SSL_CTX_set_split_send_fragment(ctx,m) \
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SPLIT_SEND_FRAGMENT,m,NULL)
+# define SSL_set_split_send_fragment(ssl,m) \
+ SSL_ctrl(ssl,SSL_CTRL_SET_SPLIT_SEND_FRAGMENT,m,NULL)
+# define SSL_CTX_set_max_pipelines(ctx,m) \
+ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_PIPELINES,m,NULL)
+# define SSL_set_max_pipelines(ssl,m) \
+ SSL_ctrl(ssl,SSL_CTRL_SET_MAX_PIPELINES,m,NULL)
+
+void SSL_CTX_set_default_read_buffer_len(SSL_CTX *ctx, size_t len);
+void SSL_set_default_read_buffer_len(SSL *s, size_t len);
/* NB: the keylength is only applicable when is_export is true */
# ifndef OPENSSL_NO_DH
@@ -2193,6 +2210,7 @@ void ERR_load_SSL_strings(void);
# define SSL_F_TLS1_CHANGE_CIPHER_STATE 209
# define SSL_F_TLS1_CHECK_DUPLICATE_EXTENSIONS 341
# define SSL_F_TLS1_CHECK_SERVERHELLO_TLSEXT 274
+# define SSL_F_TLS1_ENC 401
# define SSL_F_TLS1_EXPORT_KEYING_MATERIAL 314
# define SSL_F_TLS1_GET_CURVELIST 338
# define SSL_F_TLS1_PREPARE_CLIENTHELLO_TLSEXT 275
@@ -2412,6 +2430,7 @@ void ERR_load_SSL_strings(void);
# define SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE 199
# define SSL_R_PEM_NAME_BAD_PREFIX 391
# define SSL_R_PEM_NAME_TOO_SHORT 392
+# define SSL_R_PIPELINE_FAILURE 406
# define SSL_R_PRE_MAC_LENGTH_TOO_LONG 205
# define SSL_R_PROTOCOL_IS_SHUTDOWN 207
# define SSL_R_PSK_IDENTITY_NOT_FOUND 223
diff --git a/ssl/record/rec_layer_d1.c b/ssl/record/rec_layer_d1.c
index a1b0e9e..00af44e 100644
--- a/ssl/record/rec_layer_d1.c
+++ b/ssl/record/rec_layer_d1.c
@@ -355,7 +355,7 @@ int dtls1_process_buffered_records(SSL *s)
if (!dtls1_process_record(s))
return (0);
if (dtls1_buffer_record(s, &(s->rlayer.d->processed_rcds),
- SSL3_RECORD_get_seq_num(&s->rlayer.rrec)) < 0)
+ SSL3_RECORD_get_seq_num(s->rlayer.rrec)) < 0)
return -1;
}
}
@@ -464,7 +464,7 @@ int dtls1_read_bytes(SSL *s, int type, int *recvd_type, unsigned char *buf,
* s->s3->rrec.off, - offset into 'data' for next read
* s->s3->rrec.length, - number of bytes.
*/
- rr = &s->rlayer.rrec;
+ rr = s->rlayer.rrec;
/*
* We are not handshaking and have no data yet, so process data buffered
@@ -1035,11 +1035,11 @@ int do_dtls1_write(SSL *s, int type, const unsigned char *buf,
int i, mac_size, clear = 0;
int prefix_len = 0;
int eivlen;
- SSL3_RECORD *wr;
+ SSL3_RECORD wr;
SSL3_BUFFER *wb;
SSL_SESSION *sess;
- wb = &s->rlayer.wbuf;
+ wb = &s->rlayer.wbuf[0];
/*
* first check if there is a SSL3_BUFFER still being written out. This
@@ -1061,7 +1061,6 @@ int do_dtls1_write(SSL *s, int type, const unsigned char *buf,
if (len == 0 && !create_empty_fragment)
return 0;
- wr = &s->rlayer.wrec;
sess = s->session;
if ((sess == NULL) ||
@@ -1081,7 +1080,7 @@ int do_dtls1_write(SSL *s, int type, const unsigned char *buf,
/* write the header */
*(p++) = type & 0xff;
- SSL3_RECORD_set_type(wr, type);
+ SSL3_RECORD_set_type(&wr, type);
/*
* Special case: for hello verify request, client version 1.0 and we
* haven't decided which version to use yet send back using version 1.0
@@ -1118,47 +1117,47 @@ int do_dtls1_write(SSL *s, int type, const unsigned char *buf,
eivlen = 0;
/* lets setup the record stuff. */
- SSL3_RECORD_set_data(wr, p + eivlen); /* make room for IV in case of CBC */
- SSL3_RECORD_set_length(wr, (int)len);
- SSL3_RECORD_set_input(wr, (unsigned char *)buf);
+ SSL3_RECORD_set_data(&wr, p + eivlen); /* make room for IV in case of CBC */
+ SSL3_RECORD_set_length(&wr, (int)len);
+ SSL3_RECORD_set_input(&wr, (unsigned char *)buf);
/*
- * we now 'read' from wr->input, wr->length bytes into wr->data
+ * we now 'read' from wr.input, wr.length bytes into wr.data
*/
/* first we compress */
if (s->compress != NULL) {
- if (!ssl3_do_compress(s)) {
+ if (!ssl3_do_compress(s, &wr)) {
SSLerr(SSL_F_DO_DTLS1_WRITE, SSL_R_COMPRESSION_FAILURE);
goto err;
}
} else {
- memcpy(SSL3_RECORD_get_data(wr), SSL3_RECORD_get_input(wr),
- SSL3_RECORD_get_length(wr));
- SSL3_RECORD_reset_input(wr);
+ memcpy(SSL3_RECORD_get_data(&wr), SSL3_RECORD_get_input(&wr),
+ SSL3_RECORD_get_length(&wr));
+ SSL3_RECORD_reset_input(&wr);
}
/*
- * we should still have the output to wr->data and the input from
- * wr->input. Length should be wr->length. wr->data still points in the
+ * we should still have the output to wr.data and the input from
+ * wr.input. Length should be wr.length. wr.data still points in the
* wb->buf
*/
if (mac_size != 0) {
- if (s->method->ssl3_enc->mac(s,
- &(p[SSL3_RECORD_get_length(wr) + eivlen]), 1) < 0)
+ if (s->method->ssl3_enc->mac(s, &wr,
+ &(p[SSL3_RECORD_get_length(&wr) + eivlen]), 1) < 0)
goto err;
- SSL3_RECORD_add_length(wr, mac_size);
+ SSL3_RECORD_add_length(&wr, mac_size);
}
/* this is true regardless of mac size */
- SSL3_RECORD_set_data(wr, p);
- SSL3_RECORD_reset_input(wr);
+ SSL3_RECORD_set_data(&wr, p);
+ SSL3_RECORD_reset_input(&wr);
if (eivlen)
- SSL3_RECORD_add_length(wr, eivlen);
+ SSL3_RECORD_add_length(&wr, eivlen);
- if (s->method->ssl3_enc->enc(s, 1) < 1)
+ if (s->method->ssl3_enc->enc(s, &wr, 1, 1) < 1)
goto err;
/* record length after mac and block padding */
@@ -1178,18 +1177,18 @@ int do_dtls1_write(SSL *s, int type, const unsigned char *buf,
memcpy(pseq, &(s->rlayer.write_sequence[2]), 6);
pseq += 6;
- s2n(SSL3_RECORD_get_length(wr), pseq);
+ s2n(SSL3_RECORD_get_length(&wr), pseq);
if (s->msg_callback)
s->msg_callback(1, 0, SSL3_RT_HEADER, pseq - DTLS1_RT_HEADER_LENGTH,
DTLS1_RT_HEADER_LENGTH, s, s->msg_callback_arg);
/*
- * we should now have wr->data pointing to the encrypted data, which is
+ * we should now have wr.data pointing to the encrypted data, which is
* wr->length long
*/
- SSL3_RECORD_set_type(wr, type); /* not needed but helps for debugging */
- SSL3_RECORD_add_length(wr, DTLS1_RT_HEADER_LENGTH);
+ SSL3_RECORD_set_type(&wr, type); /* not needed but helps for debugging */
+ SSL3_RECORD_add_length(&wr, DTLS1_RT_HEADER_LENGTH);
ssl3_record_sequence_update(&(s->rlayer.write_sequence[0]));
@@ -1198,11 +1197,11 @@ int do_dtls1_write(SSL *s, int type, const unsigned char *buf,
* we are in a recursive call; just return the length, don't write
* out anything here
*/
- return wr->length;
+ return wr.length;
}
/* now let's set up wb */
- SSL3_BUFFER_set_left(wb, prefix_len + SSL3_RECORD_get_length(wr));
+ SSL3_BUFFER_set_left(wb, prefix_len + SSL3_RECORD_get_length(&wr));
SSL3_BUFFER_set_offset(wb, 0);
/*
diff --git a/ssl/record/rec_layer_s3.c b/ssl/record/rec_layer_s3.c
index 6a4f92f..91a70e5 100644
--- a/ssl/record/rec_layer_s3.c
+++ b/ssl/record/rec_layer_s3.c
@@ -135,12 +135,13 @@
void RECORD_LAYER_init(RECORD_LAYER *rl, SSL *s)
{
rl->s = s;
- SSL3_RECORD_clear(&rl->rrec);
- SSL3_RECORD_clear(&rl->wrec);
+ SSL3_RECORD_clear(rl->rrec, SSL_MAX_PIPELINES);
}
void RECORD_LAYER_clear(RECORD_LAYER *rl)
{
+ unsigned int pipes;
+
rl->rstate = SSL_ST_READ_HEADER;
/* Do I need to clear read_ahead? As far as I can tell read_ahead did not
@@ -161,9 +162,10 @@ void RECORD_LAYER_clear(RECORD_LAYER *rl)
rl->wpend_buf = NULL;
SSL3_BUFFER_clear(&rl->rbuf);
- SSL3_BUFFER_clear(&rl->wbuf);
- SSL3_RECORD_clear(&rl->rrec);
- SSL3_RECORD_clear(&rl->wrec);
+ for(pipes = 0; pipes < rl->numwpipes; pipes++)
+ SSL3_BUFFER_clear(&rl->wbuf[pipes]);
+ rl->numwpipes = 0;
+ SSL3_RECORD_clear(rl->rrec, SSL_MAX_PIPELINES);
RECORD_LAYER_reset_read_sequence(rl);
RECORD_LAYER_reset_write_sequence(rl);
@@ -176,19 +178,20 @@ void RECORD_LAYER_release(RECORD_LAYER *rl)
{
if (SSL3_BUFFER_is_initialised(&rl->rbuf))
ssl3_release_read_buffer(rl->s);
- if (SSL3_BUFFER_is_initialised(&rl->wbuf))
+ if (rl->numwpipes > 0)
ssl3_release_write_buffer(rl->s);
- SSL3_RECORD_release(&rl->rrec);
+ 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 SSL3_BUFFER_get_left(&rl->wbuf) != 0;
+ return (rl->numwpipes > 0)
+ && SSL3_BUFFER_get_left(&rl->wbuf[rl->numwpipes-1]) != 0;
}
int RECORD_LAYER_set_data(RECORD_LAYER *rl, const unsigned char *buf, int len)
@@ -217,18 +220,32 @@ void RECORD_LAYER_reset_write_sequence(RECORD_LAYER *rl)
memset(rl->write_sequence, 0, sizeof(rl->write_sequence));
}
-int RECORD_LAYER_setup_comp_buffer(RECORD_LAYER *rl)
-{
- return SSL3_RECORD_setup(&(rl)->rrec);
-}
-
int ssl3_pending(const SSL *s)
{
+ unsigned int i;
+ int num = 0;
+
if (s->rlayer.rstate == SSL_ST_READ_BODY)
return 0;
- return (SSL3_RECORD_get_type(&s->rlayer.rrec) == SSL3_RT_APPLICATION_DATA)
- ? SSL3_RECORD_get_length(&s->rlayer.rrec) : 0;
+ for (i = 0; i < RECORD_LAYER_get_numrpipes(&s->rlayer); i++) {
+ if (SSL3_RECORD_get_type(&s->rlayer.rrec[i])
+ != SSL3_RT_APPLICATION_DATA)
+ return 0;
+ num += SSL3_RECORD_get_length(&s->rlayer.rrec[i]);
+ }
+
+ return num;
+}
+
+void SSL_CTX_set_default_read_buffer_len(SSL_CTX *ctx, size_t len)
+{
+ ctx->default_read_buf_len = len;
+}
+
+void SSL_set_default_read_buffer_len(SSL *s, size_t len)
+{
+ SSL3_BUFFER_set_default_len(RECORD_LAYER_get_rbuf(&s->rlayer), len);
}
const char *SSL_rstate_string_long(const SSL *s)
@@ -273,7 +290,7 @@ const char *SSL_rstate_string(const SSL *s)
return (str);
}
-int ssl3_read_n(SSL *s, int n, int max, int extend)
+int ssl3_read_n(SSL *s, int n, int max, int extend, int clearold)
{
/*
* If extend == 0, obtain new n-byte packet; if extend == 1, increase
@@ -281,6 +298,8 @@ int ssl3_read_n(SSL *s, int n, int max, int extend)
* s->s3->rbuf.buf specified by s->packet and s->packet_length. (If
* s->rlayer.read_ahead is set, 'max' bytes may be stored in rbuf [plus
* s->packet_length bytes if extend == 1].)
+ * if clearold == 1, move the packet to the start of the buffer; if
+ * clearold == 0 then leave any old packets where they were
*/
int i, len, left;
size_t align = 0;
@@ -357,7 +376,7 @@ int ssl3_read_n(SSL *s, int n, int max, int extend)
* Move any available bytes to front of buffer: 'len' bytes already
* pointed to by 'packet', 'left' extra ones at the end
*/
- if (s->rlayer.packet != pkt) { /* len > 0 */
+ if (s->rlayer.packet != pkt && clearold == 1) { /* len > 0 */
memmove(pkt, s->rlayer.packet, len + left);
s->rlayer.packet = pkt;
rb->offset = len + align;
@@ -433,10 +452,10 @@ int ssl3_write_bytes(SSL *s, int type, const void *buf_, int len)
int tot;
unsigned int n, nw;
#if !defined(OPENSSL_NO_MULTIBLOCK) && EVP_CIPH_FLAG_TLS1_1_MULTIBLOCK
- unsigned int max_send_fragment;
+ unsigned int max_send_fragment, split_send_fragment, maxpipes;
unsigned int u_len = (unsigned int)len;
#endif
- SSL3_BUFFER *wb = &s->rlayer.wbuf;
+ SSL3_BUFFER *wb = &s->rlayer.wbuf[0];
int i;
if (len < 0) {
@@ -622,13 +641,70 @@ int ssl3_write_bytes(SSL *s, int type, const void *buf_, int len)
}
n = (len - tot);
+
+ split_send_fragment = s->split_send_fragment;
+ /*
+ * If max_pipelines is 0 then this means "undefined" and we default to
+ * 1 pipeline. Similaraly if the cipher does not support pipelined
+ * processing then we also only use 1 pipeline, or if we're not using
+ * explicit IVs
+ */
+ maxpipes = s->max_pipelines;
+ if (maxpipes > SSL_MAX_PIPELINES) {
+ /*
+ * We should have prevented this when we set max_pipelines so we
+ * shouldn't get here
+ */
+ SSLerr(SSL_F_SSL3_WRITE_BYTES, ERR_R_INTERNAL_ERROR);
+ return -1;
+ }
+ if (maxpipes == 0
+ || s->enc_write_ctx == NULL
+ || !(EVP_CIPHER_flags(EVP_CIPHER_CTX_cipher(s->enc_write_ctx))
+ & EVP_CIPH_FLAG_PIPELINE)
+ || !SSL_USE_EXPLICIT_IV(s))
+ maxpipes = 1;
+ if (s->max_send_fragment == 0 || split_send_fragment > s->max_send_fragment
+ || split_send_fragment == 0) {
+ /*
+ * We should have prevented this when we set the split and max send
+ * fragments so we shouldn't get here
+ */
+ SSLerr(SSL_F_SSL3_WRITE_BYTES, ERR_R_INTERNAL_ERROR);
+ return -1;
+ }
+
for (;;) {
- if (n > s->max_send_fragment)
- nw = s->max_send_fragment;
+ unsigned int pipelens[SSL_MAX_PIPELINES], tmppipelen, remain;
+ unsigned int numpipes, j;
+
+ if (n == 0)
+ numpipes = 1;
else
- nw = n;
+ numpipes = ((n - 1) / split_send_fragment) + 1;
+ if (numpipes > maxpipes)
+ numpipes = maxpipes;
- i = do_ssl3_write(s, type, &(buf[tot]), nw, 0);
+ if (n / numpipes >= s->max_send_fragment) {
+ /*
+ * We have enough data to completely fill all available
+ * pipelines
+ */
+ for (j = 0; j < numpipes; j++) {
+ pipelens[j] = s->max_send_fragment;
+ }
+ } else {
+ /* We can partially fill all available pipelines */
+ tmppipelen = n / numpipes;
+ remain = n % numpipes;
+ for (j = 0; j < numpipes; j++) {
+ pipelens[j] = tmppipelen;
+ if (j < remain)
+ pipelens[j]++;
+ }
+ }
+
+ i = do_ssl3_write(s, type, &(buf[tot]), pipelens, numpipes, 0);
if (i <= 0) {
/* XXX should we ssl3_release_write_buffer if i<0? */
s->rlayer.wnum = tot;
@@ -657,23 +733,28 @@ int ssl3_write_bytes(SSL *s, int type, const void *buf_, int len)
}
int do_ssl3_write(SSL *s, int type, const unsigned char *buf,
- unsigned int len, int create_empty_fragment)
+ unsigned int *pipelens, unsigned int numpipes,
+ int create_empty_fragment)
{
- unsigned char *p, *plen;
+ unsigned char *outbuf[SSL_MAX_PIPELINES], *plen[SSL_MAX_PIPELINES];
+ SSL3_RECORD wr[SSL_MAX_PIPELINES];
int i, mac_size, clear = 0;
int prefix_len = 0;
int eivlen;
size_t align = 0;
- SSL3_RECORD *wr;
- SSL3_BUFFER *wb = &s->rlayer.wbuf;
+ SSL3_BUFFER *wb;
SSL_SESSION *sess;
+ unsigned int totlen = 0;
+ unsigned int j;
+ for (j = 0; j < numpipes; j++)
+ totlen += pipelens[j];
/*
* first check if there is a SSL3_BUFFER still being written out. This
* will happen with non blocking IO
*/
- if (SSL3_BUFFER_get_left(wb) != 0)
- return (ssl3_write_pending(s, type, buf, len));
+ if (RECORD_LAYER_write_pending(&s->rlayer))
+ return (ssl3_write_pending(s, type, buf, totlen));
/* If we have an alert to send, lets send it */
if (s->s3->alert_dispatch) {
@@ -683,14 +764,13 @@ int do_ssl3_write(SSL *s, int type, const unsigned char *buf,
/* if it went, fall through and send more stuff */
}
- if (!SSL3_BUFFER_is_initialised(wb))
- if (!ssl3_setup_write_buffer(s))
+ if (s->rlayer.numwpipes < numpipes)
+ if (!ssl3_setup_write_buffer(s, numpipes))
return -1;
- if (len == 0 && !create_empty_fragment)
+ if (totlen == 0 && !create_empty_fragment)
return 0;
- wr = &s->rlayer.wrec;
sess = s->session;
if ((sess == NULL) ||
@@ -720,7 +800,9 @@ int do_ssl3_write(SSL *s, int type, const unsigned char *buf,
* 'prefix_len' bytes are sent out later together with the actual
* payload)
*/
- prefix_len = do_ssl3_write(s, type, buf, 0, 1);
+ unsigned int tmppipelen = 0;
+
+ prefix_len = do_ssl3_write(s, type, buf, &tmppipelen, 1, 1);
if (prefix_len <= 0)
goto err;
@@ -737,6 +819,7 @@ int do_ssl3_write(SSL *s, int type, const unsigned char *buf,
}
if (create_empty_fragment) {
+ wb = &s->rlayer.wbuf[0];
#if defined(SSL3_ALIGN_PAYLOAD) && SSL3_ALIGN_PAYLOAD!=0
/*
* extra fragment would be couple of cipher blocks, which would be
@@ -746,38 +829,24 @@ int do_ssl3_write(SSL *s, int type, const unsigned char *buf,
align = (size_t)SSL3_BUFFER_get_buf(wb) + 2 * SSL3_RT_HEADER_LENGTH;
align = (0-align) & (SSL3_ALIGN_PAYLOAD - 1);
#endif
- p = SSL3_BUFFER_get_buf(wb) + align;
+ outbuf[0] = SSL3_BUFFER_get_buf(wb) + align;
SSL3_BUFFER_set_offset(wb, align);
} else if (prefix_len) {
- p = SSL3_BUFFER_get_buf(wb) + SSL3_BUFFER_get_offset(wb) + prefix_len;
+ wb = &s->rlayer.wbuf[0];
+ outbuf[0] = SSL3_BUFFER_get_buf(wb) + SSL3_BUFFER_get_offset(wb)
+ + prefix_len;
} else {
+ for (j=0; j < numpipes; j++) {
+ wb = &s->rlayer.wbuf[j];
#if defined(SSL3_ALIGN_PAYLOAD) && SSL3_ALIGN_PAYLOAD!=0
- align = (size_t)SSL3_BUFFER_get_buf(wb) + SSL3_RT_HEADER_LENGTH;
- align = (0-align) & (SSL3_ALIGN_PAYLOAD - 1);
+ align = (size_t)SSL3_BUFFER_get_buf(wb) + SSL3_RT_HEADER_LENGTH;
+ align = (-align) & (SSL3_ALIGN_PAYLOAD - 1);
#endif
- p = SSL3_BUFFER_get_buf(wb) + align;
- SSL3_BUFFER_set_offset(wb, align);
+ outbuf[j] = SSL3_BUFFER_get_buf(wb) + align;
+ SSL3_BUFFER_set_offset(wb, align);
+ }
}
- /* write the header */
-
- *(p++) = type & 0xff;
- SSL3_RECORD_set_type(wr, type);
-
- *(p++) = (s->version >> 8);
- /*
- * Some servers hang if iniatial client hello is larger than 256 bytes
- * and record version number > TLS 1.0
- */
- if (SSL_get_state(s) == TLS_ST_CW_CLNT_HELLO
- && !s->renegotiate && TLS1_get_version(s) > TLS1_VERSION)
- *(p++) = 0x1;
- else
- *(p++) = s->version & 0xff;
-
- /* field where we are to write out packet length */
- plen = p;
- p += 2;
/* Explicit IV length, block ciphers appropriate version flag */
if (s->enc_write_ctx && SSL_USE_EXPLICIT_IV(s)) {
int mode = EVP_CIPHER_CTX_mode(s->enc_write_ctx);
@@ -796,94 +865,132 @@ int do_ssl3_write(SSL *s, int type, const unsigned char *buf,
} else
eivlen = 0;
- /* lets setup the record stuff. */
- SSL3_RECORD_set_data(wr, p + eivlen);
- SSL3_RECORD_set_length(wr, (int)len);
- SSL3_RECORD_set_input(wr, (unsigned char *)buf);
+ totlen = 0;
+ /* Clear our SSL3_RECORD structures */
+ memset(wr, 0, sizeof wr);
+ for (j=0; j < numpipes; j++) {
+ /* write the header */
+ *(outbuf[j]++) = type & 0xff;
+ SSL3_RECORD_set_type(&wr[j], type);
- /*
- * we now 'read' from wr->input, wr->length bytes into wr->data
- */
+ *(outbuf[j]++) = (s->version >> 8);
+ /*
+ * Some servers hang if iniatial client hello is larger than 256 bytes
+ * and record version number > TLS 1.0
+ */
+ if (SSL_get_state(s) == TLS_ST_CW_CLNT_HELLO
+ && !s->renegotiate && TLS1_get_version(s) > TLS1_VERSION)
+ *(outbuf[j]++) = 0x1;
+ else
+ *(outbuf[j]++) = s->version & 0xff;
- /* first we compress */
- if (s->compress != NULL) {
- if (!ssl3_do_compress(s)) {
- SSLerr(SSL_F_DO_SSL3_WRITE, SSL_R_COMPRESSION_FAILURE);
- goto err;
- }
- } else {
- memcpy(wr->data, wr->input, wr->length);
- SSL3_RECORD_reset_input(wr);
- }
+ /* field where we are to write out packet length */
+ plen[j] = outbuf[j];
+ outbuf[j] += 2;
- /*
- * we should still have the output to wr->data and the input from
- * wr->input. Length should be wr->length. wr->data still points in the
- * wb->buf
- */
+ /* lets setup the record stuff. */
+ SSL3_RECORD_set_data(&wr[j], outbuf[j] + eivlen);
+ SSL3_RECORD_set_length(&wr[j], (int)pipelens[j]);
+ SSL3_RECORD_set_input(&wr[j], (unsigned char *)&buf[totlen]);
+ totlen += pipelens[j];
- if (!SSL_USE_ETM(s) && mac_size != 0) {
- if (s->method->ssl3_enc->mac(s, &(p[wr->length + eivlen]), 1) < 0)
- goto err;
- SSL3_RECORD_add_length(wr, mac_size);
- }
+ /*
+ * we now 'read' from wr->input, wr->length bytes into wr->data
+ */
- SSL3_RECORD_set_data(wr, p);
- SSL3_RECORD_reset_input(wr);
+ /* first we compress */
+ if (s->compress != NULL) {
+ if (!ssl3_do_compress(s, &wr[j])) {
+ SSLerr(SSL_F_DO_SSL3_WRITE, SSL_R_COMPRESSION_FAILURE);
+ goto err;
+ }
+ } else {
+ memcpy(wr[j].data, wr[j].input, wr[j].length);
+ SSL3_RECORD_reset_input(&wr[j]);
+ }
- if (eivlen) {
/*
- * if (RAND_pseudo_bytes(p, eivlen) <= 0) goto err;
+ * we should still have the output to wr->data and the input from
+ * wr->input. Length should be wr->length. wr->data still points in the
+ * wb->buf
*/
- SSL3_RECORD_add_length(wr, eivlen);
- }
- if (s->method->ssl3_enc->enc(s, 1) < 1)
- goto err;
+ if (!SSL_USE_ETM(s) && mac_size != 0) {
+ if (s->method->ssl3_enc->mac(s, &wr[j],
+ &(outbuf[j][wr[j].length + eivlen]), 1) < 0)
+ goto err;
+ SSL3_RECORD_add_length(&wr[j], mac_size);
+ }
- if (SSL_USE_ETM(s) && mac_size != 0) {
- if (s->method->ssl3_enc->mac(s, p + wr->length, 1) < 0)
- goto err;
- SSL3_RECORD_add_length(wr, mac_size);
+
+ SSL3_RECORD_set_data(&wr[j], outbuf[j]);
+ SSL3_RECORD_reset_input(&wr[j]);
+
+ if (eivlen) {
+ /*
+ * if (RAND_pseudo_bytes(p, eivlen) <= 0) goto err;
+ */
+ SSL3_RECORD_add_length(&wr[j], eivlen);
+ }
}
- /* record length after mac and block padding */
- s2n(SSL3_RECORD_get_length(wr), plen);
+ if (s->method->ssl3_enc->enc(s, wr, numpipes, 1) < 1)
+ goto err;
- if (s->msg_callback)
- s->msg_callback(1, 0, SSL3_RT_HEADER, plen - 5, 5, s,
- s->msg_callback_arg);
+ for (j=0; j < numpipes; j++) {
+ if (SSL_USE_ETM(s) && mac_size != 0) {
+ if (s->method->ssl3_enc->mac(s, &wr[j],
+ outbuf[j] + wr[j].length, 1) < 0)
+ goto err;
+ SSL3_RECORD_add_length(&wr[j], mac_size);
+ }
- /*
- * we should now have wr->data pointing to the encrypted data, which is
- * wr->length long
- */
- SSL3_RECORD_set_type(wr, type); /* not needed but helps for debugging */
- SSL3_RECORD_add_length(wr, SSL3_RT_HEADER_LENGTH);
+ /* record length after mac and block padding */
+ s2n(SSL3_RECORD_get_length(&wr[j]), plen[j]);
+
+ if (s->msg_callback)
+ s->msg_callback(1, 0, SSL3_RT_HEADER, plen[j] - 5, 5, s,
+ s->msg_callback_arg);
- if (create_empty_fragment) {
/*
- * we are in a recursive call; just return the length, don't write
- * out anything here
+ * we should now have wr->data pointing to the encrypted data, which is
+ * wr->length long
*/
- return SSL3_RECORD_get_length(wr);
+ SSL3_RECORD_set_type(&wr[j], type); /* not needed but helps for debugging */
+ SSL3_RECORD_add_length(&wr[j], SSL3_RT_HEADER_LENGTH);
+
+ if (create_empty_fragment) {
+ /*
+ * we are in a recursive call; just return the length, don't write
+ * out anything here
+ */
+ if (j > 0) {
+ /* We should never be pipelining an empty fragment!! */
+ SSLerr(SSL_F_DO_SSL3_WRITE, ERR_R_INTERNAL_ERROR);
+ goto err;
+ }
+ return SSL3_RECORD_get_length(wr);
+ }
+
+ /* now let's set up wb */
+ SSL3_BUFFER_set_left(&s->rlayer.wbuf[j],
+ prefix_len + SSL3_RECORD_get_length(&wr[j]));
}
- /* now let's set up wb */
- SSL3_BUFFER_set_left(wb, prefix_len + SSL3_RECORD_get_length(wr));
+
/*
* memorize arguments so that ssl3_write_pending can detect bad write
* retries later
*/
- s->rlayer.wpend_tot = len;
+ s->rlayer.wpend_tot = totlen;
s->rlayer.wpend_buf = buf;
s->rlayer.wpend_type = type;
- s->rlayer.wpend_ret = len;
+ s->rlayer.wpend_ret = totlen;
/* we now just need to write the buffer */
- return ssl3_write_pending(s, type, buf, len);
+ return ssl3_write_pending(s, type, buf, totlen);
err:
return -1;
}
@@ -893,7 +1000,8 @@ int ssl3_write_pending(SSL *s, int type, const unsigned char *buf,
unsigned int len)
{
int i;
- SSL3_BUFFER *wb = &s->rlayer.wbuf;
+ SSL3_BUFFER *wb = s->rlayer.wbuf;
+ unsigned int currbuf = 0;
/* XXXX */
if ((s->rlayer.wpend_tot > (int)len)
@@ -905,19 +1013,28 @@ int ssl3_write_pending(SSL *s, int type, const unsigned char *buf,
}
for (;;) {
+ /* Loop until we find a buffer we haven't written out yet */
+ if (SSL3_BUFFER_get_left(&wb[currbuf]) == 0
+ && currbuf < s->rlayer.numwpipes - 1) {
+ currbuf++;
+ continue;
+ }
clear_sys_error();
if (s->wbio != NULL) {
s->rwstate = SSL_WRITING;
i = BIO_write(s->wbio,
- (char *)&(SSL3_BUFFER_get_buf(wb)[SSL3_BUFFER_get_offset(wb)]),
- (unsigned int)SSL3_BUFFER_get_left(wb));
+ (char *)&(SSL3_BUFFER_get_buf(&wb[currbuf])[
+ SSL3_BUFFER_get_offset(&wb[currbuf])]),
+ (unsigned int)SSL3_BUFFER_get_left(&wb[currbuf]));
} else {
SSLerr(SSL_F_SSL3_WRITE_PENDING, SSL_R_BIO_NOT_SET);
i = -1;
}
- if (i == SSL3_BUFFER_get_left(wb)) {
- SSL3_BUFFER_set_left(wb, 0);
- SSL3_BUFFER_add_offset(wb, i);
+ if (i == SSL3_BUFFER_get_left(&wb[currbuf])) {
+ SSL3_BUFFER_set_left(&wb[currbuf], 0);
+ SSL3_BUFFER_add_offset(&wb[currbuf], i);
+ if (currbuf + 1 < s->rlayer.numwpipes)
+ continue;
s->rwstate = SSL_NOTHING;
return (s->rlayer.wpend_ret);
} else if (i <= 0) {
@@ -926,12 +1043,12 @@ int ssl3_write_pending(SSL *s, int type, const unsigned char *buf,
* For DTLS, just drop it. That's kind of the whole point in
* using a datagram service
*/
- SSL3_BUFFER_set_left(wb, 0);
+ SSL3_BUFFER_set_left(&wb[currbuf], 0);
}
return (i);
}
- SSL3_BUFFER_add_offset(wb, i);
- SSL3_BUFFER_add_left(wb, -i);
+ SSL3_BUFFER_add_offset(&wb[currbuf], i);
+ SSL3_BUFFER_add_left(&wb[currbuf], -i);
}
}
@@ -968,11 +1085,14 @@ int ssl3_read_bytes(SSL *s, int type, int *recvd_type, unsigned char *buf,
int len, int peek)
{
int al, i, j, ret;
- unsigned int n;
+ unsigned int n, curr_rec, num_recs, read_bytes;
SSL3_RECORD *rr;
+ SSL3_BUFFER *rbuf;
void (*cb) (const SSL *ssl, int type2, int val) = NULL;
- if (!SSL3_BUFFER_is_initialised(&s->rlayer.rbuf)) {
+ rbuf = &s->rlayer.rbuf;
+
+ if (!SSL3_BUFFER_is_initialised(rbuf)) {
/* Not initialized yet */
if (!ssl3_setup_read_buffer(s))
return (-1);
@@ -1029,20 +1149,40 @@ int ssl3_read_bytes(SSL *s, int type, int *recvd_type, unsigned char *buf,
s->rwstate = SSL_NOTHING;
/*-
- * s->s3->rrec.type - is the type of record
- * s->s3->rrec.data, - data
- * s->s3->rrec.off, - offset into 'data' for next read
- * s->s3->rrec.length, - number of bytes.
+ * For each record 'i' up to |num_recs]
+ * rr[i].type - is the type of record
+ * rr[i].data, - data
+ * rr[i].off, - offset into 'data' for next read
+ * rr[i].length, - number of bytes.
*/
- rr = &s->rlayer.rrec;
-
- /* get new packet if necessary */
- if ((SSL3_RECORD_get_length(rr) == 0)
- || (s->rlayer.rstate == SSL_ST_READ_BODY)) {
- ret = ssl3_get_record(s);
- if (ret <= 0)
- return (ret);
- }
+ rr = s->rlayer.rrec;
+ num_recs = RECORD_LAYER_get_numrpipes(&s->rlayer);
+
+ do {
+ /* get new records if necessary */
+ if (num_recs == 0) {
+ ret = ssl3_get_record(s);
+ if (ret <= 0)
+ return (ret);
+ num_recs = RECORD_LAYER_get_numrpipes(&s->rlayer);
+ if (num_recs == 0) {
+ /* Shouldn't happen */
+ al = SSL_AD_INTERNAL_ERROR;
+ SSLerr(SSL_F_SSL3_READ_BYTES, ERR_R_INTERNAL_ERROR);
+ goto f_err;
+ }
+ }
+ /* Skip over any records we have already used or are zero in length */
+ for (curr_rec = 0;
+ curr_rec < num_recs && SSL3_RECORD_get_length(&rr[curr_rec]) == 0;
+ curr_rec++);
+ if (curr_rec == num_recs) {
+ RECORD_LAYER_set_numrpipes(&s->rlayer, 0);
+ num_recs = 0;
+ curr_rec = 0;
+ }
+ } while (num_recs == 0);
+ rr = &rr[curr_rec];
/* we now have a packet which can be read and processed */
@@ -1097,24 +1237,36 @@ int ssl3_read_bytes(SSL *s, int type, int *recvd_type, unsigned char *buf,
if (len <= 0)
return (len);
- if ((unsigned int)len > SSL3_RECORD_get_length(rr))
- n = SSL3_RECORD_get_length(rr);
- else
- n = (unsigned int)len;
-
- memcpy(buf, &(rr->data[rr->off]), n);
- if (!peek) {
- SSL3_RECORD_add_length(rr, -n);
- SSL3_RECORD_add_off(rr, n);
- if (SSL3_RECORD_get_length(rr) == 0) {
- s->rlayer.rstate = SSL_ST_READ_HEADER;
- SSL3_RECORD_set_off(rr, 0);
- if (s->mode & SSL_MODE_RELEASE_BUFFERS
- && SSL3_BUFFER_get_left(&s->rlayer.rbuf) == 0)
- ssl3_release_read_buffer(s);
+ read_bytes = 0;
+ do {
+ if ((unsigned int)len - read_bytes > SSL3_RECORD_get_length(rr))
+ n = SSL3_RECORD_get_length(rr);
+ else
+ n = (unsigned int)len - read_bytes;
+
+ memcpy(buf, &(rr->data[rr->off]), n);
+ buf += n;
+ if (!peek) {
+ SSL3_RECORD_add_length(rr, -n);
+ SSL3_RECORD_add_off(rr, n);
+ if (SSL3_RECORD_get_length(rr) == 0) {
+ s->rlayer.rstate = SSL_ST_READ_HEADER;
+ SSL3_RECORD_set_off(rr, 0);
+ }
}
- }
- return (n);
+ if (SSL3_RECORD_get_length(rr) == 0
+ || (peek && n == SSL3_RECORD_get_length(rr))) {
+ curr_rec++;
+ rr++;
+ }
+ read_bytes += n;
+ } while (type == SSL3_RT_APPLICATION_DATA && curr_rec < num_recs
+ && read_bytes < (unsigned int)len);
+ if (!peek && curr_rec == num_recs
+ && (s->mode & SSL_MODE_RELEASE_BUFFERS)
+ && SSL3_BUFFER_get_left(rbuf) == 0)
+ ssl3_release_read_buffer(s);
+ return read_bytes;
}
/*
@@ -1236,7 +1388,7 @@ int ssl3_read_bytes(SSL *s, int type, int *recvd_type, unsigned char *buf,
}
if (!(s->mode & SSL_MODE_AUTO_RETRY)) {
- if (SSL3_BUFFER_get_left(&s->rlayer.rbuf) == 0) {
+ if (SSL3_BUFFER_get_left(rbuf) == 0) {
/* no read-ahead left? */
BIO *bio;
/*
@@ -1374,7 +1526,7 @@ int ssl3_read_bytes(SSL *s, int type, int *recvd_type, unsigned char *buf,
}
if (!(s->mode & SSL_MODE_AUTO_RETRY)) {
- if (SSL3_BUFFER_get_left(&s->rlayer.rbuf) == 0) {
+ if (SSL3_BUFFER_get_left(rbuf) == 0) {
/* no read-ahead left? */
BIO *bio;
/*
@@ -1458,7 +1610,7 @@ void ssl3_record_sequence_update(unsigned char *seq)
*/
int RECORD_LAYER_is_sslv2_record(RECORD_LAYER *rl)
{
- return SSL3_RECORD_is_sslv2_record(&rl->rrec);
+ return SSL3_RECORD_is_sslv2_record(&rl->rrec[0]);
}
/*
@@ -1466,5 +1618,5 @@ int RECORD_LAYER_is_sslv2_record(RECORD_LAYER *rl)
*/
unsigned int RECORD_LAYER_get_rrec_length(RECORD_LAYER *rl)
{
- return SSL3_RECORD_get_length(&rl->rrec);
+ return SSL3_RECORD_get_length(&rl->rrec[0]);
}
diff --git a/ssl/record/record.h b/ssl/record/record.h
index a3b50dc..6bb941d 100644
--- a/ssl/record/record.h
+++ b/ssl/record/record.h
@@ -118,6 +118,8 @@
typedef struct ssl3_buffer_st {
/* at least SSL3_RT_MAX_PACKET_SIZE bytes, see ssl3_setup_buffers() */
unsigned char *buf;
+ /* default buffer size (or 0 if no default set) */
+ size_t default_len;
/* buffer size */
size_t len;
/* where to 'copy from' */
@@ -252,14 +254,17 @@ typedef struct record_layer_st {
int read_ahead;
/* where we are when reading */
int rstate;
+
+ /* How many pipelines can be used to read data */
+ unsigned int numrpipes;
+ /* How many pipelines can be used to write data */
+ unsigned int numwpipes;
/* read IO goes into here */
SSL3_BUFFER rbuf;
/* write IO goes into here */
- SSL3_BUFFER wbuf;
+ SSL3_BUFFER wbuf[SSL_MAX_PIPELINES];
/* each decoded record goes in here */
- SSL3_RECORD rrec;
- /* goes out from here */
- SSL3_RECORD wrec;
+ SSL3_RECORD rrec[SSL_MAX_PIPELINES];
/* used internally to point at a raw packet */
unsigned char *packet;
@@ -315,27 +320,27 @@ 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);
-int RECORD_LAYER_setup_comp_buffer(RECORD_LAYER *rl);
int RECORD_LAYER_is_sslv2_record(RECORD_LAYER *rl);
unsigned int RECORD_LAYER_get_rrec_length(RECORD_LAYER *rl);
__owur int ssl3_pending(const SSL *s);
__owur int ssl3_write_bytes(SSL *s, int type, const void *buf, int len);
__owur int do_ssl3_write(SSL *s, int type, const unsigned char *buf,
- unsigned int len, int create_empty_fragment);
+ unsigned int *pipelens, unsigned int numpipes,
+ int create_empty_fragment);
__owur int ssl3_read_bytes(SSL *s, int type, int *recvd_type,
unsigned char *buf, int len, int peek);
__owur int ssl3_setup_buffers(SSL *s);
-__owur int ssl3_enc(SSL *s, int send_data);
-__owur int n_ssl3_mac(SSL *ssl, unsigned char *md, int send_data);
+__owur int ssl3_enc(SSL *s, SSL3_RECORD *inrecs, unsigned int n_recs, int send);
+__owur int n_ssl3_mac(SSL *ssl, SSL3_RECORD *rec, unsigned char *md, int send);
__owur int ssl3_write_pending(SSL *s, int type, const unsigned char *buf,
unsigned int len);
-__owur int tls1_enc(SSL *s, int snd);
-__owur int tls1_mac(SSL *ssl, unsigned char *md, int snd);
+__owur int tls1_enc(SSL *s, SSL3_RECORD *recs, unsigned int n_recs, int send);
+__owur int tls1_mac(SSL *ssl, SSL3_RECORD *rec, unsigned char *md, int send);
int DTLS_RECORD_LAYER_new(RECORD_LAYER *rl);
void DTLS_RECORD_LAYER_free(RECORD_LAYER *rl);
void DTLS_RECORD_LAYER_clear(RECORD_LAYER *rl);
diff --git a/ssl/record/record_locl.h b/ssl/record/record_locl.h
index 333d3c9..81335fa 100644
--- a/ssl/record/record_locl.h
+++ b/ssl/record/record_locl.h
@@ -119,18 +119,19 @@
/* Functions/macros provided by the RECORD_LAYER component */
#define RECORD_LAYER_get_rbuf(rl) (&(rl)->rbuf)
-#define RECORD_LAYER_get_wbuf(rl) (&(rl)->wbuf)
-#define RECORD_LAYER_get_rrec(rl) (&(rl)->rrec)
-#define RECORD_LAYER_get_wrec(rl) (&(rl)->wrec)
+#define RECORD_LAYER_get_wbuf(rl) ((rl)->wbuf)
+#define RECORD_LAYER_get_rrec(rl) ((rl)->rrec)
#define RECORD_LAYER_set_packet(rl, p) ((rl)->packet = (p))
#define RECORD_LAYER_reset_packet_length(rl) ((rl)->packet_length = 0)
#define RECORD_LAYER_get_rstate(rl) ((rl)->rstate)
#define RECORD_LAYER_set_rstate(rl, st) ((rl)->rstate = (st))
#define RECORD_LAYER_get_read_sequence(rl) ((rl)->read_sequence)
#define RECORD_LAYER_get_write_sequence(rl) ((rl)->write_sequence)
+#define RECORD_LAYER_get_numrpipes(rl) ((rl)->numrpipes)
+#define RECORD_LAYER_set_numrpipes(rl, n) ((rl)->numrpipes = (n))
#define DTLS_RECORD_LAYER_get_r_epoch(rl) ((rl)->d->r_epoch)
-__owur int ssl3_read_n(SSL *s, int n, int max, int extend);
+__owur int ssl3_read_n(SSL *s, int n, int max, int extend, int clearold);
void RECORD_LAYER_set_write_sequence(RECORD_LAYER *rl, const unsigned char *ws);
DTLS1_BITMAP *dtls1_get_bitmap(SSL *s, SSL3_RECORD *rr,
@@ -160,12 +161,13 @@ void dtls1_record_bitmap_update(SSL *s, DTLS1_BITMAP *bitmap);
#define SSL3_BUFFER_set_offset(b, o) ((b)->offset = (o))
#define SSL3_BUFFER_add_offset(b, o) ((b)->offset += (o))
#define SSL3_BUFFER_is_initialised(b) ((b)->buf != NULL)
+#define SSL3_BUFFER_set_default_len(b, l) ((b)->default_len = (l))
void SSL3_BUFFER_clear(SSL3_BUFFER *b);
void SSL3_BUFFER_set_data(SSL3_BUFFER *b, const unsigned char *d, int n);
void SSL3_BUFFER_release(SSL3_BUFFER *b);
__owur int ssl3_setup_read_buffer(SSL *s);
-__owur int ssl3_setup_write_buffer(SSL *s);
+__owur int ssl3_setup_write_buffer(SSL *s, unsigned int numwpipes);
int ssl3_release_read_buffer(SSL *s);
int ssl3_release_write_buffer(SSL *s);
@@ -189,13 +191,12 @@ int ssl3_release_write_buffer(SSL *s);
#define SSL3_RECORD_is_sslv2_record(r) \
((r)->rec_version == SSL2_VERSION)
-void SSL3_RECORD_clear(SSL3_RECORD *r);
-void SSL3_RECORD_release(SSL3_RECORD *r);
-int SSL3_RECORD_setup(SSL3_RECORD *r);
+void SSL3_RECORD_clear(SSL3_RECORD *r, unsigned int num_recs);
+void SSL3_RECORD_release(SSL3_RECORD *r, unsigned int num_recs);
void SSL3_RECORD_set_seq_num(SSL3_RECORD *r, const unsigned char *seq_num);
int ssl3_get_record(SSL *s);
-__owur int ssl3_do_compress(SSL *ssl);
-__owur int ssl3_do_uncompress(SSL *ssl);
+__owur int ssl3_do_compress(SSL *ssl, SSL3_RECORD *wr);
+__owur int ssl3_do_uncompress(SSL *ssl, SSL3_RECORD *rr);
void ssl3_cbc_copy_mac(unsigned char *out,
const SSL3_RECORD *rec, unsigned md_size);
__owur int ssl3_cbc_remove_padding(SSL3_RECORD *rec,
diff --git a/ssl/record/ssl3_buffer.c b/ssl/record/ssl3_buffer.c
index 3c03499..53ae0f4 100644
--- a/ssl/record/ssl3_buffer.c
+++ b/ssl/record/ssl3_buffer.c
@@ -120,16 +120,13 @@ void SSL3_BUFFER_set_data(SSL3_BUFFER *b, const unsigned char *d, int n)
}
/*
- * Clear the contents of an SSL3_BUFFER but retain any memory allocated
+ * Clear the contents of an SSL3_BUFFER but retain any memory allocated. Also
+ * retains the default_len setting
*/
void SSL3_BUFFER_clear(SSL3_BUFFER *b)
{
- unsigned char *buf = b->buf;
- size_t len = b->len;
-
- memset(b, 0, sizeof(*b));
- b->buf = buf;
- b->len = len;
+ b->offset = 0;
+ b->left = 0;
}
void SSL3_BUFFER_release(SSL3_BUFFER *b)
@@ -162,6 +159,8 @@ int ssl3_setup_read_buffer(SSL *s)
if (ssl_allow_compression(s))
len += SSL3_RT_MAX_COMPRESSED_OVERHEAD;
#endif
+ if (b->default_len > len)
+ len = b->default_len;
if ((p = OPENSSL_malloc(len)) == NULL)
goto err;
b->buf = p;
@@ -176,13 +175,15 @@ int ssl3_setup_read_buffer(SSL *s)
return 0;
}
-int ssl3_setup_write_buffer(SSL *s)
+int ssl3_setup_write_buffer(SSL *s, unsigned int numwpipes)
{
unsigned char *p;
size_t len, align = 0, headerlen;
SSL3_BUFFER *wb;
+ unsigned int currpipe;
+
+ s->rlayer.numwpipes = numwpipes;
- wb = RECORD_LAYER_get_wbuf(&s->rlayer);
if (SSL_IS_DTLS(s))
headerlen = DTLS1_RT_HEADER_LENGTH + 1;
@@ -193,20 +194,25 @@ int ssl3_setup_write_buffer(SSL *s)
align = (-SSL3_RT_HEADER_LENGTH) & (SSL3_ALIGN_PAYLOAD - 1);
#endif
- if (wb->buf == NULL) {
- len = s->max_send_fragment
- + SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD + headerlen + align;
+ len = s->max_send_fragment
+ + SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD + headerlen + align;
#ifndef OPENSSL_NO_COMP
- if (ssl_allow_compression(s))
- len += SSL3_RT_MAX_COMPRESSED_OVERHEAD;
+ if (ssl_allow_compression(s))
+ len += SSL3_RT_MAX_COMPRESSED_OVERHEAD;
#endif
- if (!(s->options & SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS))
- len += headerlen + align + SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD;
+ if (!(s->options & SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS))
+ len += headerlen + align + SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD;
- if ((p = OPENSSL_malloc(len)) == NULL)
- goto err;
- wb->buf = p;
- wb->len = len;
+ wb = RECORD_LAYER_get_wbuf(&s->rlayer);
+ for (currpipe = 0; currpipe < numwpipes; currpipe++) {
+ if (wb[currpipe].buf == NULL) {
+ if ((p = OPENSSL_malloc(len)) == NULL) {
+ s->rlayer.numwpipes = currpipe;
+ goto err;
+ }
+ wb[currpipe].buf = p;
+ wb[currpipe].len = len;
+ }
}
return 1;
@@ -220,7 +226,7 @@ int ssl3_setup_buffers(SSL *s)
{
if (!ssl3_setup_read_buffer(s))
return 0;
- if (!ssl3_setup_write_buffer(s))
+ if (!ssl3_setup_write_buffer(s, 1))
return 0;
return 1;
}
@@ -228,11 +234,17 @@ int ssl3_setup_buffers(SSL *s)
int ssl3_release_write_buffer(SSL *s)
{
SSL3_BUFFER *wb;
+ unsigned int pipes;
- wb = RECORD_LAYER_get_wbuf(&s->rlayer);
+ pipes = s->rlayer.numwpipes;
+ while (pipes > 0) {
+ wb = &RECORD_LAYER_get_wbuf(&s->rlayer)[pipes - 1];
- OPENSSL_free(wb->buf);
- wb->buf = NULL;
+ OPENSSL_free(wb->buf);
+ wb->buf = NULL;
+ pipes--;
+ }
+ s->rlayer.numwpipes = 0;
return 1;
}
diff --git a/ssl/record/ssl3_record.c b/ssl/record/ssl3_record.c
index 7f89cc0..3c28572 100644
--- a/ssl/record/ssl3_record.c
+++ b/ssl/record/ssl3_record.c
@@ -134,28 +134,27 @@ static const unsigned char ssl3_pad_2[48] = {
/*
* Clear the contents of an SSL3_RECORD but retain any memory allocated
*/
-void SSL3_RECORD_clear(SSL3_RECORD *r)
+void SSL3_RECORD_clear(SSL3_RECORD *r, unsigned int num_recs)
{
- unsigned char *comp = r->comp;
+ unsigned char *comp;
+ unsigned int i;
- memset(r, 0, sizeof(*r));
- r->comp = comp;
-}
+ for (i = 0; i < num_recs; i++) {
+ comp = r[i].comp;
-void SSL3_RECORD_release(SSL3_RECORD *r)
-{
- OPENSSL_free(r->comp);
- r->comp = NULL;
+ memset(&r[i], 0, sizeof(*r));
+ r[i].comp = comp;
+ }
}
-int SSL3_RECORD_setup(SSL3_RECORD *r)
+void SSL3_RECORD_release(SSL3_RECORD *r, unsigned int num_recs)
{
- if (r->comp == NULL)
- r->comp = (unsigned char *)
- OPENSSL_malloc(SSL3_RT_MAX_ENCRYPTED_LENGTH);
- if (r->comp == NULL)
- return 0;
- return 1;
+ unsigned int i;
+
+ for (i = 0; i < num_recs; i++) {
+ OPENSSL_free(r[i].comp);
+ r[i].comp = NULL;
+ }
}
void SSL3_RECORD_set_seq_num(SSL3_RECORD *r, const unsigned char *seq_num)
@@ -163,6 +162,46 @@ void SSL3_RECORD_set_seq_num(SSL3_RECORD *r, const unsigned char *seq_num)
memcpy(r->seq_num, seq_num, SEQ_NUM_SIZE);
}
+
+/*
+ * Peeks ahead into "read_ahead" data to see if we have a whole record waiting
+ * for us in the buffer.
+ */
+static int ssl3_record_app_data_waiting(SSL *s)
+{
+ SSL3_BUFFER *rbuf;
+ int left, len;
+ unsigned char *p;
+
+ rbuf = RECORD_LAYER_get_rbuf(&s->rlayer);
+
+ p = SSL3_BUFFER_get_buf(rbuf);
+ if (p == NULL)
+ return 0;
+
+ left = SSL3_BUFFER_get_left(rbuf);
+
+ if (left < SSL3_RT_HEADER_LENGTH)
+ return 0;
+
+ p += SSL3_BUFFER_get_offset(rbuf);
+
+ /*
+ * We only check the type and record length, we will sanity check version
+ * etc later
+ */
+ if (*p != SSL3_RT_APPLICATION_DATA)
+ return 0;
+
+ p += 3;
+ n2s(p, len);
+
+ if (left < SSL3_RT_HEADER_LENGTH + len)
+ return 0;
+
+ return 1;
+}
+
/*
* MAX_EMPTY_RECORDS defines the number of consecutive, empty records that
* will be processed per call to ssl3_get_record. Without this limit an
@@ -173,13 +212,16 @@ void SSL3_RECORD_set_seq_num(SSL3_RECORD *r, const unsigned char *seq_num)
#define SSL2_RT_HEADER_LENGTH 2
/*-
- * Call this to get a new input record.
+ * Call this to get new input records.
* It will return <= 0 if more data is needed, normally due to an error
* or non-blocking IO.
- * When it finishes, one packet has been decoded and can be found in
- * ssl->s3->rrec.type - is the type of record
- * ssl->s3->rrec.data, - data
- * ssl->s3->rrec.length, - number of bytes
+ * When it finishes, |numrpipes| records have been decoded. For each record 'i':
+ * rr[i].type - is the type of record
+ * rr[i].data, - data
+ * rr[i].length, - number of bytes
+ * Multiple records will only be returned if the record types are all
+ * SSL3_RT_APPLICATION_DATA. The number of records returned will always be <=
+ * |max_pipelines|
*/
/* used only by ssl3_read_bytes */
int ssl3_get_record(SSL *s)
@@ -187,177 +229,205 @@ int ssl3_get_record(SSL *s)
int ssl_major, ssl_minor, al;
int enc_err, n, i, ret = -1;
SSL3_RECORD *rr;
+ SSL3_BUFFER *rbuf;
SSL_SESSION *sess;
unsigned char *p;
unsigned char md[EVP_MAX_MD_SIZE];
short version;
unsigned mac_size;
- unsigned empty_record_count = 0;
+ unsigned empty_record_count = 0, curr_empty = 0;
+ unsigned int num_recs = 0;
+ unsigned int max_recs;
+ unsigned int j;
rr = RECORD_LAYER_get_rrec(&s->rlayer);
+ rbuf = RECORD_LAYER_get_rbuf(&s->rlayer);
+ max_recs = s->max_pipelines;
+ if (max_recs == 0)
+ max_recs = 1;
sess = s->session;
again:
- /* check if we have the header */
- if ((RECORD_LAYER_get_rstate(&s->rlayer) != SSL_ST_READ_BODY) ||
- (RECORD_LAYER_get_packet_length(&s->rlayer) < SSL3_RT_HEADER_LENGTH)) {
- n = ssl3_read_n(s, SSL3_RT_HEADER_LENGTH,
- SSL3_BUFFER_get_len(&s->rlayer.rbuf), 0);
- if (n <= 0)
- return (n); /* error or non-blocking */
- RECORD_LAYER_set_rstate(&s->rlayer, SSL_ST_READ_BODY);
-
- p = RECORD_LAYER_get_packet(&s->rlayer);
+ do {
+ /* check if we have the header */
+ if ((RECORD_LAYER_get_rstate(&s->rlayer) != SSL_ST_READ_BODY) ||
+ (RECORD_LAYER_get_packet_length(&s->rlayer)
+ < SSL3_RT_HEADER_LENGTH)) {
+ n = ssl3_read_n(s, SSL3_RT_HEADER_LENGTH,
+ SSL3_BUFFER_get_len(rbuf), 0, num_recs == 0 ? 1 : 0);
+ if (n <= 0)
+ return (n); /* error or non-blocking */
+ RECORD_LAYER_set_rstate(&s->rlayer, SSL_ST_READ_BODY);
+
+ p = RECORD_LAYER_get_packet(&s->rlayer);
- /*
- * Check whether this is a regular record or an SSLv2 style record. The
- * latter is only used in an initial ClientHello for old clients. We
- * check s->read_hash and s->enc_read_ctx to ensure this does not apply
- * during renegotiation
- */
- if (s->first_packet && s->server && !s->read_hash && !s->enc_read_ctx
- && (p[0] & 0x80) && (p[2] == SSL2_MT_CLIENT_HELLO)) {
- /* SSLv2 style record */
- rr->type = SSL3_RT_HANDSHAKE;
- rr->rec_version = SSL2_VERSION;
-
- rr->length = ((p[0] & 0x7f) << 8) | p[1];
-
- if (rr->length > SSL3_BUFFER_get_len(&s->rlayer.rbuf)
- - SSL2_RT_HEADER_LENGTH) {
- al = SSL_AD_RECORD_OVERFLOW;
- SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_PACKET_LENGTH_TOO_LONG);
- goto f_err;
- }
+ /*
+ * Check whether this is a regular record or an SSLv2 style record.
+ * The latter is only used in an initial ClientHello for old
+ * clients. We check s->read_hash and s->enc_read_ctx to ensure this
+ * does not apply during renegotiation
+ */
+ if (s->first_packet && s->server && !s->read_hash
+ && !s->enc_read_ctx
+ && (p[0] & 0x80) && (p[2] == SSL2_MT_CLIENT_HELLO)) {
+ /* SSLv2 style record */
+ rr[num_recs].type = SSL3_RT_HANDSHAKE;
+ rr[num_recs].rec_version = SSL2_VERSION;
+
+ rr[num_recs].length = ((p[0] & 0x7f) << 8) | p[1];
+
+ if (rr[num_recs].length > SSL3_BUFFER_get_len(&rbuf[num_recs])
+ - SSL2_RT_HEADER_LENGTH) {
+ al = SSL_AD_RECORD_OVERFLOW;
+ SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_PACKET_LENGTH_TOO_LONG);
+ goto f_err;
+ }
- if (rr->length < MIN_SSL2_RECORD_LEN) {
- al = SSL_AD_HANDSHAKE_FAILURE;
- SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_LENGTH_TOO_SHORT);
- goto f_err;
- }
- } else {
- /* SSLv3+ style record */
- if (s->msg_callback)
- s->msg_callback(0, 0, SSL3_RT_HEADER, p, 5, s,
- s->msg_callback_arg);
-
- /* Pull apart the header into the SSL3_RECORD */
- rr->type = *(p++);
- ssl_major = *(p++);
- ssl_minor = *(p++);
- version = (ssl_major << 8) | ssl_minor;
- rr->rec_version = version;
- n2s(p, rr->length);
-
- /* Lets check version */
- if (!s->first_packet && version != s->version) {
- SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_WRONG_VERSION_NUMBER);
- if ((s->version & 0xFF00) == (version & 0xFF00)
- && !s->enc_write_ctx && !s->write_hash) {
- if (rr->type == SSL3_RT_ALERT) {
+ if (rr[num_recs].length < MIN_SSL2_RECORD_LEN) {
+ al = SSL_AD_HANDSHAKE_FAILURE;
+ SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_LENGTH_TOO_SHORT);
+ goto f_err;
+ }
+ } else {
+ /* SSLv3+ style record */
+ if (s->msg_callback)
+ s->msg_callback(0, 0, SSL3_RT_HEADER, p, 5, s,
+ s->msg_callback_arg);
+
+ /* Pull apart the header into the SSL3_RECORD */
+ rr[num_recs].type = *(p++);
+ ssl_major = *(p++);
+ ssl_minor = *(p++);
+ version = (ssl_major << 8) | ssl_minor;
+ rr[num_recs].rec_version = version;
+ n2s(p, rr[num_recs].length);
+
+ /* Lets check version */
+ if (!s->first_packet && version != s->version) {
+ SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_WRONG_VERSION_NUMBER);
+ if ((s->version & 0xFF00) == (version & 0xFF00)
+ && !s->enc_write_ctx && !s->write_hash) {
+ if (rr->type == SSL3_RT_ALERT) {
+ /*
+ * The record is using an incorrect version number,
+ * but what we've got appears to be an alert. We
+ * haven't read the body yet to check whether its a
+ * fatal or not - but chances are it is. We probably
+ * shouldn't send a fatal alert back. We'll just
+ * end.
+ */
+ goto err;
+ }
/*
- * The record is using an incorrect version number, but
- * what we've got appears to be an alert. We haven't
- * read the body yet to check whether its a fatal or
- * not - but chances are it is. We probably shouldn't
- * send a fatal alert back. We'll just end.
+ * Send back error using their minor version number :-)
*/
- goto err;
+ s->version = (unsigned short)version;
}
- /*
- * Send back error using their minor version number :-)
- */
- s->version = (unsigned short)version;
+ al = SSL_AD_PROTOCOL_VERSION;
+ goto f_err;
}
- al = SSL_AD_PROTOCOL_VERSION;
- goto f_err;
- }
- if ((version >> 8) != SSL3_VERSION_MAJOR) {
- if (s->first_packet) {
- /* Go back to start of packet, look at the five bytes
- * that we have. */
- p = RECORD_LAYER_get_packet(&s->rlayer);
- if (strncmp((char *)p, "GET ", 4) == 0 ||
- strncmp((char *)p, "POST ", 5) == 0 ||
- strncmp((char *)p, "HEAD ", 5) == 0 ||
- strncmp((char *)p, "PUT ", 4) == 0) {
- SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_HTTP_REQUEST);
- goto err;
- } else if (strncmp((char *)p, "CONNE", 5) == 0) {
- SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_HTTPS_PROXY_REQUEST);
- goto err;
+ if ((version >> 8) != SSL3_VERSION_MAJOR) {
+ if (s->first_packet) {
+ /* Go back to start of packet, look at the five bytes
+ * that we have. */
+ p = RECORD_LAYER_get_packet(&s->rlayer);
+ if (strncmp((char *)p, "GET ", 4) == 0 ||
+ strncmp((char *)p, "POST ", 5) == 0 ||
+ strncmp((char *)p, "HEAD ", 5) == 0 ||
+ strncmp((char *)p, "PUT ", 4) == 0) {
+ SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_HTTP_REQUEST);
+ goto err;
+ } else if (strncmp((char *)p, "CONNE", 5) == 0) {
+ SSLerr(SSL_F_SSL3_GET_RECORD,
+ SSL_R_HTTPS_PROXY_REQUEST);
+ goto err;
+ }
}
+ SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_WRONG_VERSION_NUMBER);
+ goto err;
}
- SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_WRONG_VERSION_NUMBER);
- goto err;
- }
- if (rr->length >
- SSL3_BUFFER_get_len(&s->rlayer.rbuf)
- - SSL3_RT_HEADER_LENGTH) {
- al = SSL_AD_RECORD_OVERFLOW;
- SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_PACKET_LENGTH_TOO_LONG);
- goto f_err;
+ if (rr[num_recs].length >
+ SSL3_BUFFER_get_len(rbuf) - SSL3_RT_HEADER_LENGTH) {
+ al = SSL_AD_RECORD_OVERFLOW;
+ SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_PACKET_LENGTH_TOO_LONG);
+ goto f_err;
+ }
}
+
+ /* now s->rlayer.rstate == SSL_ST_READ_BODY */
}
- /* now s->rlayer.rstate == SSL_ST_READ_BODY */
- }
+ /*
+ * s->rlayer.rstate == SSL_ST_READ_BODY, get and decode the data.
+ * Calculate how much more data we need to read for the rest of the
+ * record
+ */
+ if (rr[num_recs].rec_version == SSL2_VERSION) {
+ i = rr[num_recs].length + SSL2_RT_HEADER_LENGTH
+ - SSL3_RT_HEADER_LENGTH;
+ } else {
+ i = rr[num_recs].length;
+ }
+ if (i > 0) {
+ /* now s->packet_length == SSL3_RT_HEADER_LENGTH */
- /*
- * s->rlayer.rstate == SSL_ST_READ_BODY, get and decode the data.
- * Calculate how much more data we need to read for the rest of the record
- */
- if (rr->rec_version == SSL2_VERSION) {
- i = rr->length + SSL2_RT_HEADER_LENGTH - SSL3_RT_HEADER_LENGTH;
- } else {
- i = rr->length;
- }
- if (i > 0) {
- /* now s->packet_length == SSL3_RT_HEADER_LENGTH */
+ n = ssl3_read_n(s, i, i, 1, 0);
+ if (n <= 0)
+ return (n); /* error or non-blocking io */
+ }
- n = ssl3_read_n(s, i, i, 1);
- if (n <= 0)
- return (n); /* error or non-blocking io */
- }
+ /* set state for later operations */
+ RECORD_LAYER_set_rstate(&s->rlayer, SSL_ST_READ_HEADER);
- /* set state for later operations */
- RECORD_LAYER_set_rstate(&s->rlayer, SSL_ST_READ_HEADER);
+ /*
+ * At this point, s->packet_length == SSL3_RT_HEADER_LENGTH + rr->length,
+ * or s->packet_length == SSL2_RT_HEADER_LENGTH + rr->length
+ * and we have that many bytes in s->packet
+ */
+ if(rr[num_recs].rec_version == SSL2_VERSION) {
+ rr[num_recs].input =
+ &(RECORD_LAYER_get_packet(&s->rlayer)[SSL2_RT_HEADER_LENGTH]);
+ } else {
+ rr[num_recs].input =
+ &(RECORD_LAYER_get_packet(&s->rlayer)[SSL3_RT_HEADER_LENGTH]);
+ }
- /*
- * At this point, s->packet_length == SSL3_RT_HEADER_LENGTH + rr->length,
- * or s->packet_length == SSL2_RT_HEADER_LENGTH + rr->length
- * and we have that many bytes in s->packet
- */
- if(rr->rec_version == SSL2_VERSION) {
- rr->input = &(RECORD_LAYER_get_packet(&s->rlayer)[SSL2_RT_HEADER_LENGTH]);
- } else {
- rr->input = &(RECORD_LAYER_get_packet(&s->rlayer)[SSL3_RT_HEADER_LENGTH]);
- }
+ /*
+ * ok, we can now read from 's->packet' data into 'rr' rr->input points
+ * at rr->length bytes, which need to be copied into rr->data by either
+ * the decryption or by the decompression When the data is 'copied' into
+ * the rr->data buffer, rr->input will be pointed at the new buffer
+ */
- /*
- * ok, we can now read from 's->packet' data into 'rr' rr->input points
- * at rr->length bytes, which need to be copied into rr->data by either
- * the decryption or by the decompression When the data is 'copied' into
- * the rr->data buffer, rr->input will be pointed at the new buffer
- */
+ /*
+ * We now have - encrypted [ MAC [ compressed [ plain ] ] ] rr->length
+ * bytes of encrypted compressed stuff.
+ */
- /*
- * We now have - encrypted [ MAC [ compressed [ plain ] ] ] rr->length
- * bytes of encrypted compressed stuff.
- */
+ /* check is not needed I believe */
+ if (rr[num_recs].length > SSL3_RT_MAX_ENCRYPTED_LENGTH) {
+ al = SSL_AD_RECORD_OVERFLOW;
+ SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_ENCRYPTED_LENGTH_TOO_LONG);
+ goto f_err;
+ }
+
+ /* decrypt in place in 'rr->input' */
+ rr[num_recs].data = rr[num_recs].input;
+ rr[num_recs].orig_len = rr[num_recs].length;
+ num_recs++;
+
+ /* we have pulled in a full packet so zero things */
+ RECORD_LAYER_reset_packet_length(&s->rlayer);
+ } while (num_recs < max_recs && rr->type == SSL3_RT_APPLICATION_DATA
+ && SSL_USE_EXPLICIT_IV(s)
+ && s->enc_read_ctx != NULL
+ && (EVP_CIPHER_flags(EVP_CIPHER_CTX_cipher(s->enc_read_ctx))
+ & EVP_CIPH_FLAG_PIPELINE)
+ && ssl3_record_app_data_waiting(s));
- /* check is not needed I believe */
- if (rr->length > SSL3_RT_MAX_ENCRYPTED_LENGTH) {
- al = SSL_AD_RECORD_OVERFLOW;
- SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_ENCRYPTED_LENGTH_TOO_LONG);
- goto f_err;
- }
- /* decrypt in place in 'rr->input' */
- rr->data = rr->input;
- rr->orig_len = rr->length;
/*
* If in encrypt-then-mac mode calculate mac from encrypted record. All
* the details below are public so no timing details can leak.
@@ -366,23 +436,25 @@ int ssl3_get_record(SSL *s)
unsigned char *mac;
mac_size = EVP_MD_CTX_size(s->read_hash);
OPENSSL_assert(mac_size <= EVP_MAX_MD_SIZE);
- if (rr->length < mac_size) {
- al = SSL_AD_DECODE_ERROR;
- SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_LENGTH_TOO_SHORT);
- goto f_err;
- }
- rr->length -= mac_size;
- mac = rr->data + rr->length;
- i = s->method->ssl3_enc->mac(s, md, 0 /* not send */ );
- if (i < 0 || CRYPTO_memcmp(md, mac, (size_t)mac_size) != 0) {
- al = SSL_AD_BAD_RECORD_MAC;
- SSLerr(SSL_F_SSL3_GET_RECORD,
- SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC);
- goto f_err;
+ for (j = 0; j < num_recs; j++) {
+ if (rr[j].length < mac_size) {
+ al = SSL_AD_DECODE_ERROR;
+ SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_LENGTH_TOO_SHORT);
+ goto f_err;
+ }
+ rr[j].length -= mac_size;
+ mac = rr[j].data + rr[j].length;
+ i = s->method->ssl3_enc->mac(s, &rr[j], md, 0 /* not send */ );
+ if (i < 0 || CRYPTO_memcmp(md, mac, (size_t)mac_size) != 0) {
+ al = SSL_AD_BAD_RECORD_MAC;
+ SSLerr(SSL_F_SSL3_GET_RECORD,
+ SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC);
+ goto f_err;
+ }
}
}
- enc_err = s->method->ssl3_enc->enc(s, 0);
+ enc_err = s->method->ssl3_enc->enc(s, rr, num_recs, 0);
/*-
* enc_err is:
* 0: (in non-constant time) if the record is publically invalid.
@@ -411,50 +483,53 @@ int ssl3_get_record(SSL *s)
/* s->read_hash != NULL => mac_size != -1 */
unsigned char *mac = NULL;
unsigned char mac_tmp[EVP_MAX_MD_SIZE];
+
mac_size = EVP_MD_CTX_size(s->read_hash);
OPENSSL_assert(mac_size <= EVP_MAX_MD_SIZE);
- /*
- * orig_len is the length of the record before any padding was
- * removed. This is public information, as is the MAC in use,
- * therefore we can safely process the record in a different amount
- * of time if it's too short to possibly contain a MAC.
- */
- if (rr->orig_len < mac_size ||
- /* CBC records must have a padding length byte too. */
- (EVP_CIPHER_CTX_mode(s->enc_read_ctx) == EVP_CIPH_CBC_MODE &&
- rr->orig_len < mac_size + 1)) {
- al = SSL_AD_DECODE_ERROR;
- SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_LENGTH_TOO_SHORT);
- goto f_err;
- }
-
- if (EVP_CIPHER_CTX_mode(s->enc_read_ctx) == EVP_CIPH_CBC_MODE) {
- /*
- * We update the length so that the TLS header bytes can be
- * constructed correctly but we need to extract the MAC in
- * constant time from within the record, without leaking the
- * contents of the padding bytes.
- */
- mac = mac_tmp;
- ssl3_cbc_copy_mac(mac_tmp, rr, mac_size);
- rr->length -= mac_size;
- } else {
+ for (j=0; j < num_recs; j++) {
/*
- * In this case there's no padding, so |rec->orig_len| equals
- * |rec->length| and we checked that there's enough bytes for
- * |mac_size| above.
+ * orig_len is the length of the record before any padding was
+ * removed. This is public information, as is the MAC in use,
+ * therefore we can safely process the record in a different amount
+ * of time if it's too short to possibly contain a MAC.
*/
- rr->length -= mac_size;
- mac = &rr->data[rr->length];
- }
+ if (rr[j].orig_len < mac_size ||
+ /* CBC records must have a padding length byte too. */
+ (EVP_CIPHER_CTX_mode(s->enc_read_ctx) == EVP_CIPH_CBC_MODE &&
+ rr[j].orig_len < mac_size + 1)) {
+ al = SSL_AD_DECODE_ERROR;
+ SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_LENGTH_TOO_SHORT);
+ goto f_err;
+ }
- i = s->method->ssl3_enc->mac(s, md, 0 /* not send */ );
- if (i < 0 || mac == NULL
- || CRYPTO_memcmp(md, mac, (size_t)mac_size) != 0)
- enc_err = -1;
- if (rr->length > SSL3_RT_MAX_COMPRESSED_LENGTH + mac_size)
- enc_err = -1;
+ if (EVP_CIPHER_CTX_mode(s->enc_read_ctx) == EVP_CIPH_CBC_MODE) {
+ /*
+ * We update the length so that the TLS header bytes can be
+ * constructed correctly but we need to extract the MAC in
+ * constant time from within the record, without leaking the
+ * contents of the padding bytes.
+ */
+ mac = mac_tmp;
+ ssl3_cbc_copy_mac(mac_tmp, &rr[j], mac_size);
+ rr[j].length -= mac_size;
+ } else {
+ /*
+ * In this case there's no padding, so |rec->orig_len| equals
+ * |rec->length| and we checked that there's enough bytes for
+ * |mac_size| above.
+ */
+ rr[j].length -= mac_size;
+ mac = &rr[j].data[rr[j].length];
+ }
+
+ i = s->method->ssl3_enc->mac(s, &rr[j], md, 0 /* not send */ );
+ if (i < 0 || mac == NULL
+ || CRYPTO_memcmp(md, mac, (size_t)mac_size) != 0)
+ enc_err = -1;
+ if (rr->length > SSL3_RT_MAX_COMPRESSED_LENGTH + mac_size)
+ enc_err = -1;
+ }
}
if (enc_err < 0) {
@@ -471,84 +546,92 @@ int ssl3_get_record(SSL *s)
goto f_err;
}
- /* r->length is now just compressed */
- if (s->expand != NULL) {
- if (rr->length > SSL3_RT_MAX_COMPRESSED_LENGTH) {
- al = SSL_AD_RECORD_OVERFLOW;
- SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_COMPRESSED_LENGTH_TOO_LONG);
- goto f_err;
+ for (j = 0; j < num_recs; j++) {
+ /* rr[j].length is now just compressed */
+ if (s->expand != NULL) {
+ if (rr[j].length > SSL3_RT_MAX_COMPRESSED_LENGTH) {
+ al = SSL_AD_RECORD_OVERFLOW;
+ SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_COMPRESSED_LENGTH_TOO_LONG);
+ goto f_err;
+ }
+ if (!ssl3_do_uncompress(s, &rr[j])) {
+ al = SSL_AD_DECOMPRESSION_FAILURE;
+ SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_BAD_DECOMPRESSION);
+ goto f_err;
+ }
}
- if (!ssl3_do_uncompress(s)) {
- al = SSL_AD_DECOMPRESSION_FAILURE;
- SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_BAD_DECOMPRESSION);
+
+ if (rr[j].length > SSL3_RT_MAX_PLAIN_LENGTH) {
+ al = SSL_AD_RECORD_OVERFLOW;
+ SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_DATA_LENGTH_TOO_LONG);
goto f_err;
}
- }
-
- if (rr->length > SSL3_RT_MAX_PLAIN_LENGTH) {
- al = SSL_AD_RECORD_OVERFLOW;
- SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_DATA_LENGTH_TOO_LONG);
- goto f_err;
- }
- rr->off = 0;
- /*-
- * So at this point the following is true
- * ssl->s3->rrec.type is the type of record
- * ssl->s3->rrec.length == number of bytes in record
- * ssl->s3->rrec.off == offset to first valid byte
- * ssl->s3->rrec.data == where to take bytes from, increment
- * after use :-).
- */
-
- /* we have pulled in a full packet so zero things */
- RECORD_LAYER_reset_packet_length(&s->rlayer);
+ rr[j].off = 0;
+ /*-
+ * So at this point the following is true
+ * rr[j].type is the type of record
+ * rr[j].length == number of bytes in record
+ * rr[j].off == offset to first valid byte
+ * rr[j].data == where to take bytes from, increment after use :-).
+ */
- /* just read a 0 length packet */
- if (rr->length == 0) {
- empty_record_count++;
- if (empty_record_count > MAX_EMPTY_RECORDS) {
- al = SSL_AD_UNEXPECTED_MESSAGE;
- SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_RECORD_TOO_SMALL);
- goto f_err;
+ /* just read a 0 length packet */
+ if (rr[j].length == 0) {
+ curr_empty++;
+ empty_record_count++;
+ if (empty_record_count > MAX_EMPTY_RECORDS) {
+ al = SSL_AD_UNEXPECTED_MESSAGE;
+ SSLerr(SSL_F_SSL3_GET_RECORD, SSL_R_RECORD_TOO_SMALL);
+ goto f_err;
+ }
}
+ }
+ if (curr_empty == num_recs) {
+ /* We have no data - do it all again */
+ num_recs = 0;
+ curr_empty = 0;
goto again;
}
- return (1);
+ RECORD_LAYER_set_numrpipes(&s->rlayer, num_recs);
+ return 1;
f_err:
ssl3_send_alert(s, SSL3_AL_FATAL, al);
err:
- return (ret);
+ return ret;
}
-int ssl3_do_uncompress(SSL *ssl)
+int ssl3_do_uncompress(SSL *ssl, SSL3_RECORD *rr)
{
#ifndef OPENSSL_NO_COMP
int i;
- SSL3_RECORD *rr;
- rr = RECORD_LAYER_get_rrec(&ssl->rlayer);
+ if (rr->comp == NULL) {
+ rr->comp = (unsigned char *)
+ OPENSSL_malloc(SSL3_RT_MAX_ENCRYPTED_LENGTH);
+ }
+ if (rr->comp == NULL)
+ return 0;
+
i = COMP_expand_block(ssl->expand, rr->comp,
SSL3_RT_MAX_PLAIN_LENGTH, rr->data,
(int)rr->length);
if (i < 0)
- return (0);
+ return 0;
else
rr->length = i;
rr->data = rr->comp;
#endif
- return (1);
+ return 1;
}
-int ssl3_do_compress(SSL *ssl)
+int ssl3_do_compress(SSL *ssl, SSL3_RECORD *wr)
{
#ifndef OPENSSL_NO_COMP
int i;
- SSL3_RECORD *wr;
- wr = RECORD_LAYER_get_wrec(&ssl->rlayer);
i = COMP_compress_block(ssl->compress, wr->data,
SSL3_RT_MAX_COMPRESSED_LENGTH,
wr->input, (int)wr->length);
@@ -563,7 +646,7 @@ int ssl3_do_compress(SSL *ssl)
}
/*-
- * ssl3_enc encrypts/decrypts the record in |s->wrec| / |s->rrec|, respectively.
+ * ssl3_enc encrypts/decrypts |n_recs| records in |inrecs|
*
* Returns:
* 0: (in non-constant time) if the record is publically invalid (i.e. too
@@ -572,7 +655,7 @@ int ssl3_do_compress(SSL *ssl)
* -1: if the record's padding is invalid or, if sending, an internal error
* occurred.
*/
-int ssl3_enc(SSL *s, int send)
+int ssl3_enc(SSL *s, SSL3_RECORD *inrecs, unsigned int n_recs, int send)
{
SSL3_RECORD *rec;
EVP_CIPHER_CTX *ds;
@@ -580,16 +663,20 @@ int ssl3_enc(SSL *s, int send)
int bs, i, mac_size = 0;
const EVP_CIPHER *enc;
+ rec = inrecs;
+ /*
+ * We shouldn't ever be called with more than one record in the SSLv3 case
+ */
+ if (n_recs != 1)
+ return 0;
if (send) {
ds = s->enc_write_ctx;
- rec = RECORD_LAYER_get_wrec(&s->rlayer);
if (s->enc_write_ctx == NULL)
enc = NULL;
else
enc = EVP_CIPHER_CTX_cipher(s->enc_write_ctx);
} else {
ds = s->enc_read_ctx;
- rec = RECORD_LAYER_get_rrec(&s->rlayer);
if (s->enc_read_ctx == NULL)
enc = NULL;
else
@@ -637,7 +724,7 @@ int ssl3_enc(SSL *s, int send)
}
/*-
- * tls1_enc encrypts/decrypts the record in |s->wrec| / |s->rrec|, respectively.
+ * tls1_enc encrypts/decrypts |n_recs| in |recs|.
*
* Returns:
* 0: (in non-constant time) if the record is publically invalid (i.e. too
@@ -646,13 +733,14 @@ int ssl3_enc(SSL *s, int send)
* -1: if the record's padding/AEAD-authenticator is invalid or, if sending,
* an internal error occurred.
*/
-int tls1_enc(SSL *s, int send)
+int tls1_enc(SSL *s, SSL3_RECORD *recs, unsigned int n_recs, int send)
{
- SSL3_RECORD *rec;
EVP_CIPHER_CTX *ds;
- unsigned long l;
+ size_t reclen[SSL_MAX_PIPELINES];
+ unsigned char buf[SSL_MAX_PIPELINES][EVP_AEAD_TLS1_AAD_LEN];
int bs, i, j, k, pad = 0, ret, mac_size = 0;
const EVP_CIPHER *enc;
+ unsigned int ctr;
if (send) {
if (EVP_MD_CTX_md(s->write_hash)) {
@@ -660,7 +748,6 @@ int tls1_enc(SSL *s, int send)
OPENSSL_assert(n >= 0);
}
ds = s->enc_write_ctx;
- rec = RECORD_LAYER_get_wrec(&s->rlayer);
if (s->enc_write_ctx == NULL)
enc = NULL;
else {
@@ -673,14 +760,19 @@ int tls1_enc(SSL *s, int send)
else
ivlen = 0;
if (ivlen > 1) {
- if (rec->data != rec->input)
- /*
- * we can't write into the input stream: Can this ever
- * happen?? (steve)
- */
- fprintf(stderr, "tls1_enc(): rec->data != rec->input\n");
- else if (RAND_bytes(rec->input, ivlen) <= 0)
- return -1;
+ for (ctr = 0; ctr < n_recs; ctr++) {
+ if (recs[ctr].data != recs[ctr].input) {
+ /*
+ * we can't write into the input stream: Can this ever
+ * happen?? (steve)
+ */
+ SSLerr(SSL_F_TLS1_ENC, ERR_R_INTERNAL_ERROR);
+ return -1;
+ } else if (RAND_bytes(recs[ctr].input, ivlen) <= 0) {
+ SSLerr(SSL_F_TLS1_ENC, ERR_R_INTERNAL_ERROR);
+ return -1;
+ }
+ }
}
}
} else {
@@ -689,7 +781,6 @@ int tls1_enc(SSL *s, int send)
OPENSSL_assert(n >= 0);
}
ds = s->enc_read_ctx;
- rec = RECORD_LAYER_get_rrec(&s->rlayer);
if (s->enc_read_ctx == NULL)
enc = NULL;
else
@@ -697,97 +788,154 @@ int tls1_enc(SSL *s, int send)
}
if ((s->session == NULL) || (ds == NULL) || (enc == NULL)) {
- memmove(rec->data, rec->input, rec->length);
- rec->input = rec->data;
+ for (ctr = 0; ctr < n_recs; ctr++) {
+ memmove(recs[ctr].data, recs[ctr].input, recs[ctr].length);
+ recs[ctr].input = recs[ctr].data;
+ }
ret = 1;
} else {
- l = rec->length;
- bs = EVP_CIPHER_CTX_block_size(ds);
+ bs = EVP_CIPHER_block_size(EVP_CIPHER_CTX_cipher(ds));
+
+ if (n_recs > 1) {
+ if(!(EVP_CIPHER_flags(EVP_CIPHER_CTX_cipher(ds))
+ & EVP_CIPH_FLAG_PIPELINE)) {
+ /*
+ * We shouldn't have been called with pipeline data if the
+ * cipher doesn't support pipelining
+ */
+ SSLerr(SSL_F_TLS1_ENC, SSL_R_PIPELINE_FAILURE);
+ return -1;
+ }
+ }
+ for (ctr = 0; ctr < n_recs; ctr++) {
+ reclen[ctr] = recs[ctr].length;
+
+ if (EVP_CIPHER_flags(EVP_CIPHER_CTX_cipher(ds))
+ & EVP_CIPH_FLAG_AEAD_CIPHER) {
+ unsigned char *seq;
+
+ seq = send ? RECORD_LAYER_get_write_sequence(&s->rlayer)
+ : RECORD_LAYER_get_read_sequence(&s->rlayer);
+
+ if (SSL_IS_DTLS(s)) {
+ /* DTLS does not support pipelining */
+ unsigned char dtlsseq[9], *p = dtlsseq;
+
+ s2n(send ? DTLS_RECORD_LAYER_get_w_epoch(&s->rlayer) :
+ DTLS_RECORD_LAYER_get_r_epoch(&s->rlayer), p);
+ memcpy(p, &seq[2], 6);
+ memcpy(buf[ctr], dtlsseq, 8);
+ } else {
+ memcpy(buf[ctr], seq, 8);
+ for (i = 7; i >= 0; i--) { /* increment */
+ ++seq[i];
+ if (seq[i] != 0)
+ break;
+ }
+ }
- if (EVP_CIPHER_flags(EVP_CIPHER_CTX_cipher(ds)) & EVP_CIPH_FLAG_AEAD_CIPHER) {
- unsigned char buf[EVP_AEAD_TLS1_AAD_LEN], *seq;
+ buf[ctr][8] = recs[ctr].type;
+ buf[ctr][9] = (unsigned char)(s->version >> 8);
+ buf[ctr][10] = (unsigned char)(s->version);
+ buf[ctr][11] = recs[ctr].length >> 8;
+ buf[ctr][12] = recs[ctr].length & 0xff;
+ pad = EVP_CIPHER_CTX_ctrl(ds, EVP_CTRL_AEAD_TLS1_AAD,
+ EVP_AEAD_TLS1_AAD_LEN, buf[ctr]);
+ if (pad <= 0)
+ return -1;
- seq = send ? RECORD_LAYER_get_write_sequence(&s->rlayer)
- : RECORD_LAYER_get_read_sequence(&s->rlayer);
+ if (send) {
+ reclen[ctr] += pad;
+ recs[ctr].length += pad;
+ }
- if (SSL_IS_DTLS(s)) {
- unsigned char dtlsseq[9], *p = dtlsseq;
+ } else if ((bs != 1) && send) {
+ i = bs - ((int)reclen[ctr] % bs);
- s2n(send ? DTLS_RECORD_LAYER_get_w_epoch(&s->rlayer) :
- DTLS_RECORD_LAYER_get_r_epoch(&s->rlayer), p);
- memcpy(p, &seq[2], 6);
- memcpy(buf, dtlsseq, 8);
- } else {
- memcpy(buf, seq, 8);
- for (i = 7; i >= 0; i--) { /* increment */
- ++seq[i];
- if (seq[i] != 0)
- break;
- }
- }
+ /* Add weird padding of upto 256 bytes */
- buf[8] = rec->type;
- buf[9] = (unsigned char)(s->version >> 8);
- buf[10] = (unsigned char)(s->version);
- buf[11] = rec->length >> 8;
- buf[12] = rec->length & 0xff;
- pad = EVP_CIPHER_CTX_ctrl(ds, EVP_CTRL_AEAD_TLS1_AAD,
- EVP_AEAD_TLS1_AAD_LEN, buf);
- if (pad <= 0)
- return -1;
- if (send) {
- l += pad;
- rec->length += pad;
+ /* we need to add 'i' padding bytes of value j */
+ j = i - 1;
+ for (k = (int)reclen[ctr]; k < (int)(reclen[ctr] + i); k++)
+ recs[ctr].input[k] = j;
+ reclen[ctr] += i;
+ recs[ctr].length += i;
}
- } else if ((bs != 1) && send) {
- i = bs - ((int)l % bs);
- /* Add weird padding of upto 256 bytes */
-
- /* we need to add 'i' padding bytes of value j */
- j = i - 1;
- for (k = (int)l; k < (int)(l + i); k++)
- rec->input[k] = j;
- l += i;
- rec->length += i;
+ if (!send) {
+ if (reclen[ctr] == 0 || reclen[ctr] % bs != 0)
+ return 0;
+ }
}
+ if (n_recs > 1) {
+ unsigned char *data[SSL_MAX_PIPELINES];
- if (!send) {
- if (l == 0 || l % bs != 0)
- return 0;
+ /* Set the output buffers */
+ for(ctr = 0; ctr < n_recs; ctr++) {
+ data[ctr] = recs[ctr].data;
+ }
+ if (EVP_CIPHER_CTX_ctrl(ds, EVP_CTRL_SET_PIPELINE_OUTPUT_BUFS,
+ n_recs, data) <= 0) {
+ SSLerr(SSL_F_TLS1_ENC, SSL_R_PIPELINE_FAILURE);
+ }
+ /* Set the input buffers */
+ for(ctr = 0; ctr < n_recs; ctr++) {
+ data[ctr] = recs[ctr].input;
+ }
+ if (EVP_CIPHER_CTX_ctrl(ds, EVP_CTRL_SET_PIPELINE_INPUT_BUFS,
+ n_recs, data) <= 0
+ || EVP_CIPHER_CTX_ctrl(ds, EVP_CTRL_SET_PIPELINE_INPUT_LENS,
+ n_recs, reclen) <= 0) {
+ SSLerr(SSL_F_TLS1_ENC, SSL_R_PIPELINE_FAILURE);
+ return -1;
+ }
}
- i = EVP_Cipher(ds, rec->data, rec->input, l);
- if ((EVP_CIPHER_flags(EVP_CIPHER_CTX_cipher(ds)) & EVP_CIPH_FLAG_CUSTOM_CIPHER)
+ i = EVP_Cipher(ds, recs[0].data, recs[0].input, reclen[0]);
+ if ((EVP_CIPHER_flags(EVP_CIPHER_CTX_cipher(ds))
+ & EVP_CIPH_FLAG_CUSTOM_CIPHER)
? (i < 0)
: (i == 0))
return -1; /* AEAD can fail to verify MAC */
if (send == 0) {
if (EVP_CIPHER_mode(enc) == EVP_CIPH_GCM_MODE) {
- rec->data += EVP_GCM_TLS_EXPLICIT_IV_LEN;
- rec->input += EVP_GCM_TLS_EXPLICIT_IV_LEN;
- rec->length -= EVP_GCM_TLS_EXPLICIT_IV_LEN;
+ for (ctr = 0; ctr < n_recs; ctr++) {
+ recs[ctr].data += EVP_GCM_TLS_EXPLICIT_IV_LEN;
+ recs[ctr].input += EVP_GCM_TLS_EXPLICIT_IV_LEN;
+ recs[ctr].length -= EVP_GCM_TLS_EXPLICIT_IV_LEN;
+ }
} else if (EVP_CIPHER_mode(enc) == EVP_CIPH_CCM_MODE) {
- rec->data += EVP_CCM_TLS_EXPLICIT_IV_LEN;
- rec->input += EVP_CCM_TLS_EXPLICIT_IV_LEN;
- rec->length -= EVP_CCM_TLS_EXPLICIT_IV_LEN;
+ for (ctr = 0; ctr < n_recs; ctr++) {
+ recs[ctr].data += EVP_CCM_TLS_EXPLICIT_IV_LEN;
+ recs[ctr].input += EVP_CCM_TLS_EXPLICIT_IV_LEN;
+ recs[ctr].length -= EVP_CCM_TLS_EXPLICIT_IV_LEN;
+ }
}
}
ret = 1;
if (!SSL_USE_ETM(s) && EVP_MD_CTX_md(s->read_hash) != NULL)
mac_size = EVP_MD_CTX_size(s->read_hash);
- if ((bs != 1) && !send)
- ret = tls1_cbc_remove_padding(s, rec, bs, mac_size);
- if (pad && !send)
- rec->length -= pad;
+ if ((bs != 1) && !send) {
+ int tmpret;
+ for (ctr = 0; ctr < n_recs; ctr++) {
+ tmpret = tls1_cbc_remove_padding(s, &recs[ctr], bs, mac_size);
+ if (tmpret == -1)
+ return -1;
+ ret &= tmpret;
+ }
+ }
+ if (pad && !send) {
+ for (ctr = 0; ctr < n_recs; ctr++) {
+ recs[ctr].length -= pad;
+ }
+ }
}
return ret;
}
-int n_ssl3_mac(SSL *ssl, unsigned char *md, int send)
+int n_ssl3_mac(SSL *ssl, SSL3_RECORD *rec, unsigned char *md, int send)
{
- SSL3_RECORD *rec;
unsigned char *mac_sec, *seq;
const EVP_MD_CTX *hash;
unsigned char *p, rec_char;
@@ -796,12 +944,10 @@ int n_ssl3_mac(SSL *ssl, unsigned char *md, int send)
int t;
if (send) {
- rec = RECORD_LAYER_get_wrec(&ssl->rlayer);
mac_sec = &(ssl->s3->write_mac_secret[0]);
seq = RECORD_LAYER_get_write_sequence(&ssl->rlayer);
hash = ssl->write_hash;
} else {
- rec = RECORD_LAYER_get_rrec(&ssl->rlayer);
mac_sec = &(ssl->s3->read_mac_secret[0]);
seq = RECORD_LAYER_get_read_sequence(&ssl->rlayer);
hash = ssl->read_hash;
@@ -885,9 +1031,8 @@ int n_ssl3_mac(SSL *ssl, unsigned char *md, int send)
return (md_size);
}
-int tls1_mac(SSL *ssl, unsigned char *md, int send)
+int tls1_mac(SSL *ssl, SSL3_RECORD *rec, unsigned char *md, int send)
{
- SSL3_RECORD *rec;
unsigned char *seq;
EVP_MD_CTX *hash;
size_t md_size;
@@ -899,11 +1044,9 @@ int tls1_mac(SSL *ssl, unsigned char *md, int send)
int t;
if (send) {
- rec = RECORD_LAYER_get_wrec(&ssl->rlayer);
seq = RECORD_LAYER_get_write_sequence(&ssl->rlayer);
hash = ssl->write_hash;
} else {
- rec = RECORD_LAYER_get_rrec(&ssl->rlayer);
seq = RECORD_LAYER_get_read_sequence(&ssl->rlayer);
hash = ssl->read_hash;
}
@@ -1253,7 +1396,7 @@ int dtls1_process_record(SSL *s)
rr->data = rr->input;
rr->orig_len = rr->length;
- enc_err = s->method->ssl3_enc->enc(s, 0);
+ enc_err = s->method->ssl3_enc->enc(s, rr, 1, 0);
/*-
* enc_err is:
* 0: (in non-constant time) if the record is publically invalid.
@@ -1320,7 +1463,7 @@ int dtls1_process_record(SSL *s)
mac = &rr->data[rr->length];
}
- i = s->method->ssl3_enc->mac(s, md, 0 /* not send */ );
+ i = s->method->ssl3_enc->mac(s, rr, md, 0 /* not send */ );
if (i < 0 || mac == NULL
|| CRYPTO_memcmp(md, mac, (size_t)mac_size) != 0)
enc_err = -1;
@@ -1343,7 +1486,7 @@ int dtls1_process_record(SSL *s)
SSL_R_COMPRESSED_LENGTH_TOO_LONG);
goto f_err;
}
- if (!ssl3_do_uncompress(s)) {
+ if (!ssl3_do_uncompress(s, rr)) {
al = SSL_AD_DECOMPRESSION_FAILURE;
SSLerr(SSL_F_DTLS1_PROCESS_RECORD, SSL_R_BAD_DECOMPRESSION);
goto f_err;
@@ -1424,7 +1567,7 @@ int dtls1_get_record(SSL *s)
if ((RECORD_LAYER_get_rstate(&s->rlayer) != SSL_ST_READ_BODY) ||
(RECORD_LAYER_get_packet_length(&s->rlayer) < DTLS1_RT_HEADER_LENGTH)) {
n = ssl3_read_n(s, DTLS1_RT_HEADER_LENGTH,
- SSL3_BUFFER_get_len(&s->rlayer.rbuf), 0);
+ SSL3_BUFFER_get_len(&s->rlayer.rbuf), 0, 1);
/* read timeout is handled by dtls1_read_bytes */
if (n <= 0)
return (n); /* error or non-blocking */
@@ -1490,7 +1633,7 @@ int dtls1_get_record(SSL *s)
RECORD_LAYER_get_packet_length(&s->rlayer) - DTLS1_RT_HEADER_LENGTH) {
/* now s->packet_length == DTLS1_RT_HEADER_LENGTH */
i = rr->length;
- n = ssl3_read_n(s, i, i, 1);
+ n = ssl3_read_n(s, i, i, 1, 1);
/* this packet contained a partial record, dump it */
if (n != i) {
rr->length = 0;
diff --git a/ssl/s3_enc.c b/ssl/s3_enc.c
index 1c493e2..35ef948 100644
--- a/ssl/s3_enc.c
+++ b/ssl/s3_enc.c
@@ -251,8 +251,6 @@ int ssl3_change_cipher_state(SSL *s, int which)
SSL_R_COMPRESSION_LIBRARY_ERROR);
goto err2;
}
- if (!RECORD_LAYER_setup_comp_buffer(&s->rlayer))
- goto err;
}
#endif
RECORD_LAYER_reset_read_sequence(&s->rlayer);
diff --git a/ssl/s3_msg.c b/ssl/s3_msg.c
index 8b5fd23..8df1e66 100644
--- a/ssl/s3_msg.c
+++ b/ssl/s3_msg.c
@@ -192,10 +192,12 @@ int ssl3_send_alert(SSL *s, int level, int desc)
int ssl3_dispatch_alert(SSL *s)
{
int i, j;
+ unsigned int alertlen;
void (*cb) (const SSL *ssl, int type, int val) = NULL;
s->s3->alert_dispatch = 0;
- i = do_ssl3_write(s, SSL3_RT_ALERT, &s->s3->send_alert[0], 2, 0);
+ alertlen = 2;
+ i = do_ssl3_write(s, SSL3_RT_ALERT, &s->s3->send_alert[0], &alertlen, 1, 0);
if (i <= 0) {
s->s3->alert_dispatch = 1;
} else {
diff --git a/ssl/ssl_err.c b/ssl/ssl_err.c
index c2d4bf3..88f6c73 100644
--- a/ssl/ssl_err.c
+++ b/ssl/ssl_err.c
@@ -290,6 +290,7 @@ static ERR_STRING_DATA SSL_str_functs[] = {
"tls1_check_duplicate_extensions"},
{ERR_FUNC(SSL_F_TLS1_CHECK_SERVERHELLO_TLSEXT),
"TLS1_CHECK_SERVERHELLO_TLSEXT"},
+ {ERR_FUNC(SSL_F_TLS1_ENC), "tls1_enc"},
{ERR_FUNC(SSL_F_TLS1_EXPORT_KEYING_MATERIAL),
"tls1_export_keying_material"},
{ERR_FUNC(SSL_F_TLS1_GET_CURVELIST), "tls1_get_curvelist"},
@@ -570,6 +571,7 @@ static ERR_STRING_DATA SSL_str_reasons[] = {
"peer did not return a certificate"},
{ERR_REASON(SSL_R_PEM_NAME_BAD_PREFIX), "pem name bad prefix"},
{ERR_REASON(SSL_R_PEM_NAME_TOO_SHORT), "pem name too short"},
+ {ERR_REASON(SSL_R_PIPELINE_FAILURE), "pipeline failure"},
{ERR_REASON(SSL_R_PRE_MAC_LENGTH_TOO_LONG), "pre mac length too long"},
{ERR_REASON(SSL_R_PROTOCOL_IS_SHUTDOWN), "protocol is shutdown"},
{ERR_REASON(SSL_R_PSK_IDENTITY_NOT_FOUND), "psk identity not found"},
diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c
index 5dfb0fd..13f4ccd 100644
--- a/ssl/ssl_lib.c
+++ b/ssl/ssl_lib.c
@@ -170,8 +170,8 @@ SSL3_ENC_METHOD ssl3_undef_enc_method = {
* evil casts, but these functions are only called if there's a library
* bug
*/
- (int (*)(SSL *, int))ssl_undefined_function,
- (int (*)(SSL *, unsigned char *, int))ssl_undefined_function,
+ (int (*)(SSL *, SSL3_RECORD *, unsigned int, int))ssl_undefined_function,
+ (int (*)(SSL *, SSL3_RECORD *, unsigned char *, int))ssl_undefined_function,
ssl_undefined_function,
(int (*)(SSL *, unsigned char *, unsigned char *, int))
ssl_undefined_function,
@@ -670,6 +670,12 @@ SSL *SSL_new(SSL_CTX *ctx)
X509_VERIFY_PARAM_inherit(s->param, ctx->param);
s->quiet_shutdown = ctx->quiet_shutdown;
s->max_send_fragment = ctx->max_send_fragment;
+ s->split_send_fragment = ctx->split_send_fragment;
+ s->max_pipelines = ctx->max_pipelines;
+ if (s->max_pipelines > 1)
+ RECORD_LAYER_set_read_ahead(&s->rlayer, 1);
+ if (ctx->default_read_buf_len > 0)
+ SSL_set_default_read_buffer_len(s, ctx->default_read_buf_len);
CRYPTO_add(&ctx->references, 1, CRYPTO_LOCK_SSL_CTX);
s->ctx = ctx;
@@ -1304,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;
@@ -1680,6 +1702,20 @@ long SSL_ctrl(SSL *s, int cmd, long larg, void *parg)
if (larg < 512 || larg > SSL3_RT_MAX_PLAIN_LENGTH)
return 0;
s->max_send_fragment = larg;
+ if (s->max_send_fragment < s->split_send_fragment)
+ s->split_send_fragment = s->max_send_fragment;
+ return 1;
+ case SSL_CTRL_SET_SPLIT_SEND_FRAGMENT:
+ if (larg > s->max_send_fragment || larg == 0)
+ return 0;
+ s->split_send_fragment = larg;
+ return 1;
+ case SSL_CTRL_SET_MAX_PIPELINES:
+ if (larg < 1 || larg > SSL_MAX_PIPELINES)
+ return 0;
+ s->max_pipelines = larg;
+ if (larg > 1)
+ RECORD_LAYER_set_read_ahead(&s->rlayer, 1);
return 1;
case SSL_CTRL_GET_RI_SUPPORT:
if (s->s3)
@@ -1820,6 +1856,18 @@ long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg)
if (larg < 512 || larg > SSL3_RT_MAX_PLAIN_LENGTH)
return 0;
ctx->max_send_fragment = larg;
+ if (ctx->max_send_fragment < ctx->split_send_fragment)
+ ctx->split_send_fragment = ctx->split_send_fragment;
+ return 1;
+ case SSL_CTRL_SET_SPLIT_SEND_FRAGMENT:
+ if (larg > ctx->max_send_fragment || larg == 0)
+ return 0;
+ ctx->split_send_fragment = larg;
+ return 1;
+ case SSL_CTRL_SET_MAX_PIPELINES:
+ if (larg < 1 || larg > SSL_MAX_PIPELINES)
+ return 0;
+ ctx->max_pipelines = larg;
return 1;
case SSL_CTRL_CERT_FLAGS:
return (ctx->cert->cert_flags |= larg);
@@ -2370,6 +2418,7 @@ SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth)
ret->comp_methods = SSL_COMP_get_compression_methods();
ret->max_send_fragment = SSL3_RT_MAX_PLAIN_LENGTH;
+ ret->split_send_fragment = SSL3_RT_MAX_PLAIN_LENGTH;
/* Setup RFC4507 ticket keys */
if ((RAND_bytes(ret->tlsext_tick_key_name, 16) <= 0)
diff --git a/ssl/ssl_locl.h b/ssl/ssl_locl.h
index 6c7f47d..064c22c 100644
--- a/ssl/ssl_locl.h
+++ b/ssl/ssl_locl.h
@@ -830,11 +830,22 @@ struct ssl_ctx_st {
# endif
/*
+ * If we're using more than one pipeline how should we divide the data
+ * up between the pipes?
+ */
+ unsigned int split_send_fragment;
+ /*
* Maximum amount of data to send in one fragment. actual record size can
* be more than this due to padding and MAC overheads.
*/
unsigned int max_send_fragment;
+ /* Up to how many pipelines should we use? If 0 then 1 is assumed */
+ unsigned int max_pipelines;
+
+ /* The default read buffer length to use (0 means not set) */
+ size_t default_read_buf_len;
+
# ifndef OPENSSL_NO_ENGINE
/*
* Engine to pass requests for client certs to
@@ -1085,8 +1096,21 @@ struct ssl_st {
int first_packet;
/* what was passed, used for SSLv3/TLS rollback check */
int client_version;
+
+ /*
+ * If we're using more than one pipeline how should we divide the data
+ * up between the pipes?
+ */
+ unsigned int split_send_fragment;
+ /*
+ * Maximum amount of data to send in one fragment. actual record size can
+ * be more than this due to padding and MAC overheads.
+ */
unsigned int max_send_fragment;
+ /* Up to how many pipelines should we use? If 0 then 1 is assumed */
+ unsigned int max_pipelines;
+
/* TLS extension debug callback */
void (*tlsext_debug_cb) (SSL *s, int client_server, int type,
const unsigned char *data, int len, void *arg);
@@ -1635,8 +1659,8 @@ struct tls_sigalgs_st {
* of a mess of functions, but hell, think of it as an opaque structure :-)
*/
typedef struct ssl3_enc_method {
- int (*enc) (SSL *, int);
- int (*mac) (SSL *, unsigned char *, int);
+ int (*enc) (SSL *, SSL3_RECORD *, unsigned int, int);
+ int (*mac) (SSL *, SSL3_RECORD *, unsigned char *, int);
int (*setup_key_block) (SSL *);
int (*generate_master_secret) (SSL *, unsigned char *, unsigned char *,
int);
diff --git a/ssl/t1_enc.c b/ssl/t1_enc.c
index 21eb328..f2650b0 100644
--- a/ssl/t1_enc.c
+++ b/ssl/t1_enc.c
@@ -260,8 +260,6 @@ int tls1_change_cipher_state(SSL *s, int which)
SSL_R_COMPRESSION_LIBRARY_ERROR);
goto err2;
}
- if (!RECORD_LAYER_setup_comp_buffer(&s->rlayer))
- goto err;
}
#endif
/*
diff --git a/util/libcrypto.num b/util/libcrypto.num
index 2b77bd5..28e78e4 100644
--- a/util/libcrypto.num
+++ b/util/libcrypto.num
@@ -3676,7 +3676,7 @@ SXNET_get_id_ulong 3557 1_1_0 EXIST::FUNCTION:
BIO_get_callback_arg 3558 1_1_0 EXIST::FUNCTION:
ENGINE_register_RSA 3559 1_1_0 EXIST::FUNCTION:ENGINE
i2v_GENERAL_NAMES 3560 1_1_0 EXIST::FUNCTION:
-EVP_CIPHER_CTX_cipher_data 3561 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_CTX_cipher_data 3561 1_1_0 NOEXIST::FUNCTION:
PKCS7_decrypt 3562 1_1_0 EXIST::FUNCTION:
X509_STORE_set1_param 3563 1_1_0 EXIST::FUNCTION:
RAND_file_name 3564 1_1_0 EXIST::FUNCTION:
@@ -4041,3 +4041,5 @@ lh_doall 3906 1_1_0 EXIST::FUNCTION:
PKCS8_pkey_get0_attrs 3907 1_1_0 EXIST::FUNCTION:
PKCS8_pkey_add1_attr_by_NID 3908 1_1_0 EXIST::FUNCTION:
ASYNC_is_capable 3909 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_CTX_set_cipher_data 3910 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_CTX_get_cipher_data 3911 1_1_0 EXIST::FUNCTION:
diff --git a/util/libeay.num b/util/libeay.num
new file mode 100755
index 0000000..e1c9049
--- /dev/null
+++ b/util/libeay.num
@@ -0,0 +1,4735 @@
+OpenSSL_version_num 1 1_1_0 EXIST::FUNCTION:
+OpenSSL_version 2 1_1_0 EXIST::FUNCTION:
+ASN1_BIT_STRING_asn1_meth 3 1_1_0 NOEXIST::FUNCTION:
+ASN1_HEADER_free 4 1_1_0 NOEXIST::FUNCTION:
+ASN1_HEADER_new 5 1_1_0 NOEXIST::FUNCTION:
+ASN1_IA5STRING_asn1_meth 6 1_1_0 NOEXIST::FUNCTION:
+ASN1_INTEGER_get 7 1_1_0 EXIST::FUNCTION:
+ASN1_INTEGER_set 8 1_1_0 EXIST::FUNCTION:
+ASN1_INTEGER_to_BN 9 1_1_0 EXIST::FUNCTION:
+ASN1_OBJECT_create 10 1_1_0 EXIST::FUNCTION:
+ASN1_OBJECT_free 11 1_1_0 EXIST::FUNCTION:
+ASN1_OBJECT_new 12 1_1_0 EXIST::FUNCTION:
+ASN1_PRINTABLE_type 13 1_1_0 EXIST::FUNCTION:
+ASN1_STRING_cmp 14 1_1_0 EXIST::FUNCTION:
+ASN1_STRING_dup 15 1_1_0 EXIST::FUNCTION:
+ASN1_STRING_free 16 1_1_0 EXIST::FUNCTION:
+ASN1_STRING_new 17 1_1_0 EXIST::FUNCTION:
+ASN1_STRING_print 18 1_1_0 EXIST::FUNCTION:
+ASN1_STRING_set 19 1_1_0 EXIST::FUNCTION:
+ASN1_STRING_type_new 20 1_1_0 EXIST::FUNCTION:
+ASN1_TYPE_free 21 1_1_0 EXIST::FUNCTION:
+ASN1_TYPE_new 22 1_1_0 EXIST::FUNCTION:
+ASN1_UNIVERSALSTRING_to_string 23 1_1_0 EXIST::FUNCTION:
+ASN1_UTCTIME_check 24 1_1_0 EXIST::FUNCTION:
+ASN1_UTCTIME_print 25 1_1_0 EXIST::FUNCTION:
+ASN1_UTCTIME_set 26 1_1_0 EXIST::FUNCTION:
+ASN1_check_infinite_end 27 1_1_0 EXIST::FUNCTION:
+ASN1_d2i_bio 28 1_1_0 EXIST::FUNCTION:
+ASN1_d2i_fp 29 1_1_0 EXIST::FUNCTION:STDIO
+ASN1_digest 30 1_1_0 EXIST::FUNCTION:
+ASN1_dup 31 1_1_0 EXIST::FUNCTION:
+ASN1_get_object 32 1_1_0 EXIST::FUNCTION:
+ASN1_i2d_bio 33 1_1_0 EXIST::FUNCTION:
+ASN1_i2d_fp 34 1_1_0 EXIST::FUNCTION:STDIO
+ASN1_object_size 35 1_1_0 EXIST::FUNCTION:
+ASN1_parse 36 1_1_0 EXIST::FUNCTION:
+ASN1_put_object 37 1_1_0 EXIST::FUNCTION:
+ASN1_sign 38 1_1_0 EXIST::FUNCTION:
+ASN1_verify 39 1_1_0 EXIST::FUNCTION:
+BF_cbc_encrypt 40 1_1_0 EXIST::FUNCTION:BF
+BF_cfb64_encrypt 41 1_1_0 EXIST::FUNCTION:BF
+BF_ecb_encrypt 42 1_1_0 EXIST::FUNCTION:BF
+BF_encrypt 43 1_1_0 EXIST::FUNCTION:BF
+BF_ofb64_encrypt 44 1_1_0 EXIST::FUNCTION:BF
+BF_options 45 1_1_0 EXIST::FUNCTION:BF
+BF_set_key 46 1_1_0 EXIST::FUNCTION:BF
+BIO_CONNECT_free 47 1_1_0 NOEXIST::FUNCTION:
+BIO_CONNECT_new 48 1_1_0 NOEXIST::FUNCTION:
+BIO_accept 51 1_1_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0
+BIO_ctrl 52 1_1_0 EXIST::FUNCTION:
+BIO_int_ctrl 53 1_1_0 EXIST::FUNCTION:
+BIO_debug_callback 54 1_1_0 EXIST::FUNCTION:
+BIO_dump 55 1_1_0 EXIST::FUNCTION:
+BIO_dup_chain 56 1_1_0 EXIST::FUNCTION:
+BIO_f_base64 57 1_1_0 EXIST::FUNCTION:
+BIO_f_buffer 58 1_1_0 EXIST::FUNCTION:
+BIO_f_cipher 59 1_1_0 EXIST::FUNCTION:
+BIO_f_md 60 1_1_0 EXIST::FUNCTION:
+BIO_f_null 61 1_1_0 EXIST::FUNCTION:
+BIO_f_proxy_server 62 1_1_0 NOEXIST::FUNCTION:
+BIO_fd_non_fatal_error 63 1_1_0 EXIST::FUNCTION:
+BIO_fd_should_retry 64 1_1_0 EXIST::FUNCTION:
+BIO_find_type 65 1_1_0 EXIST::FUNCTION:
+BIO_free 66 1_1_0 EXIST::FUNCTION:
+BIO_free_all 67 1_1_0 EXIST::FUNCTION:
+BIO_get_accept_socket 69 1_1_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0
+BIO_get_filter_bio 70 1_1_0 NOEXIST::FUNCTION:
+BIO_get_host_ip 71 1_1_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0
+BIO_get_port 72 1_1_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0
+BIO_get_retry_BIO 73 1_1_0 EXIST::FUNCTION:
+BIO_get_retry_reason 74 1_1_0 EXIST::FUNCTION:
+BIO_gethostbyname 75 1_1_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0
+BIO_gets 76 1_1_0 EXIST::FUNCTION:
+BIO_new 78 1_1_0 EXIST::FUNCTION:
+BIO_new_accept 79 1_1_0 EXIST::FUNCTION:
+BIO_new_connect 80 1_1_0 EXIST::FUNCTION:
+BIO_new_fd 81 1_1_0 EXIST::FUNCTION:
+BIO_new_file 82 1_1_0 EXIST::FUNCTION:
+BIO_new_fp 83 1_1_0 EXIST::FUNCTION:STDIO
+BIO_new_socket 84 1_1_0 EXIST::FUNCTION:
+BIO_pop 85 1_1_0 EXIST::FUNCTION:
+BIO_printf 86 1_1_0 EXIST::FUNCTION:
+BIO_push 87 1_1_0 EXIST::FUNCTION:
+BIO_puts 88 1_1_0 EXIST::FUNCTION:
+BIO_read 89 1_1_0 EXIST::FUNCTION:
+BIO_s_accept 90 1_1_0 EXIST::FUNCTION:
+BIO_s_connect 91 1_1_0 EXIST::FUNCTION:
+BIO_s_fd 92 1_1_0 EXIST::FUNCTION:
+BIO_s_file 93 1_1_0 EXIST::FUNCTION:
+BIO_s_mem 95 1_1_0 EXIST::FUNCTION:
+BIO_s_null 96 1_1_0 EXIST::FUNCTION:
+BIO_s_proxy_client 97 1_1_0 NOEXIST::FUNCTION:
+BIO_s_socket 98 1_1_0 EXIST::FUNCTION:
+BIO_set 100 1_1_0 EXIST::FUNCTION:
+BIO_set_cipher 101 1_1_0 EXIST::FUNCTION:
+BIO_set_tcp_ndelay 102 1_1_0 EXIST::FUNCTION:
+BIO_sock_cleanup 103 1_1_0 EXIST::FUNCTION:
+BIO_sock_error 104 1_1_0 EXIST::FUNCTION:
+BIO_sock_init 105 1_1_0 EXIST::FUNCTION:
+BIO_sock_non_fatal_error 106 1_1_0 EXIST::FUNCTION:
+BIO_sock_should_retry 107 1_1_0 EXIST::FUNCTION:
+BIO_socket_ioctl 108 1_1_0 EXIST::FUNCTION:
+BIO_write 109 1_1_0 EXIST::FUNCTION:
+BN_CTX_free 110 1_1_0 EXIST::FUNCTION:
+BN_CTX_new 111 1_1_0 EXIST::FUNCTION:
+BN_MONT_CTX_free 112 1_1_0 EXIST::FUNCTION:
+BN_MONT_CTX_new 113 1_1_0 EXIST::FUNCTION:
+BN_MONT_CTX_set 114 1_1_0 EXIST::FUNCTION:
+BN_add 115 1_1_0 EXIST::FUNCTION:
+BN_add_word 116 1_1_0 EXIST::FUNCTION:
+BN_hex2bn 117 1_1_0 EXIST::FUNCTION:
+BN_bin2bn 118 1_1_0 EXIST::FUNCTION:
+BN_bn2hex 119 1_1_0 EXIST::FUNCTION:
+BN_bn2bin 120 1_1_0 EXIST::FUNCTION:
+BN_clear 121 1_1_0 EXIST::FUNCTION:
+BN_clear_bit 122 1_1_0 EXIST::FUNCTION:
+BN_clear_free 123 1_1_0 EXIST::FUNCTION:
+BN_cmp 124 1_1_0 EXIST::FUNCTION:
+BN_copy 125 1_1_0 EXIST::FUNCTION:
+BN_div 126 1_1_0 EXIST::FUNCTION:
+BN_div_word 127 1_1_0 EXIST::FUNCTION:
+BN_dup 128 1_1_0 EXIST::FUNCTION:
+BN_free 129 1_1_0 EXIST::FUNCTION:
+BN_from_montgomery 130 1_1_0 EXIST::FUNCTION:
+BN_gcd 131 1_1_0 EXIST::FUNCTION:
+BN_generate_prime 132 1_1_0 EXIST::FUNCTION:DEPRECATEDIN_0_9_8
+BN_get_word 133 1_1_0 EXIST::FUNCTION:
+BN_is_bit_set 134 1_1_0 EXIST::FUNCTION:
+BN_is_prime 135 1_1_0 EXIST::FUNCTION:DEPRECATEDIN_0_9_8
+BN_lshift 136 1_1_0 EXIST::FUNCTION:
+BN_lshift1 137 1_1_0 EXIST::FUNCTION:
+BN_mask_bits 138 1_1_0 EXIST::FUNCTION:
+BN_mod 139 1_1_0 NOEXIST::FUNCTION:
+BN_mod_exp 140 1_1_0 EXIST::FUNCTION:
+BN_mod_exp_mont 141 1_1_0 EXIST::FUNCTION:
+BN_mod_exp_simple 143 1_1_0 EXIST::FUNCTION:
+BN_mod_inverse 144 1_1_0 EXIST::FUNCTION:
+BN_mod_mul 145 1_1_0 EXIST::FUNCTION:
+BN_mod_mul_montgomery 146 1_1_0 EXIST::FUNCTION:
+BN_mod_word 148 1_1_0 EXIST::FUNCTION:
+BN_mul 149 1_1_0 EXIST::FUNCTION:
+BN_new 150 1_1_0 EXIST::FUNCTION:
+BN_num_bits 151 1_1_0 EXIST::FUNCTION:
+BN_num_bits_word 152 1_1_0 EXIST::FUNCTION:
+BN_options 153 1_1_0 EXIST::FUNCTION:
+BN_print 154 1_1_0 EXIST::FUNCTION:
+BN_print_fp 155 1_1_0 EXIST::FUNCTION:STDIO
+BN_rand 156 1_1_0 EXIST::FUNCTION:
+BN_reciprocal 157 1_1_0 EXIST::FUNCTION:
+BN_rshift 158 1_1_0 EXIST::FUNCTION:
+BN_rshift1 159 1_1_0 EXIST::FUNCTION:
+BN_set_bit 160 1_1_0 EXIST::FUNCTION:
+BN_set_word 161 1_1_0 EXIST::FUNCTION:
+BN_sqr 162 1_1_0 EXIST::FUNCTION:
+BN_sub 163 1_1_0 EXIST::FUNCTION:
+BN_to_ASN1_INTEGER 164 1_1_0 EXIST::FUNCTION:
+BN_ucmp 165 1_1_0 EXIST::FUNCTION:
+BN_value_one 166 1_1_0 EXIST::FUNCTION:
+BUF_MEM_free 167 1_1_0 EXIST::FUNCTION:
+BUF_MEM_grow 168 1_1_0 EXIST::FUNCTION:
+BUF_MEM_new 169 1_1_0 EXIST::FUNCTION:
+CONF_free 171 1_1_0 EXIST::FUNCTION:
+CONF_get_number 172 1_1_0 EXIST::FUNCTION:
+CONF_get_section 173 1_1_0 EXIST::FUNCTION:
+CONF_get_string 174 1_1_0 EXIST::FUNCTION:
+CONF_load 175 1_1_0 EXIST::FUNCTION:
+CRYPTO_add_lock 176 1_1_0 EXIST::FUNCTION:
+CRYPTO_mem_debug_free 177 1_1_0 EXIST::FUNCTION:CRYPTO_MDEBUG
+CRYPTO_mem_debug_malloc 178 1_1_0 EXIST::FUNCTION:CRYPTO_MDEBUG
+CRYPTO_mem_debug_realloc 179 1_1_0 EXIST::FUNCTION:CRYPTO_MDEBUG
+CRYPTO_dbg_remalloc 180 1_1_0 NOEXIST::FUNCTION:
+CRYPTO_free 181 1_1_0 EXIST::FUNCTION:
+CRYPTO_get_add_lock_callback 182 1_1_0 EXIST::FUNCTION:
+CRYPTO_get_id_callback 183 1_1_0 EXIST::FUNCTION:DEPRECATEDIN_1_0_0
+CRYPTO_get_lock_name 184 1_1_0 EXIST::FUNCTION:
+CRYPTO_get_locking_callback 185 1_1_0 EXIST::FUNCTION:
+CRYPTO_get_mem_functions 186 1_1_0 EXIST::FUNCTION:
+CRYPTO_lock 187 1_1_0 EXIST::FUNCTION:
+CRYPTO_malloc 188 1_1_0 EXIST::FUNCTION:
+CRYPTO_mem_ctrl 189 1_1_0 EXIST::FUNCTION:
+CRYPTO_mem_leaks 190 1_1_0 EXIST::FUNCTION:CRYPTO_MDEBUG
+CRYPTO_mem_leaks_cb 191 1_1_0 NOEXIST::FUNCTION:
+CRYPTO_mem_leaks_fp 192 1_1_0 EXIST::FUNCTION:CRYPTO_MDEBUG,STDIO
+CRYPTO_realloc 193 1_1_0 EXIST::FUNCTION:
+CRYPTO_remalloc 194 1_1_0 NOEXIST::FUNCTION:
+CRYPTO_set_add_lock_callback 195 1_1_0 EXIST::FUNCTION:
+CRYPTO_set_id_callback 196 1_1_0 EXIST::FUNCTION:DEPRECATEDIN_1_0_0
+CRYPTO_set_locking_callback 197 1_1_0 EXIST::FUNCTION:
+CRYPTO_set_mem_functions 198 1_1_0 EXIST::FUNCTION:
+CRYPTO_thread_id 199 1_1_0 EXIST::FUNCTION:DEPRECATEDIN_1_0_0
+DH_check 200 1_1_0 EXIST::FUNCTION:DH
+DH_compute_key 201 1_1_0 EXIST::FUNCTION:DH
+DH_free 202 1_1_0 EXIST::FUNCTION:DH
+DH_generate_key 203 1_1_0 EXIST::FUNCTION:DH
+DH_generate_parameters 204 1_1_0 EXIST::FUNCTION:DEPRECATEDIN_0_9_8,DH
+DH_new 205 1_1_0 EXIST::FUNCTION:DH
+DH_size 206 1_1_0 EXIST::FUNCTION:DH
+DHparams_print 207 1_1_0 EXIST::FUNCTION:DH
+DHparams_print_fp 208 1_1_0 EXIST::FUNCTION:DH,STDIO
+DSA_free 209 1_1_0 EXIST::FUNCTION:DSA
+DSA_generate_key 210 1_1_0 EXIST::FUNCTION:DSA
+DSA_generate_parameters 211 1_1_0 EXIST::FUNCTION:DEPRECATEDIN_0_9_8,DSA
+DSA_is_prime 212 1_1_0 NOEXIST::FUNCTION:
+DSA_new 213 1_1_0 EXIST::FUNCTION:DSA
+DSA_print 214 1_1_0 EXIST::FUNCTION:DSA
+DSA_print_fp 215 1_1_0 EXIST::FUNCTION:DSA,STDIO
+DSA_sign 216 1_1_0 EXIST::FUNCTION:DSA
+DSA_sign_setup 217 1_1_0 EXIST::FUNCTION:DSA
+DSA_size 218 1_1_0 EXIST::FUNCTION:DSA
+DSA_verify 219 1_1_0 EXIST::FUNCTION:DSA
+DSAparams_print 220 1_1_0 EXIST::FUNCTION:DSA
+DSAparams_print_fp 221 1_1_0 EXIST::FUNCTION:DSA,STDIO
+ERR_clear_error 222 1_1_0 EXIST::FUNCTION:
+ERR_error_string 223 1_1_0 EXIST::FUNCTION:
+ERR_free_strings 224 1_1_0 EXIST::FUNCTION:
+ERR_func_error_string 225 1_1_0 EXIST::FUNCTION:
+ERR_get_err_state_table 226 1_1_0 EXIST::FUNCTION:
+ERR_get_error 227 1_1_0 EXIST::FUNCTION:
+ERR_get_error_line 228 1_1_0 EXIST::FUNCTION:
+ERR_get_state 229 1_1_0 EXIST::FUNCTION:
+ERR_get_string_table 230 1_1_0 EXIST::FUNCTION:
+ERR_lib_error_string 231 1_1_0 EXIST::FUNCTION:
+ERR_load_ASN1_strings 232 1_1_0 EXIST::FUNCTION:
+ERR_load_BIO_strings 233 1_1_0 EXIST::FUNCTION:
+ERR_load_BN_strings 234 1_1_0 EXIST::FUNCTION:
+ERR_load_BUF_strings 235 1_1_0 EXIST::FUNCTION:
+ERR_load_CONF_strings 236 1_1_0 EXIST::FUNCTION:
+ERR_load_DH_strings 237 1_1_0 EXIST::FUNCTION:DH
+ERR_load_DSA_strings 238 1_1_0 EXIST::FUNCTION:DSA
+ERR_load_ERR_strings 239 1_1_0 EXIST::FUNCTION:
+ERR_load_EVP_strings 240 1_1_0 EXIST::FUNCTION:
+ERR_load_OBJ_strings 241 1_1_0 EXIST::FUNCTION:
+ERR_load_PEM_strings 242 1_1_0 EXIST::FUNCTION:
+ERR_load_PROXY_strings 243 1_1_0 NOEXIST::FUNCTION:
+ERR_load_RSA_strings 244 1_1_0 EXIST::FUNCTION:RSA
+ERR_load_X509_strings 245 1_1_0 EXIST::FUNCTION:
+ERR_load_crypto_strings 246 1_1_0 NOEXIST::FUNCTION:
+ERR_load_strings 247 1_1_0 EXIST::FUNCTION:
+ERR_peek_error 248 1_1_0 EXIST::FUNCTION:
+ERR_peek_error_line 249 1_1_0 EXIST::FUNCTION:
+ERR_print_errors 250 1_1_0 EXIST::FUNCTION:
+ERR_print_errors_fp 251 1_1_0 EXIST::FUNCTION:STDIO
+ERR_put_error 252 1_1_0 EXIST::FUNCTION:
+ERR_reason_error_string 253 1_1_0 EXIST::FUNCTION:
+ERR_remove_state 254 1_1_0 EXIST::FUNCTION:DEPRECATEDIN_1_0_0
+EVP_BytesToKey 255 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_CTX_cleanup 256 1_1_0 NOEXIST::FUNCTION:
+EVP_CipherFinal 257 1_1_0 EXIST::FUNCTION:
+EVP_CipherInit 258 1_1_0 EXIST::FUNCTION:
+EVP_CipherUpdate 259 1_1_0 EXIST::FUNCTION:
+EVP_DecodeBlock 260 1_1_0 EXIST::FUNCTION:
+EVP_DecodeFinal 261 1_1_0 EXIST::FUNCTION:
+EVP_DecodeInit 262 1_1_0 EXIST::FUNCTION:
+EVP_DecodeUpdate 263 1_1_0 EXIST::FUNCTION:
+EVP_DecryptFinal 264 1_1_0 EXIST::FUNCTION:
+EVP_DecryptInit 265 1_1_0 EXIST::FUNCTION:
+EVP_DecryptUpdate 266 1_1_0 EXIST::FUNCTION:
+EVP_DigestFinal 267 1_1_0 EXIST::FUNCTION:
+EVP_DigestInit 268 1_1_0 EXIST::FUNCTION:
+EVP_DigestUpdate 269 1_1_0 EXIST::FUNCTION:
+EVP_EncodeBlock 270 1_1_0 EXIST::FUNCTION:
+EVP_EncodeFinal 271 1_1_0 EXIST::FUNCTION:
+EVP_EncodeInit 272 1_1_0 EXIST::FUNCTION:
+EVP_EncodeUpdate 273 1_1_0 EXIST::FUNCTION:
+EVP_EncryptFinal 274 1_1_0 EXIST::FUNCTION:
+EVP_EncryptInit 275 1_1_0 EXIST::FUNCTION:
+EVP_EncryptUpdate 276 1_1_0 EXIST::FUNCTION:
+EVP_OpenFinal 277 1_1_0 EXIST::FUNCTION:RSA
+EVP_OpenInit 278 1_1_0 EXIST::FUNCTION:RSA
+EVP_PKEY_assign 279 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_copy_parameters 280 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_free 281 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_missing_parameters 282 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_new 283 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_save_parameters 284 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_size 285 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_type 286 1_1_0 EXIST::FUNCTION:
+EVP_SealFinal 287 1_1_0 EXIST::FUNCTION:RSA
+EVP_SealInit 288 1_1_0 EXIST::FUNCTION:RSA
+EVP_SignFinal 289 1_1_0 EXIST::FUNCTION:
+EVP_VerifyFinal 290 1_1_0 EXIST::FUNCTION:
+EVP_add_alias 291 1_1_0 NOEXIST::FUNCTION:
+EVP_add_cipher 292 1_1_0 EXIST::FUNCTION:
+EVP_add_digest 293 1_1_0 EXIST::FUNCTION:
+EVP_bf_cbc 294 1_1_0 EXIST::FUNCTION:BF
+EVP_bf_cfb64 295 1_1_0 EXIST::FUNCTION:BF
+EVP_bf_ecb 296 1_1_0 EXIST::FUNCTION:BF
+EVP_bf_ofb 297 1_1_0 EXIST::FUNCTION:BF
+EVP_cleanup 298 1_1_0 EXIST::FUNCTION:
+EVP_des_cbc 299 1_1_0 EXIST::FUNCTION:DES
+EVP_des_cfb64 300 1_1_0 EXIST::FUNCTION:DES
+EVP_des_ecb 301 1_1_0 EXIST::FUNCTION:DES
+EVP_des_ede 302 1_1_0 EXIST::FUNCTION:DES
+EVP_des_ede3 303 1_1_0 EXIST::FUNCTION:DES
+EVP_des_ede3_cbc 304 1_1_0 EXIST::FUNCTION:DES
+EVP_des_ede3_cfb64 305 1_1_0 EXIST::FUNCTION:DES
+EVP_des_ede3_ofb 306 1_1_0 EXIST::FUNCTION:DES
+EVP_des_ede_cbc 307 1_1_0 EXIST::FUNCTION:DES
+EVP_des_ede_cfb64 308 1_1_0 EXIST::FUNCTION:DES
+EVP_des_ede_ofb 309 1_1_0 EXIST::FUNCTION:DES
+EVP_des_ofb 310 1_1_0 EXIST::FUNCTION:DES
+EVP_desx_cbc 311 1_1_0 EXIST::FUNCTION:DES
+EVP_dss 312 1_1_0 NOEXIST::FUNCTION:
+EVP_dss1 313 1_1_0 NOEXIST::FUNCTION:
+EVP_enc_null 314 1_1_0 EXIST::FUNCTION:
+EVP_get_cipherbyname 315 1_1_0 EXIST::FUNCTION:
+EVP_get_digestbyname 316 1_1_0 EXIST::FUNCTION:
+EVP_get_pw_prompt 317 1_1_0 EXIST::FUNCTION:
+EVP_idea_cbc 318 1_1_0 EXIST::FUNCTION:IDEA
+EVP_idea_cfb64 319 1_1_0 EXIST::FUNCTION:IDEA
+EVP_idea_ecb 320 1_1_0 EXIST::FUNCTION:IDEA
+EVP_idea_ofb 321 1_1_0 EXIST::FUNCTION:IDEA
+EVP_md2 322 1_1_0 EXIST::FUNCTION:MD2
+EVP_md5 323 1_1_0 EXIST::FUNCTION:MD5
+EVP_md_null 324 1_1_0 EXIST::FUNCTION:
+EVP_rc2_cbc 325 1_1_0 EXIST::FUNCTION:RC2
+EVP_rc2_cfb64 326 1_1_0 EXIST::FUNCTION:RC2
+EVP_rc2_ecb 327 1_1_0 EXIST::FUNCTION:RC2
+EVP_rc2_ofb 328 1_1_0 EXIST::FUNCTION:RC2
+EVP_rc4 329 1_1_0 EXIST::FUNCTION:RC4
+EVP_read_pw_string 330 1_1_0 EXIST::FUNCTION:
+EVP_set_pw_prompt 331 1_1_0 EXIST::FUNCTION:
+EVP_sha 332 1_1_0 NOEXIST::FUNCTION:
+EVP_sha1 333 1_1_0 EXIST::FUNCTION:
+MD2 334 1_1_0 EXIST::FUNCTION:MD2
+MD2_Final 335 1_1_0 EXIST::FUNCTION:MD2
+MD2_Init 336 1_1_0 EXIST::FUNCTION:MD2
+MD2_Update 337 1_1_0 EXIST::FUNCTION:MD2
+MD2_options 338 1_1_0 EXIST::FUNCTION:MD2
+MD5 339 1_1_0 EXIST::FUNCTION:MD5
+MD5_Final 340 1_1_0 EXIST::FUNCTION:MD5
+MD5_Init 341 1_1_0 EXIST::FUNCTION:MD5
+MD5_Update 342 1_1_0 EXIST::FUNCTION:MD5
+MDC2 343 1_1_0 EXIST::FUNCTION:MDC2
+MDC2_Final 344 1_1_0 EXIST::FUNCTION:MDC2
+MDC2_Init 345 1_1_0 EXIST::FUNCTION:MDC2
+MDC2_Update 346 1_1_0 EXIST::FUNCTION:MDC2
+NETSCAPE_SPKAC_free 347 1_1_0 EXIST::FUNCTION:
+NETSCAPE_SPKAC_new 348 1_1_0 EXIST::FUNCTION:
+NETSCAPE_SPKI_free 349 1_1_0 EXIST::FUNCTION:
+NETSCAPE_SPKI_new 350 1_1_0 EXIST::FUNCTION:
+NETSCAPE_SPKI_sign 351 1_1_0 EXIST::FUNCTION:
+NETSCAPE_SPKI_verify 352 1_1_0 EXIST::FUNCTION:
+OBJ_add_object 353 1_1_0 EXIST::FUNCTION:
+OBJ_bsearch 354 1_1_0 NOEXIST::FUNCTION:
+OBJ_cleanup 355 1_1_0 EXIST::FUNCTION:
+OBJ_cmp 356 1_1_0 EXIST::FUNCTION:
+OBJ_create 357 1_1_0 EXIST::FUNCTION:
+OBJ_dup 358 1_1_0 EXIST::FUNCTION:
+OBJ_ln2nid 359 1_1_0 EXIST::FUNCTION:
+OBJ_new_nid 360 1_1_0 EXIST::FUNCTION:
+OBJ_nid2ln 361 1_1_0 EXIST::FUNCTION:
+OBJ_nid2obj 362 1_1_0 EXIST::FUNCTION:
+OBJ_nid2sn 363 1_1_0 EXIST::FUNCTION:
+OBJ_obj2nid 364 1_1_0 EXIST::FUNCTION:
+OBJ_sn2nid 365 1_1_0 EXIST::FUNCTION:
+OBJ_txt2nid 366 1_1_0 EXIST::FUNCTION:
+PEM_ASN1_read 367 1_1_0 EXIST::FUNCTION:STDIO
+PEM_ASN1_read_bio 368 1_1_0 EXIST::FUNCTION:
+PEM_ASN1_write 369 1_1_0 EXIST::FUNCTION:STDIO
+PEM_ASN1_write_bio 370 1_1_0 EXIST::FUNCTION:
+PEM_SealFinal 371 1_1_0 NOEXIST::FUNCTION:
+PEM_SealInit 372 1_1_0 NOEXIST::FUNCTION:
+PEM_SealUpdate 373 1_1_0 NOEXIST::FUNCTION:
+PEM_SignFinal 374 1_1_0 EXIST::FUNCTION:
+PEM_SignInit 375 1_1_0 EXIST::FUNCTION:
+PEM_SignUpdate 376 1_1_0 EXIST::FUNCTION:
+PEM_X509_INFO_read 377 1_1_0 EXIST::FUNCTION:STDIO
+PEM_X509_INFO_read_bio 378 1_1_0 EXIST::FUNCTION:
+PEM_X509_INFO_write_bio 379 1_1_0 EXIST::FUNCTION:
+PEM_dek_info 380 1_1_0 EXIST::FUNCTION:
+PEM_do_header 381 1_1_0 EXIST::FUNCTION:
+PEM_get_EVP_CIPHER_INFO 382 1_1_0 EXIST::FUNCTION:
+PEM_proc_type 383 1_1_0 EXIST::FUNCTION:
+PEM_read 384 1_1_0 EXIST::FUNCTION:STDIO
+PEM_read_DHparams 385 1_1_0 EXIST::FUNCTION:DH
+PEM_read_DSAPrivateKey 386 1_1_0 EXIST::FUNCTION:DSA
+PEM_read_DSAparams 387 1_1_0 EXIST::FUNCTION:DSA
+PEM_read_PKCS7 388 1_1_0 EXIST::FUNCTION:
+PEM_read_PrivateKey 389 1_1_0 EXIST::FUNCTION:
+PEM_read_RSAPrivateKey 390 1_1_0 EXIST::FUNCTION:RSA
+PEM_read_X509 391 1_1_0 EXIST::FUNCTION:
+PEM_read_X509_CRL 392 1_1_0 EXIST::FUNCTION:
+PEM_read_X509_REQ 393 1_1_0 EXIST::FUNCTION:
+PEM_read_bio 394 1_1_0 EXIST::FUNCTION:
+PEM_read_bio_DHparams 395 1_1_0 EXIST::FUNCTION:DH
+PEM_read_bio_DSAPrivateKey 396 1_1_0 EXIST::FUNCTION:DSA
+PEM_read_bio_DSAparams 397 1_1_0 EXIST::FUNCTION:DSA
+PEM_read_bio_PKCS7 398 1_1_0 EXIST::FUNCTION:
+PEM_read_bio_PrivateKey 399 1_1_0 EXIST::FUNCTION:
+PEM_read_bio_RSAPrivateKey 400 1_1_0 EXIST::FUNCTION:RSA
+PEM_read_bio_X509 401 1_1_0 EXIST::FUNCTION:
+PEM_read_bio_X509_CRL 402 1_1_0 EXIST::FUNCTION:
+PEM_read_bio_X509_REQ 403 1_1_0 EXIST::FUNCTION:
+PEM_write 404 1_1_0 EXIST::FUNCTION:STDIO
+PEM_write_DHparams 405 1_1_0 EXIST::FUNCTION:DH
+PEM_write_DSAPrivateKey 406 1_1_0 EXIST::FUNCTION:DSA
+PEM_write_DSAparams 407 1_1_0 EXIST::FUNCTION:DSA
+PEM_write_PKCS7 408 1_1_0 EXIST::FUNCTION:
+PEM_write_PrivateKey 409 1_1_0 EXIST::FUNCTION:
+PEM_write_RSAPrivateKey 410 1_1_0 EXIST::FUNCTION:RSA
+PEM_write_X509 411 1_1_0 EXIST::FUNCTION:
+PEM_write_X509_CRL 412 1_1_0 EXIST::FUNCTION:
+PEM_write_X509_REQ 413 1_1_0 EXIST::FUNCTION:
+PEM_write_bio 414 1_1_0 EXIST::FUNCTION:
+PEM_write_bio_DHparams 415 1_1_0 EXIST::FUNCTION:DH
+PEM_write_bio_DSAPrivateKey 416 1_1_0 EXIST::FUNCTION:DSA
+PEM_write_bio_DSAparams 417 1_1_0 EXIST::FUNCTION:DSA
+PEM_write_bio_PKCS7 418 1_1_0 EXIST::FUNCTION:
+PEM_write_bio_PrivateKey 419 1_1_0 EXIST::FUNCTION:
+PEM_write_bio_RSAPrivateKey 420 1_1_0 EXIST::FUNCTION:RSA
+PEM_write_bio_X509 421 1_1_0 EXIST::FUNCTION:
+PEM_write_bio_X509_CRL 422 1_1_0 EXIST::FUNCTION:
+PEM_write_bio_X509_REQ 423 1_1_0 EXIST::FUNCTION:
+PKCS7_DIGEST_free 424 1_1_0 EXIST::FUNCTION:
+PKCS7_DIGEST_new 425 1_1_0 EXIST::FUNCTION:
+PKCS7_ENCRYPT_free 426 1_1_0 EXIST::FUNCTION:
+PKCS7_ENCRYPT_new 427 1_1_0 EXIST::FUNCTION:
+PKCS7_ENC_CONTENT_free 428 1_1_0 EXIST::FUNCTION:
+PKCS7_ENC_CONTENT_new 429 1_1_0 EXIST::FUNCTION:
+PKCS7_ENVELOPE_free 430 1_1_0 EXIST::FUNCTION:
+PKCS7_ENVELOPE_new 431 1_1_0 EXIST::FUNCTION:
+PKCS7_ISSUER_AND_SERIAL_digest 432 1_1_0 EXIST::FUNCTION:
+PKCS7_ISSUER_AND_SERIAL_free 433 1_1_0 EXIST::FUNCTION:
+PKCS7_ISSUER_AND_SERIAL_new 434 1_1_0 EXIST::FUNCTION:
+PKCS7_RECIP_INFO_free 435 1_1_0 EXIST::FUNCTION:
+PKCS7_RECIP_INFO_new 436 1_1_0 EXIST::FUNCTION:
+PKCS7_SIGNED_free 437 1_1_0 EXIST::FUNCTION:
+PKCS7_SIGNED_new 438 1_1_0 EXIST::FUNCTION:
+PKCS7_SIGNER_INFO_free 439 1_1_0 EXIST::FUNCTION:
+PKCS7_SIGNER_INFO_new 440 1_1_0 EXIST::FUNCTION:
+PKCS7_SIGN_ENVELOPE_free 441 1_1_0 EXIST::FUNCTION:
+PKCS7_SIGN_ENVELOPE_new 442 1_1_0 EXIST::FUNCTION:
+PKCS7_dup 443 1_1_0 EXIST::FUNCTION:
+PKCS7_free 444 1_1_0 EXIST::FUNCTION:
+PKCS7_new 445 1_1_0 EXIST::FUNCTION:
+PROXY_ENTRY_add_noproxy 446 1_1_0 NOEXIST::FUNCTION:
+PROXY_ENTRY_clear_noproxy 447 1_1_0 NOEXIST::FUNCTION:
+PROXY_ENTRY_free 448 1_1_0 NOEXIST::FUNCTION:
+PROXY_ENTRY_get_noproxy 449 1_1_0 NOEXIST::FUNCTION:
+PROXY_ENTRY_new 450 1_1_0 NOEXIST::FUNCTION:
+PROXY_ENTRY_set_server 451 1_1_0 NOEXIST::FUNCTION:
+PROXY_add_noproxy 452 1_1_0 NOEXIST::FUNCTION:
+PROXY_add_server 453 1_1_0 NOEXIST::FUNCTION:
+PROXY_check_by_host 454 1_1_0 NOEXIST::FUNCTION:
+PROXY_check_url 455 1_1_0 NOEXIST::FUNCTION:
+PROXY_clear_noproxy 456 1_1_0 NOEXIST::FUNCTION:
+PROXY_free 457 1_1_0 NOEXIST::FUNCTION:
+PROXY_get_noproxy 458 1_1_0 NOEXIST::FUNCTION:
+PROXY_get_proxies 459 1_1_0 NOEXIST::FUNCTION:
+PROXY_get_proxy_entry 460 1_1_0 NOEXIST::FUNCTION:
+PROXY_load_conf 461 1_1_0 NOEXIST::FUNCTION:
+PROXY_new 462 1_1_0 NOEXIST::FUNCTION:
+PROXY_print 463 1_1_0 NOEXIST::FUNCTION:
+RAND_bytes 464 1_1_0 EXIST::FUNCTION:
+RAND_cleanup 465 1_1_0 EXIST::FUNCTION:
+RAND_file_name 466 1_1_0 EXIST::FUNCTION:
+RAND_load_file 467 1_1_0 EXIST::FUNCTION:
+RAND_screen 468 1_1_0 EXIST:WIN32:FUNCTION:
+RAND_seed 469 1_1_0 EXIST::FUNCTION:
+RAND_write_file 470 1_1_0 EXIST::FUNCTION:
+RC2_cbc_encrypt 471 1_1_0 EXIST::FUNCTION:RC2
+RC2_cfb64_encrypt 472 1_1_0 EXIST::FUNCTION:RC2
+RC2_ecb_encrypt 473 1_1_0 EXIST::FUNCTION:RC2
+RC2_encrypt 474 1_1_0 EXIST::FUNCTION:RC2
+RC2_ofb64_encrypt 475 1_1_0 EXIST::FUNCTION:RC2
+RC2_set_key 476 1_1_0 EXIST::FUNCTION:RC2
+RC4 477 1_1_0 EXIST::FUNCTION:RC4
+RC4_options 478 1_1_0 EXIST::FUNCTION:RC4
+RC4_set_key 479 1_1_0 EXIST::FUNCTION:RC4
+RSAPrivateKey_asn1_meth 480 1_1_0 NOEXIST::FUNCTION:
+RSAPrivateKey_dup 481 1_1_0 EXIST::FUNCTION:RSA
+RSAPublicKey_dup 482 1_1_0 EXIST::FUNCTION:RSA
+RSA_PKCS1_OpenSSL 483 1_1_0 EXIST::FUNCTION:RSA
+RSA_free 484 1_1_0 EXIST::FUNCTION:RSA
+RSA_generate_key 485 1_1_0 EXIST::FUNCTION:DEPRECATEDIN_0_9_8,RSA
+RSA_new 486 1_1_0 EXIST::FUNCTION:RSA
+RSA_new_method 487 1_1_0 EXIST::FUNCTION:RSA
+RSA_print 488 1_1_0 EXIST::FUNCTION:RSA
+RSA_print_fp 489 1_1_0 EXIST::FUNCTION:RSA,STDIO
+RSA_private_decrypt 490 1_1_0 EXIST::FUNCTION:RSA
+RSA_private_encrypt 491 1_1_0 EXIST::FUNCTION:RSA
+RSA_public_decrypt 492 1_1_0 EXIST::FUNCTION:RSA
+RSA_public_encrypt 493 1_1_0 EXIST::FUNCTION:RSA
+RSA_set_default_method 494 1_1_0 EXIST::FUNCTION:RSA
+RSA_sign 495 1_1_0 EXIST::FUNCTION:RSA
+RSA_sign_ASN1_OCTET_STRING 496 1_1_0 EXIST::FUNCTION:RSA
+RSA_size 497 1_1_0 EXIST::FUNCTION:RSA
+RSA_verify 498 1_1_0 EXIST::FUNCTION:RSA
+RSA_verify_ASN1_OCTET_STRING 499 1_1_0 EXIST::FUNCTION:RSA
+SHA 500 1_1_0 NOEXIST::FUNCTION:
+SHA1 501 1_1_0 EXIST::FUNCTION:
+SHA1_Final 502 1_1_0 EXIST::FUNCTION:
+SHA1_Init 503 1_1_0 EXIST::FUNCTION:
+SHA1_Update 504 1_1_0 EXIST::FUNCTION:
+SHA_Final 505 1_1_0 NOEXIST::FUNCTION:
+SHA_Init 506 1_1_0 NOEXIST::FUNCTION:
+SHA_Update 507 1_1_0 NOEXIST::FUNCTION:
+OpenSSL_add_all_algorithms 508 1_1_0 NOEXIST::FUNCTION:
+OpenSSL_add_all_ciphers 509 1_1_0 NOEXIST::FUNCTION:
+OpenSSL_add_all_digests 510 1_1_0 NOEXIST::FUNCTION:
+TXT_DB_create_index 511 1_1_0 EXIST::FUNCTION:
+TXT_DB_free 512 1_1_0 EXIST::FUNCTION:
+TXT_DB_get_by_index 513 1_1_0 EXIST::FUNCTION:
+TXT_DB_insert 514 1_1_0 EXIST::FUNCTION:
+TXT_DB_read 515 1_1_0 EXIST::FUNCTION:
+TXT_DB_write 516 1_1_0 EXIST::FUNCTION:
+X509_ALGOR_free 517 1_1_0 EXIST::FUNCTION:
+X509_ALGOR_new 518 1_1_0 EXIST::FUNCTION:
+X509_ATTRIBUTE_free 519 1_1_0 EXIST::FUNCTION:
+X509_ATTRIBUTE_new 520 1_1_0 EXIST::FUNCTION:
+X509_CINF_free 521 1_1_0 EXIST::FUNCTION:
+X509_CINF_new 522 1_1_0 EXIST::FUNCTION:
+X509_CRL_INFO_free 523 1_1_0 EXIST::FUNCTION:
+X509_CRL_INFO_new 524 1_1_0 EXIST::FUNCTION:
+X509_CRL_add_ext 525 1_1_0 EXIST::FUNCTION:
+X509_CRL_cmp 526 1_1_0 EXIST::FUNCTION:
+X509_CRL_delete_ext 527 1_1_0 EXIST::FUNCTION:
+X509_CRL_dup 528 1_1_0 EXIST::FUNCTION:
+X509_CRL_free 529 1_1_0 EXIST::FUNCTION:
+X509_CRL_get_ext 530 1_1_0 EXIST::FUNCTION:
+X509_CRL_get_ext_by_NID 531 1_1_0 EXIST::FUNCTION:
+X509_CRL_get_ext_by_OBJ 532 1_1_0 EXIST::FUNCTION:
+X509_CRL_get_ext_by_critical 533 1_1_0 EXIST::FUNCTION:
+X509_CRL_get_ext_count 534 1_1_0 EXIST::FUNCTION:
+X509_CRL_new 535 1_1_0 EXIST::FUNCTION:
+X509_CRL_sign 536 1_1_0 EXIST::FUNCTION:
+X509_CRL_verify 537 1_1_0 EXIST::FUNCTION:
+X509_EXTENSION_create_by_NID 538 1_1_0 EXIST::FUNCTION:
+X509_EXTENSION_create_by_OBJ 539 1_1_0 EXIST::FUNCTION:
+X509_EXTENSION_dup 540 1_1_0 EXIST::FUNCTION:
+X509_EXTENSION_free 541 1_1_0 EXIST::FUNCTION:
+X509_EXTENSION_get_critical 542 1_1_0 EXIST::FUNCTION:
+X509_EXTENSION_get_data 543 1_1_0 EXIST::FUNCTION:
+X509_EXTENSION_get_object 544 1_1_0 EXIST::FUNCTION:
+X509_EXTENSION_new 545 1_1_0 EXIST::FUNCTION:
+X509_EXTENSION_set_critical 546 1_1_0 EXIST::FUNCTION:
+X509_EXTENSION_set_data 547 1_1_0 EXIST::FUNCTION:
+X509_EXTENSION_set_object 548 1_1_0 EXIST::FUNCTION:
+X509_INFO_free 549 1_1_0 EXIST::FUNCTION:
+X509_INFO_new 550 1_1_0 EXIST::FUNCTION:
+X509_LOOKUP_by_alias 551 1_1_0 EXIST::FUNCTION:
+X509_LOOKUP_by_fingerprint 552 1_1_0 EXIST::FUNCTION:
+X509_LOOKUP_by_issuer_serial 553 1_1_0 EXIST::FUNCTION:
+X509_LOOKUP_by_subject 554 1_1_0 EXIST::FUNCTION:
+X509_LOOKUP_ctrl 555 1_1_0 EXIST::FUNCTION:
+X509_LOOKUP_file 556 1_1_0 EXIST::FUNCTION:
+X509_LOOKUP_free 557 1_1_0 EXIST::FUNCTION:
+X509_LOOKUP_hash_dir 558 1_1_0 EXIST::FUNCTION:
+X509_LOOKUP_init 559 1_1_0 EXIST::FUNCTION:
+X509_LOOKUP_new 560 1_1_0 EXIST::FUNCTION:
+X509_LOOKUP_shutdown 561 1_1_0 EXIST::FUNCTION:
+X509_NAME_ENTRY_create_by_NID 562 1_1_0 EXIST::FUNCTION:
+X509_NAME_ENTRY_create_by_OBJ 563 1_1_0 EXIST::FUNCTION:
+X509_NAME_ENTRY_dup 564 1_1_0 EXIST::FUNCTION:
+X509_NAME_ENTRY_free 565 1_1_0 EXIST::FUNCTION:
+X509_NAME_ENTRY_get_data 566 1_1_0 EXIST::FUNCTION:
+X509_NAME_ENTRY_get_object 567 1_1_0 EXIST::FUNCTION:
+X509_NAME_ENTRY_new 568 1_1_0 EXIST::FUNCTION:
+X509_NAME_ENTRY_set_data 569 1_1_0 EXIST::FUNCTION:
+X509_NAME_ENTRY_set_object 570 1_1_0 EXIST::FUNCTION:
+X509_NAME_add_entry 571 1_1_0 EXIST::FUNCTION:
+X509_NAME_cmp 572 1_1_0 EXIST::FUNCTION:
+X509_NAME_delete_entry 573 1_1_0 EXIST::FUNCTION:
+X509_NAME_digest 574 1_1_0 EXIST::FUNCTION:
+X509_NAME_dup 575 1_1_0 EXIST::FUNCTION:
+X509_NAME_entry_count 576 1_1_0 EXIST::FUNCTION:
+X509_NAME_free 577 1_1_0 EXIST::FUNCTION:
+X509_NAME_get_entry 578 1_1_0 EXIST::FUNCTION:
+X509_NAME_get_index_by_NID 579 1_1_0 EXIST::FUNCTION:
+X509_NAME_get_index_by_OBJ 580 1_1_0 EXIST::FUNCTION:
+X509_NAME_get_text_by_NID 581 1_1_0 EXIST::FUNCTION:
+X509_NAME_get_text_by_OBJ 582 1_1_0 EXIST::FUNCTION:
+X509_NAME_hash 583 1_1_0 EXIST::FUNCTION:
+X509_NAME_new 584 1_1_0 EXIST::FUNCTION:
+X509_NAME_oneline 585 1_1_0 EXIST::FUNCTION:
+X509_NAME_print 586 1_1_0 EXIST::FUNCTION:
+X509_NAME_set 587 1_1_0 EXIST::FUNCTION:
+X509_OBJECT_free_contents 588 1_1_0 EXIST::FUNCTION:
+X509_OBJECT_retrieve_by_subject 589 1_1_0 EXIST::FUNCTION:
+X509_OBJECT_up_ref_count 590 1_1_0 EXIST::FUNCTION:
+X509_PKEY_free 591 1_1_0 EXIST::FUNCTION:
+X509_PKEY_new 592 1_1_0 EXIST::FUNCTION:
+X509_PUBKEY_free 593 1_1_0 EXIST::FUNCTION:
+X509_PUBKEY_get 594 1_1_0 EXIST::FUNCTION:
+X509_PUBKEY_new 595 1_1_0 EXIST::FUNCTION:
+X509_PUBKEY_set 596 1_1_0 EXIST::FUNCTION:
+X509_REQ_INFO_free 597 1_1_0 EXIST::FUNCTION:
+X509_REQ_INFO_new 598 1_1_0 EXIST::FUNCTION:
+X509_REQ_dup 599 1_1_0 EXIST::FUNCTION:
+X509_REQ_free 600 1_1_0 EXIST::FUNCTION:
+X509_REQ_get_pubkey 601 1_1_0 EXIST::FUNCTION:
+X509_REQ_new 602 1_1_0 EXIST::FUNCTION:
+X509_REQ_print 603 1_1_0 EXIST::FUNCTION:
+X509_REQ_print_fp 604 1_1_0 EXIST::FUNCTION:STDIO
+X509_REQ_set_pubkey 605 1_1_0 EXIST::FUNCTION:
+X509_REQ_set_subject_name 606 1_1_0 EXIST::FUNCTION:
+X509_REQ_set_version 607 1_1_0 EXIST::FUNCTION:
+X509_REQ_sign 608 1_1_0 EXIST::FUNCTION:
+X509_REQ_to_X509 609 1_1_0 EXIST::FUNCTION:
+X509_REQ_verify 610 1_1_0 EXIST::FUNCTION:
+X509_REVOKED_add_ext 611 1_1_0 EXIST::FUNCTION:
+X509_REVOKED_delete_ext 612 1_1_0 EXIST::FUNCTION:
+X509_REVOKED_free 613 1_1_0 EXIST::FUNCTION:
+X509_REVOKED_get_ext 614 1_1_0 EXIST::FUNCTION:
+X509_REVOKED_get_ext_by_NID 615 1_1_0 EXIST::FUNCTION:
+X509_REVOKED_get_ext_by_OBJ 616 1_1_0 EXIST::FUNCTION:
+X509_REVOKED_get_ext_by_critical 617 1_1_0 EXIST::FUNCTION:
+X509_REVOKED_get_ext_count 618 1_1_0 EXIST::FUNCTION:
+X509_REVOKED_new 619 1_1_0 EXIST::FUNCTION:
+X509_SIG_free 620 1_1_0 EXIST::FUNCTION:
+X509_SIG_new 621 1_1_0 EXIST::FUNCTION:
+X509_STORE_CTX_cleanup 622 1_1_0 EXIST::FUNCTION:
+X509_STORE_CTX_init 623 1_1_0 EXIST::FUNCTION:
+X509_STORE_add_cert 624 1_1_0 EXIST::FUNCTION:
+X509_STORE_add_lookup 625 1_1_0 EXIST::FUNCTION:
+X509_STORE_free 626 1_1_0 EXIST::FUNCTION:
+X509_STORE_get_by_subject 627 1_1_0 EXIST::FUNCTION:
+X509_STORE_load_locations 628 1_1_0 EXIST::FUNCTION:
+X509_STORE_new 629 1_1_0 EXIST::FUNCTION:
+X509_STORE_set_default_paths 630 1_1_0 EXIST::FUNCTION:
+X509_VAL_free 631 1_1_0 EXIST::FUNCTION:
+X509_VAL_new 632 1_1_0 EXIST::FUNCTION:
+X509_add_ext 633 1_1_0 EXIST::FUNCTION:
+X509_asn1_meth 634 1_1_0 NOEXIST::FUNCTION:
+X509_certificate_type 635 1_1_0 EXIST::FUNCTION:
+X509_check_private_key 636 1_1_0 EXIST::FUNCTION:
+X509_cmp_current_time 637 1_1_0 EXIST::FUNCTION:
+X509_delete_ext 638 1_1_0 EXIST::FUNCTION:
+X509_digest 639 1_1_0 EXIST::FUNCTION:
+X509_dup 640 1_1_0 EXIST::FUNCTION:
+X509_free 641 1_1_0 EXIST::FUNCTION:
+X509_get_default_cert_area 642 1_1_0 EXIST::FUNCTION:
+X509_get_default_cert_dir 643 1_1_0 EXIST::FUNCTION:
+X509_get_default_cert_dir_env 644 1_1_0 EXIST::FUNCTION:
+X509_get_default_cert_file 645 1_1_0 EXIST::FUNCTION:
+X509_get_default_cert_file_env 646 1_1_0 EXIST::FUNCTION:
+X509_get_default_private_dir 647 1_1_0 EXIST::FUNCTION:
+X509_get_ext 648 1_1_0 EXIST::FUNCTION:
+X509_get_ext_by_NID 649 1_1_0 EXIST::FUNCTION:
+X509_get_ext_by_OBJ 650 1_1_0 EXIST::FUNCTION:
+X509_get_ext_by_critical 651 1_1_0 EXIST::FUNCTION:
+X509_get_ext_count 652 1_1_0 EXIST::FUNCTION:
+X509_get_issuer_name 653 1_1_0 EXIST::FUNCTION:
+X509_get_pubkey 654 1_1_0 EXIST::FUNCTION:
+X509_get_pubkey_parameters 655 1_1_0 EXIST::FUNCTION:
+X509_get_serialNumber 656 1_1_0 EXIST::FUNCTION:
+X509_get_subject_name 657 1_1_0 EXIST::FUNCTION:
+X509_gmtime_adj 658 1_1_0 EXIST::FUNCTION:
+X509_issuer_and_serial_cmp 659 1_1_0 EXIST::FUNCTION:
+X509_issuer_and_serial_hash 660 1_1_0 EXIST::FUNCTION:
+X509_issuer_name_cmp 661 1_1_0 EXIST::FUNCTION:
+X509_issuer_name_hash 662 1_1_0 EXIST::FUNCTION:
+X509_load_cert_file 663 1_1_0 EXIST::FUNCTION:
+X509_new 664 1_1_0 EXIST::FUNCTION:
+X509_print 665 1_1_0 EXIST::FUNCTION:
+X509_print_fp 666 1_1_0 EXIST::FUNCTION:STDIO
+X509_set_issuer_name 667 1_1_0 EXIST::FUNCTION:
+X509_set_notAfter 668 1_1_0 EXIST::FUNCTION:
+X509_set_notBefore 669 1_1_0 EXIST::FUNCTION:
+X509_set_pubkey 670 1_1_0 EXIST::FUNCTION:
+X509_set_serialNumber 671 1_1_0 EXIST::FUNCTION:
+X509_set_subject_name 672 1_1_0 EXIST::FUNCTION:
+X509_set_version 673 1_1_0 EXIST::FUNCTION:
+X509_sign 674 1_1_0 EXIST::FUNCTION:
+X509_subject_name_cmp 675 1_1_0 EXIST::FUNCTION:
+X509_subject_name_hash 676 1_1_0 EXIST::FUNCTION:
+X509_to_X509_REQ 677 1_1_0 EXIST::FUNCTION:
+X509_verify 678 1_1_0 EXIST::FUNCTION:
+X509_verify_cert 679 1_1_0 EXIST::FUNCTION:
+X509_verify_cert_error_string 680 1_1_0 EXIST::FUNCTION:
+X509v3_add_ext 681 1_1_0 EXIST::FUNCTION:
+X509v3_add_extension 682 1_1_0 NOEXIST::FUNCTION:
+X509v3_add_netscape_extensions 683 1_1_0 NOEXIST::FUNCTION:
+X509v3_add_standard_extensions 684 1_1_0 NOEXIST::FUNCTION:
+X509v3_cleanup_extensions 685 1_1_0 NOEXIST::FUNCTION:
+X509v3_data_type_by_NID 686 1_1_0 NOEXIST::FUNCTION:
+X509v3_data_type_by_OBJ 687 1_1_0 NOEXIST::FUNCTION:
+X509v3_delete_ext 688 1_1_0 EXIST::FUNCTION:
+X509v3_get_ext 689 1_1_0 EXIST::FUNCTION:
+X509v3_get_ext_by_NID 690 1_1_0 EXIST::FUNCTION:
+X509v3_get_ext_by_OBJ 691 1_1_0 EXIST::FUNCTION:
+X509v3_get_ext_by_critical 692 1_1_0 EXIST::FUNCTION:
+X509v3_get_ext_count 693 1_1_0 EXIST::FUNCTION:
+X509v3_pack_string 694 1_1_0 NOEXIST::FUNCTION:
+X509v3_pack_type_by_NID 695 1_1_0 NOEXIST::FUNCTION:
+X509v3_pack_type_by_OBJ 696 1_1_0 NOEXIST::FUNCTION:
+X509v3_unpack_string 697 1_1_0 NOEXIST::FUNCTION:
+_des_crypt 698 1_1_0 NOEXIST::FUNCTION:
+a2d_ASN1_OBJECT 699 1_1_0 EXIST::FUNCTION:
+a2i_ASN1_INTEGER 700 1_1_0 EXIST::FUNCTION:
+a2i_ASN1_STRING 701 1_1_0 EXIST::FUNCTION:
+asn1_Finish 702 1_1_0 NOEXIST::FUNCTION:
+asn1_GetSequence 703 1_1_0 NOEXIST::FUNCTION:
+bn_div_words 704 1_1_0 NOEXIST::FUNCTION:
+bn_expand2 705 1_1_0 NOEXIST::FUNCTION:
+bn_mul_add_words 706 1_1_0 NOEXIST::FUNCTION:
+bn_mul_words 707 1_1_0 NOEXIST::FUNCTION:
+BN_uadd 708 1_1_0 EXIST::FUNCTION:
+BN_usub 709 1_1_0 EXIST::FUNCTION:
+bn_sqr_words 710 1_1_0 NOEXIST::FUNCTION:
+_ossl_old_crypt 711 1_1_0 NOEXIST::FUNCTION:
+d2i_ASN1_BIT_STRING 712 1_1_0 EXIST::FUNCTION:
+d2i_ASN1_BOOLEAN 713 1_1_0 NOEXIST::FUNCTION:
+d2i_ASN1_HEADER 714 1_1_0 NOEXIST::FUNCTION:
+d2i_ASN1_IA5STRING 715 1_1_0 EXIST::FUNCTION:
+d2i_ASN1_INTEGER 716 1_1_0 EXIST::FUNCTION:
+d2i_ASN1_OBJECT 717 1_1_0 EXIST::FUNCTION:
+d2i_ASN1_OCTET_STRING 718 1_1_0 EXIST::FUNCTION:
+d2i_ASN1_PRINTABLE 719 1_1_0 EXIST::FUNCTION:
+d2i_ASN1_PRINTABLESTRING 720 1_1_0 EXIST::FUNCTION:
+d2i_ASN1_SET 721 1_1_0 NOEXIST::FUNCTION:
+d2i_ASN1_T61STRING 722 1_1_0 EXIST::FUNCTION:
+d2i_ASN1_TYPE 723 1_1_0 EXIST::FUNCTION:
+d2i_ASN1_UTCTIME 724 1_1_0 EXIST::FUNCTION:
+d2i_ASN1_bytes 725 1_1_0 NOEXIST::FUNCTION:
+d2i_ASN1_type_bytes 726 1_1_0 NOEXIST::FUNCTION:
+d2i_DHparams 727 1_1_0 EXIST::FUNCTION:DH
+d2i_DSAPrivateKey 728 1_1_0 EXIST::FUNCTION:DSA
+d2i_DSAPrivateKey_bio 729 1_1_0 EXIST::FUNCTION:DSA
+d2i_DSAPrivateKey_fp 730 1_1_0 EXIST::FUNCTION:DSA,STDIO
+d2i_DSAPublicKey 731 1_1_0 EXIST::FUNCTION:DSA
+d2i_DSAparams 732 1_1_0 EXIST::FUNCTION:DSA
+d2i_NETSCAPE_SPKAC 733 1_1_0 EXIST::FUNCTION:
+d2i_NETSCAPE_SPKI 734 1_1_0 EXIST::FUNCTION:
+d2i_Netscape_RSA 735 1_1_0 NOEXIST::FUNCTION:
+d2i_PKCS7 736 1_1_0 EXIST::FUNCTION:
+d2i_PKCS7_DIGEST 737 1_1_0 EXIST::FUNCTION:
+d2i_PKCS7_ENCRYPT 738 1_1_0 EXIST::FUNCTION:
+d2i_PKCS7_ENC_CONTENT 739 1_1_0 EXIST::FUNCTION:
+d2i_PKCS7_ENVELOPE 740 1_1_0 EXIST::FUNCTION:
+d2i_PKCS7_ISSUER_AND_SERIAL 741 1_1_0 EXIST::FUNCTION:
+d2i_PKCS7_RECIP_INFO 742 1_1_0 EXIST::FUNCTION:
+d2i_PKCS7_SIGNED 743 1_1_0 EXIST::FUNCTION:
+d2i_PKCS7_SIGNER_INFO 744 1_1_0 EXIST::FUNCTION:
+d2i_PKCS7_SIGN_ENVELOPE 745 1_1_0 EXIST::FUNCTION:
+d2i_PKCS7_bio 746 1_1_0 EXIST::FUNCTION:
+d2i_PKCS7_fp 747 1_1_0 EXIST::FUNCTION:STDIO
+d2i_PrivateKey 748 1_1_0 EXIST::FUNCTION:
+d2i_PublicKey 749 1_1_0 EXIST::FUNCTION:
+d2i_RSAPrivateKey 750 1_1_0 EXIST::FUNCTION:RSA
+d2i_RSAPrivateKey_bio 751 1_1_0 EXIST::FUNCTION:RSA
+d2i_RSAPrivateKey_fp 752 1_1_0 EXIST::FUNCTION:RSA,STDIO
+d2i_RSAPublicKey 753 1_1_0 EXIST::FUNCTION:RSA
+d2i_X509 754 1_1_0 EXIST::FUNCTION:
+d2i_X509_ALGOR 755 1_1_0 EXIST::FUNCTION:
+d2i_X509_ATTRIBUTE 756 1_1_0 EXIST::FUNCTION:
+d2i_X509_CINF 757 1_1_0 EXIST::FUNCTION:
+d2i_X509_CRL 758 1_1_0 EXIST::FUNCTION:
+d2i_X509_CRL_INFO 759 1_1_0 EXIST::FUNCTION:
+d2i_X509_CRL_bio 760 1_1_0 EXIST::FUNCTION:
+d2i_X509_CRL_fp 761 1_1_0 EXIST::FUNCTION:STDIO
+d2i_X509_EXTENSION 762 1_1_0 EXIST::FUNCTION:
+d2i_X509_NAME 763 1_1_0 EXIST::FUNCTION:
+d2i_X509_NAME_ENTRY 764 1_1_0 EXIST::FUNCTION:
+d2i_X509_PKEY 765 1_1_0 NOEXIST::FUNCTION:
+d2i_X509_PUBKEY 766 1_1_0 EXIST::FUNCTION:
+d2i_X509_REQ 767 1_1_0 EXIST::FUNCTION:
+d2i_X509_REQ_INFO 768 1_1_0 EXIST::FUNCTION:
+d2i_X509_REQ_bio 769 1_1_0 EXIST::FUNCTION:
+d2i_X509_REQ_fp 770 1_1_0 EXIST::FUNCTION:STDIO
+d2i_X509_REVOKED 771 1_1_0 EXIST::FUNCTION:
+d2i_X509_SIG 772 1_1_0 EXIST::FUNCTION:
+d2i_X509_VAL 773 1_1_0 EXIST::FUNCTION:
+d2i_X509_bio 774 1_1_0 EXIST::FUNCTION:
+d2i_X509_fp 775 1_1_0 EXIST::FUNCTION:STDIO
+DES_cbc_cksum 777 1_1_0 EXIST::FUNCTION:DES
+DES_cbc_encrypt 778 1_1_0 EXIST::FUNCTION:DES
+DES_cblock_print_file 779 1_1_0 NOEXIST::FUNCTION:
+DES_cfb64_encrypt 780 1_1_0 EXIST::FUNCTION:DES
+DES_cfb_encrypt 781 1_1_0 EXIST::FUNCTION:DES
+DES_decrypt3 782 1_1_0 EXIST::FUNCTION:DES
+DES_ecb3_encrypt 783 1_1_0 EXIST::FUNCTION:DES
+DES_ecb_encrypt 784 1_1_0 EXIST::FUNCTION:DES
+DES_ede3_cbc_encrypt 785 1_1_0 EXIST::FUNCTION:DES
+DES_ede3_cfb64_encrypt 786 1_1_0 EXIST::FUNCTION:DES
+DES_ede3_ofb64_encrypt 787 1_1_0 EXIST::FUNCTION:DES
+DES_enc_read 788 1_1_0 EXIST::FUNCTION:DES
+DES_enc_write 789 1_1_0 EXIST::FUNCTION:DES
+DES_encrypt1 790 1_1_0 EXIST::FUNCTION:DES
+DES_encrypt2 791 1_1_0 EXIST::FUNCTION:DES
+DES_encrypt3 792 1_1_0 EXIST::FUNCTION:DES
+DES_fcrypt 793 1_1_0 EXIST::FUNCTION:DES
+DES_is_weak_key 794 1_1_0 EXIST::FUNCTION:DES
+DES_key_sched 795 1_1_0 EXIST::FUNCTION:DES
+DES_ncbc_encrypt 796 1_1_0 EXIST::FUNCTION:DES
+DES_ofb64_encrypt 797 1_1_0 EXIST::FUNCTION:DES
+DES_ofb_encrypt 798 1_1_0 EXIST::FUNCTION:DES
+DES_options 799 1_1_0 EXIST::FUNCTION:DES
+DES_pcbc_encrypt 800 1_1_0 EXIST::FUNCTION:DES
+DES_quad_cksum 801 1_1_0 EXIST::FUNCTION:DES
+DES_random_key 802 1_1_0 EXIST::FUNCTION:DES
+_ossl_old_des_random_seed 803 1_1_0 NOEXIST::FUNCTION:
+_ossl_old_des_read_2passwords 804 1_1_0 NOEXIST::FUNCTION:
+_ossl_old_des_read_password 805 1_1_0 NOEXIST::FUNCTION:
+_ossl_old_des_read_pw 806 1_1_0 NOEXIST::FUNCTION:
+_ossl_old_des_read_pw_string 807 1_1_0 NOEXIST::FUNCTION:
+DES_set_key 808 1_1_0 EXIST::FUNCTION:DES
+DES_set_odd_parity 809 1_1_0 EXIST::FUNCTION:DES
+DES_string_to_2keys 810 1_1_0 EXIST::FUNCTION:DES
+DES_string_to_key 811 1_1_0 EXIST::FUNCTION:DES
+DES_xcbc_encrypt 812 1_1_0 EXIST::FUNCTION:DES
+DES_xwhite_in2out 813 1_1_0 NOEXIST::FUNCTION:
+fcrypt_body 814 1_1_0 NOEXIST::FUNCTION:
+i2a_ASN1_INTEGER 815 1_1_0 EXIST::FUNCTION:
+i2a_ASN1_OBJECT 816 1_1_0 EXIST::FUNCTION:
+i2a_ASN1_STRING 817 1_1_0 EXIST::FUNCTION:
+i2d_ASN1_BIT_STRING 818 1_1_0 EXIST::FUNCTION:
+i2d_ASN1_BOOLEAN 819 1_1_0 NOEXIST::FUNCTION:
+i2d_ASN1_HEADER 820 1_1_0 NOEXIST::FUNCTION:
+i2d_ASN1_IA5STRING 821 1_1_0 EXIST::FUNCTION:
+i2d_ASN1_INTEGER 822 1_1_0 EXIST::FUNCTION:
+i2d_ASN1_OBJECT 823 1_1_0 EXIST::FUNCTION:
+i2d_ASN1_OCTET_STRING 824 1_1_0 EXIST::FUNCTION:
+i2d_ASN1_PRINTABLE 825 1_1_0 EXIST::FUNCTION:
+i2d_ASN1_SET 826 1_1_0 NOEXIST::FUNCTION:
+i2d_ASN1_TYPE 827 1_1_0 EXIST::FUNCTION:
+i2d_ASN1_UTCTIME 828 1_1_0 EXIST::FUNCTION:
+i2d_ASN1_bytes 829 1_1_0 NOEXIST::FUNCTION:
+i2d_DHparams 830 1_1_0 EXIST::FUNCTION:DH
+i2d_DSAPrivateKey 831 1_1_0 EXIST::FUNCTION:DSA
+i2d_DSAPrivateKey_bio 832 1_1_0 EXIST::FUNCTION:DSA
+i2d_DSAPrivateKey_fp 833 1_1_0 EXIST::FUNCTION:DSA,STDIO
+i2d_DSAPublicKey 834 1_1_0 EXIST::FUNCTION:DSA
+i2d_DSAparams 835 1_1_0 EXIST::FUNCTION:DSA
+i2d_NETSCAPE_SPKAC 836 1_1_0 EXIST::FUNCTION:
+i2d_NETSCAPE_SPKI 837 1_1_0 EXIST::FUNCTION:
+i2d_Netscape_RSA 838 1_1_0 NOEXIST::FUNCTION:
+i2d_PKCS7 839 1_1_0 EXIST::FUNCTION:
+i2d_PKCS7_DIGEST 840 1_1_0 EXIST::FUNCTION:
+i2d_PKCS7_ENCRYPT 841 1_1_0 EXIST::FUNCTION:
+i2d_PKCS7_ENC_CONTENT 842 1_1_0 EXIST::FUNCTION:
+i2d_PKCS7_ENVELOPE 843 1_1_0 EXIST::FUNCTION:
+i2d_PKCS7_ISSUER_AND_SERIAL 844 1_1_0 EXIST::FUNCTION:
+i2d_PKCS7_RECIP_INFO 845 1_1_0 EXIST::FUNCTION:
+i2d_PKCS7_SIGNED 846 1_1_0 EXIST::FUNCTION:
+i2d_PKCS7_SIGNER_INFO 847 1_1_0 EXIST::FUNCTION:
+i2d_PKCS7_SIGN_ENVELOPE 848 1_1_0 EXIST::FUNCTION:
+i2d_PKCS7_bio 849 1_1_0 EXIST::FUNCTION:
+i2d_PKCS7_fp 850 1_1_0 EXIST::FUNCTION:STDIO
+i2d_PrivateKey 851 1_1_0 EXIST::FUNCTION:
+i2d_PublicKey 852 1_1_0 EXIST::FUNCTION:
+i2d_RSAPrivateKey 853 1_1_0 EXIST::FUNCTION:RSA
+i2d_RSAPrivateKey_bio 854 1_1_0 EXIST::FUNCTION:RSA
+i2d_RSAPrivateKey_fp 855 1_1_0 EXIST::FUNCTION:RSA,STDIO
+i2d_RSAPublicKey 856 1_1_0 EXIST::FUNCTION:RSA
+i2d_X509 857 1_1_0 EXIST::FUNCTION:
+i2d_X509_ALGOR 858 1_1_0 EXIST::FUNCTION:
+i2d_X509_ATTRIBUTE 859 1_1_0 EXIST::FUNCTION:
+i2d_X509_CINF 860 1_1_0 EXIST::FUNCTION:
+i2d_X509_CRL 861 1_1_0 EXIST::FUNCTION:
+i2d_X509_CRL_INFO 862 1_1_0 EXIST::FUNCTION:
+i2d_X509_CRL_bio 863 1_1_0 EXIST::FUNCTION:
+i2d_X509_CRL_fp 864 1_1_0 EXIST::FUNCTION:STDIO
+i2d_X509_EXTENSION 865 1_1_0 EXIST::FUNCTION:
+i2d_X509_NAME 866 1_1_0 EXIST::FUNCTION:
+i2d_X509_NAME_ENTRY 867 1_1_0 EXIST::FUNCTION:
+i2d_X509_PKEY 868 1_1_0 NOEXIST::FUNCTION:
+i2d_X509_PUBKEY 869 1_1_0 EXIST::FUNCTION:
+i2d_X509_REQ 870 1_1_0 EXIST::FUNCTION:
+i2d_X509_REQ_INFO 871 1_1_0 EXIST::FUNCTION:
+i2d_X509_REQ_bio 872 1_1_0 EXIST::FUNCTION:
+i2d_X509_REQ_fp 873 1_1_0 EXIST::FUNCTION:STDIO
+i2d_X509_REVOKED 874 1_1_0 EXIST::FUNCTION:
+i2d_X509_SIG 875 1_1_0 EXIST::FUNCTION:
+i2d_X509_VAL 876 1_1_0 EXIST::FUNCTION:
+i2d_X509_bio 877 1_1_0 EXIST::FUNCTION:
+i2d_X509_fp 878 1_1_0 EXIST::FUNCTION:STDIO
+idea_cbc_encrypt 879 1_1_0 EXIST::FUNCTION:IDEA
+idea_cfb64_encrypt 880 1_1_0 EXIST::FUNCTION:IDEA
+idea_ecb_encrypt 881 1_1_0 EXIST::FUNCTION:IDEA
+idea_encrypt 882 1_1_0 EXIST::FUNCTION:IDEA
+idea_ofb64_encrypt 883 1_1_0 EXIST::FUNCTION:IDEA
+idea_options 884 1_1_0 EXIST::FUNCTION:IDEA
+idea_set_decrypt_key 885 1_1_0 EXIST::FUNCTION:IDEA
+idea_set_encrypt_key 886 1_1_0 EXIST::FUNCTION:IDEA
+lh_delete 887 1_1_0 EXIST::FUNCTION:
+lh_doall 888 1_1_0 EXIST::FUNCTION:
+lh_doall_arg 889 1_1_0 EXIST::FUNCTION:
+lh_free 890 1_1_0 EXIST::FUNCTION:
+lh_insert 891 1_1_0 EXIST::FUNCTION:
+lh_new 892 1_1_0 EXIST::FUNCTION:
+lh_node_stats 893 1_1_0 EXIST::FUNCTION:STDIO
+lh_node_stats_bio 894 1_1_0 EXIST::FUNCTION:
+lh_node_usage_stats 895 1_1_0 EXIST::FUNCTION:STDIO
+lh_node_usage_stats_bio 896 1_1_0 EXIST::FUNCTION:
+lh_retrieve 897 1_1_0 EXIST::FUNCTION:
+lh_stats 898 1_1_0 EXIST::FUNCTION:STDIO
+lh_stats_bio 899 1_1_0 EXIST::FUNCTION:
+lh_strhash 900 1_1_0 EXIST::FUNCTION:
+sk_delete 901 1_1_0 EXIST::FUNCTION:
+sk_delete_ptr 902 1_1_0 EXIST::FUNCTION:
+sk_dup 903 1_1_0 EXIST::FUNCTION:
+sk_find 904 1_1_0 EXIST::FUNCTION:
+sk_free 905 1_1_0 EXIST::FUNCTION:
+sk_insert 906 1_1_0 EXIST::FUNCTION:
+sk_new 907 1_1_0 EXIST::FUNCTION:
+sk_pop 908 1_1_0 EXIST::FUNCTION:
+sk_pop_free 909 1_1_0 EXIST::FUNCTION:
+sk_push 910 1_1_0 EXIST::FUNCTION:
+sk_set_cmp_func 911 1_1_0 EXIST::FUNCTION:
+sk_shift 912 1_1_0 EXIST::FUNCTION:
+sk_unshift 913 1_1_0 EXIST::FUNCTION:
+sk_zero 914 1_1_0 EXIST::FUNCTION:
+BIO_f_nbio_test 915 1_1_0 EXIST::FUNCTION:
+ASN1_TYPE_get 916 1_1_0 EXIST::FUNCTION:
+ASN1_TYPE_set 917 1_1_0 EXIST::FUNCTION:
+PKCS7_content_free 918 1_1_0 NOEXIST::FUNCTION:
+ERR_load_PKCS7_strings 919 1_1_0 EXIST::FUNCTION:
+X509_find_by_issuer_and_serial 920 1_1_0 EXIST::FUNCTION:
+X509_find_by_subject 921 1_1_0 EXIST::FUNCTION:
+PKCS7_ctrl 927 1_1_0 EXIST::FUNCTION:
+PKCS7_set_type 928 1_1_0 EXIST::FUNCTION:
+PKCS7_set_content 929 1_1_0 EXIST::FUNCTION:
+PKCS7_SIGNER_INFO_set 930 1_1_0 EXIST::FUNCTION:
+PKCS7_add_signer 931 1_1_0 EXIST::FUNCTION:
+PKCS7_add_certificate 932 1_1_0 EXIST::FUNCTION:
+PKCS7_add_crl 933 1_1_0 EXIST::FUNCTION:
+PKCS7_content_new 934 1_1_0 EXIST::FUNCTION:
+PKCS7_dataSign 935 1_1_0 NOEXIST::FUNCTION:
+PKCS7_dataVerify 936 1_1_0 EXIST::FUNCTION:
+PKCS7_dataInit 937 1_1_0 EXIST::FUNCTION:
+PKCS7_add_signature 938 1_1_0 EXIST::FUNCTION:
+PKCS7_cert_from_signer_info 939 1_1_0 EXIST::FUNCTION:
+PKCS7_get_signer_info 940 1_1_0 EXIST::FUNCTION:
+EVP_delete_alias 941 1_1_0 NOEXIST::FUNCTION:
+EVP_mdc2 942 1_1_0 EXIST::FUNCTION:MDC2
+PEM_read_bio_RSAPublicKey 943 1_1_0 EXIST::FUNCTION:RSA
+PEM_write_bio_RSAPublicKey 944 1_1_0 EXIST::FUNCTION:RSA
+d2i_RSAPublicKey_bio 945 1_1_0 EXIST::FUNCTION:RSA
+i2d_RSAPublicKey_bio 946 1_1_0 EXIST::FUNCTION:RSA
+PEM_read_RSAPublicKey 947 1_1_0 EXIST::FUNCTION:RSA
+PEM_write_RSAPublicKey 949 1_1_0 EXIST::FUNCTION:RSA
+d2i_RSAPublicKey_fp 952 1_1_0 EXIST::FUNCTION:RSA,STDIO
+i2d_RSAPublicKey_fp 954 1_1_0 EXIST::FUNCTION:RSA,STDIO
+BIO_copy_next_retry 955 1_1_0 EXIST::FUNCTION:
+RSA_flags 956 1_1_0 EXIST::FUNCTION:RSA
+X509_STORE_add_crl 957 1_1_0 EXIST::FUNCTION:
+X509_load_crl_file 958 1_1_0 EXIST::FUNCTION:
+EVP_rc2_40_cbc 959 1_1_0 EXIST::FUNCTION:RC2
+EVP_rc4_40 960 1_1_0 EXIST::FUNCTION:RC4
+EVP_CIPHER_CTX_init 961 1_1_0 NOEXIST::FUNCTION:
+HMAC 962 1_1_0 EXIST::FUNCTION:
+HMAC_Init 963 1_1_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0
+HMAC_Update 964 1_1_0 EXIST::FUNCTION:
+HMAC_Final 965 1_1_0 EXIST::FUNCTION:
+ERR_get_next_error_library 966 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_cmp_parameters 967 1_1_0 EXIST::FUNCTION:
+HMAC_cleanup 968 1_1_0 NOEXIST::FUNCTION:
+BIO_ptr_ctrl 969 1_1_0 EXIST::FUNCTION:
+BIO_new_file_internal 970 1_1_0 NOEXIST::FUNCTION:
+BIO_new_fp_internal 971 1_1_0 NOEXIST::FUNCTION:
+BIO_s_file_internal 972 1_1_0 NOEXIST::FUNCTION:
+BN_BLINDING_convert 973 1_1_0 EXIST::FUNCTION:
+BN_BLINDING_invert 974 1_1_0 EXIST::FUNCTION:
+BN_BLINDING_update 975 1_1_0 EXIST::FUNCTION:
+RSA_blinding_on 977 1_1_0 EXIST::FUNCTION:RSA
+RSA_blinding_off 978 1_1_0 EXIST::FUNCTION:RSA
+i2t_ASN1_OBJECT 979 1_1_0 EXIST::FUNCTION:
+BN_BLINDING_new 980 1_1_0 EXIST::FUNCTION:
+BN_BLINDING_free 981 1_1_0 EXIST::FUNCTION:
+EVP_cast5_cbc 983 1_1_0 EXIST::FUNCTION:CAST
+EVP_cast5_cfb64 984 1_1_0 EXIST::FUNCTION:CAST
+EVP_cast5_ecb 985 1_1_0 EXIST::FUNCTION:CAST
+EVP_cast5_ofb 986 1_1_0 EXIST::FUNCTION:CAST
+BF_decrypt 987 1_1_0 EXIST::FUNCTION:BF
+CAST_set_key 988 1_1_0 EXIST::FUNCTION:CAST
+CAST_encrypt 989 1_1_0 EXIST::FUNCTION:CAST
+CAST_decrypt 990 1_1_0 EXIST::FUNCTION:CAST
+CAST_ecb_encrypt 991 1_1_0 EXIST::FUNCTION:CAST
+CAST_cbc_encrypt 992 1_1_0 EXIST::FUNCTION:CAST
+CAST_cfb64_encrypt 993 1_1_0 EXIST::FUNCTION:CAST
+CAST_ofb64_encrypt 994 1_1_0 EXIST::FUNCTION:CAST
+RC2_decrypt 995 1_1_0 EXIST::FUNCTION:RC2
+OBJ_create_objects 997 1_1_0 EXIST::FUNCTION:
+BN_exp 998 1_1_0 EXIST::FUNCTION:
+BN_mul_word 999 1_1_0 EXIST::FUNCTION:
+BN_sub_word 1000 1_1_0 EXIST::FUNCTION:
+BN_dec2bn 1001 1_1_0 EXIST::FUNCTION:
+BN_bn2dec 1002 1_1_0 EXIST::FUNCTION:
+BIO_ghbn_ctrl 1003 1_1_0 NOEXIST::FUNCTION:
+CRYPTO_free_ex_data 1004 1_1_0 EXIST::FUNCTION:
+CRYPTO_get_ex_data 1005 1_1_0 EXIST::FUNCTION:
+CRYPTO_set_ex_data 1007 1_1_0 EXIST::FUNCTION:
+ERR_load_CRYPTO_strings 1009 1_1_0 EXIST:!OS2,!VMS:FUNCTION:
+ERR_load_CRYPTOlib_strings 1009 1_1_0 EXIST:OS2,VMS:FUNCTION:
+EVP_PKEY_bits 1010 1_1_0 EXIST::FUNCTION:
+MD5_Transform 1011 1_1_0 EXIST::FUNCTION:MD5
+SHA1_Transform 1012 1_1_0 EXIST::FUNCTION:
+SHA_Transform 1013 1_1_0 NOEXIST::FUNCTION:
+X509_STORE_CTX_get_chain 1014 1_1_0 EXIST::FUNCTION:
+X509_STORE_CTX_get_current_cert 1015 1_1_0 EXIST::FUNCTION:
+X509_STORE_CTX_get_error 1016 1_1_0 EXIST::FUNCTION:
+X509_STORE_CTX_get_error_depth 1017 1_1_0 EXIST::FUNCTION:
+X509_STORE_CTX_get_ex_data 1018 1_1_0 EXIST::FUNCTION:
+X509_STORE_CTX_set_cert 1020 1_1_0 EXIST::FUNCTION:
+X509_STORE_CTX_set_chain 1021 1_1_0 EXIST::FUNCTION:
+X509_STORE_CTX_set_error 1022 1_1_0 EXIST::FUNCTION:
+X509_STORE_CTX_set_ex_data 1023 1_1_0 EXIST::FUNCTION:
+CRYPTO_dup_ex_data 1025 1_1_0 EXIST::FUNCTION:
+CRYPTO_get_new_lockid 1026 1_1_0 EXIST::FUNCTION:
+CRYPTO_new_ex_data 1027 1_1_0 EXIST::FUNCTION:
+RSA_set_ex_data 1028 1_1_0 EXIST::FUNCTION:RSA
+RSA_get_ex_data 1029 1_1_0 EXIST::FUNCTION:RSA
+RSA_get_ex_new_index 1030 1_1_0 NOEXIST::FUNCTION:
+RSA_padding_add_PKCS1_type_1 1031 1_1_0 EXIST::FUNCTION:RSA
+RSA_padding_add_PKCS1_type_2 1032 1_1_0 EXIST::FUNCTION:RSA
+RSA_padding_add_SSLv23 1033 1_1_0 EXIST::FUNCTION:RSA
+RSA_padding_add_none 1034 1_1_0 EXIST::FUNCTION:RSA
+RSA_padding_check_PKCS1_type_1 1035 1_1_0 EXIST::FUNCTION:RSA
+RSA_padding_check_PKCS1_type_2 1036 1_1_0 EXIST::FUNCTION:RSA
+RSA_padding_check_SSLv23 1037 1_1_0 EXIST::FUNCTION:RSA
+RSA_padding_check_none 1038 1_1_0 EXIST::FUNCTION:RSA
+bn_add_words 1039 1_1_0 NOEXIST::FUNCTION:
+d2i_Netscape_RSA_2 1040 1_1_0 NOEXIST::FUNCTION:
+CRYPTO_get_ex_new_index 1041 1_1_0 EXIST::FUNCTION:
+RIPEMD160_Init 1042 1_1_0 EXIST::FUNCTION:RMD160
+RIPEMD160_Update 1043 1_1_0 EXIST::FUNCTION:RMD160
+RIPEMD160_Final 1044 1_1_0 EXIST::FUNCTION:RMD160
+RIPEMD160 1045 1_1_0 EXIST::FUNCTION:RMD160
+RIPEMD160_Transform 1046 1_1_0 EXIST::FUNCTION:RMD160
+RC5_32_set_key 1047 1_1_0 EXIST::FUNCTION:RC5
+RC5_32_ecb_encrypt 1048 1_1_0 EXIST::FUNCTION:RC5
+RC5_32_encrypt 1049 1_1_0 EXIST::FUNCTION:RC5
+RC5_32_decrypt 1050 1_1_0 EXIST::FUNCTION:RC5
+RC5_32_cbc_encrypt 1051 1_1_0 EXIST::FUNCTION:RC5
+RC5_32_cfb64_encrypt 1052 1_1_0 EXIST::FUNCTION:RC5
+RC5_32_ofb64_encrypt 1053 1_1_0 EXIST::FUNCTION:RC5
+BN_bn2mpi 1058 1_1_0 EXIST::FUNCTION:
+BN_mpi2bn 1059 1_1_0 EXIST::FUNCTION:
+ASN1_BIT_STRING_get_bit 1060 1_1_0 EXIST::FUNCTION:
+ASN1_BIT_STRING_set_bit 1061 1_1_0 EXIST::FUNCTION:
+BIO_get_ex_data 1062 1_1_0 EXIST::FUNCTION:
+BIO_get_ex_new_index 1063 1_1_0 NOEXIST::FUNCTION:
+BIO_set_ex_data 1064 1_1_0 EXIST::FUNCTION:
+X509v3_get_key_usage 1066 1_1_0 NOEXIST::FUNCTION:
+X509v3_set_key_usage 1067 1_1_0 NOEXIST::FUNCTION:
+a2i_X509v3_key_usage 1068 1_1_0 NOEXIST::FUNCTION:
+i2a_X509v3_key_usage 1069 1_1_0 NOEXIST::FUNCTION:
+EVP_PKEY_decrypt 1070 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_encrypt 1071 1_1_0 EXIST::FUNCTION:
+PKCS7_RECIP_INFO_set 1072 1_1_0 EXIST::FUNCTION:
+PKCS7_add_recipient 1073 1_1_0 EXIST::FUNCTION:
+PKCS7_add_recipient_info 1074 1_1_0 EXIST::FUNCTION:
+PKCS7_set_cipher 1075 1_1_0 EXIST::FUNCTION:
+ASN1_TYPE_get_int_octetstring 1076 1_1_0 EXIST::FUNCTION:
+ASN1_TYPE_get_octetstring 1077 1_1_0 EXIST::FUNCTION:
+ASN1_TYPE_set_int_octetstring 1078 1_1_0 EXIST::FUNCTION:
+ASN1_TYPE_set_octetstring 1079 1_1_0 EXIST::FUNCTION:
+ASN1_UTCTIME_set_string 1080 1_1_0 EXIST::FUNCTION:
+ERR_add_error_data 1081 1_1_0 EXIST::FUNCTION:
+ERR_set_error_data 1082 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_asn1_to_param 1083 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_param_to_asn1 1084 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_get_asn1_iv 1085 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_set_asn1_iv 1086 1_1_0 EXIST::FUNCTION:
+EVP_rc5_32_12_16_cbc 1087 1_1_0 EXIST::FUNCTION:RC5
+EVP_rc5_32_12_16_cfb64 1088 1_1_0 EXIST::FUNCTION:RC5
+EVP_rc5_32_12_16_ecb 1089 1_1_0 EXIST::FUNCTION:RC5
+EVP_rc5_32_12_16_ofb 1090 1_1_0 EXIST::FUNCTION:RC5
+asn1_add_error 1091 1_1_0 NOEXIST::FUNCTION:
+d2i_ASN1_BMPSTRING 1092 1_1_0 EXIST::FUNCTION:
+i2d_ASN1_BMPSTRING 1093 1_1_0 EXIST::FUNCTION:
+BIO_f_ber 1094 1_1_0 NOEXIST::FUNCTION:
+BN_init 1095 1_1_0 NOEXIST::FUNCTION:
+COMP_CTX_new 1096 1_1_0 EXIST::FUNCTION:
+COMP_CTX_free 1097 1_1_0 EXIST::FUNCTION:
+COMP_CTX_compress_block 1098 1_1_0 NOEXIST::FUNCTION:
+COMP_CTX_expand_block 1099 1_1_0 NOEXIST::FUNCTION:
+X509_STORE_CTX_get_ex_new_index 1100 1_1_0 NOEXIST::FUNCTION:
+OBJ_NAME_add 1101 1_1_0 EXIST::FUNCTION:
+BIO_socket_nbio 1102 1_1_0 EXIST::FUNCTION:
+EVP_rc2_64_cbc 1103 1_1_0 EXIST::FUNCTION:RC2
+OBJ_NAME_cleanup 1104 1_1_0 EXIST::FUNCTION:
+OBJ_NAME_get 1105 1_1_0 EXIST::FUNCTION:
+OBJ_NAME_init 1106 1_1_0 EXIST::FUNCTION:
+OBJ_NAME_new_index 1107 1_1_0 EXIST::FUNCTION:
+OBJ_NAME_remove 1108 1_1_0 EXIST::FUNCTION:
+BN_MONT_CTX_copy 1109 1_1_0 EXIST::FUNCTION:
+BIO_new_socks4a_connect 1110 1_1_0 NOEXIST::FUNCTION:
+BIO_s_socks4a_connect 1111 1_1_0 NOEXIST::FUNCTION:
+PROXY_set_connect_mode 1112 1_1_0 NOEXIST::FUNCTION:
+RAND_OpenSSL 1113 1_1_0 EXIST::FUNCTION:
+RAND_set_rand_method 1114 1_1_0 EXIST::FUNCTION:
+RSA_memory_lock 1115 1_1_0 EXIST::FUNCTION:RSA
+bn_sub_words 1116 1_1_0 NOEXIST::FUNCTION:
+bn_mul_normal 1117 1_1_0 NOEXIST::FUNCTION:
+bn_mul_comba8 1118 1_1_0 NOEXIST::FUNCTION:
+bn_mul_comba4 1119 1_1_0 NOEXIST::FUNCTION:
+bn_sqr_normal 1120 1_1_0 NOEXIST::FUNCTION:
+bn_sqr_comba8 1121 1_1_0 NOEXIST::FUNCTION:
+bn_sqr_comba4 1122 1_1_0 NOEXIST::FUNCTION:
+bn_cmp_words 1123 1_1_0 NOEXIST::FUNCTION:
+bn_mul_recursive 1124 1_1_0 NOEXIST::FUNCTION:
+bn_mul_part_recursive 1125 1_1_0 NOEXIST::FUNCTION:
+bn_sqr_recursive 1126 1_1_0 NOEXIST::FUNCTION:
+bn_mul_low_normal 1127 1_1_0 NOEXIST::FUNCTION:
+BN_RECP_CTX_init 1128 1_1_0 NOEXIST::FUNCTION:
+BN_RECP_CTX_new 1129 1_1_0 EXIST::FUNCTION:
+BN_RECP_CTX_free 1130 1_1_0 EXIST::FUNCTION:
+BN_RECP_CTX_set 1131 1_1_0 EXIST::FUNCTION:
+BN_mod_mul_reciprocal 1132 1_1_0 EXIST::FUNCTION:
+BN_mod_exp_recp 1133 1_1_0 EXIST::FUNCTION:
+BN_div_recp 1134 1_1_0 EXIST::FUNCTION:
+BN_CTX_init 1135 1_1_0 NOEXIST::FUNCTION:
+BN_MONT_CTX_init 1136 1_1_0 NOEXIST::FUNCTION:
+RAND_get_rand_method 1137 1_1_0 EXIST::FUNCTION:
+PKCS7_add_attribute 1138 1_1_0 EXIST::FUNCTION:
+PKCS7_add_signed_attribute 1139 1_1_0 EXIST::FUNCTION:
+PKCS7_digest_from_attributes 1140 1_1_0 EXIST::FUNCTION:
+PKCS7_get_attribute 1141 1_1_0 EXIST::FUNCTION:
+PKCS7_get_issuer_and_serial 1142 1_1_0 EXIST::FUNCTION:
+PKCS7_get_signed_attribute 1143 1_1_0 EXIST::FUNCTION:
+COMP_compress_block 1144 1_1_0 EXIST::FUNCTION:
+COMP_expand_block 1145 1_1_0 EXIST::FUNCTION:
+COMP_rle 1146 1_1_0 NOEXIST::FUNCTION:
+COMP_zlib 1147 1_1_0 EXIST::FUNCTION:
+ms_time_diff 1148 1_1_0 NOEXIST::FUNCTION:
+ms_time_new 1149 1_1_0 NOEXIST::FUNCTION:
+ms_time_free 1150 1_1_0 NOEXIST::FUNCTION:
+ms_time_cmp 1151 1_1_0 NOEXIST::FUNCTION:
+ms_time_get 1152 1_1_0 NOEXIST::FUNCTION:
+PKCS7_set_attributes 1153 1_1_0 EXIST::FUNCTION:
+PKCS7_set_signed_attributes 1154 1_1_0 EXIST::FUNCTION:
+X509_ATTRIBUTE_create 1155 1_1_0 EXIST::FUNCTION:
+X509_ATTRIBUTE_dup 1156 1_1_0 EXIST::FUNCTION:
+ASN1_GENERALIZEDTIME_check 1157 1_1_0 EXIST::FUNCTION:
+ASN1_GENERALIZEDTIME_print 1158 1_1_0 EXIST::FUNCTION:
+ASN1_GENERALIZEDTIME_set 1159 1_1_0 EXIST::FUNCTION:
+ASN1_GENERALIZEDTIME_set_string 1160 1_1_0 EXIST::FUNCTION:
+ASN1_TIME_print 1161 1_1_0 EXIST::FUNCTION:
+BASIC_CONSTRAINTS_free 1162 1_1_0 EXIST::FUNCTION:
+BASIC_CONSTRAINTS_new 1163 1_1_0 EXIST::FUNCTION:
+ERR_load_X509V3_strings 1164 1_1_0 EXIST::FUNCTION:
+NETSCAPE_CERT_SEQUENCE_free 1165 1_1_0 EXIST::FUNCTION:
+NETSCAPE_CERT_SEQUENCE_new 1166 1_1_0 EXIST::FUNCTION:
+OBJ_txt2obj 1167 1_1_0 EXIST::FUNCTION:
+PEM_read_NETSCAPE_CERT_SEQUENCE 1168 1_1_0 EXIST::FUNCTION:
+PEM_read_bio_NETSCAPE_CERT_SEQUENCE 1169 1_1_0 EXIST::FUNCTION:
+PEM_write_NETSCAPE_CERT_SEQUENCE 1170 1_1_0 EXIST::FUNCTION:
+PEM_write_bio_NETSCAPE_CERT_SEQUENCE 1171 1_1_0 EXIST::FUNCTION:
+X509V3_EXT_add 1172 1_1_0 EXIST::FUNCTION:
+X509V3_EXT_add_alias 1173 1_1_0 EXIST::FUNCTION:
+X509V3_EXT_add_conf 1174 1_1_0 EXIST::FUNCTION:
+X509V3_EXT_cleanup 1175 1_1_0 EXIST::FUNCTION:
+X509V3_EXT_conf 1176 1_1_0 EXIST::FUNCTION:
+X509V3_EXT_conf_nid 1177 1_1_0 EXIST::FUNCTION:
+X509V3_EXT_get 1178 1_1_0 EXIST::FUNCTION:
+X509V3_EXT_get_nid 1179 1_1_0 EXIST::FUNCTION:
+X509V3_EXT_print 1180 1_1_0 EXIST::FUNCTION:
+X509V3_EXT_print_fp 1181 1_1_0 EXIST::FUNCTION:STDIO
+X509V3_add_standard_extensions 1182 1_1_0 EXIST::FUNCTION:
+X509V3_add_value 1183 1_1_0 EXIST::FUNCTION:
+X509V3_add_value_bool 1184 1_1_0 EXIST::FUNCTION:
+X509V3_add_value_int 1185 1_1_0 EXIST::FUNCTION:
+X509V3_conf_free 1186 1_1_0 EXIST::FUNCTION:
+X509V3_get_value_bool 1187 1_1_0 EXIST::FUNCTION:
+X509V3_get_value_int 1188 1_1_0 EXIST::FUNCTION:
+X509V3_parse_list 1189 1_1_0 EXIST::FUNCTION:
+d2i_ASN1_GENERALIZEDTIME 1190 1_1_0 EXIST::FUNCTION:
+d2i_ASN1_TIME 1191 1_1_0 EXIST::FUNCTION:
+d2i_BASIC_CONSTRAINTS 1192 1_1_0 EXIST::FUNCTION:
+d2i_NETSCAPE_CERT_SEQUENCE 1193 1_1_0 EXIST::FUNCTION:
+d2i_ext_ku 1194 1_1_0 NOEXIST::FUNCTION:
+ext_ku_free 1195 1_1_0 NOEXIST::FUNCTION:
+ext_ku_new 1196 1_1_0 NOEXIST::FUNCTION:
+i2d_ASN1_GENERALIZEDTIME 1197 1_1_0 EXIST::FUNCTION:
+i2d_ASN1_TIME 1198 1_1_0 EXIST::FUNCTION:
+i2d_BASIC_CONSTRAINTS 1199 1_1_0 EXIST::FUNCTION:
+i2d_NETSCAPE_CERT_SEQUENCE 1200 1_1_0 EXIST::FUNCTION:
+i2d_ext_ku 1201 1_1_0 NOEXIST::FUNCTION:
+EVP_MD_CTX_copy 1202 1_1_0 EXIST::FUNCTION:
+i2d_ASN1_ENUMERATED 1203 1_1_0 EXIST::FUNCTION:
+d2i_ASN1_ENUMERATED 1204 1_1_0 EXIST::FUNCTION:
+ASN1_ENUMERATED_set 1205 1_1_0 EXIST::FUNCTION:
+ASN1_ENUMERATED_get 1206 1_1_0 EXIST::FUNCTION:
+BN_to_ASN1_ENUMERATED 1207 1_1_0 EXIST::FUNCTION:
+ASN1_ENUMERATED_to_BN 1208 1_1_0 EXIST::FUNCTION:
+i2a_ASN1_ENUMERATED 1209 1_1_0 EXIST::FUNCTION:
+a2i_ASN1_ENUMERATED 1210 1_1_0 EXIST::FUNCTION:
+i2d_GENERAL_NAME 1211 1_1_0 EXIST::FUNCTION:
+d2i_GENERAL_NAME 1212 1_1_0 EXIST::FUNCTION:
+GENERAL_NAME_new 1213 1_1_0 EXIST::FUNCTION:
+GENERAL_NAME_free 1214 1_1_0 EXIST::FUNCTION:
+GENERAL_NAMES_new 1215 1_1_0 EXIST::FUNCTION:
+GENERAL_NAMES_free 1216 1_1_0 EXIST::FUNCTION:
+d2i_GENERAL_NAMES 1217 1_1_0 EXIST::FUNCTION:
+i2d_GENERAL_NAMES 1218 1_1_0 EXIST::FUNCTION:
+i2v_GENERAL_NAMES 1219 1_1_0 EXIST::FUNCTION:
+i2s_ASN1_OCTET_STRING 1220 1_1_0 EXIST::FUNCTION:
+s2i_ASN1_OCTET_STRING 1221 1_1_0 EXIST::FUNCTION:
+X509V3_EXT_check_conf 1222 1_1_0 NOEXIST::FUNCTION:
+hex_to_string 1223 1_1_0 EXIST::FUNCTION:
+string_to_hex 1224 1_1_0 EXIST::FUNCTION:
+DES_ede3_cbcm_encrypt 1225 1_1_0 NOEXIST::FUNCTION:
+RSA_padding_add_PKCS1_OAEP 1226 1_1_0 EXIST::FUNCTION:RSA
+RSA_padding_check_PKCS1_OAEP 1227 1_1_0 EXIST::FUNCTION:RSA
+X509_CRL_print_fp 1228 1_1_0 EXIST::FUNCTION:STDIO
+X509_CRL_print 1229 1_1_0 EXIST::FUNCTION:
+i2v_GENERAL_NAME 1230 1_1_0 EXIST::FUNCTION:
+v2i_GENERAL_NAME 1231 1_1_0 EXIST::FUNCTION:
+i2d_PKEY_USAGE_PERIOD 1232 1_1_0 EXIST::FUNCTION:
+d2i_PKEY_USAGE_PERIOD 1233 1_1_0 EXIST::FUNCTION:
+PKEY_USAGE_PERIOD_new 1234 1_1_0 EXIST::FUNCTION:
+PKEY_USAGE_PERIOD_free 1235 1_1_0 EXIST::FUNCTION:
+v2i_GENERAL_NAMES 1236 1_1_0 EXIST::FUNCTION:
+i2s_ASN1_INTEGER 1237 1_1_0 EXIST::FUNCTION:
+X509V3_EXT_d2i 1238 1_1_0 EXIST::FUNCTION:
+name_cmp 1239 1_1_0 EXIST::FUNCTION:
+str_dup 1240 1_1_0 NOEXIST::FUNCTION:
+i2s_ASN1_ENUMERATED 1241 1_1_0 EXIST::FUNCTION:
+i2s_ASN1_ENUMERATED_TABLE 1242 1_1_0 EXIST::FUNCTION:
+BIO_s_log 1243 1_1_0 EXIST:!OS2,!WIN32,!macintosh:FUNCTION:
+BIO_f_reliable 1244 1_1_0 EXIST::FUNCTION:
+PKCS7_dataFinal 1245 1_1_0 EXIST::FUNCTION:
+PKCS7_dataDecode 1246 1_1_0 EXIST::FUNCTION:
+X509V3_EXT_CRL_add_conf 1247 1_1_0 EXIST::FUNCTION:
+BN_set_params 1248 1_1_0 EXIST::FUNCTION:DEPRECATEDIN_0_9_8
+BN_get_params 1249 1_1_0 EXIST::FUNCTION:DEPRECATEDIN_0_9_8
+BIO_get_ex_num 1250 1_1_0 NOEXIST::FUNCTION:
+BIO_set_ex_free_func 1251 1_1_0 NOEXIST::FUNCTION:
+EVP_ripemd160 1252 1_1_0 EXIST::FUNCTION:RMD160
+ASN1_TIME_set 1253 1_1_0 EXIST::FUNCTION:
+i2d_AUTHORITY_KEYID 1254 1_1_0 EXIST::FUNCTION:
+d2i_AUTHORITY_KEYID 1255 1_1_0 EXIST::FUNCTION:
+AUTHORITY_KEYID_new 1256 1_1_0 EXIST::FUNCTION:
+AUTHORITY_KEYID_free 1257 1_1_0 EXIST::FUNCTION:
+ASN1_seq_unpack 1258 1_1_0 NOEXIST::FUNCTION:
+ASN1_seq_pack 1259 1_1_0 NOEXIST::FUNCTION:
+ASN1_unpack_string 1260 1_1_0 NOEXIST::FUNCTION:
+ASN1_pack_string 1261 1_1_0 NOEXIST::FUNCTION:
+PKCS12_pack_safebag 1262 1_1_0 NOEXIST::FUNCTION:
+PKCS12_SAFEBAG_create0_p8inf 1263 1_1_0 EXIST::FUNCTION:
+PKCS8_encrypt 1264 1_1_0 EXIST::FUNCTION:
+PKCS12_SAFEBAG_create_pkcs8_encrypt 1265 1_1_0 EXIST::FUNCTION:
+PKCS12_pack_p7data 1266 1_1_0 EXIST::FUNCTION:
+PKCS12_pack_p7encdata 1267 1_1_0 EXIST::FUNCTION:
+PKCS12_add_localkeyid 1268 1_1_0 EXIST::FUNCTION:
+PKCS12_add_friendlyname_asc 1269 1_1_0 EXIST::FUNCTION:
+PKCS12_add_friendlyname_uni 1270 1_1_0 EXIST::FUNCTION:
+PKCS12_get_friendlyname 1271 1_1_0 EXIST::FUNCTION:
+PKCS12_pbe_crypt 1272 1_1_0 EXIST::FUNCTION:
+PKCS12_decrypt_d2i 1273 1_1_0 NOEXIST::FUNCTION:
+PKCS12_i2d_encrypt 1274 1_1_0 NOEXIST::FUNCTION:
+PKCS12_init 1275 1_1_0 EXIST::FUNCTION:
+PKCS12_key_gen_asc 1276 1_1_0 EXIST::FUNCTION:
+PKCS12_key_gen_uni 1277 1_1_0 EXIST::FUNCTION:
+PKCS12_gen_mac 1278 1_1_0 EXIST::FUNCTION:
+PKCS12_verify_mac 1279 1_1_0 EXIST::FUNCTION:
+PKCS12_set_mac 1280 1_1_0 EXIST::FUNCTION:
+PKCS12_setup_mac 1281 1_1_0 EXIST::FUNCTION:
+OPENSSL_asc2uni 1282 1_1_0 EXIST::FUNCTION:
+OPENSSL_uni2asc 1283 1_1_0 EXIST::FUNCTION:
+i2d_PKCS12_BAGS 1284 1_1_0 EXIST::FUNCTION:
+PKCS12_BAGS_new 1285 1_1_0 EXIST::FUNCTION:
+d2i_PKCS12_BAGS 1286 1_1_0 EXIST::FUNCTION:
+PKCS12_BAGS_free 1287 1_1_0 EXIST::FUNCTION:
+i2d_PKCS12 1288 1_1_0 EXIST::FUNCTION:
+d2i_PKCS12 1289 1_1_0 EXIST::FUNCTION:
+PKCS12_new 1290 1_1_0 EXIST::FUNCTION:
+PKCS12_free 1291 1_1_0 EXIST::FUNCTION:
+i2d_PKCS12_MAC_DATA 1292 1_1_0 EXIST::FUNCTION:
+PKCS12_MAC_DATA_new 1293 1_1_0 EXIST::FUNCTION:
+d2i_PKCS12_MAC_DATA 1294 1_1_0 EXIST::FUNCTION:
+PKCS12_MAC_DATA_free 1295 1_1_0 EXIST::FUNCTION:
+i2d_PKCS12_SAFEBAG 1296 1_1_0 EXIST::FUNCTION:
+PKCS12_SAFEBAG_new 1297 1_1_0 EXIST::FUNCTION:
+d2i_PKCS12_SAFEBAG 1298 1_1_0 EXIST::FUNCTION:
+PKCS12_SAFEBAG_free 1299 1_1_0 EXIST::FUNCTION:
+ERR_load_PKCS12_strings 1300 1_1_0 EXIST::FUNCTION:
+PKCS12_PBE_add 1301 1_1_0 EXIST::FUNCTION:
+PKCS8_add_keyusage 1302 1_1_0 EXIST::FUNCTION:
+PKCS12_get_attr_gen 1303 1_1_0 EXIST::FUNCTION:
+PKCS12_parse 1304 1_1_0 EXIST::FUNCTION:
+PKCS12_create 1305 1_1_0 EXIST::FUNCTION:
+i2d_PKCS12_bio 1306 1_1_0 EXIST::FUNCTION:
+i2d_PKCS12_fp 1307 1_1_0 EXIST::FUNCTION:
+d2i_PKCS12_bio 1308 1_1_0 EXIST::FUNCTION:
+d2i_PKCS12_fp 1309 1_1_0 EXIST::FUNCTION:
+i2d_PBEPARAM 1310 1_1_0 EXIST::FUNCTION:
+PBEPARAM_new 1311 1_1_0 EXIST::FUNCTION:
+d2i_PBEPARAM 1312 1_1_0 EXIST::FUNCTION:
+PBEPARAM_free 1313 1_1_0 EXIST::FUNCTION:
+i2d_PKCS8_PRIV_KEY_INFO 1314 1_1_0 EXIST::FUNCTION:
+PKCS8_PRIV_KEY_INFO_new 1315 1_1_0 EXIST::FUNCTION:
+d2i_PKCS8_PRIV_KEY_INFO 1316 1_1_0 EXIST::FUNCTION:
+PKCS8_PRIV_KEY_INFO_free 1317 1_1_0 EXIST::FUNCTION:
+EVP_PKCS82PKEY 1318 1_1_0 EXIST::FUNCTION:
+EVP_PKEY2PKCS8 1319 1_1_0 EXIST::FUNCTION:
+PKCS8_set_broken 1320 1_1_0 EXIST::FUNCTION:
+EVP_PBE_ALGOR_CipherInit 1321 1_1_0 NOEXIST::FUNCTION:
+EVP_PBE_alg_add 1322 1_1_0 EXIST::FUNCTION:
+PKCS5_pbe_set 1323 1_1_0 EXIST::FUNCTION:
+EVP_PBE_cleanup 1324 1_1_0 EXIST::FUNCTION:
+i2d_SXNET 1325 1_1_0 EXIST::FUNCTION:
+d2i_SXNET 1326 1_1_0 EXIST::FUNCTION:
+SXNET_new 1327 1_1_0 EXIST::FUNCTION:
+SXNET_free 1328 1_1_0 EXIST::FUNCTION:
+i2d_SXNETID 1329 1_1_0 EXIST::FUNCTION:
+d2i_SXNETID 1330 1_1_0 EXIST::FUNCTION:
+SXNETID_new 1331 1_1_0 EXIST::FUNCTION:
+SXNETID_free 1332 1_1_0 EXIST::FUNCTION:
+DSA_SIG_new 1333 1_1_0 EXIST::FUNCTION:DSA
+DSA_SIG_free 1334 1_1_0 EXIST::FUNCTION:DSA
+DSA_do_sign 1335 1_1_0 EXIST::FUNCTION:DSA
+DSA_do_verify 1336 1_1_0 EXIST::FUNCTION:DSA
+d2i_DSA_SIG 1337 1_1_0 EXIST::FUNCTION:DSA
+i2d_DSA_SIG 1338 1_1_0 EXIST::FUNCTION:DSA
+i2d_ASN1_VISIBLESTRING 1339 1_1_0 EXIST::FUNCTION:
+d2i_ASN1_VISIBLESTRING 1340 1_1_0 EXIST::FUNCTION:
+i2d_ASN1_UTF8STRING 1341 1_1_0 EXIST::FUNCTION:
+d2i_ASN1_UTF8STRING 1342 1_1_0 EXIST::FUNCTION:
+i2d_DIRECTORYSTRING 1343 1_1_0 EXIST::FUNCTION:
+d2i_DIRECTORYSTRING 1344 1_1_0 EXIST::FUNCTION:
+i2d_DISPLAYTEXT 1345 1_1_0 EXIST::FUNCTION:
+d2i_DISPLAYTEXT 1346 1_1_0 EXIST::FUNCTION:
+d2i_ASN1_SET_OF_X509 1379 1_1_0 NOEXIST::FUNCTION:
+i2d_ASN1_SET_OF_X509 1380 1_1_0 NOEXIST::FUNCTION:
+i2d_PBKDF2PARAM 1397 1_1_0 EXIST::FUNCTION:
+PBKDF2PARAM_new 1398 1_1_0 EXIST::FUNCTION:
+d2i_PBKDF2PARAM 1399 1_1_0 EXIST::FUNCTION:
+PBKDF2PARAM_free 1400 1_1_0 EXIST::FUNCTION:
+i2d_PBE2PARAM 1401 1_1_0 EXIST::FUNCTION:
+PBE2PARAM_new 1402 1_1_0 EXIST::FUNCTION:
+d2i_PBE2PARAM 1403 1_1_0 EXIST::FUNCTION:
+PBE2PARAM_free 1404 1_1_0 EXIST::FUNCTION:
+d2i_ASN1_SET_OF_GENERAL_NAME 1421 1_1_0 NOEXIST::FUNCTION:
+i2d_ASN1_SET_OF_GENERAL_NAME 1422 1_1_0 NOEXIST::FUNCTION:
+d2i_ASN1_SET_OF_SXNETID 1439 1_1_0 NOEXIST::FUNCTION:
+i2d_ASN1_SET_OF_SXNETID 1440 1_1_0 NOEXIST::FUNCTION:
+d2i_ASN1_SET_OF_POLICYQUALINFO 1457 1_1_0 NOEXIST::FUNCTION:
+i2d_ASN1_SET_OF_POLICYQUALINFO 1458 1_1_0 NOEXIST::FUNCTION:
+d2i_ASN1_SET_OF_POLICYINFO 1475 1_1_0 NOEXIST::FUNCTION:
+i2d_ASN1_SET_OF_POLICYINFO 1476 1_1_0 NOEXIST::FUNCTION:
+SXNET_add_id_asc 1477 1_1_0 EXIST::FUNCTION:
+SXNET_add_id_ulong 1478 1_1_0 EXIST::FUNCTION:
+SXNET_add_id_INTEGER 1479 1_1_0 EXIST::FUNCTION:
+SXNET_get_id_asc 1480 1_1_0 EXIST::FUNCTION:
+SXNET_get_id_ulong 1481 1_1_0 EXIST::FUNCTION:
+SXNET_get_id_INTEGER 1482 1_1_0 EXIST::FUNCTION:
+X509V3_set_conf_lhash 1483 1_1_0 EXIST::FUNCTION:
+i2d_CERTIFICATEPOLICIES 1484 1_1_0 EXIST::FUNCTION:
+CERTIFICATEPOLICIES_new 1485 1_1_0 EXIST::FUNCTION:
+CERTIFICATEPOLICIES_free 1486 1_1_0 EXIST::FUNCTION:
+d2i_CERTIFICATEPOLICIES 1487 1_1_0 EXIST::FUNCTION:
+i2d_POLICYINFO 1488 1_1_0 EXIST::FUNCTION:
+POLICYINFO_new 1489 1_1_0 EXIST::FUNCTION:
+d2i_POLICYINFO 1490 1_1_0 EXIST::FUNCTION:
+POLICYINFO_free 1491 1_1_0 EXIST::FUNCTION:
+i2d_POLICYQUALINFO 1492 1_1_0 EXIST::FUNCTION:
+POLICYQUALINFO_new 1493 1_1_0 EXIST::FUNCTION:
+d2i_POLICYQUALINFO 1494 1_1_0 EXIST::FUNCTION:
+POLICYQUALINFO_free 1495 1_1_0 EXIST::FUNCTION:
+i2d_USERNOTICE 1496 1_1_0 EXIST::FUNCTION:
+USERNOTICE_new 1497 1_1_0 EXIST::FUNCTION:
+d2i_USERNOTICE 1498 1_1_0 EXIST::FUNCTION:
+USERNOTICE_free 1499 1_1_0 EXIST::FUNCTION:
+i2d_NOTICEREF 1500 1_1_0 EXIST::FUNCTION:
+NOTICEREF_new 1501 1_1_0 EXIST::FUNCTION:
+d2i_NOTICEREF 1502 1_1_0 EXIST::FUNCTION:
+NOTICEREF_free 1503 1_1_0 EXIST::FUNCTION:
+X509V3_get_string 1504 1_1_0 EXIST::FUNCTION:
+X509V3_get_section 1505 1_1_0 EXIST::FUNCTION:
+X509V3_string_free 1506 1_1_0 EXIST::FUNCTION:
+X509V3_section_free 1507 1_1_0 EXIST::FUNCTION:
+X509V3_set_ctx 1508 1_1_0 EXIST::FUNCTION:
+s2i_ASN1_INTEGER 1509 1_1_0 EXIST::FUNCTION:
+CRYPTO_set_locked_mem_functions 1510 1_1_0 NOEXIST::FUNCTION:
+CRYPTO_get_locked_mem_functions 1511 1_1_0 NOEXIST::FUNCTION:
+CRYPTO_malloc_locked 1512 1_1_0 NOEXIST::FUNCTION:
+CRYPTO_free_locked 1513 1_1_0 NOEXIST::FUNCTION:
+BN_mod_exp2_mont 1514 1_1_0 EXIST::FUNCTION:
+ERR_get_error_line_data 1515 1_1_0 EXIST::FUNCTION:
+ERR_peek_error_line_data 1516 1_1_0 EXIST::FUNCTION:
+PKCS12_PBE_keyivgen 1517 1_1_0 EXIST::FUNCTION:
+X509_ALGOR_dup 1518 1_1_0 EXIST::FUNCTION:
+d2i_ASN1_SET_OF_DIST_POINT 1535 1_1_0 NOEXIST::FUNCTION:
+i2d_ASN1_SET_OF_DIST_POINT 1536 1_1_0 NOEXIST::FUNCTION:
+i2d_CRL_DIST_POINTS 1537 1_1_0 EXIST::FUNCTION:
+CRL_DIST_POINTS_new 1538 1_1_0 EXIST::FUNCTION:
+CRL_DIST_POINTS_free 1539 1_1_0 EXIST::FUNCTION:
+d2i_CRL_DIST_POINTS 1540 1_1_0 EXIST::FUNCTION:
+i2d_DIST_POINT 1541 1_1_0 EXIST::FUNCTION:
+DIST_POINT_new 1542 1_1_0 EXIST::FUNCTION:
+d2i_DIST_POINT 1543 1_1_0 EXIST::FUNCTION:
+DIST_POINT_free 1544 1_1_0 EXIST::FUNCTION:
+i2d_DIST_POINT_NAME 1545 1_1_0 EXIST::FUNCTION:
+DIST_POINT_NAME_new 1546 1_1_0 EXIST::FUNCTION:
+DIST_POINT_NAME_free 1547 1_1_0 EXIST::FUNCTION:
+d2i_DIST_POINT_NAME 1548 1_1_0 EXIST::FUNCTION:
+X509V3_add_value_uchar 1549 1_1_0 EXIST::FUNCTION:
+d2i_ASN1_SET_OF_X509_ATTRIBUTE 1555 1_1_0 NOEXIST::FUNCTION:
+i2d_ASN1_SET_OF_ASN1_TYPE 1560 1_1_0 NOEXIST::FUNCTION:
+d2i_ASN1_SET_OF_X509_EXTENSION 1567 1_1_0 NOEXIST::FUNCTION:
+d2i_ASN1_SET_OF_X509_NAME_ENTRY 1574 1_1_0 NOEXIST::FUNCTION:
+d2i_ASN1_SET_OF_ASN1_TYPE 1589 1_1_0 NOEXIST::FUNCTION:
+i2d_ASN1_SET_OF_X509_ATTRIBUTE 1615 1_1_0 NOEXIST::FUNCTION:
+i2d_ASN1_SET_OF_X509_EXTENSION 1624 1_1_0 NOEXIST::FUNCTION:
+i2d_ASN1_SET_OF_X509_NAME_ENTRY 1633 1_1_0 NOEXIST::FUNCTION:
+X509V3_EXT_i2d 1646 1_1_0 EXIST::FUNCTION:
+X509V3_EXT_val_prn 1647 1_1_0 EXIST::FUNCTION:
+X509V3_EXT_add_list 1648 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_type 1649 1_1_0 EXIST::FUNCTION:
+EVP_PBE_CipherInit 1650 1_1_0 EXIST::FUNCTION:
+X509V3_add_value_bool_nf 1651 1_1_0 EXIST::FUNCTION:
+d2i_ASN1_UINTEGER 1652 1_1_0 EXIST::FUNCTION:
+sk_value 1653 1_1_0 EXIST::FUNCTION:
+sk_num 1654 1_1_0 EXIST::FUNCTION:
+sk_set 1655 1_1_0 EXIST::FUNCTION:
+i2d_ASN1_SET_OF_X509_REVOKED 1661 1_1_0 NOEXIST::FUNCTION:
+sk_sort 1671 1_1_0 EXIST::FUNCTION:
+d2i_ASN1_SET_OF_X509_REVOKED 1674 1_1_0 NOEXIST::FUNCTION:
+i2d_ASN1_SET_OF_X509_ALGOR 1682 1_1_0 NOEXIST::FUNCTION:
+i2d_ASN1_SET_OF_X509_CRL 1685 1_1_0 NOEXIST::FUNCTION:
+d2i_ASN1_SET_OF_X509_ALGOR 1696 1_1_0 NOEXIST::FUNCTION:
+d2i_ASN1_SET_OF_X509_CRL 1702 1_1_0 NOEXIST::FUNCTION:
+i2d_ASN1_SET_OF_PKCS7_SIGNER_INFO 1723 1_1_0 NOEXIST::FUNCTION:
+i2d_ASN1_SET_OF_PKCS7_RECIP_INFO 1738 1_1_0 NOEXIST::FUNCTION:
+d2i_ASN1_SET_OF_PKCS7_SIGNER_INFO 1748 1_1_0 NOEXIST::FUNCTION:
+d2i_ASN1_SET_OF_PKCS7_RECIP_INFO 1753 1_1_0 NOEXIST::FUNCTION:
+PKCS5_PBE_add 1775 1_1_0 EXIST::FUNCTION:
+PEM_write_bio_PKCS8 1776 1_1_0 EXIST::FUNCTION:
+i2d_PKCS8_fp 1777 1_1_0 EXIST::FUNCTION:STDIO
+PEM_read_bio_PKCS8_PRIV_KEY_INFO 1778 1_1_0 EXIST::FUNCTION:
+d2i_PKCS8_bio 1779 1_1_0 EXIST::FUNCTION:
+d2i_PKCS8_PRIV_KEY_INFO_fp 1780 1_1_0 EXIST::FUNCTION:STDIO
+PEM_write_bio_PKCS8_PRIV_KEY_INFO 1781 1_1_0 EXIST::FUNCTION:
+PEM_read_PKCS8 1782 1_1_0 EXIST::FUNCTION:
+d2i_PKCS8_PRIV_KEY_INFO_bio 1783 1_1_0 EXIST::FUNCTION:
+d2i_PKCS8_fp 1784 1_1_0 EXIST::FUNCTION:STDIO
+PEM_write_PKCS8 1785 1_1_0 EXIST::FUNCTION:
+PEM_read_PKCS8_PRIV_KEY_INFO 1786 1_1_0 EXIST::FUNCTION:
+PEM_read_bio_PKCS8 1787 1_1_0 EXIST::FUNCTION:
+PEM_write_PKCS8_PRIV_KEY_INFO 1788 1_1_0 EXIST::FUNCTION:
+PKCS5_PBE_keyivgen 1789 1_1_0 EXIST::FUNCTION:
+i2d_PKCS8_bio 1790 1_1_0 EXIST::FUNCTION:
+i2d_PKCS8_PRIV_KEY_INFO_fp 1791 1_1_0 EXIST::FUNCTION:STDIO
+i2d_PKCS8_PRIV_KEY_INFO_bio 1792 1_1_0 EXIST::FUNCTION:
+BIO_s_bio 1793 1_1_0 EXIST::FUNCTION:
+PKCS5_pbe2_set 1794 1_1_0 EXIST::FUNCTION:
+PKCS5_PBKDF2_HMAC_SHA1 1795 1_1_0 EXIST::FUNCTION:
+PKCS5_v2_PBE_keyivgen 1796 1_1_0 EXIST::FUNCTION:
+PEM_write_bio_PKCS8PrivateKey 1797 1_1_0 EXIST::FUNCTION:
+PEM_write_PKCS8PrivateKey 1798 1_1_0 EXIST::FUNCTION:STDIO
+BIO_ctrl_get_read_request 1799 1_1_0 EXIST::FUNCTION:
+BIO_ctrl_pending 1800 1_1_0 EXIST::FUNCTION:
+BIO_ctrl_wpending 1801 1_1_0 EXIST::FUNCTION:
+BIO_new_bio_pair 1802 1_1_0 EXIST::FUNCTION:
+BIO_ctrl_get_write_guarantee 1803 1_1_0 EXIST::FUNCTION:
+CRYPTO_num_locks 1804 1_1_0 EXIST::FUNCTION:
+CONF_load_bio 1805 1_1_0 EXIST::FUNCTION:
+CONF_load_fp 1806 1_1_0 EXIST::FUNCTION:STDIO
+i2d_ASN1_SET_OF_ASN1_OBJECT 1837 1_1_0 NOEXIST::FUNCTION:
+d2i_ASN1_SET_OF_ASN1_OBJECT 1844 1_1_0 NOEXIST::FUNCTION:
+PKCS7_signatureVerify 1845 1_1_0 EXIST::FUNCTION:
+RSA_set_method 1846 1_1_0 EXIST::FUNCTION:RSA
+RSA_get_method 1847 1_1_0 EXIST::FUNCTION:RSA
+RSA_get_default_method 1848 1_1_0 EXIST::FUNCTION:RSA
+RSA_check_key 1869 1_1_0 EXIST::FUNCTION:RSA
+OBJ_obj2txt 1870 1_1_0 EXIST::FUNCTION:
+DSA_dup_DH 1871 1_1_0 EXIST::FUNCTION:DH,DSA
+X509_REQ_get_extensions 1872 1_1_0 EXIST::FUNCTION:
+X509_REQ_set_extension_nids 1873 1_1_0 EXIST::FUNCTION:
+BIO_nwrite 1874 1_1_0 EXIST::FUNCTION:
+X509_REQ_extension_nid 1875 1_1_0 EXIST::FUNCTION:
+BIO_nread 1876 1_1_0 EXIST::FUNCTION:
+X509_REQ_get_extension_nids 1877 1_1_0 EXIST::FUNCTION:
+BIO_nwrite0 1878 1_1_0 EXIST::FUNCTION:
+X509_REQ_add_extensions_nid 1879 1_1_0 EXIST::FUNCTION:
+BIO_nread0 1880 1_1_0 EXIST::FUNCTION:
+X509_REQ_add_extensions 1881 1_1_0 EXIST::FUNCTION:
+BIO_new_mem_buf 1882 1_1_0 EXIST::FUNCTION:
+DH_set_ex_data 1883 1_1_0 EXIST::FUNCTION:DH
+DH_set_method 1884 1_1_0 EXIST::FUNCTION:DH
+DSA_OpenSSL 1885 1_1_0 EXIST::FUNCTION:DSA
+DH_get_ex_data 1886 1_1_0 EXIST::FUNCTION:DH
+DH_get_ex_new_index 1887 1_1_0 NOEXIST::FUNCTION:
+DSA_new_method 1888 1_1_0 EXIST::FUNCTION:DSA
+DH_new_method 1889 1_1_0 EXIST::FUNCTION:DH
+DH_OpenSSL 1890 1_1_0 EXIST::FUNCTION:DH
+DSA_get_ex_new_index 1891 1_1_0 NOEXIST::FUNCTION:
+DH_get_default_method 1892 1_1_0 EXIST::FUNCTION:DH
+DSA_set_ex_data 1893 1_1_0 EXIST::FUNCTION:DSA
+DH_set_default_method 1894 1_1_0 EXIST::FUNCTION:DH
+DSA_get_ex_data 1895 1_1_0 EXIST::FUNCTION:DSA
+X509V3_EXT_REQ_add_conf 1896 1_1_0 EXIST::FUNCTION:
+NETSCAPE_SPKI_print 1897 1_1_0 EXIST::FUNCTION:
+NETSCAPE_SPKI_set_pubkey 1898 1_1_0 EXIST::FUNCTION:
+NETSCAPE_SPKI_b64_encode 1899 1_1_0 EXIST::FUNCTION:
+NETSCAPE_SPKI_get_pubkey 1900 1_1_0 EXIST::FUNCTION:
+NETSCAPE_SPKI_b64_decode 1901 1_1_0 EXIST::FUNCTION:
+UTF8_putc 1902 1_1_0 EXIST::FUNCTION:
+UTF8_getc 1903 1_1_0 EXIST::FUNCTION:
+RSA_null_method 1904 1_1_0 EXIST::FUNCTION:RSA
+ASN1_tag2str 1905 1_1_0 EXIST::FUNCTION:
+BIO_ctrl_reset_read_request 1906 1_1_0 EXIST::FUNCTION:
+DISPLAYTEXT_new 1907 1_1_0 EXIST::FUNCTION:
+ASN1_GENERALIZEDTIME_free 1908 1_1_0 EXIST::FUNCTION:
+X509_REVOKED_get_ext_d2i 1909 1_1_0 EXIST::FUNCTION:
+X509_set_ex_data 1910 1_1_0 EXIST::FUNCTION:
+X509_reject_set_bit_asc 1911 1_1_0 NOEXIST::FUNCTION:
+X509_NAME_add_entry_by_txt 1912 1_1_0 EXIST::FUNCTION:
+X509_NAME_add_entry_by_NID 1914 1_1_0 EXIST::FUNCTION:
+X509_PURPOSE_get0 1915 1_1_0 EXIST::FUNCTION:
+PEM_read_X509_AUX 1917 1_1_0 EXIST::FUNCTION:
+d2i_AUTHORITY_INFO_ACCESS 1918 1_1_0 EXIST::FUNCTION:
+PEM_write_PUBKEY 1921 1_1_0 EXIST::FUNCTION:
+ACCESS_DESCRIPTION_new 1925 1_1_0 EXIST::FUNCTION:
+X509_CERT_AUX_free 1926 1_1_0 EXIST::FUNCTION:
+d2i_ACCESS_DESCRIPTION 1927 1_1_0 EXIST::FUNCTION:
+X509_trust_clear 1928 1_1_0 EXIST::FUNCTION:
+X509_TRUST_add 1931 1_1_0 EXIST::FUNCTION:
+ASN1_VISIBLESTRING_new 1932 1_1_0 EXIST::FUNCTION:
+X509_alias_set1 1933 1_1_0 EXIST::FUNCTION:
+ASN1_PRINTABLESTRING_free 1934 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_get1_DSA 1935 1_1_0 EXIST::FUNCTION:DSA
+ASN1_BMPSTRING_new 1936 1_1_0 EXIST::FUNCTION:
+ASN1_mbstring_copy 1937 1_1_0 EXIST::FUNCTION:
+ASN1_UTF8STRING_new 1938 1_1_0 EXIST::FUNCTION:
+DSA_get_default_method 1941 1_1_0 EXIST::FUNCTION:DSA
+i2d_ASN1_SET_OF_ACCESS_DESCRIPTION 1945 1_1_0 NOEXIST::FUNCTION:
+ASN1_T61STRING_free 1946 1_1_0 EXIST::FUNCTION:
+DSA_set_method 1949 1_1_0 EXIST::FUNCTION:DSA
+X509_get_ex_data 1950 1_1_0 EXIST::FUNCTION:
+ASN1_STRING_type 1951 1_1_0 EXIST::FUNCTION:
+X509_PURPOSE_get_by_sname 1952 1_1_0 EXIST::FUNCTION:
+ASN1_TIME_free 1954 1_1_0 EXIST::FUNCTION:
+ASN1_OCTET_STRING_cmp 1955 1_1_0 EXIST::FUNCTION:
+ASN1_BIT_STRING_new 1957 1_1_0 EXIST::FUNCTION:
+X509_get_ext_d2i 1958 1_1_0 EXIST::FUNCTION:
+PEM_read_bio_X509_AUX 1959 1_1_0 EXIST::FUNCTION:
+ASN1_STRING_set_default_mask_asc 1960 1_1_0 EXIST::FUNCTION:
+PEM_write_bio_RSA_PUBKEY 1961 1_1_0 EXIST::FUNCTION:RSA
+ASN1_INTEGER_cmp 1963 1_1_0 EXIST::FUNCTION:
+d2i_RSA_PUBKEY_fp 1964 1_1_0 EXIST::FUNCTION:RSA,STDIO
+X509_trust_set_bit_asc 1967 1_1_0 NOEXIST::FUNCTION:
+PEM_write_bio_DSA_PUBKEY 1968 1_1_0 EXIST::FUNCTION:DSA
+X509_STORE_CTX_free 1969 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_set1_DSA 1970 1_1_0 EXIST::FUNCTION:DSA
+i2d_DSA_PUBKEY_fp 1971 1_1_0 EXIST::FUNCTION:DSA,STDIO
+X509_load_cert_crl_file 1972 1_1_0 EXIST::FUNCTION:
+ASN1_TIME_new 1973 1_1_0 EXIST::FUNCTION:
+i2d_RSA_PUBKEY 1974 1_1_0 EXIST::FUNCTION:RSA
+X509_STORE_CTX_purpose_inherit 1976 1_1_0 EXIST::FUNCTION:
+PEM_read_RSA_PUBKEY 1977 1_1_0 EXIST::FUNCTION:RSA
+d2i_X509_AUX 1980 1_1_0 EXIST::FUNCTION:
+i2d_DSA_PUBKEY 1981 1_1_0 EXIST::FUNCTION:DSA
+X509_CERT_AUX_print 1982 1_1_0 NOEXIST::FUNCTION:
+PEM_read_DSA_PUBKEY 1984 1_1_0 EXIST::FUNCTION:DSA
+i2d_RSA_PUBKEY_bio 1985 1_1_0 EXIST::FUNCTION:RSA
+ASN1_BIT_STRING_num_asc 1986 1_1_0 EXIST::FUNCTION:
+i2d_PUBKEY 1987 1_1_0 EXIST::FUNCTION:
+ASN1_UTCTIME_free 1988 1_1_0 EXIST::FUNCTION:
+DSA_set_default_method 1989 1_1_0 EXIST::FUNCTION:DSA
+X509_PURPOSE_get_by_id 1990 1_1_0 EXIST::FUNCTION:
+ACCESS_DESCRIPTION_free 1994 1_1_0 EXIST::FUNCTION:
+PEM_read_bio_PUBKEY 1995 1_1_0 EXIST::FUNCTION:
+ASN1_STRING_set_by_NID 1996 1_1_0 EXIST::FUNCTION:
+X509_PURPOSE_get_id 1997 1_1_0 EXIST::FUNCTION:
+DISPLAYTEXT_free 1998 1_1_0 EXIST::FUNCTION:
+OTHERNAME_new 1999 1_1_0 EXIST::FUNCTION:
+X509_CERT_AUX_new 2001 1_1_0 EXIST::FUNCTION:
+X509_TRUST_cleanup 2007 1_1_0 EXIST::FUNCTION:
+X509_NAME_add_entry_by_OBJ 2008 1_1_0 EXIST::FUNCTION:
+X509_CRL_get_ext_d2i 2009 1_1_0 EXIST::FUNCTION:
+X509_PURPOSE_get0_name 2011 1_1_0 EXIST::FUNCTION:
+PEM_read_PUBKEY 2012 1_1_0 EXIST::FUNCTION:
+i2d_DSA_PUBKEY_bio 2014 1_1_0 EXIST::FUNCTION:DSA
+i2d_OTHERNAME 2015 1_1_0 EXIST::FUNCTION:
+ASN1_OCTET_STRING_free 2016 1_1_0 EXIST::FUNCTION:
+ASN1_BIT_STRING_set_asc 2017 1_1_0 EXIST::FUNCTION:
+X509_get_ex_new_index 2019 1_1_0 NOEXIST::FUNCTION:
+ASN1_STRING_TABLE_cleanup 2020 1_1_0 EXIST::FUNCTION:
+X509_TRUST_get_by_id 2021 1_1_0 EXIST::FUNCTION:
+X509_PURPOSE_get_trust 2022 1_1_0 EXIST::FUNCTION:
+ASN1_STRING_length 2023 1_1_0 EXIST::FUNCTION:
+d2i_ASN1_SET_OF_ACCESS_DESCRIPTION 2024 1_1_0 NOEXIST::FUNCTION:
+ASN1_PRINTABLESTRING_new 2025 1_1_0 EXIST::FUNCTION:
+X509V3_get_d2i 2026 1_1_0 EXIST::FUNCTION:
+ASN1_ENUMERATED_free 2027 1_1_0 EXIST::FUNCTION:
+i2d_X509_CERT_AUX 2028 1_1_0 EXIST::FUNCTION:
+X509_STORE_CTX_set_trust 2030 1_1_0 EXIST::FUNCTION:
+ASN1_STRING_set_default_mask 2032 1_1_0 EXIST::FUNCTION:
+X509_STORE_CTX_new 2033 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_get1_RSA 2034 1_1_0 EXIST::FUNCTION:RSA
+DIRECTORYSTRING_free 2038 1_1_0 EXIST::FUNCTION:
+PEM_write_X509_AUX 2039 1_1_0 EXIST::FUNCTION:
+ASN1_OCTET_STRING_set 2040 1_1_0 EXIST::FUNCTION:
+d2i_DSA_PUBKEY_fp 2041 1_1_0 EXIST::FUNCTION:DSA,STDIO
+d2i_RSA_PUBKEY 2044 1_1_0 EXIST::FUNCTION:RSA
+X509_TRUST_get0_name 2046 1_1_0 EXIST::FUNCTION:
+X509_TRUST_get0 2047 1_1_0 EXIST::FUNCTION:
+AUTHORITY_INFO_ACCESS_free 2048 1_1_0 EXIST::FUNCTION:
+ASN1_IA5STRING_new 2049 1_1_0 EXIST::FUNCTION:
+d2i_DSA_PUBKEY 2050 1_1_0 EXIST::FUNCTION:DSA
+X509_check_purpose 2051 1_1_0 EXIST::FUNCTION:
+ASN1_ENUMERATED_new 2052 1_1_0 EXIST::FUNCTION:
+d2i_RSA_PUBKEY_bio 2053 1_1_0 EXIST::FUNCTION:RSA
+d2i_PUBKEY 2054 1_1_0 EXIST::FUNCTION:
+X509_TRUST_get_trust 2055 1_1_0 EXIST::FUNCTION:
+X509_TRUST_get_flags 2056 1_1_0 EXIST::FUNCTION:
+ASN1_BMPSTRING_free 2057 1_1_0 EXIST::FUNCTION:
+ASN1_T61STRING_new 2058 1_1_0 EXIST::FUNCTION:
+ASN1_UTCTIME_new 2060 1_1_0 EXIST::FUNCTION:
+i2d_AUTHORITY_INFO_ACCESS 2062 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_set1_RSA 2063 1_1_0 EXIST::FUNCTION:RSA
+X509_STORE_CTX_set_purpose 2064 1_1_0 EXIST::FUNCTION:
+ASN1_IA5STRING_free 2065 1_1_0 EXIST::FUNCTION:
+PEM_write_bio_X509_AUX 2066 1_1_0 EXIST::FUNCTION:
+X509_PURPOSE_get_count 2067 1_1_0 EXIST::FUNCTION:
+CRYPTO_add_info 2068 1_1_0 NOEXIST::FUNCTION:
+X509_NAME_ENTRY_create_by_txt 2071 1_1_0 EXIST::FUNCTION:
+ASN1_STRING_get_default_mask 2072 1_1_0 EXIST::FUNCTION:
+X509_alias_get0 2074 1_1_0 EXIST::FUNCTION:
+ASN1_STRING_data 2075 1_1_0 EXIST::FUNCTION:
+i2d_ACCESS_DESCRIPTION 2077 1_1_0 EXIST::FUNCTION:
+X509_trust_set_bit 2078 1_1_0 NOEXIST::FUNCTION:
+ASN1_BIT_STRING_free 2080 1_1_0 EXIST::FUNCTION:
+PEM_read_bio_RSA_PUBKEY 2081 1_1_0 EXIST::FUNCTION:RSA
+X509_add1_reject_object 2082 1_1_0 EXIST::FUNCTION:
+X509_check_trust 2083 1_1_0 EXIST::FUNCTION:
+PEM_read_bio_DSA_PUBKEY 2088 1_1_0 EXIST::FUNCTION:DSA
+X509_PURPOSE_add 2090 1_1_0 EXIST::FUNCTION:
+ASN1_STRING_TABLE_get 2091 1_1_0 EXIST::FUNCTION:
+ASN1_UTF8STRING_free 2092 1_1_0 EXIST::FUNCTION:
+d2i_DSA_PUBKEY_bio 2093 1_1_0 EXIST::FUNCTION:DSA
+PEM_write_RSA_PUBKEY 2095 1_1_0 EXIST::FUNCTION:RSA
+d2i_OTHERNAME 2096 1_1_0 EXIST::FUNCTION:
+X509_reject_set_bit 2098 1_1_0 NOEXIST::FUNCTION:
+PEM_write_DSA_PUBKEY 2101 1_1_0 EXIST::FUNCTION:DSA
+X509_PURPOSE_get0_sname 2105 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_set1_DH 2107 1_1_0 EXIST::FUNCTION:DH
+ASN1_OCTET_STRING_dup 2108 1_1_0 EXIST::FUNCTION:
+ASN1_BIT_STRING_set 2109 1_1_0 EXIST::FUNCTION:
+X509_TRUST_get_count 2110 1_1_0 EXIST::FUNCTION:
+ASN1_INTEGER_free 2111 1_1_0 EXIST::FUNCTION:
+OTHERNAME_free 2112 1_1_0 EXIST::FUNCTION:
+i2d_RSA_PUBKEY_fp 2113 1_1_0 EXIST::FUNCTION:RSA,STDIO
+ASN1_INTEGER_dup 2114 1_1_0 EXIST::FUNCTION:
+d2i_X509_CERT_AUX 2115 1_1_0 EXIST::FUNCTION:
+PEM_write_bio_PUBKEY 2117 1_1_0 EXIST::FUNCTION:
+ASN1_VISIBLESTRING_free 2118 1_1_0 EXIST::FUNCTION:
+X509_PURPOSE_cleanup 2119 1_1_0 EXIST::FUNCTION:
+ASN1_mbstring_ncopy 2123 1_1_0 EXIST::FUNCTION:
+ASN1_GENERALIZEDTIME_new 2126 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_get1_DH 2128 1_1_0 EXIST::FUNCTION:DH
+ASN1_OCTET_STRING_new 2130 1_1_0 EXIST::FUNCTION:
+ASN1_INTEGER_new 2131 1_1_0 EXIST::FUNCTION:
+i2d_X509_AUX 2132 1_1_0 EXIST::FUNCTION:
+ASN1_BIT_STRING_name_print 2134 1_1_0 EXIST::FUNCTION:
+X509_cmp 2135 1_1_0 EXIST::FUNCTION:
+ASN1_STRING_length_set 2136 1_1_0 EXIST::FUNCTION:
+DIRECTORYSTRING_new 2137 1_1_0 EXIST::FUNCTION:
+X509_add1_trust_object 2140 1_1_0 EXIST::FUNCTION:
+PKCS12_newpass 2141 1_1_0 EXIST::FUNCTION:
+SMIME_write_PKCS7 2142 1_1_0 EXIST::FUNCTION:
+SMIME_read_PKCS7 2143 1_1_0 EXIST::FUNCTION:
+DES_set_key_checked 2144 1_1_0 EXIST::FUNCTION:DES
+PKCS7_verify 2145 1_1_0 EXIST::FUNCTION:
+PKCS7_encrypt 2146 1_1_0 EXIST::FUNCTION:
+DES_set_key_unchecked 2147 1_1_0 EXIST::FUNCTION:DES
+SMIME_crlf_copy 2148 1_1_0 EXIST::FUNCTION:
+i2d_ASN1_PRINTABLESTRING 2149 1_1_0 EXIST::FUNCTION:
+PKCS7_get0_signers 2150 1_1_0 EXIST::FUNCTION:
+PKCS7_decrypt 2151 1_1_0 EXIST::FUNCTION:
+SMIME_text 2152 1_1_0 EXIST::FUNCTION:
+PKCS7_simple_smimecap 2153 1_1_0 EXIST::FUNCTION:
+PKCS7_get_smimecap 2154 1_1_0 EXIST::FUNCTION:
+PKCS7_sign 2155 1_1_0 EXIST::FUNCTION:
+PKCS7_add_attrib_smimecap 2156 1_1_0 EXIST::FUNCTION:
+CRYPTO_dbg_set_options 2157 1_1_0 NOEXIST::FUNCTION:
+CRYPTO_remove_all_info 2158 1_1_0 NOEXIST::FUNCTION:
+CRYPTO_get_mem_debug_functions 2159 1_1_0 NOEXIST::FUNCTION:
+CRYPTO_is_mem_check_on 2160 1_1_0 NOEXIST::FUNCTION:
+CRYPTO_set_mem_debug_functions 2161 1_1_0 NOEXIST::FUNCTION:
+CRYPTO_set_mem_debug_options 2164 1_1_0 NOEXIST::FUNCTION:
+PEM_write_PKCS8PrivateKey_nid 2165 1_1_0 EXIST::FUNCTION:STDIO
+PEM_write_bio_PKCS8PrivateKey_nid 2166 1_1_0 EXIST::FUNCTION:
+d2i_PKCS8PrivateKey_bio 2167 1_1_0 EXIST::FUNCTION:
+ASN1_NULL_free 2168 1_1_0 EXIST::FUNCTION:
+d2i_ASN1_NULL 2169 1_1_0 EXIST::FUNCTION:
+ASN1_NULL_new 2170 1_1_0 EXIST::FUNCTION:
+i2d_PKCS8PrivateKey_bio 2171 1_1_0 EXIST::FUNCTION:
+i2d_PKCS8PrivateKey_fp 2172 1_1_0 EXIST::FUNCTION:STDIO
+i2d_ASN1_NULL 2173 1_1_0 EXIST::FUNCTION:
+i2d_PKCS8PrivateKey_nid_fp 2174 1_1_0 EXIST::FUNCTION:STDIO
+d2i_PKCS8PrivateKey_fp 2175 1_1_0 EXIST::FUNCTION:STDIO
+i2d_PKCS8PrivateKey_nid_bio 2176 1_1_0 EXIST::FUNCTION:
+i2d_PKCS8PrivateKeyInfo_fp 2177 1_1_0 EXIST::FUNCTION:STDIO
+i2d_PKCS8PrivateKeyInfo_bio 2178 1_1_0 EXIST::FUNCTION:
+PEM_cb 2179 1_1_0 NOEXIST::FUNCTION:
+i2d_PrivateKey_fp 2180 1_1_0 EXIST::FUNCTION:STDIO
+d2i_PrivateKey_bio 2181 1_1_0 EXIST::FUNCTION:
+d2i_PrivateKey_fp 2182 1_1_0 EXIST::FUNCTION:STDIO
+i2d_PrivateKey_bio 2183 1_1_0 EXIST::FUNCTION:
+X509_reject_clear 2184 1_1_0 EXIST::FUNCTION:
+X509_TRUST_set_default 2185 1_1_0 EXIST::FUNCTION:
+d2i_AutoPrivateKey 2186 1_1_0 EXIST::FUNCTION:
+X509_ATTRIBUTE_get0_type 2187 1_1_0 EXIST::FUNCTION:
+X509_ATTRIBUTE_set1_data 2188 1_1_0 EXIST::FUNCTION:
+X509at_get_attr 2189 1_1_0 EXIST::FUNCTION:
+X509at_get_attr_count 2190 1_1_0 EXIST::FUNCTION:
+X509_ATTRIBUTE_create_by_NID 2191 1_1_0 EXIST::FUNCTION:
+X509_ATTRIBUTE_set1_object 2192 1_1_0 EXIST::FUNCTION:
+X509_ATTRIBUTE_count 2193 1_1_0 EXIST::FUNCTION:
+X509_ATTRIBUTE_create_by_OBJ 2194 1_1_0 EXIST::FUNCTION:
+X509_ATTRIBUTE_get0_object 2195 1_1_0 EXIST::FUNCTION:
+X509at_get_attr_by_NID 2196 1_1_0 EXIST::FUNCTION:
+X509at_add1_attr 2197 1_1_0 EXIST::FUNCTION:
+X509_ATTRIBUTE_get0_data 2198 1_1_0 EXIST::FUNCTION:
+X509at_delete_attr 2199 1_1_0 EXIST::FUNCTION:
+X509at_get_attr_by_OBJ 2200 1_1_0 EXIST::FUNCTION:
+RAND_add 2201 1_1_0 EXIST::FUNCTION:
+BIO_number_written 2202 1_1_0 EXIST::FUNCTION:
+BIO_number_read 2203 1_1_0 EXIST::FUNCTION:
+X509_STORE_CTX_get1_chain 2204 1_1_0 EXIST::FUNCTION:
+ERR_load_RAND_strings 2205 1_1_0 EXIST::FUNCTION:
+RAND_pseudo_bytes 2206 1_1_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0
+X509_REQ_get_attr_by_NID 2207 1_1_0 EXIST::FUNCTION:
+X509_REQ_get_attr 2208 1_1_0 EXIST::FUNCTION:
+X509_REQ_add1_attr_by_NID 2209 1_1_0 EXIST::FUNCTION:
+X509_REQ_get_attr_by_OBJ 2210 1_1_0 EXIST::FUNCTION:
+X509at_add1_attr_by_NID 2211 1_1_0 EXIST::FUNCTION:
+X509_REQ_add1_attr_by_OBJ 2212 1_1_0 EXIST::FUNCTION:
+X509_REQ_get_attr_count 2213 1_1_0 EXIST::FUNCTION:
+X509_REQ_add1_attr 2214 1_1_0 EXIST::FUNCTION:
+X509_REQ_delete_attr 2215 1_1_0 EXIST::FUNCTION:
+X509at_add1_attr_by_OBJ 2216 1_1_0 EXIST::FUNCTION:
+X509_REQ_add1_attr_by_txt 2217 1_1_0 EXIST::FUNCTION:
+X509_ATTRIBUTE_create_by_txt 2218 1_1_0 EXIST::FUNCTION:
+X509at_add1_attr_by_txt 2219 1_1_0 EXIST::FUNCTION:
+BN_pseudo_rand 2239 1_1_0 EXIST::FUNCTION:
+BN_is_prime_fasttest 2240 1_1_0 EXIST::FUNCTION:DEPRECATEDIN_0_9_8
+BN_CTX_end 2241 1_1_0 EXIST::FUNCTION:
+BN_CTX_start 2242 1_1_0 EXIST::FUNCTION:
+BN_CTX_get 2243 1_1_0 EXIST::FUNCTION:
+EVP_PKEY2PKCS8_broken 2244 1_1_0 EXIST::FUNCTION:
+ASN1_STRING_TABLE_add 2245 1_1_0 EXIST::FUNCTION:
+CRYPTO_dbg_get_options 2246 1_1_0 NOEXIST::FUNCTION:
+AUTHORITY_INFO_ACCESS_new 2247 1_1_0 EXIST::FUNCTION:
+CRYPTO_get_mem_debug_options 2248 1_1_0 NOEXIST::FUNCTION:
+DES_crypt 2249 1_1_0 EXIST::FUNCTION:DES
+PEM_write_bio_X509_REQ_NEW 2250 1_1_0 EXIST::FUNCTION:
+PEM_write_X509_REQ_NEW 2251 1_1_0 EXIST::FUNCTION:
+BIO_callback_ctrl 2252 1_1_0 EXIST::FUNCTION:
+RAND_egd 2253 1_1_0 EXIST::FUNCTION:EGD
+RAND_status 2254 1_1_0 EXIST::FUNCTION:
+bn_dump1 2255 1_1_0 NOEXIST::FUNCTION:
+DES_check_key_parity 2256 1_1_0 EXIST::FUNCTION:DES
+lh_num_items 2257 1_1_0 EXIST::FUNCTION:
+RAND_event 2258 1_1_0 EXIST:WIN32:FUNCTION:
+DSO_new 2259 1_1_0 EXIST::FUNCTION:
+DSO_new_method 2260 1_1_0 EXIST::FUNCTION:
+DSO_free 2261 1_1_0 EXIST::FUNCTION:
+DSO_flags 2262 1_1_0 EXIST::FUNCTION:
+DSO_up 2263 1_1_0 NOEXIST::FUNCTION:
+DSO_set_default_method 2264 1_1_0 EXIST::FUNCTION:
+DSO_get_default_method 2265 1_1_0 EXIST::FUNCTION:
+DSO_get_method 2266 1_1_0 EXIST::FUNCTION:
+DSO_set_method 2267 1_1_0 EXIST::FUNCTION:
+DSO_load 2268 1_1_0 EXIST::FUNCTION:
+DSO_bind_var 2269 1_1_0 EXIST::FUNCTION:
+DSO_METHOD_null 2270 1_1_0 EXIST::FUNCTION:
+DSO_METHOD_openssl 2271 1_1_0 EXIST::FUNCTION:
+DSO_METHOD_dlfcn 2272 1_1_0 EXIST::FUNCTION:
+DSO_METHOD_win32 2273 1_1_0 EXIST::FUNCTION:
+ERR_load_DSO_strings 2274 1_1_0 EXIST::FUNCTION:
+DSO_METHOD_dl 2275 1_1_0 EXIST::FUNCTION:
+NCONF_load 2276 1_1_0 EXIST::FUNCTION:
+NCONF_load_fp 2278 1_1_0 EXIST::FUNCTION:STDIO
+NCONF_new 2279 1_1_0 EXIST::FUNCTION:
+NCONF_get_string 2280 1_1_0 EXIST::FUNCTION:
+NCONF_free 2281 1_1_0 EXIST::FUNCTION:
+NCONF_get_number 2282 1_1_0 NOEXIST::FUNCTION:
+CONF_dump_fp 2283 1_1_0 EXIST::FUNCTION:STDIO
+NCONF_load_bio 2284 1_1_0 EXIST::FUNCTION:
+NCONF_dump_fp 2285 1_1_0 EXIST::FUNCTION:STDIO
+NCONF_get_section 2286 1_1_0 EXIST::FUNCTION:
+NCONF_dump_bio 2287 1_1_0 EXIST::FUNCTION:
+CONF_dump_bio 2288 1_1_0 EXIST::FUNCTION:
+NCONF_free_data 2289 1_1_0 EXIST::FUNCTION:
+CONF_set_default_method 2290 1_1_0 EXIST::FUNCTION:
+ERR_error_string_n 2291 1_1_0 EXIST::FUNCTION:
+BIO_snprintf 2292 1_1_0 EXIST::FUNCTION:
+DSO_ctrl 2293 1_1_0 EXIST::FUNCTION:
+i2d_ASN1_SET_OF_ASN1_INTEGER 2317 1_1_0 NOEXIST::FUNCTION:
+i2d_ASN1_SET_OF_PKCS12_SAFEBAG 2320 1_1_0 NOEXIST::FUNCTION:
+i2d_ASN1_SET_OF_PKCS7 2328 1_1_0 NOEXIST::FUNCTION:
+BIO_vfree 2334 1_1_0 EXIST::FUNCTION:
+d2i_ASN1_SET_OF_ASN1_INTEGER 2339 1_1_0 NOEXIST::FUNCTION:
+d2i_ASN1_SET_OF_PKCS12_SAFEBAG 2341 1_1_0 NOEXIST::FUNCTION:
+ASN1_UTCTIME_get 2350 1_1_0 NOEXIST::FUNCTION:
+X509_REQ_digest 2362 1_1_0 EXIST::FUNCTION:
+X509_CRL_digest 2391 1_1_0 EXIST::FUNCTION:
+ASN1_STRING_clear_free 2392 1_1_0 EXIST::FUNCTION:
+d2i_ASN1_SET_OF_PKCS7 2397 1_1_0 NOEXIST::FUNCTION:
+X509_ALGOR_cmp 2398 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_CTX_set_key_length 2399 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_CTX_ctrl 2400 1_1_0 EXIST::FUNCTION:
+BN_mod_exp_mont_word 2401 1_1_0 EXIST::FUNCTION:
+RAND_egd_bytes 2402 1_1_0 EXIST::FUNCTION:EGD
+X509_REQ_get1_email 2403 1_1_0 EXIST::FUNCTION:
+X509_get1_email 2404 1_1_0 EXIST::FUNCTION:
+X509_email_free 2405 1_1_0 EXIST::FUNCTION:
+i2d_RSA_NET 2406 1_1_0 NOEXIST::FUNCTION:
+d2i_RSA_NET_2 2407 1_1_0 NOEXIST::FUNCTION:
+d2i_RSA_NET 2408 1_1_0 NOEXIST::FUNCTION:
+DSO_bind_func 2409 1_1_0 EXIST::FUNCTION:
+CRYPTO_get_new_dynlockid 2410 1_1_0 EXIST::FUNCTION:
+sk_new_null 2411 1_1_0 EXIST::FUNCTION:
+CRYPTO_set_dynlock_destroy_callback 2412 1_1_0 EXIST::FUNCTION:
+CRYPTO_destroy_dynlockid 2413 1_1_0 EXIST::FUNCTION:
+CRYPTO_set_dynlock_size 2414 1_1_0 NOEXIST::FUNCTION:
+CRYPTO_set_dynlock_create_callback 2415 1_1_0 EXIST::FUNCTION:
+CRYPTO_set_dynlock_lock_callback 2416 1_1_0 EXIST::FUNCTION:
+CRYPTO_get_dynlock_lock_callback 2417 1_1_0 EXIST::FUNCTION:
+CRYPTO_get_dynlock_destroy_callback 2418 1_1_0 EXIST::FUNCTION:
+CRYPTO_get_dynlock_value 2419 1_1_0 EXIST::FUNCTION:
+CRYPTO_get_dynlock_create_callback 2420 1_1_0 EXIST::FUNCTION:
+c2i_ASN1_BIT_STRING 2421 1_1_0 NOEXIST::FUNCTION:
+i2c_ASN1_BIT_STRING 2422 1_1_0 NOEXIST::FUNCTION:
+RAND_poll 2423 1_1_0 EXIST::FUNCTION:
+c2i_ASN1_INTEGER 2424 1_1_0 NOEXIST::FUNCTION:
+i2c_ASN1_INTEGER 2425 1_1_0 NOEXIST::FUNCTION:
+BIO_dump_indent 2426 1_1_0 EXIST::FUNCTION:
+ASN1_parse_dump 2427 1_1_0 EXIST::FUNCTION:
+c2i_ASN1_OBJECT 2428 1_1_0 NOEXIST::FUNCTION:
+X509_NAME_print_ex_fp 2429 1_1_0 EXIST::FUNCTION:STDIO
+ASN1_STRING_print_ex_fp 2430 1_1_0 EXIST::FUNCTION:STDIO
+X509_NAME_print_ex 2431 1_1_0 EXIST::FUNCTION:
+ASN1_STRING_print_ex 2432 1_1_0 EXIST::FUNCTION:
+MD4 2433 1_1_0 EXIST::FUNCTION:MD4
+MD4_Transform 2434 1_1_0 EXIST::FUNCTION:MD4
+MD4_Final 2435 1_1_0 EXIST::FUNCTION:MD4
+MD4_Update 2436 1_1_0 EXIST::FUNCTION:MD4
+MD4_Init 2437 1_1_0 EXIST::FUNCTION:MD4
+EVP_md4 2438 1_1_0 EXIST::FUNCTION:MD4
+i2d_PUBKEY_bio 2439 1_1_0 EXIST::FUNCTION:
+i2d_PUBKEY_fp 2440 1_1_0 EXIST::FUNCTION:STDIO
+d2i_PUBKEY_bio 2441 1_1_0 EXIST::FUNCTION:
+ASN1_STRING_to_UTF8 2442 1_1_0 EXIST::FUNCTION:
+BIO_vprintf 2443 1_1_0 EXIST::FUNCTION:
+BIO_vsnprintf 2444 1_1_0 EXIST::FUNCTION:
+d2i_PUBKEY_fp 2445 1_1_0 EXIST::FUNCTION:STDIO
+X509_cmp_time 2446 1_1_0 EXIST::FUNCTION:
+X509_STORE_CTX_set_time 2447 1_1_0 EXIST::FUNCTION:
+X509_STORE_CTX_get1_issuer 2448 1_1_0 EXIST::FUNCTION:
+X509_OBJECT_retrieve_match 2449 1_1_0 EXIST::FUNCTION:
+X509_OBJECT_idx_by_subject 2450 1_1_0 EXIST::FUNCTION:
+X509_STORE_CTX_set_flags 2451 1_1_0 EXIST::FUNCTION:
+X509_STORE_CTX_trusted_stack 2452 1_1_0 EXIST::FUNCTION:
+X509_time_adj 2453 1_1_0 EXIST::FUNCTION:
+X509_check_issued 2454 1_1_0 EXIST::FUNCTION:
+ASN1_UTCTIME_cmp_time_t 2455 1_1_0 EXIST::FUNCTION:
+DES_set_weak_key_flag 2456 1_1_0 NOEXIST::FUNCTION:
+DES_check_key 2457 1_1_0 NOEXIST::FUNCTION:
+DES_rw_mode 2458 1_1_0 NOEXIST::FUNCTION:
+RSA_PKCS1_RSAref 2459 1_1_0 NOEXIST::FUNCTION:
+X509_keyid_set1 2460 1_1_0 EXIST::FUNCTION:
+BIO_next 2461 1_1_0 EXIST::FUNCTION:
+DSO_METHOD_vms 2462 1_1_0 EXIST::FUNCTION:
+BIO_f_linebuffer 2463 1_1_0 EXIST:VMS:FUNCTION:
+BN_bntest_rand 2464 1_1_0 EXIST::FUNCTION:
+OPENSSL_issetugid 2465 1_1_0 EXIST::FUNCTION:
+BN_rand_range 2466 1_1_0 EXIST::FUNCTION:
+ERR_load_ENGINE_strings 2467 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_set_DSA 2468 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_get_finish_function 2469 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_get_default_RSA 2470 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_get_BN_mod_exp 2471 1_1_0 NOEXIST::FUNCTION:
+DSA_get_default_openssl_method 2472 1_1_0 NOEXIST::FUNCTION:
+ENGINE_set_DH 2473 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_set_default_BN_mod_exp_crt 2474 1_1_0 NOEXIST::FUNCTION:
+ENGINE_init 2475 1_1_0 EXIST::FUNCTION:ENGINE
+DH_get_default_openssl_method 2476 1_1_0 NOEXIST::FUNCTION:
+RSA_set_default_openssl_method 2477 1_1_0 NOEXIST::FUNCTION:
+ENGINE_finish 2478 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_load_public_key 2479 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_get_DH 2480 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_ctrl 2481 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_get_init_function 2482 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_set_init_function 2483 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_set_default_DSA 2484 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_get_name 2485 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_get_last 2486 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_get_prev 2487 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_get_default_DH 2488 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_get_RSA 2489 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_set_default 2490 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_get_RAND 2491 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_get_first 2492 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_by_id 2493 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_set_finish_function 2494 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_get_default_BN_mod_exp_crt 2495 1_1_0 NOEXIST::FUNCTION:
+RSA_get_default_openssl_method 2496 1_1_0 NOEXIST::FUNCTION:
+ENGINE_set_RSA 2497 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_load_private_key 2498 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_set_default_RAND 2499 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_set_BN_mod_exp 2500 1_1_0 NOEXIST::FUNCTION:
+ENGINE_remove 2501 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_free 2502 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_get_BN_mod_exp_crt 2503 1_1_0 NOEXIST::FUNCTION:
+ENGINE_get_next 2504 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_set_name 2505 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_get_default_DSA 2506 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_set_default_BN_mod_exp 2507 1_1_0 NOEXIST::FUNCTION:
+ENGINE_set_default_RSA 2508 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_get_default_RAND 2509 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_get_default_BN_mod_exp 2510 1_1_0 NOEXIST::FUNCTION:
+ENGINE_set_RAND 2511 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_set_id 2512 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_set_BN_mod_exp_crt 2513 1_1_0 NOEXIST::FUNCTION:
+ENGINE_set_default_DH 2514 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_new 2515 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_get_id 2516 1_1_0 EXIST::FUNCTION:ENGINE
+DSA_set_default_openssl_method 2517 1_1_0 NOEXIST::FUNCTION:
+ENGINE_add 2518 1_1_0 EXIST::FUNCTION:ENGINE
+DH_set_default_openssl_method 2519 1_1_0 NOEXIST::FUNCTION:
+ENGINE_get_DSA 2520 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_get_ctrl_function 2521 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_set_ctrl_function 2522 1_1_0 EXIST::FUNCTION:ENGINE
+BN_pseudo_rand_range 2523 1_1_0 EXIST::FUNCTION:
+X509_STORE_CTX_set_verify_cb 2524 1_1_0 EXIST::FUNCTION:
+ERR_load_COMP_strings 2525 1_1_0 EXIST::FUNCTION:
+PKCS12_item_decrypt_d2i 2526 1_1_0 EXIST::FUNCTION:
+ASN1_UTF8STRING_it 2527 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ASN1_UTF8STRING_it 2527 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+ENGINE_unregister_ciphers 2528 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_get_ciphers 2529 1_1_0 EXIST::FUNCTION:ENGINE
+d2i_OCSP_BASICRESP 2530 1_1_0 EXIST::FUNCTION:
+KRB5_CHECKSUM_it 2531 1_1_0 NOEXIST::FUNCTION:
+EC_POINT_add 2532 1_1_0 EXIST::FUNCTION:EC
+ASN1_item_ex_i2d 2533 1_1_0 EXIST::FUNCTION:
+OCSP_CERTID_it 2534 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+OCSP_CERTID_it 2534 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+d2i_OCSP_RESPBYTES 2535 1_1_0 EXIST::FUNCTION:
+X509V3_add1_i2d 2536 1_1_0 EXIST::FUNCTION:
+PKCS7_ENVELOPE_it 2537 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+PKCS7_ENVELOPE_it 2537 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+UI_add_input_boolean 2538 1_1_0 EXIST::FUNCTION:
+ENGINE_unregister_RSA 2539 1_1_0 EXIST::FUNCTION:ENGINE
+X509V3_EXT_nconf 2540 1_1_0 EXIST::FUNCTION:
+ASN1_GENERALSTRING_free 2541 1_1_0 EXIST::FUNCTION:
+d2i_OCSP_CERTSTATUS 2542 1_1_0 EXIST::FUNCTION:
+X509_REVOKED_set_serialNumber 2543 1_1_0 EXIST::FUNCTION:
+X509_print_ex 2544 1_1_0 EXIST::FUNCTION:
+OCSP_ONEREQ_get1_ext_d2i 2545 1_1_0 EXIST::FUNCTION:
+ENGINE_register_all_RAND 2546 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_load_dynamic 2547 1_1_0 NOEXIST::FUNCTION:
+PBKDF2PARAM_it 2548 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+PBKDF2PARAM_it 2548 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+EXTENDED_KEY_USAGE_new 2549 1_1_0 EXIST::FUNCTION:
+EC_GROUP_clear_free 2550 1_1_0 EXIST::FUNCTION:EC
+OCSP_sendreq_bio 2551 1_1_0 EXIST::FUNCTION:
+ASN1_item_digest 2552 1_1_0 EXIST::FUNCTION:
+OCSP_BASICRESP_delete_ext 2553 1_1_0 EXIST::FUNCTION:
+OCSP_SIGNATURE_it 2554 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+OCSP_SIGNATURE_it 2554 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+X509_CRL_it 2555 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+X509_CRL_it 2555 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+OCSP_BASICRESP_add_ext 2556 1_1_0 EXIST::FUNCTION:
+KRB5_ENCKEY_it 2557 1_1_0 NOEXIST::FUNCTION:
+UI_method_set_closer 2558 1_1_0 EXIST::FUNCTION:
+X509_STORE_set_purpose 2559 1_1_0 EXIST::FUNCTION:
+i2d_ASN1_GENERALSTRING 2560 1_1_0 EXIST::FUNCTION:
+OCSP_response_status 2561 1_1_0 EXIST::FUNCTION:
+i2d_OCSP_SERVICELOC 2562 1_1_0 EXIST::FUNCTION:
+ENGINE_get_digest_engine 2563 1_1_0 EXIST::FUNCTION:ENGINE
+EC_GROUP_set_curve_GFp 2564 1_1_0 EXIST::FUNCTION:EC
+OCSP_REQUEST_get_ext_by_OBJ 2565 1_1_0 EXIST::FUNCTION:
+_ossl_old_des_random_key 2566 1_1_0 NOEXIST::FUNCTION:
+ASN1_T61STRING_it 2567 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ASN1_T61STRING_it 2567 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+EC_GROUP_method_of 2568 1_1_0 EXIST::FUNCTION:EC
+i2d_KRB5_APREQ 2569 1_1_0 NOEXIST::FUNCTION:
+_ossl_old_des_encrypt 2570 1_1_0 NOEXIST::FUNCTION:
+ASN1_PRINTABLE_new 2571 1_1_0 EXIST::FUNCTION:
+HMAC_Init_ex 2572 1_1_0 EXIST::FUNCTION:
+d2i_KRB5_AUTHENT 2573 1_1_0 NOEXIST::FUNCTION:
+OCSP_archive_cutoff_new 2574 1_1_0 EXIST::FUNCTION:
+EC_POINT_set_Jprojective_coordinates_GFp 2575 1_1_0 EXIST::FUNCTION:EC
+_ossl_old_des_is_weak_key 2576 1_1_0 NOEXIST::FUNCTION:
+OCSP_BASICRESP_get_ext_by_OBJ 2577 1_1_0 EXIST::FUNCTION:
+EC_POINT_oct2point 2578 1_1_0 EXIST::FUNCTION:EC
+OCSP_SINGLERESP_get_ext_count 2579 1_1_0 EXIST::FUNCTION:
+UI_ctrl 2580 1_1_0 EXIST::FUNCTION:
+_shadow_DES_rw_mode 2581 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:DES
+_shadow_DES_rw_mode 2581 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:DES
+asn1_do_adb 2582 1_1_0 NOEXIST::FUNCTION:
+ASN1_template_i2d 2583 1_1_0 NOEXIST::FUNCTION:
+ENGINE_register_DH 2584 1_1_0 EXIST::FUNCTION:ENGINE
+UI_construct_prompt 2585 1_1_0 EXIST::FUNCTION:
+X509_STORE_set_trust 2586 1_1_0 EXIST::FUNCTION:
+UI_dup_input_string 2587 1_1_0 EXIST::FUNCTION:
+d2i_KRB5_APREQ 2588 1_1_0 NOEXIST::FUNCTION:
+EVP_MD_CTX_copy_ex 2589 1_1_0 EXIST::FUNCTION:
+OCSP_request_is_signed 2590 1_1_0 EXIST::FUNCTION:
+i2d_OCSP_REQINFO 2591 1_1_0 EXIST::FUNCTION:
+KRB5_ENCKEY_free 2592 1_1_0 NOEXIST::FUNCTION:
+OCSP_resp_get0 2593 1_1_0 EXIST::FUNCTION:
+GENERAL_NAME_it 2594 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+GENERAL_NAME_it 2594 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+ASN1_GENERALIZEDTIME_it 2595 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ASN1_GENERALIZEDTIME_it 2595 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+X509_STORE_set_flags 2596 1_1_0 EXIST::FUNCTION:
+EC_POINT_set_compressed_coordinates_GFp 2597 1_1_0 EXIST::FUNCTION:EC
+OCSP_response_status_str 2598 1_1_0 EXIST::FUNCTION:
+d2i_OCSP_REVOKEDINFO 2599 1_1_0 EXIST::FUNCTION:
+OCSP_basic_add1_cert 2600 1_1_0 EXIST::FUNCTION:
+ERR_get_implementation 2601 1_1_0 NOEXIST::FUNCTION:
+EVP_CipherFinal_ex 2602 1_1_0 EXIST::FUNCTION:
+OCSP_CERTSTATUS_new 2603 1_1_0 EXIST::FUNCTION:
+CRYPTO_cleanup_all_ex_data 2604 1_1_0 EXIST::FUNCTION:
+OCSP_resp_find 2605 1_1_0 EXIST::FUNCTION:
+BN_nnmod 2606 1_1_0 EXIST::FUNCTION:
+X509_CRL_sort 2607 1_1_0 EXIST::FUNCTION:
+X509_REVOKED_set_revocationDate 2608 1_1_0 EXIST::FUNCTION:
+ENGINE_register_RAND 2609 1_1_0 EXIST::FUNCTION:ENGINE
+OCSP_SERVICELOC_new 2610 1_1_0 EXIST::FUNCTION:
+EC_POINT_set_affine_coordinates_GFp 2611 1_1_0 EXIST::FUNCTION:EC
+_ossl_old_des_options 2612 1_1_0 NOEXIST::FUNCTION:
+SXNET_it 2613 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+SXNET_it 2613 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+UI_dup_input_boolean 2614 1_1_0 EXIST::FUNCTION:
+PKCS12_add_CSPName_asc 2615 1_1_0 EXIST::FUNCTION:
+EC_POINT_is_at_infinity 2616 1_1_0 EXIST::FUNCTION:EC
+ENGINE_load_cryptodev 2617 1_1_0 NOEXIST::FUNCTION:
+DSO_convert_filename 2618 1_1_0 EXIST::FUNCTION:
+POLICYQUALINFO_it 2619 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+POLICYQUALINFO_it 2619 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+ENGINE_register_ciphers 2620 1_1_0 EXIST::FUNCTION:ENGINE
+BN_mod_lshift_quick 2621 1_1_0 EXIST::FUNCTION:
+DSO_set_filename 2622 1_1_0 EXIST::FUNCTION:
+ASN1_item_free 2623 1_1_0 EXIST::FUNCTION:
+KRB5_TKTBODY_free 2624 1_1_0 NOEXIST::FUNCTION:
+AUTHORITY_KEYID_it 2625 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+AUTHORITY_KEYID_it 2625 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+KRB5_APREQBODY_new 2626 1_1_0 NOEXIST::FUNCTION:
+X509V3_EXT_REQ_add_nconf 2627 1_1_0 EXIST::FUNCTION:
+ENGINE_ctrl_cmd_string 2628 1_1_0 EXIST::FUNCTION:ENGINE
+i2d_OCSP_RESPDATA 2629 1_1_0 EXIST::FUNCTION:
+EVP_MD_CTX_reset 2630 1_1_0 EXIST::FUNCTION:
+EXTENDED_KEY_USAGE_free 2631 1_1_0 EXIST::FUNCTION:
+PKCS7_ATTR_SIGN_it 2632 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+PKCS7_ATTR_SIGN_it 2632 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+UI_add_error_string 2633 1_1_0 EXIST::FUNCTION:
+KRB5_CHECKSUM_free 2634 1_1_0 NOEXIST::FUNCTION:
+OCSP_REQUEST_get_ext 2635 1_1_0 EXIST::FUNCTION:
+ENGINE_load_ubsec 2636 1_1_0 NOEXIST::FUNCTION:
+ENGINE_register_all_digests 2637 1_1_0 EXIST::FUNCTION:ENGINE
+PKEY_USAGE_PERIOD_it 2638 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+PKEY_USAGE_PERIOD_it 2638 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+PKCS12_unpack_authsafes 2639 1_1_0 EXIST::FUNCTION:
+ASN1_item_unpack 2640 1_1_0 EXIST::FUNCTION:
+NETSCAPE_SPKAC_it 2641 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+NETSCAPE_SPKAC_it 2641 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+X509_REVOKED_it 2642 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+X509_REVOKED_it 2642 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+ASN1_STRING_encode 2643 1_1_0 NOEXIST::FUNCTION:
+EVP_aes_128_ecb 2644 1_1_0 EXIST::FUNCTION:AES
+KRB5_AUTHENT_free 2645 1_1_0 NOEXIST::FUNCTION:
+OCSP_BASICRESP_get_ext_by_critical 2646 1_1_0 EXIST::FUNCTION:
+OCSP_cert_status_str 2647 1_1_0 EXIST::FUNCTION:
+d2i_OCSP_REQUEST 2648 1_1_0 EXIST::FUNCTION:
+UI_dup_info_string 2649 1_1_0 EXIST::FUNCTION:
+_ossl_old_des_xwhite_in2out 2650 1_1_0 NOEXIST::FUNCTION:
+PKCS12_it 2651 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+PKCS12_it 2651 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+OCSP_SINGLERESP_get_ext_by_critical 2652 1_1_0 EXIST::FUNCTION:
+OCSP_CERTSTATUS_free 2653 1_1_0 EXIST::FUNCTION:
+_ossl_old_des_crypt 2654 1_1_0 NOEXIST::FUNCTION:
+ASN1_item_i2d 2655 1_1_0 EXIST::FUNCTION:
+EVP_DecryptFinal_ex 2656 1_1_0 EXIST::FUNCTION:
+ENGINE_load_openssl 2657 1_1_0 NOEXIST::FUNCTION:
+ENGINE_get_cmd_defns 2658 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_set_load_privkey_function 2659 1_1_0 EXIST::FUNCTION:ENGINE
+EVP_EncryptFinal_ex 2660 1_1_0 EXIST::FUNCTION:
+ENGINE_set_default_digests 2661 1_1_0 EXIST::FUNCTION:ENGINE
+X509_get0_pubkey_bitstr 2662 1_1_0 EXIST::FUNCTION:
+asn1_ex_i2c 2663 1_1_0 NOEXIST::FUNCTION:
+ENGINE_register_RSA 2664 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_unregister_DSA 2665 1_1_0 EXIST::FUNCTION:ENGINE
+_ossl_old_des_key_sched 2666 1_1_0 NOEXIST::FUNCTION:
+X509_EXTENSION_it 2667 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+X509_EXTENSION_it 2667 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+i2d_KRB5_AUTHENT 2668 1_1_0 NOEXIST::FUNCTION:
+SXNETID_it 2669 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+SXNETID_it 2669 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+d2i_OCSP_SINGLERESP 2670 1_1_0 EXIST::FUNCTION:
+EDIPARTYNAME_new 2671 1_1_0 EXIST::FUNCTION:
+PKCS12_SAFEBAG_get1_cert 2672 1_1_0 EXIST::FUNCTION:
+_ossl_old_des_ofb64_encrypt 2673 1_1_0 NOEXIST::FUNCTION:
+d2i_EXTENDED_KEY_USAGE 2674 1_1_0 EXIST::FUNCTION:
+ERR_print_errors_cb 2675 1_1_0 EXIST::FUNCTION:
+ENGINE_set_ciphers 2676 1_1_0 EXIST::FUNCTION:ENGINE
+d2i_KRB5_APREQBODY 2677 1_1_0 NOEXIST::FUNCTION:
+UI_method_get_flusher 2678 1_1_0 EXIST::FUNCTION:
+X509_PUBKEY_it 2679 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+X509_PUBKEY_it 2679 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+_ossl_old_des_enc_read 2680 1_1_0 NOEXIST::FUNCTION:
+PKCS7_ENCRYPT_it 2681 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+PKCS7_ENCRYPT_it 2681 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+i2d_OCSP_RESPONSE 2682 1_1_0 EXIST::FUNCTION:
+EC_GROUP_get_cofactor 2683 1_1_0 EXIST::FUNCTION:EC
+PKCS12_unpack_p7data 2684 1_1_0 EXIST::FUNCTION:
+d2i_KRB5_AUTHDATA 2685 1_1_0 NOEXIST::FUNCTION:
+OCSP_copy_nonce 2686 1_1_0 EXIST::FUNCTION:
+KRB5_AUTHDATA_new 2687 1_1_0 NOEXIST::FUNCTION:
+OCSP_RESPDATA_new 2688 1_1_0 EXIST::FUNCTION:
+EC_GFp_mont_method 2689 1_1_0 EXIST::FUNCTION:EC
+OCSP_REVOKEDINFO_free 2690 1_1_0 EXIST::FUNCTION:
+UI_get_ex_data 2691 1_1_0 EXIST::FUNCTION:
+KRB5_APREQBODY_free 2692 1_1_0 NOEXIST::FUNCTION:
+EC_GROUP_get0_generator 2693 1_1_0 EXIST::FUNCTION:EC
+UI_get_default_method 2694 1_1_0 EXIST::FUNCTION:
+X509V3_set_nconf 2695 1_1_0 EXIST::FUNCTION:
+PKCS12_item_i2d_encrypt 2696 1_1_0 EXIST::FUNCTION:
+X509_add1_ext_i2d 2697 1_1_0 EXIST::FUNCTION:
+PKCS7_SIGNER_INFO_it 2698 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+PKCS7_SIGNER_INFO_it 2698 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+KRB5_PRINCNAME_new 2699 1_1_0 NOEXIST::FUNCTION:
+PKCS12_SAFEBAG_it 2700 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+PKCS12_SAFEBAG_it 2700 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+EC_GROUP_get_order 2701 1_1_0 EXIST::FUNCTION:EC
+d2i_OCSP_RESPID 2702 1_1_0 EXIST::FUNCTION:
+OCSP_request_verify 2703 1_1_0 EXIST::FUNCTION:
+NCONF_get_number_e 2704 1_1_0 EXIST::FUNCTION:
+_ossl_old_des_decrypt3 2705 1_1_0 NOEXIST::FUNCTION:
+X509_signature_print 2706 1_1_0 EXIST::FUNCTION:
+OCSP_SINGLERESP_free 2707 1_1_0 EXIST::FUNCTION:
+ENGINE_load_builtin_engines 2708 1_1_0 EXIST::FUNCTION:ENGINE
+i2d_OCSP_ONEREQ 2709 1_1_0 EXIST::FUNCTION:
+OCSP_REQUEST_add_ext 2710 1_1_0 EXIST::FUNCTION:
+OCSP_RESPBYTES_new 2711 1_1_0 EXIST::FUNCTION:
+EVP_MD_CTX_new 2712 1_1_0 EXIST::FUNCTION:
+OCSP_resp_find_status 2713 1_1_0 EXIST::FUNCTION:
+X509_ALGOR_it 2714 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+X509_ALGOR_it 2714 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+ASN1_TIME_it 2715 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ASN1_TIME_it 2715 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+OCSP_request_set1_name 2716 1_1_0 EXIST::FUNCTION:
+OCSP_ONEREQ_get_ext_count 2717 1_1_0 EXIST::FUNCTION:
+UI_get0_result 2718 1_1_0 EXIST::FUNCTION:
+PKCS12_AUTHSAFES_it 2719 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+PKCS12_AUTHSAFES_it 2719 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+EVP_aes_256_ecb 2720 1_1_0 EXIST::FUNCTION:AES
+PKCS12_pack_authsafes 2721 1_1_0 EXIST::FUNCTION:
+ASN1_IA5STRING_it 2722 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ASN1_IA5STRING_it 2722 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+UI_get_input_flags 2723 1_1_0 EXIST::FUNCTION:
+EC_GROUP_set_generator 2724 1_1_0 EXIST::FUNCTION:EC
+_ossl_old_des_string_to_2keys 2725 1_1_0 NOEXIST::FUNCTION:
+OCSP_CERTID_free 2726 1_1_0 EXIST::FUNCTION:
+X509_CERT_AUX_it 2727 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+X509_CERT_AUX_it 2727 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+CERTIFICATEPOLICIES_it 2728 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+CERTIFICATEPOLICIES_it 2728 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+_ossl_old_des_ede3_cbc_encrypt 2729 1_1_0 NOEXIST::FUNCTION:
+RAND_set_rand_engine 2730 1_1_0 EXIST::FUNCTION:ENGINE
+DSO_get_loaded_filename 2731 1_1_0 EXIST::FUNCTION:
+X509_ATTRIBUTE_it 2732 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+X509_ATTRIBUTE_it 2732 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+OCSP_ONEREQ_get_ext_by_NID 2733 1_1_0 EXIST::FUNCTION:
+PKCS12_decrypt_skey 2734 1_1_0 EXIST::FUNCTION:
+KRB5_AUTHENT_it 2735 1_1_0 NOEXIST::FUNCTION:
+UI_dup_error_string 2736 1_1_0 EXIST::FUNCTION:
+RSAPublicKey_it 2737 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RSA
+RSAPublicKey_it 2737 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RSA
+i2d_OCSP_REQUEST 2738 1_1_0 EXIST::FUNCTION:
+PKCS12_SAFEBAG_create_crl 2739 1_1_0 EXIST::FUNCTION:
+OCSP_SERVICELOC_it 2740 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+OCSP_SERVICELOC_it 2740 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+ASN1_item_sign 2741 1_1_0 EXIST::FUNCTION:
+X509_CRL_set_issuer_name 2742 1_1_0 EXIST::FUNCTION:
+OBJ_NAME_do_all_sorted 2743 1_1_0 EXIST::FUNCTION:
+i2d_OCSP_BASICRESP 2744 1_1_0 EXIST::FUNCTION:
+i2d_OCSP_RESPBYTES 2745 1_1_0 EXIST::FUNCTION:
+PKCS12_unpack_p7encdata 2746 1_1_0 EXIST::FUNCTION:
+HMAC_CTX_reset 2747 1_1_0 EXIST::FUNCTION:
+ENGINE_get_digest 2748 1_1_0 EXIST::FUNCTION:ENGINE
+OCSP_RESPONSE_print 2749 1_1_0 EXIST::FUNCTION:
+KRB5_TKTBODY_it 2750 1_1_0 NOEXIST::FUNCTION:
+ACCESS_DESCRIPTION_it 2751 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ACCESS_DESCRIPTION_it 2751 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+PKCS7_ISSUER_AND_SERIAL_it 2752 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+PKCS7_ISSUER_AND_SERIAL_it 2752 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+PBE2PARAM_it 2753 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+PBE2PARAM_it 2753 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+PKCS12_SAFEBAG_get1_crl 2754 1_1_0 EXIST::FUNCTION:
+PKCS7_SIGNED_it 2755 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+PKCS7_SIGNED_it 2755 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+ENGINE_get_cipher 2756 1_1_0 EXIST::FUNCTION:ENGINE
+i2d_OCSP_CRLID 2757 1_1_0 EXIST::FUNCTION:
+OCSP_SINGLERESP_new 2758 1_1_0 EXIST::FUNCTION:
+ENGINE_cmd_is_executable 2759 1_1_0 EXIST::FUNCTION:ENGINE
+RSA_up_ref 2760 1_1_0 EXIST::FUNCTION:RSA
+ASN1_GENERALSTRING_it 2761 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ASN1_GENERALSTRING_it 2761 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+ENGINE_register_DSA 2762 1_1_0 EXIST::FUNCTION:ENGINE
+X509V3_EXT_add_nconf_sk 2763 1_1_0 EXIST::FUNCTION:
+ENGINE_set_load_pubkey_function 2764 1_1_0 EXIST::FUNCTION:ENGINE
+PKCS8_decrypt 2765 1_1_0 EXIST::FUNCTION:
+PEM_bytes_read_bio 2766 1_1_0 EXIST::FUNCTION:
+DIRECTORYSTRING_it 2767 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+DIRECTORYSTRING_it 2767 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+d2i_OCSP_CRLID 2768 1_1_0 EXIST::FUNCTION:
+EC_POINT_is_on_curve 2769 1_1_0 EXIST::FUNCTION:EC
+CRYPTO_set_locked_mem_ex_functions 2770 1_1_0 NOEXIST::FUNCTION:
+d2i_KRB5_CHECKSUM 2771 1_1_0 NOEXIST::FUNCTION:
+ASN1_item_dup 2772 1_1_0 EXIST::FUNCTION:
+X509_it 2773 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+X509_it 2773 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+BN_mod_add 2774 1_1_0 EXIST::FUNCTION:
+KRB5_AUTHDATA_free 2775 1_1_0 NOEXIST::FUNCTION:
+_ossl_old_des_cbc_cksum 2776 1_1_0 NOEXIST::FUNCTION:
+ASN1_item_verify 2777 1_1_0 EXIST::FUNCTION:
+EC_POINT_get_Jprojective_coordinates_GFp 2779 1_1_0 EXIST::FUNCTION:EC
+ZLONG_it 2780 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ZLONG_it 2780 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+ASN1_TIME_check 2782 1_1_0 EXIST::FUNCTION:
+UI_get0_user_data 2783 1_1_0 EXIST::FUNCTION:
+HMAC_CTX_cleanup 2784 1_1_0 NOEXIST::FUNCTION:
+DSA_up_ref 2785 1_1_0 EXIST::FUNCTION:DSA
+_ossl_old_des_ede3_cfb64_encrypt 2786 1_1_0 NOEXIST::FUNCTION:
+ASN1_BMPSTRING_it 2787 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ASN1_BMPSTRING_it 2787 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+ASN1_tag2bit 2788 1_1_0 EXIST::FUNCTION:
+UI_method_set_flusher 2789 1_1_0 EXIST::FUNCTION:
+X509_ocspid_print 2790 1_1_0 EXIST::FUNCTION:
+KRB5_ENCDATA_it 2791 1_1_0 NOEXIST::FUNCTION:
+ENGINE_get_load_pubkey_function 2792 1_1_0 EXIST::FUNCTION:ENGINE
+UI_add_user_data 2793 1_1_0 EXIST::FUNCTION:
+OCSP_REQUEST_delete_ext 2794 1_1_0 EXIST::FUNCTION:
+UI_get_method 2795 1_1_0 EXIST::FUNCTION:
+OCSP_ONEREQ_free 2796 1_1_0 EXIST::FUNCTION:
+ASN1_PRINTABLESTRING_it 2797 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ASN1_PRINTABLESTRING_it 2797 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+X509_CRL_set_nextUpdate 2798 1_1_0 EXIST::FUNCTION:
+OCSP_REQUEST_it 2799 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+OCSP_REQUEST_it 2799 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+OCSP_BASICRESP_it 2800 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+OCSP_BASICRESP_it 2800 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+AES_ecb_encrypt 2801 1_1_0 EXIST::FUNCTION:AES
+BN_mod_sqr 2802 1_1_0 EXIST::FUNCTION:
+NETSCAPE_CERT_SEQUENCE_it 2803 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+NETSCAPE_CERT_SEQUENCE_it 2803 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+GENERAL_NAMES_it 2804 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+GENERAL_NAMES_it 2804 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+AUTHORITY_INFO_ACCESS_it 2805 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+AUTHORITY_INFO_ACCESS_it 2805 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+ASN1_FBOOLEAN_it 2806 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ASN1_FBOOLEAN_it 2806 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+UI_set_ex_data 2807 1_1_0 EXIST::FUNCTION:
+_ossl_old_des_string_to_key 2808 1_1_0 NOEXIST::FUNCTION:
+ENGINE_register_all_RSA 2809 1_1_0 EXIST::FUNCTION:ENGINE
+d2i_KRB5_PRINCNAME 2810 1_1_0 NOEXIST::FUNCTION:
+OCSP_RESPBYTES_it 2811 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+OCSP_RESPBYTES_it 2811 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+X509_CINF_it 2812 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+X509_CINF_it 2812 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+ENGINE_unregister_digests 2813 1_1_0 EXIST::FUNCTION:ENGINE
+d2i_EDIPARTYNAME 2814 1_1_0 EXIST::FUNCTION:
+d2i_OCSP_SERVICELOC 2815 1_1_0 EXIST::FUNCTION:
+ENGINE_get_digests 2816 1_1_0 EXIST::FUNCTION:ENGINE
+_ossl_old_des_set_odd_parity 2817 1_1_0 NOEXIST::FUNCTION:
+OCSP_RESPDATA_free 2818 1_1_0 EXIST::FUNCTION:
+d2i_KRB5_TICKET 2819 1_1_0 NOEXIST::FUNCTION:
+OTHERNAME_it 2820 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+OTHERNAME_it 2820 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+EVP_MD_CTX_cleanup 2821 1_1_0 NOEXIST::FUNCTION:
+d2i_ASN1_GENERALSTRING 2822 1_1_0 EXIST::FUNCTION:
+X509_CRL_set_version 2823 1_1_0 EXIST::FUNCTION:
+BN_mod_sub 2824 1_1_0 EXIST::FUNCTION:
+OCSP_SINGLERESP_get_ext_by_NID 2825 1_1_0 EXIST::FUNCTION:
+ENGINE_get_ex_new_index 2826 1_1_0 NOEXIST::FUNCTION:
+OCSP_REQUEST_free 2827 1_1_0 EXIST::FUNCTION:
+OCSP_REQUEST_add1_ext_i2d 2828 1_1_0 EXIST::FUNCTION:
+X509_VAL_it 2829 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+X509_VAL_it 2829 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+EC_POINTs_make_affine 2830 1_1_0 EXIST::FUNCTION:EC
+EC_POINT_mul 2831 1_1_0 EXIST::FUNCTION:EC
+X509V3_EXT_add_nconf 2832 1_1_0 EXIST::FUNCTION:
+X509_TRUST_set 2833 1_1_0 EXIST::FUNCTION:
+X509_CRL_add1_ext_i2d 2834 1_1_0 EXIST::FUNCTION:
+_ossl_old_des_fcrypt 2835 1_1_0 NOEXIST::FUNCTION:
+DISPLAYTEXT_it 2836 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+DISPLAYTEXT_it 2836 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+X509_CRL_set_lastUpdate 2837 1_1_0 EXIST::FUNCTION:
+OCSP_BASICRESP_free 2838 1_1_0 EXIST::FUNCTION:
+OCSP_BASICRESP_add1_ext_i2d 2839 1_1_0 EXIST::FUNCTION:
+d2i_KRB5_AUTHENTBODY 2840 1_1_0 NOEXIST::FUNCTION:
+CRYPTO_set_ex_data_implementation 2841 1_1_0 NOEXIST::FUNCTION:
+KRB5_ENCDATA_new 2842 1_1_0 NOEXIST::FUNCTION:
+DSO_up_ref 2843 1_1_0 EXIST::FUNCTION:
+OCSP_crl_reason_str 2844 1_1_0 EXIST::FUNCTION:
+UI_get0_result_string 2845 1_1_0 EXIST::FUNCTION:
+ASN1_GENERALSTRING_new 2846 1_1_0 EXIST::FUNCTION:
+X509_SIG_it 2847 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+X509_SIG_it 2847 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+ERR_set_implementation 2848 1_1_0 NOEXIST::FUNCTION:
+ERR_load_EC_strings 2849 1_1_0 EXIST::FUNCTION:EC
+UI_get0_action_string 2850 1_1_0 EXIST::FUNCTION:
+OCSP_ONEREQ_get_ext 2851 1_1_0 EXIST::FUNCTION:
+EC_POINT_method_of 2852 1_1_0 EXIST::FUNCTION:EC
+i2d_KRB5_APREQBODY 2853 1_1_0 NOEXIST::FUNCTION:
+_ossl_old_des_ecb3_encrypt 2854 1_1_0 NOEXIST::FUNCTION:
+ENGINE_get_ex_data 2856 1_1_0 EXIST::FUNCTION:ENGINE
+UI_destroy_method 2857 1_1_0 EXIST::FUNCTION:
+ASN1_item_i2d_bio 2858 1_1_0 EXIST::FUNCTION:
+OCSP_ONEREQ_get_ext_by_OBJ 2859 1_1_0 EXIST::FUNCTION:
+ASN1_primitive_new 2860 1_1_0 NOEXIST::FUNCTION:
+ASN1_PRINTABLE_it 2861 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ASN1_PRINTABLE_it 2861 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+EVP_aes_192_ecb 2862 1_1_0 EXIST::FUNCTION:AES
+OCSP_SIGNATURE_new 2863 1_1_0 EXIST::FUNCTION:
+LONG_it 2864 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+LONG_it 2864 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+ASN1_VISIBLESTRING_it 2865 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ASN1_VISIBLESTRING_it 2865 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+OCSP_SINGLERESP_add1_ext_i2d 2866 1_1_0 EXIST::FUNCTION:
+d2i_OCSP_CERTID 2867 1_1_0 EXIST::FUNCTION:
+ASN1_item_d2i_fp 2868 1_1_0 EXIST::FUNCTION:STDIO
+CRL_DIST_POINTS_it 2869 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+CRL_DIST_POINTS_it 2869 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+GENERAL_NAME_print 2870 1_1_0 EXIST::FUNCTION:
+OCSP_SINGLERESP_delete_ext 2871 1_1_0 EXIST::FUNCTION:
+PKCS12_SAFEBAGS_it 2872 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+PKCS12_SAFEBAGS_it 2872 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+d2i_OCSP_SIGNATURE 2873 1_1_0 EXIST::FUNCTION:
+OCSP_request_add1_nonce 2874 1_1_0 EXIST::FUNCTION:
+ENGINE_set_cmd_defns 2875 1_1_0 EXIST::FUNCTION:ENGINE
+OCSP_SERVICELOC_free 2876 1_1_0 EXIST::FUNCTION:
+EC_GROUP_free 2877 1_1_0 EXIST::FUNCTION:EC
+ASN1_BIT_STRING_it 2878 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ASN1_BIT_STRING_it 2878 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+X509_REQ_it 2879 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+X509_REQ_it 2879 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+_ossl_old_des_cbc_encrypt 2880 1_1_0 NOEXIST::FUNCTION:
+ERR_unload_strings 2881 1_1_0 EXIST::FUNCTION:
+PKCS7_SIGN_ENVELOPE_it 2882 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+PKCS7_SIGN_ENVELOPE_it 2882 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+EDIPARTYNAME_free 2883 1_1_0 EXIST::FUNCTION:
+OCSP_REQINFO_free 2884 1_1_0 EXIST::FUNCTION:
+EC_GROUP_new_curve_GFp 2885 1_1_0 EXIST::FUNCTION:EC
+OCSP_REQUEST_get1_ext_d2i 2886 1_1_0 EXIST::FUNCTION:
+PKCS12_item_pack_safebag 2887 1_1_0 EXIST::FUNCTION:
+asn1_ex_c2i 2888 1_1_0 NOEXIST::FUNCTION:
+ENGINE_register_digests 2889 1_1_0 EXIST::FUNCTION:ENGINE
+i2d_OCSP_REVOKEDINFO 2890 1_1_0 EXIST::FUNCTION:
+asn1_enc_restore 2891 1_1_0 NOEXIST::FUNCTION:
+UI_free 2892 1_1_0 EXIST::FUNCTION:
+UI_new_method 2893 1_1_0 EXIST::FUNCTION:
+EVP_EncryptInit_ex 2894 1_1_0 EXIST::FUNCTION:
+X509_pubkey_digest 2895 1_1_0 EXIST::FUNCTION:
+EC_POINT_invert 2896 1_1_0 EXIST::FUNCTION:EC
+OCSP_basic_sign 2897 1_1_0 EXIST::FUNCTION:
+i2d_OCSP_RESPID 2898 1_1_0 EXIST::FUNCTION:
+OCSP_check_nonce 2899 1_1_0 EXIST::FUNCTION:
+ENGINE_ctrl_cmd 2900 1_1_0 EXIST::FUNCTION:ENGINE
+d2i_KRB5_ENCKEY 2901 1_1_0 NOEXIST::FUNCTION:
+OCSP_parse_url 2902 1_1_0 EXIST::FUNCTION:
+OCSP_SINGLERESP_get_ext 2903 1_1_0 EXIST::FUNCTION:
+OCSP_CRLID_free 2904 1_1_0 EXIST::FUNCTION:
+OCSP_BASICRESP_get1_ext_d2i 2905 1_1_0 EXIST::FUNCTION:
+RSAPrivateKey_it 2906 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RSA
+RSAPrivateKey_it 2906 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RSA
+ENGINE_register_all_DH 2907 1_1_0 EXIST::FUNCTION:ENGINE
+i2d_EDIPARTYNAME 2908 1_1_0 EXIST::FUNCTION:
+EC_POINT_get_affine_coordinates_GFp 2909 1_1_0 EXIST::FUNCTION:EC
+OCSP_CRLID_new 2910 1_1_0 EXIST::FUNCTION:
+ENGINE_get_flags 2911 1_1_0 EXIST::FUNCTION:ENGINE
+OCSP_ONEREQ_it 2912 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+OCSP_ONEREQ_it 2912 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+UI_process 2913 1_1_0 EXIST::FUNCTION:
+ASN1_INTEGER_it 2914 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ASN1_INTEGER_it 2914 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+EVP_CipherInit_ex 2915 1_1_0 EXIST::FUNCTION:
+UI_get_string_type 2916 1_1_0 EXIST::FUNCTION:
+ENGINE_unregister_DH 2917 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_register_all_DSA 2918 1_1_0 EXIST::FUNCTION:ENGINE
+OCSP_ONEREQ_get_ext_by_critical 2919 1_1_0 EXIST::FUNCTION:
+bn_dup_expand 2920 1_1_0 NOEXIST::FUNCTION:
+OCSP_cert_id_new 2921 1_1_0 EXIST::FUNCTION:
+BASIC_CONSTRAINTS_it 2922 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+BASIC_CONSTRAINTS_it 2922 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+BN_mod_add_quick 2923 1_1_0 EXIST::FUNCTION:
+EC_POINT_new 2924 1_1_0 EXIST::FUNCTION:EC
+EVP_MD_CTX_free 2925 1_1_0 EXIST::FUNCTION:
+OCSP_RESPBYTES_free 2926 1_1_0 EXIST::FUNCTION:
+EVP_aes_128_cbc 2927 1_1_0 EXIST::FUNCTION:AES
+OCSP_SINGLERESP_get1_ext_d2i 2928 1_1_0 EXIST::FUNCTION:
+EC_POINT_free 2929 1_1_0 EXIST::FUNCTION:EC
+DH_up_ref 2930 1_1_0 EXIST::FUNCTION:DH
+X509_NAME_ENTRY_it 2931 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+X509_NAME_ENTRY_it 2931 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+UI_get_ex_new_index 2932 1_1_0 NOEXIST::FUNCTION:
+BN_mod_sub_quick 2933 1_1_0 EXIST::FUNCTION:
+OCSP_ONEREQ_add_ext 2934 1_1_0 EXIST::FUNCTION:
+OCSP_request_sign 2935 1_1_0 EXIST::FUNCTION:
+EVP_DigestFinal_ex 2936 1_1_0 EXIST::FUNCTION:
+ENGINE_set_digests 2937 1_1_0 EXIST::FUNCTION:ENGINE
+OCSP_id_issuer_cmp 2938 1_1_0 EXIST::FUNCTION:
+OBJ_NAME_do_all 2939 1_1_0 EXIST::FUNCTION:
+EC_POINTs_mul 2940 1_1_0 EXIST::FUNCTION:EC
+ENGINE_register_complete 2941 1_1_0 EXIST::FUNCTION:ENGINE
+X509V3_EXT_nconf_nid 2942 1_1_0 EXIST::FUNCTION:
+ASN1_SEQUENCE_it 2943 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ASN1_SEQUENCE_it 2943 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+UI_set_default_method 2944 1_1_0 EXIST::FUNCTION:
+RAND_query_egd_bytes 2945 1_1_0 EXIST::FUNCTION:EGD
+UI_method_get_writer 2946 1_1_0 EXIST::FUNCTION:
+UI_OpenSSL 2947 1_1_0 EXIST::FUNCTION:
+PEM_def_callback 2948 1_1_0 EXIST::FUNCTION:
+ENGINE_cleanup 2949 1_1_0 EXIST::FUNCTION:ENGINE
+DIST_POINT_it 2950 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+DIST_POINT_it 2950 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+OCSP_SINGLERESP_it 2951 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+OCSP_SINGLERESP_it 2951 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+d2i_KRB5_TKTBODY 2952 1_1_0 NOEXIST::FUNCTION:
+EC_POINT_cmp 2953 1_1_0 EXIST::FUNCTION:EC
+OCSP_REVOKEDINFO_new 2954 1_1_0 EXIST::FUNCTION:
+i2d_OCSP_CERTSTATUS 2955 1_1_0 EXIST::FUNCTION:
+OCSP_basic_add1_nonce 2956 1_1_0 EXIST::FUNCTION:
+ASN1_item_ex_d2i 2957 1_1_0 EXIST::FUNCTION:
+BN_mod_lshift1_quick 2958 1_1_0 EXIST::FUNCTION:
+UI_set_method 2959 1_1_0 EXIST::FUNCTION:
+OCSP_id_get0_info 2960 1_1_0 EXIST::FUNCTION:
+BN_mod_sqrt 2961 1_1_0 EXIST::FUNCTION:
+EC_GROUP_copy 2962 1_1_0 EXIST::FUNCTION:EC
+KRB5_ENCDATA_free 2963 1_1_0 NOEXIST::FUNCTION:
+_ossl_old_des_cfb_encrypt 2964 1_1_0 NOEXIST::FUNCTION:
+OCSP_SINGLERESP_get_ext_by_OBJ 2965 1_1_0 EXIST::FUNCTION:
+OCSP_cert_to_id 2966 1_1_0 EXIST::FUNCTION:
+OCSP_RESPID_new 2967 1_1_0 EXIST::FUNCTION:
+OCSP_RESPDATA_it 2968 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+OCSP_RESPDATA_it 2968 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+d2i_OCSP_RESPDATA 2969 1_1_0 EXIST::FUNCTION:
+ENGINE_register_all_complete 2970 1_1_0 EXIST::FUNCTION:ENGINE
+OCSP_check_validity 2971 1_1_0 EXIST::FUNCTION:
+PKCS12_BAGS_it 2972 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+PKCS12_BAGS_it 2972 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+OCSP_url_svcloc_new 2973 1_1_0 EXIST::FUNCTION:
+ASN1_template_free 2974 1_1_0 NOEXIST::FUNCTION:
+OCSP_SINGLERESP_add_ext 2975 1_1_0 EXIST::FUNCTION:
+KRB5_AUTHENTBODY_it 2976 1_1_0 NOEXIST::FUNCTION:
+X509_supported_extension 2977 1_1_0 EXIST::FUNCTION:
+i2d_KRB5_AUTHDATA 2978 1_1_0 NOEXIST::FUNCTION:
+UI_method_get_opener 2979 1_1_0 EXIST::FUNCTION:
+ENGINE_set_ex_data 2980 1_1_0 EXIST::FUNCTION:ENGINE
+OCSP_REQUEST_print 2981 1_1_0 EXIST::FUNCTION:
+CBIGNUM_it 2982 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+CBIGNUM_it 2982 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+KRB5_TICKET_new 2983 1_1_0 NOEXIST::FUNCTION:
+KRB5_APREQ_new 2984 1_1_0 NOEXIST::FUNCTION:
+EC_GROUP_get_curve_GFp 2985 1_1_0 EXIST::FUNCTION:EC
+KRB5_ENCKEY_new 2986 1_1_0 NOEXIST::FUNCTION:
+ASN1_template_d2i 2987 1_1_0 NOEXIST::FUNCTION:
+_ossl_old_des_quad_cksum 2988 1_1_0 NOEXIST::FUNCTION:
+OCSP_single_get0_status 2989 1_1_0 EXIST::FUNCTION:
+BN_swap 2990 1_1_0 EXIST::FUNCTION:
+POLICYINFO_it 2991 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+POLICYINFO_it 2991 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+ENGINE_set_destroy_function 2992 1_1_0 EXIST::FUNCTION:ENGINE
+asn1_enc_free 2993 1_1_0 NOEXIST::FUNCTION:
+OCSP_RESPID_it 2994 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+OCSP_RESPID_it 2994 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+EC_GROUP_new 2995 1_1_0 EXIST::FUNCTION:EC
+EVP_aes_256_cbc 2996 1_1_0 EXIST::FUNCTION:AES
+i2d_KRB5_PRINCNAME 2997 1_1_0 NOEXIST::FUNCTION:
+_ossl_old_des_encrypt2 2998 1_1_0 NOEXIST::FUNCTION:
+_ossl_old_des_encrypt3 2999 1_1_0 NOEXIST::FUNCTION:
+PKCS8_PRIV_KEY_INFO_it 3000 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+PKCS8_PRIV_KEY_INFO_it 3000 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+OCSP_REQINFO_it 3001 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+OCSP_REQINFO_it 3001 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+PBEPARAM_it 3002 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+PBEPARAM_it 3002 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+KRB5_AUTHENTBODY_new 3003 1_1_0 NOEXIST::FUNCTION:
+X509_CRL_add0_revoked 3004 1_1_0 EXIST::FUNCTION:
+EDIPARTYNAME_it 3005 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+EDIPARTYNAME_it 3005 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+NETSCAPE_SPKI_it 3006 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+NETSCAPE_SPKI_it 3006 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+UI_get0_test_string 3007 1_1_0 EXIST::FUNCTION:
+ENGINE_get_cipher_engine 3008 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_register_all_ciphers 3009 1_1_0 EXIST::FUNCTION:ENGINE
+EC_POINT_copy 3010 1_1_0 EXIST::FUNCTION:EC
+BN_kronecker 3011 1_1_0 EXIST::FUNCTION:
+_ossl_old_des_ede3_ofb64_encrypt 3012 1_1_0 NOEXIST::FUNCTION:
+UI_method_get_reader 3013 1_1_0 EXIST::FUNCTION:
+OCSP_BASICRESP_get_ext_count 3014 1_1_0 EXIST::FUNCTION:
+ASN1_ENUMERATED_it 3015 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ASN1_ENUMERATED_it 3015 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+UI_set_result 3016 1_1_0 EXIST::FUNCTION:
+i2d_KRB5_TICKET 3017 1_1_0 NOEXIST::FUNCTION:
+X509_print_ex_fp 3018 1_1_0 EXIST::FUNCTION:STDIO
+EVP_CIPHER_CTX_set_padding 3019 1_1_0 EXIST::FUNCTION:
+d2i_OCSP_RESPONSE 3020 1_1_0 EXIST::FUNCTION:
+ASN1_UTCTIME_it 3021 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ASN1_UTCTIME_it 3021 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+_ossl_old_des_enc_write 3022 1_1_0 NOEXIST::FUNCTION:
+OCSP_RESPONSE_new 3023 1_1_0 EXIST::FUNCTION:
+AES_set_encrypt_key 3024 1_1_0 EXIST::FUNCTION:AES
+OCSP_resp_count 3025 1_1_0 EXIST::FUNCTION:
+KRB5_CHECKSUM_new 3026 1_1_0 NOEXIST::FUNCTION:
+ENGINE_load_cswift 3027 1_1_0 NOEXIST::FUNCTION:
+OCSP_onereq_get0_id 3028 1_1_0 EXIST::FUNCTION:
+ENGINE_set_default_ciphers 3029 1_1_0 EXIST::FUNCTION:ENGINE
+NOTICEREF_it 3030 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+NOTICEREF_it 3030 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+X509V3_EXT_CRL_add_nconf 3031 1_1_0 EXIST::FUNCTION:
+OCSP_REVOKEDINFO_it 3032 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+OCSP_REVOKEDINFO_it 3032 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+AES_encrypt 3033 1_1_0 EXIST::FUNCTION:AES
+OCSP_REQUEST_new 3034 1_1_0 EXIST::FUNCTION:
+ASN1_ANY_it 3035 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ASN1_ANY_it 3035 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+CRYPTO_ex_data_new_class 3036 1_1_0 NOEXIST::FUNCTION:
+_ossl_old_des_ncbc_encrypt 3037 1_1_0 NOEXIST::FUNCTION:
+i2d_KRB5_TKTBODY 3038 1_1_0 NOEXIST::FUNCTION:
+EC_POINT_clear_free 3039 1_1_0 EXIST::FUNCTION:EC
+AES_decrypt 3040 1_1_0 EXIST::FUNCTION:AES
+asn1_enc_init 3041 1_1_0 NOEXIST::FUNCTION:
+UI_get_result_maxsize 3042 1_1_0 EXIST::FUNCTION:
+OCSP_CERTID_new 3043 1_1_0 EXIST::FUNCTION:
+ENGINE_unregister_RAND 3044 1_1_0 EXIST::FUNCTION:ENGINE
+UI_method_get_closer 3045 1_1_0 EXIST::FUNCTION:
+d2i_KRB5_ENCDATA 3046 1_1_0 NOEXIST::FUNCTION:
+OCSP_request_onereq_count 3047 1_1_0 EXIST::FUNCTION:
+OCSP_basic_verify 3048 1_1_0 EXIST::FUNCTION:
+KRB5_AUTHENTBODY_free 3049 1_1_0 NOEXIST::FUNCTION:
+ASN1_item_d2i 3050 1_1_0 EXIST::FUNCTION:
+ASN1_primitive_free 3051 1_1_0 NOEXIST::FUNCTION:
+i2d_EXTENDED_KEY_USAGE 3052 1_1_0 EXIST::FUNCTION:
+i2d_OCSP_SIGNATURE 3053 1_1_0 EXIST::FUNCTION:
+asn1_enc_save 3054 1_1_0 NOEXIST::FUNCTION:
+ENGINE_load_nuron 3055 1_1_0 NOEXIST::FUNCTION:
+_ossl_old_des_pcbc_encrypt 3056 1_1_0 NOEXIST::FUNCTION:
+PKCS12_MAC_DATA_it 3057 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+PKCS12_MAC_DATA_it 3057 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+OCSP_accept_responses_new 3058 1_1_0 EXIST::FUNCTION:
+asn1_do_lock 3059 1_1_0 NOEXIST::FUNCTION:
+PKCS7_ATTR_VERIFY_it 3060 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+PKCS7_ATTR_VERIFY_it 3060 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+KRB5_APREQBODY_it 3061 1_1_0 NOEXIST::FUNCTION:
+i2d_OCSP_SINGLERESP 3062 1_1_0 EXIST::FUNCTION:
+ASN1_item_ex_new 3063 1_1_0 EXIST::FUNCTION:
+UI_add_verify_string 3064 1_1_0 EXIST::FUNCTION:
+_ossl_old_des_set_key 3065 1_1_0 NOEXIST::FUNCTION:
+KRB5_PRINCNAME_it 3066 1_1_0 NOEXIST::FUNCTION:
+EVP_DecryptInit_ex 3067 1_1_0 EXIST::FUNCTION:
+i2d_OCSP_CERTID 3068 1_1_0 EXIST::FUNCTION:
+ASN1_item_d2i_bio 3069 1_1_0 EXIST::FUNCTION:
+EC_POINT_dbl 3070 1_1_0 EXIST::FUNCTION:EC
+asn1_get_choice_selector 3071 1_1_0 NOEXIST::FUNCTION:
+i2d_KRB5_CHECKSUM 3072 1_1_0 NOEXIST::FUNCTION:
+ENGINE_set_table_flags 3073 1_1_0 EXIST::FUNCTION:ENGINE
+AES_options 3074 1_1_0 EXIST::FUNCTION:AES
+ENGINE_load_chil 3075 1_1_0 NOEXIST::FUNCTION:
+OCSP_id_cmp 3076 1_1_0 EXIST::FUNCTION:
+OCSP_BASICRESP_new 3077 1_1_0 EXIST::FUNCTION:
+OCSP_REQUEST_get_ext_by_NID 3078 1_1_0 EXIST::FUNCTION:
+KRB5_APREQ_it 3079 1_1_0 NOEXIST::FUNCTION:
+ENGINE_get_destroy_function 3080 1_1_0 EXIST::FUNCTION:ENGINE
+CONF_set_nconf 3081 1_1_0 EXIST::FUNCTION:
+ASN1_PRINTABLE_free 3082 1_1_0 EXIST::FUNCTION:
+OCSP_BASICRESP_get_ext_by_NID 3083 1_1_0 EXIST::FUNCTION:
+DIST_POINT_NAME_it 3084 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+DIST_POINT_NAME_it 3084 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+X509V3_extensions_print 3085 1_1_0 EXIST::FUNCTION:
+_ossl_old_des_cfb64_encrypt 3086 1_1_0 NOEXIST::FUNCTION:
+X509_REVOKED_add1_ext_i2d 3087 1_1_0 EXIST::FUNCTION:
+_ossl_old_des_ofb_encrypt 3088 1_1_0 NOEXIST::FUNCTION:
+KRB5_TKTBODY_new 3089 1_1_0 NOEXIST::FUNCTION:
+ASN1_OCTET_STRING_it 3090 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ASN1_OCTET_STRING_it 3090 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+ERR_load_UI_strings 3091 1_1_0 EXIST::FUNCTION:
+i2d_KRB5_ENCKEY 3092 1_1_0 NOEXIST::FUNCTION:
+ASN1_template_new 3093 1_1_0 NOEXIST::FUNCTION:
+OCSP_SIGNATURE_free 3094 1_1_0 EXIST::FUNCTION:
+ASN1_item_i2d_fp 3095 1_1_0 EXIST::FUNCTION:STDIO
+KRB5_PRINCNAME_free 3096 1_1_0 NOEXIST::FUNCTION:
+PKCS7_RECIP_INFO_it 3097 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+PKCS7_RECIP_INFO_it 3097 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+EXTENDED_KEY_USAGE_it 3098 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+EXTENDED_KEY_USAGE_it 3098 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+EC_GFp_simple_method 3099 1_1_0 EXIST::FUNCTION:EC
+EC_GROUP_precompute_mult 3100 1_1_0 EXIST::FUNCTION:EC
+OCSP_request_onereq_get0 3101 1_1_0 EXIST::FUNCTION:
+UI_method_set_writer 3102 1_1_0 EXIST::FUNCTION:
+KRB5_AUTHENT_new 3103 1_1_0 NOEXIST::FUNCTION:
+X509_CRL_INFO_it 3104 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+X509_CRL_INFO_it 3104 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+DSO_set_name_converter 3105 1_1_0 EXIST::FUNCTION:
+AES_set_decrypt_key 3106 1_1_0 EXIST::FUNCTION:AES
+PKCS7_DIGEST_it 3107 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+PKCS7_DIGEST_it 3107 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+PKCS12_SAFEBAG_create_cert 3108 1_1_0 EXIST::FUNCTION:
+EVP_DigestInit_ex 3109 1_1_0 EXIST::FUNCTION:
+i2a_ACCESS_DESCRIPTION 3110 1_1_0 EXIST::FUNCTION:
+OCSP_RESPONSE_it 3111 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+OCSP_RESPONSE_it 3111 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+PKCS7_ENC_CONTENT_it 3112 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+PKCS7_ENC_CONTENT_it 3112 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+OCSP_request_add0_id 3113 1_1_0 EXIST::FUNCTION:
+EC_POINT_make_affine 3114 1_1_0 EXIST::FUNCTION:EC
+DSO_get_filename 3115 1_1_0 EXIST::FUNCTION:
+OCSP_CERTSTATUS_it 3116 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+OCSP_CERTSTATUS_it 3116 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+OCSP_request_add1_cert 3117 1_1_0 EXIST::FUNCTION:
+UI_get0_output_string 3118 1_1_0 EXIST::FUNCTION:
+UI_dup_verify_string 3119 1_1_0 EXIST::FUNCTION:
+BN_mod_lshift 3120 1_1_0 EXIST::FUNCTION:
+KRB5_AUTHDATA_it 3121 1_1_0 NOEXIST::FUNCTION:
+asn1_set_choice_selector 3122 1_1_0 NOEXIST::FUNCTION:
+OCSP_basic_add1_status 3123 1_1_0 EXIST::FUNCTION:
+OCSP_RESPID_free 3124 1_1_0 EXIST::FUNCTION:
+asn1_get_field_ptr 3125 1_1_0 NOEXIST::FUNCTION:
+UI_add_input_string 3126 1_1_0 EXIST::FUNCTION:
+OCSP_CRLID_it 3127 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+OCSP_CRLID_it 3127 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+i2d_KRB5_AUTHENTBODY 3128 1_1_0 NOEXIST::FUNCTION:
+OCSP_REQUEST_get_ext_count 3129 1_1_0 EXIST::FUNCTION:
+ENGINE_load_atalla 3130 1_1_0 NOEXIST::FUNCTION:
+X509_NAME_it 3131 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+X509_NAME_it 3131 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+USERNOTICE_it 3132 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+USERNOTICE_it 3132 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+OCSP_REQINFO_new 3133 1_1_0 EXIST::FUNCTION:
+OCSP_BASICRESP_get_ext 3134 1_1_0 EXIST::FUNCTION:
+CRYPTO_get_ex_data_impl 3135 1_1_0 NOEXIST::FUNCTION:
+CRYPTO_get_ex_data_implementation 3135 1_1_0 NOEXIST::FUNCTION:
+ASN1_item_pack 3136 1_1_0 EXIST::FUNCTION:
+i2d_KRB5_ENCDATA 3137 1_1_0 NOEXIST::FUNCTION:
+X509_PURPOSE_set 3138 1_1_0 EXIST::FUNCTION:
+X509_REQ_INFO_it 3139 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+X509_REQ_INFO_it 3139 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+UI_method_set_opener 3140 1_1_0 EXIST::FUNCTION:
+ASN1_item_ex_free 3141 1_1_0 EXIST::FUNCTION:
+ASN1_BOOLEAN_it 3142 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ASN1_BOOLEAN_it 3142 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+ENGINE_get_table_flags 3143 1_1_0 EXIST::FUNCTION:ENGINE
+UI_create_method 3144 1_1_0 EXIST::FUNCTION:
+OCSP_ONEREQ_add1_ext_i2d 3145 1_1_0 EXIST::FUNCTION:
+_shadow_DES_check_key 3146 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:DES
+_shadow_DES_check_key 3146 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:DES
+d2i_OCSP_REQINFO 3147 1_1_0 EXIST::FUNCTION:
+UI_add_info_string 3148 1_1_0 EXIST::FUNCTION:
+UI_get_result_minsize 3149 1_1_0 EXIST::FUNCTION:
+ASN1_NULL_it 3150 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ASN1_NULL_it 3150 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+BN_mod_lshift1 3151 1_1_0 EXIST::FUNCTION:
+d2i_OCSP_ONEREQ 3152 1_1_0 EXIST::FUNCTION:
+OCSP_ONEREQ_new 3153 1_1_0 EXIST::FUNCTION:
+KRB5_TICKET_it 3154 1_1_0 NOEXIST::FUNCTION:
+EVP_aes_192_cbc 3155 1_1_0 EXIST::FUNCTION:AES
+KRB5_TICKET_free 3156 1_1_0 NOEXIST::FUNCTION:
+UI_new 3157 1_1_0 EXIST::FUNCTION:
+OCSP_response_create 3158 1_1_0 EXIST::FUNCTION:
+_ossl_old_des_xcbc_encrypt 3159 1_1_0 NOEXIST::FUNCTION:
+PKCS7_it 3160 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+PKCS7_it 3160 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+OCSP_REQUEST_get_ext_by_critical 3161 1_1_0 EXIST::FUNCTION:
+ENGINE_set_flags 3162 1_1_0 EXIST::FUNCTION:ENGINE
+_ossl_old_des_ecb_encrypt 3163 1_1_0 NOEXIST::FUNCTION:
+OCSP_response_get1_basic 3164 1_1_0 EXIST::FUNCTION:
+EVP_Digest 3165 1_1_0 EXIST::FUNCTION:
+OCSP_ONEREQ_delete_ext 3166 1_1_0 EXIST::FUNCTION:
+ASN1_TBOOLEAN_it 3167 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ASN1_TBOOLEAN_it 3167 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+ASN1_item_new 3168 1_1_0 EXIST::FUNCTION:
+ASN1_TIME_to_generalizedtime 3169 1_1_0 EXIST::FUNCTION:
+BIGNUM_it 3170 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+BIGNUM_it 3170 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+AES_cbc_encrypt 3171 1_1_0 EXIST::FUNCTION:AES
+ENGINE_get_load_privkey_function 3172 1_1_0 EXIST::FUNCTION:ENGINE
+OCSP_RESPONSE_free 3173 1_1_0 EXIST::FUNCTION:
+UI_method_set_reader 3174 1_1_0 EXIST::FUNCTION:
+i2d_ASN1_T61STRING 3175 1_1_0 EXIST::FUNCTION:
+EC_POINT_set_to_infinity 3176 1_1_0 EXIST::FUNCTION:EC
+ERR_load_OCSP_strings 3177 1_1_0 EXIST::FUNCTION:
+EC_POINT_point2oct 3178 1_1_0 EXIST::FUNCTION:EC
+KRB5_APREQ_free 3179 1_1_0 NOEXIST::FUNCTION:
+ASN1_OBJECT_it 3180 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ASN1_OBJECT_it 3180 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+OCSP_crlID_new 3181 1_1_0 EXIST:!OS2,!VMS:FUNCTION:
+OCSP_crlID2_new 3181 1_1_0 EXIST:OS2,VMS:FUNCTION:
+CONF_modules_load_file 3182 1_1_0 EXIST::FUNCTION:
+CONF_imodule_set_usr_data 3183 1_1_0 EXIST::FUNCTION:
+ENGINE_set_default_string 3184 1_1_0 EXIST::FUNCTION:ENGINE
+CONF_module_get_usr_data 3185 1_1_0 EXIST::FUNCTION:
+ASN1_add_oid_module 3186 1_1_0 EXIST::FUNCTION:
+CONF_modules_finish 3187 1_1_0 EXIST::FUNCTION:
+OPENSSL_config 3188 1_1_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0
+CONF_modules_unload 3189 1_1_0 EXIST::FUNCTION:
+CONF_imodule_get_value 3190 1_1_0 EXIST::FUNCTION:
+CONF_module_set_usr_data 3191 1_1_0 EXIST::FUNCTION:
+CONF_parse_list 3192 1_1_0 EXIST::FUNCTION:
+CONF_module_add 3193 1_1_0 EXIST::FUNCTION:
+CONF_get1_default_config_file 3194 1_1_0 EXIST::FUNCTION:
+CONF_imodule_get_flags 3195 1_1_0 EXIST::FUNCTION:
+CONF_imodule_get_module 3196 1_1_0 EXIST::FUNCTION:
+CONF_modules_load 3197 1_1_0 EXIST::FUNCTION:
+CONF_imodule_get_name 3198 1_1_0 EXIST::FUNCTION:
+ERR_peek_top_error 3199 1_1_0 NOEXIST::FUNCTION:
+CONF_imodule_get_usr_data 3200 1_1_0 EXIST::FUNCTION:
+CONF_imodule_set_flags 3201 1_1_0 EXIST::FUNCTION:
+ENGINE_add_conf_module 3202 1_1_0 EXIST::FUNCTION:ENGINE
+ERR_peek_last_error_line 3203 1_1_0 EXIST::FUNCTION:
+ERR_peek_last_error_line_data 3204 1_1_0 EXIST::FUNCTION:
+ERR_peek_last_error 3205 1_1_0 EXIST::FUNCTION:
+DES_read_2passwords 3206 1_1_0 EXIST::FUNCTION:DES
+DES_read_password 3207 1_1_0 EXIST::FUNCTION:DES
+UI_UTIL_read_pw 3208 1_1_0 EXIST::FUNCTION:
+UI_UTIL_read_pw_string 3209 1_1_0 EXIST::FUNCTION:
+ENGINE_load_aep 3210 1_1_0 NOEXIST::FUNCTION:
+ENGINE_load_sureware 3211 1_1_0 NOEXIST::FUNCTION:
+OPENSSL_add_all_algo_noconf 3212 1_1_0 NOEXIST::FUNCTION:
+OPENSSL_add_all_algorithms_noconf 3212 1_1_0 NOEXIST::FUNCTION:
+OPENSSL_add_all_algo_conf 3213 1_1_0 NOEXIST::FUNCTION:
+OPENSSL_add_all_algorithms_conf 3213 1_1_0 NOEXIST::FUNCTION:
+OPENSSL_load_builtin_modules 3214 1_1_0 EXIST::FUNCTION:
+AES_ofb128_encrypt 3215 1_1_0 EXIST::FUNCTION:AES
+AES_ctr128_encrypt 3216 1_1_0 NOEXIST::FUNCTION:
+AES_cfb128_encrypt 3217 1_1_0 EXIST::FUNCTION:AES
+ENGINE_load_4758cca 3218 1_1_0 NOEXIST::FUNCTION:
+_ossl_096_des_random_seed 3219 1_1_0 NOEXIST::FUNCTION:
+EVP_aes_256_ofb 3220 1_1_0 EXIST::FUNCTION:AES
+EVP_aes_192_ofb 3221 1_1_0 EXIST::FUNCTION:AES
+EVP_aes_128_cfb128 3222 1_1_0 EXIST::FUNCTION:AES
+EVP_aes_256_cfb128 3223 1_1_0 EXIST::FUNCTION:AES
+EVP_aes_128_ofb 3224 1_1_0 EXIST::FUNCTION:AES
+EVP_aes_192_cfb128 3225 1_1_0 EXIST::FUNCTION:AES
+CONF_modules_free 3226 1_1_0 EXIST::FUNCTION:
+NCONF_default 3227 1_1_0 EXIST::FUNCTION:
+OPENSSL_no_config 3228 1_1_0 NOEXIST::FUNCTION:
+NCONF_WIN32 3229 1_1_0 EXIST::FUNCTION:
+ASN1_UNIVERSALSTRING_new 3230 1_1_0 EXIST::FUNCTION:
+EVP_des_ede_ecb 3231 1_1_0 EXIST::FUNCTION:DES
+i2d_ASN1_UNIVERSALSTRING 3232 1_1_0 EXIST::FUNCTION:
+ASN1_UNIVERSALSTRING_free 3233 1_1_0 EXIST::FUNCTION:
+ASN1_UNIVERSALSTRING_it 3234 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ASN1_UNIVERSALSTRING_it 3234 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+d2i_ASN1_UNIVERSALSTRING 3235 1_1_0 EXIST::FUNCTION:
+EVP_des_ede3_ecb 3236 1_1_0 EXIST::FUNCTION:DES
+X509_REQ_print_ex 3237 1_1_0 EXIST::FUNCTION:
+ENGINE_up_ref 3238 1_1_0 EXIST::FUNCTION:ENGINE
+BUF_MEM_grow_clean 3239 1_1_0 EXIST::FUNCTION:
+BUF_strlcat 3241 1_1_0 NOEXIST::FUNCTION:
+BIO_indent 3242 1_1_0 EXIST::FUNCTION:
+OpenSSLDie 3244 1_1_0 EXIST::FUNCTION:
+OPENSSL_cleanse 3245 1_1_0 EXIST::FUNCTION:
+ENGINE_setup_bsd_cryptodev 3246 1_1_0 EXIST:__FreeBSD__:FUNCTION:ENGINE
+ERR_release_err_state_table 3247 1_1_0 EXIST::FUNCTION:
+EVP_aes_128_cfb8 3248 1_1_0 EXIST::FUNCTION:AES
+FIPS_corrupt_rsa 3249 1_1_0 NOEXIST::FUNCTION:
+FIPS_selftest_des 3250 1_1_0 NOEXIST::FUNCTION:
+EVP_aes_128_cfb1 3251 1_1_0 EXIST::FUNCTION:AES
+EVP_aes_192_cfb8 3252 1_1_0 EXIST::FUNCTION:AES
+FIPS_mode_set 3253 1_1_0 EXIST::FUNCTION:
+FIPS_selftest_dsa 3254 1_1_0 NOEXIST::FUNCTION:
+EVP_aes_256_cfb8 3255 1_1_0 EXIST::FUNCTION:AES
+FIPS_allow_md5 3256 1_1_0 NOEXIST::FUNCTION:
+DES_ede3_cfb_encrypt 3257 1_1_0 EXIST::FUNCTION:DES
+EVP_des_ede3_cfb8 3258 1_1_0 EXIST::FUNCTION:DES
+FIPS_rand_seeded 3259 1_1_0 NOEXIST::FUNCTION:
+AES_cfbr_encrypt_block 3260 1_1_0 NOEXIST::FUNCTION:
+AES_cfb8_encrypt 3261 1_1_0 EXIST::FUNCTION:AES
+FIPS_rand_seed 3262 1_1_0 NOEXIST::FUNCTION:
+FIPS_corrupt_des 3263 1_1_0 NOEXIST::FUNCTION:
+EVP_aes_192_cfb1 3264 1_1_0 EXIST::FUNCTION:AES
+FIPS_selftest_aes 3265 1_1_0 NOEXIST::FUNCTION:
+FIPS_set_prng_key 3266 1_1_0 NOEXIST::FUNCTION:
+EVP_des_cfb8 3267 1_1_0 EXIST::FUNCTION:DES
+FIPS_corrupt_dsa 3268 1_1_0 NOEXIST::FUNCTION:
+FIPS_test_mode 3269 1_1_0 NOEXIST::FUNCTION:
+FIPS_rand_method 3270 1_1_0 NOEXIST::FUNCTION:
+EVP_aes_256_cfb1 3271 1_1_0 EXIST::FUNCTION:AES
+ERR_load_FIPS_strings 3272 1_1_0 NOEXIST::FUNCTION:
+FIPS_corrupt_aes 3273 1_1_0 NOEXIST::FUNCTION:
+FIPS_selftest_sha1 3274 1_1_0 NOEXIST::FUNCTION:
+FIPS_selftest_rsa 3275 1_1_0 NOEXIST::FUNCTION:
+FIPS_corrupt_sha1 3276 1_1_0 NOEXIST::FUNCTION:
+EVP_des_cfb1 3277 1_1_0 EXIST::FUNCTION:DES
+FIPS_dsa_check 3278 1_1_0 NOEXIST::FUNCTION:
+AES_cfb1_encrypt 3279 1_1_0 EXIST::FUNCTION:AES
+EVP_des_ede3_cfb1 3280 1_1_0 EXIST::FUNCTION:DES
+FIPS_rand_check 3281 1_1_0 NOEXIST::FUNCTION:
+FIPS_md5_allowed 3282 1_1_0 NOEXIST::FUNCTION:
+FIPS_mode 3283 1_1_0 EXIST::FUNCTION:
+FIPS_selftest_failed 3284 1_1_0 NOEXIST::FUNCTION:
+sk_is_sorted 3285 1_1_0 EXIST::FUNCTION:
+X509_check_ca 3286 1_1_0 EXIST::FUNCTION:
+private_idea_set_encrypt_key 3287 1_1_0 NOEXIST::FUNCTION:
+HMAC_CTX_set_flags 3288 1_1_0 EXIST::FUNCTION:
+private_SHA_Init 3289 1_1_0 NOEXIST::FUNCTION:
+private_CAST_set_key 3290 1_1_0 NOEXIST::FUNCTION:
+private_RIPEMD160_Init 3291 1_1_0 NOEXIST::FUNCTION:
+private_RC5_32_set_key 3292 1_1_0 NOEXIST::FUNCTION:
+private_MD5_Init 3293 1_1_0 NOEXIST::FUNCTION:
+private_RC4_set_key 3294 1_1_0 NOEXIST::FUNCTION:
+private_MDC2_Init 3295 1_1_0 NOEXIST::FUNCTION:
+private_RC2_set_key 3296 1_1_0 NOEXIST::FUNCTION:
+private_MD4_Init 3297 1_1_0 NOEXIST::FUNCTION:
+private_BF_set_key 3298 1_1_0 NOEXIST::FUNCTION:
+private_MD2_Init 3299 1_1_0 NOEXIST::FUNCTION:
+d2i_PROXY_CERT_INFO_EXTENSION 3300 1_1_0 EXIST::FUNCTION:
+PROXY_POLICY_it 3301 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+PROXY_POLICY_it 3301 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+i2d_PROXY_POLICY 3302 1_1_0 EXIST::FUNCTION:
+i2d_PROXY_CERT_INFO_EXTENSION 3303 1_1_0 EXIST::FUNCTION:
+d2i_PROXY_POLICY 3304 1_1_0 EXIST::FUNCTION:
+PROXY_CERT_INFO_EXTENSION_new 3305 1_1_0 EXIST::FUNCTION:
+PROXY_CERT_INFO_EXTENSION_free 3306 1_1_0 EXIST::FUNCTION:
+PROXY_CERT_INFO_EXTENSION_it 3307 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+PROXY_CERT_INFO_EXTENSION_it 3307 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+PROXY_POLICY_free 3308 1_1_0 EXIST::FUNCTION:
+PROXY_POLICY_new 3309 1_1_0 EXIST::FUNCTION:
+BN_MONT_CTX_set_locked 3310 1_1_0 EXIST::FUNCTION:
+FIPS_selftest_rng 3311 1_1_0 NOEXIST::FUNCTION:
+EVP_sha384 3312 1_1_0 EXIST:!VMSVAX:FUNCTION:
+EVP_sha512 3313 1_1_0 EXIST:!VMSVAX:FUNCTION:
+EVP_sha224 3314 1_1_0 EXIST::FUNCTION:
+EVP_sha256 3315 1_1_0 EXIST::FUNCTION:
+FIPS_selftest_hmac 3316 1_1_0 NOEXIST::FUNCTION:
+FIPS_corrupt_rng 3317 1_1_0 NOEXIST::FUNCTION:
+BN_mod_exp_mont_consttime 3318 1_1_0 EXIST::FUNCTION:
+RSA_X931_hash_id 3319 1_1_0 EXIST::FUNCTION:RSA
+RSA_padding_check_X931 3320 1_1_0 EXIST::FUNCTION:RSA
+RSA_verify_PKCS1_PSS 3321 1_1_0 EXIST::FUNCTION:RSA
+RSA_padding_add_X931 3322 1_1_0 EXIST::FUNCTION:RSA
+RSA_padding_add_PKCS1_PSS 3323 1_1_0 EXIST::FUNCTION:RSA
+PKCS1_MGF1 3324 1_1_0 EXIST::FUNCTION:RSA
+BN_X931_generate_Xpq 3325 1_1_0 EXIST::FUNCTION:
+RSA_X931_generate_key 3326 1_1_0 NOEXIST::FUNCTION:
+BN_X931_derive_prime 3327 1_1_0 NOEXIST::FUNCTION:
+BN_X931_generate_prime 3328 1_1_0 NOEXIST::FUNCTION:
+RSA_X931_derive 3329 1_1_0 NOEXIST::FUNCTION:
+BIO_new_dgram 3330 1_1_0 EXIST::FUNCTION:
+BN_get0_nist_prime_384 3331 1_1_0 EXIST::FUNCTION:
+ERR_set_mark 3332 1_1_0 EXIST::FUNCTION:
+X509_STORE_CTX_set0_crls 3333 1_1_0 EXIST::FUNCTION:
+ENGINE_set_STORE 3334 1_1_0 NOEXIST::FUNCTION:
+ENGINE_register_ECDSA 3335 1_1_0 NOEXIST::FUNCTION:
+STORE_method_set_list_start_function 3336 1_1_0 NOEXIST::FUNCTION:
+BN_BLINDING_invert_ex 3337 1_1_0 EXIST::FUNCTION:
+NAME_CONSTRAINTS_free 3338 1_1_0 EXIST::FUNCTION:
+STORE_ATTR_INFO_set_number 3339 1_1_0 NOEXIST::FUNCTION:
+BN_BLINDING_get_thread_id 3340 1_1_0 EXIST::FUNCTION:DEPRECATEDIN_1_0_0
+X509_STORE_CTX_set0_param 3341 1_1_0 EXIST::FUNCTION:
+POLICY_MAPPING_it 3342 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+POLICY_MAPPING_it 3342 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+STORE_parse_attrs_start 3343 1_1_0 NOEXIST::FUNCTION:
+POLICY_CONSTRAINTS_free 3344 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_add1_attr_by_NID 3345 1_1_0 EXIST::FUNCTION:
+BN_nist_mod_192 3346 1_1_0 EXIST::FUNCTION:
+EC_GROUP_get_trinomial_basis 3347 1_1_0 EXIST::FUNCTION:EC,EC2M
+STORE_set_method 3348 1_1_0 NOEXIST::FUNCTION:
+GENERAL_SUBTREE_free 3349 1_1_0 EXIST::FUNCTION:
+NAME_CONSTRAINTS_it 3350 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+NAME_CONSTRAINTS_it 3350 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+ECDH_get_default_method 3351 1_1_0 NOEXIST::FUNCTION:
+PKCS12_add_safe 3352 1_1_0 EXIST::FUNCTION:
+EC_KEY_new_by_curve_name 3353 1_1_0 EXIST::FUNCTION:EC
+STORE_method_get_update_store_function 3354 1_1_0 NOEXIST::FUNCTION:
+ENGINE_register_ECDH 3355 1_1_0 NOEXIST::FUNCTION:
+SHA512_Update 3356 1_1_0 EXIST:!VMSVAX:FUNCTION:
+i2d_ECPrivateKey 3357 1_1_0 EXIST::FUNCTION:EC
+BN_get0_nist_prime_192 3358 1_1_0 EXIST::FUNCTION:
+STORE_modify_certificate 3359 1_1_0 NOEXIST::FUNCTION:
+EC_POINT_set_affine_coordinates_GF2m 3360 1_1_0 EXIST::FUNCTION:EC,EC2M
+BN_GF2m_mod_exp_arr 3361 1_1_0 EXIST::FUNCTION:EC2M
+STORE_ATTR_INFO_modify_number 3362 1_1_0 NOEXIST::FUNCTION:
+X509_keyid_get0 3363 1_1_0 EXIST::FUNCTION:
+ENGINE_load_gmp 3364 1_1_0 NOEXIST::FUNCTION:
+pitem_new 3365 1_1_0 NOEXIST::FUNCTION:
+BN_GF2m_mod_mul_arr 3366 1_1_0 EXIST::FUNCTION:EC2M
+STORE_list_public_key_endp 3367 1_1_0 NOEXIST::FUNCTION:
+o2i_ECPublicKey 3368 1_1_0 EXIST::FUNCTION:EC
+EC_KEY_copy 3369 1_1_0 EXIST::FUNCTION:EC
+BIO_dump_fp 3370 1_1_0 EXIST::FUNCTION:STDIO
+X509_policy_node_get0_parent 3371 1_1_0 EXIST::FUNCTION:
+EC_GROUP_check_discriminant 3372 1_1_0 EXIST::FUNCTION:EC
+i2o_ECPublicKey 3373 1_1_0 EXIST::FUNCTION:EC
+EC_KEY_precompute_mult 3374 1_1_0 EXIST::FUNCTION:EC
+a2i_IPADDRESS 3375 1_1_0 EXIST::FUNCTION:
+STORE_method_set_initialise_function 3376 1_1_0 NOEXIST::FUNCTION:
+X509_STORE_CTX_set_depth 3377 1_1_0 EXIST::FUNCTION:
+X509_VERIFY_PARAM_inherit 3378 1_1_0 EXIST::FUNCTION:
+EC_POINT_point2bn 3379 1_1_0 EXIST::FUNCTION:EC
+STORE_ATTR_INFO_set_dn 3380 1_1_0 NOEXIST::FUNCTION:
+X509_policy_tree_get0_policies 3381 1_1_0 EXIST::FUNCTION:
+EC_GROUP_new_curve_GF2m 3382 1_1_0 EXIST::FUNCTION:EC,EC2M
+STORE_destroy_method 3383 1_1_0 NOEXIST::FUNCTION:
+ENGINE_unregister_STORE 3384 1_1_0 NOEXIST::FUNCTION:
+EVP_PKEY_get1_EC_KEY 3385 1_1_0 EXIST::FUNCTION:EC
+STORE_ATTR_INFO_get0_number 3386 1_1_0 NOEXIST::FUNCTION:
+ENGINE_get_default_ECDH 3387 1_1_0 NOEXIST::FUNCTION:
+EC_KEY_get_conv_form 3388 1_1_0 EXIST::FUNCTION:EC
+ASN1_OCTET_STRING_NDEF_it 3389 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ASN1_OCTET_STRING_NDEF_it 3389 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+STORE_delete_public_key 3390 1_1_0 NOEXIST::FUNCTION:
+STORE_get_public_key 3391 1_1_0 NOEXIST::FUNCTION:
+STORE_modify_arbitrary 3392 1_1_0 NOEXIST::FUNCTION:
+ENGINE_get_static_state 3393 1_1_0 EXIST::FUNCTION:ENGINE
+pqueue_iterator 3394 1_1_0 NOEXIST::FUNCTION:
+ECDSA_SIG_new 3395 1_1_0 EXIST::FUNCTION:EC
+OPENSSL_DIR_end 3396 1_1_0 EXIST::FUNCTION:
+BN_GF2m_mod_sqr 3397 1_1_0 EXIST::FUNCTION:EC2M
+EC_POINT_bn2point 3398 1_1_0 EXIST::FUNCTION:EC
+X509_VERIFY_PARAM_set_depth 3399 1_1_0 EXIST::FUNCTION:
+EC_KEY_set_asn1_flag 3400 1_1_0 EXIST::FUNCTION:EC
+STORE_get_method 3401 1_1_0 NOEXIST::FUNCTION:
+EC_KEY_get_key_method_data 3402 1_1_0 NOEXIST::FUNCTION:
+ECDSA_sign_ex 3403 1_1_0 EXIST::FUNCTION:EC
+STORE_parse_attrs_end 3404 1_1_0 NOEXIST::FUNCTION:
+EC_GROUP_get_point_conversion_form 3405 1_1_0 EXIST::FUNCTION:EC
+STORE_method_set_store_function 3406 1_1_0 NOEXIST::FUNCTION:
+STORE_ATTR_INFO_in 3407 1_1_0 NOEXIST::FUNCTION:
+PEM_read_bio_ECPKParameters 3408 1_1_0 EXIST::FUNCTION:EC
+EC_GROUP_get_pentanomial_basis 3409 1_1_0 EXIST::FUNCTION:EC,EC2M
+EVP_PKEY_add1_attr_by_txt 3410 1_1_0 EXIST::FUNCTION:
+BN_BLINDING_set_flags 3411 1_1_0 EXIST::FUNCTION:
+X509_VERIFY_PARAM_set1_policies 3412 1_1_0 EXIST::FUNCTION:
+X509_VERIFY_PARAM_set1_name 3413 1_1_0 EXIST::FUNCTION:
+X509_VERIFY_PARAM_set_purpose 3414 1_1_0 EXIST::FUNCTION:
+STORE_get_number 3415 1_1_0 NOEXIST::FUNCTION:
+ECDSA_sign_setup 3416 1_1_0 EXIST::FUNCTION:EC
+BN_GF2m_mod_solve_quad_arr 3417 1_1_0 EXIST::FUNCTION:EC2M
+EC_KEY_up_ref 3418 1_1_0 EXIST::FUNCTION:EC
+POLICY_MAPPING_free 3419 1_1_0 EXIST::FUNCTION:
+BN_GF2m_mod_div 3420 1_1_0 EXIST::FUNCTION:EC2M
+X509_VERIFY_PARAM_set_flags 3421 1_1_0 EXIST::FUNCTION:
+EC_KEY_free 3422 1_1_0 EXIST::FUNCTION:EC
+STORE_method_set_list_next_function 3423 1_1_0 NOEXIST::FUNCTION:
+PEM_write_bio_ECPrivateKey 3424 1_1_0 EXIST::FUNCTION:EC
+d2i_EC_PUBKEY 3425 1_1_0 EXIST::FUNCTION:EC
+STORE_method_get_generate_function 3426 1_1_0 NOEXIST::FUNCTION:
+STORE_method_set_list_end_function 3427 1_1_0 NOEXIST::FUNCTION:
+pqueue_print 3428 1_1_0 NOEXIST::FUNCTION:
+EC_GROUP_have_precompute_mult 3429 1_1_0 EXIST::FUNCTION:EC
+EC_KEY_print_fp 3430 1_1_0 EXIST::FUNCTION:EC,STDIO
+BN_GF2m_mod_arr 3431 1_1_0 EXIST::FUNCTION:EC2M
+PEM_write_bio_X509_CERT_PAIR 3432 1_1_0 NOEXIST::FUNCTION:
+EVP_PKEY_cmp 3433 1_1_0 EXIST::FUNCTION:
+X509_policy_level_node_count 3434 1_1_0 EXIST::FUNCTION:
+STORE_new_engine 3435 1_1_0 NOEXIST::FUNCTION:
+STORE_list_public_key_start 3436 1_1_0 NOEXIST::FUNCTION:
+X509_VERIFY_PARAM_new 3437 1_1_0 EXIST::FUNCTION:
+ECDH_get_ex_data 3438 1_1_0 NOEXIST::FUNCTION:
+EVP_PKEY_get_attr 3439 1_1_0 EXIST::FUNCTION:
+ECDSA_do_sign 3440 1_1_0 EXIST::FUNCTION:EC
+ENGINE_unregister_ECDH 3441 1_1_0 NOEXIST::FUNCTION:
+ECDH_OpenSSL 3442 1_1_0 NOEXIST::FUNCTION:
+EC_KEY_set_conv_form 3443 1_1_0 EXIST::FUNCTION:EC
+EC_POINT_dup 3444 1_1_0 EXIST::FUNCTION:EC
+GENERAL_SUBTREE_new 3445 1_1_0 EXIST::FUNCTION:
+STORE_list_crl_endp 3446 1_1_0 NOEXIST::FUNCTION:
+EC_get_builtin_curves 3447 1_1_0 EXIST::FUNCTION:EC
+X509_policy_node_get0_qualifiers 3448 1_1_0 EXIST::FUNCTION:
+STORE_list_crl_end 3449 1_1_0 NOEXIST::FUNCTION:
+EVP_PKEY_set1_EC_KEY 3450 1_1_0 EXIST::FUNCTION:EC
+BN_GF2m_mod_sqrt_arr 3451 1_1_0 EXIST::FUNCTION:EC2M
+i2d_ECPrivateKey_bio 3452 1_1_0 EXIST::FUNCTION:EC
+ECPKParameters_print_fp 3453 1_1_0 EXIST::FUNCTION:EC,STDIO
+pqueue_find 3454 1_1_0 NOEXIST::FUNCTION:
+ECDSA_SIG_free 3455 1_1_0 EXIST::FUNCTION:EC
+PEM_write_bio_ECPKParameters 3456 1_1_0 EXIST::FUNCTION:EC
+STORE_method_set_ctrl_function 3457 1_1_0 NOEXIST::FUNCTION:
+STORE_list_public_key_end 3458 1_1_0 NOEXIST::FUNCTION:
+EC_KEY_set_private_key 3459 1_1_0 EXIST::FUNCTION:EC
+pqueue_peek 3460 1_1_0 NOEXIST::FUNCTION:
+STORE_get_arbitrary 3461 1_1_0 NOEXIST::FUNCTION:
+STORE_store_crl 3462 1_1_0 NOEXIST::FUNCTION:
+X509_policy_node_get0_policy 3463 1_1_0 EXIST::FUNCTION:
+PKCS12_add_safes 3464 1_1_0 EXIST::FUNCTION:
+BN_BLINDING_convert_ex 3465 1_1_0 EXIST::FUNCTION:
+X509_policy_tree_free 3466 1_1_0 EXIST::FUNCTION:
+OPENSSL_ia32cap_loc 3467 1_1_0 EXIST::FUNCTION:
+BN_GF2m_poly2arr 3468 1_1_0 EXIST::FUNCTION:EC2M
+STORE_ctrl 3469 1_1_0 NOEXIST::FUNCTION:
+STORE_ATTR_INFO_compare 3470 1_1_0 NOEXIST::FUNCTION:
+BN_get0_nist_prime_224 3471 1_1_0 EXIST::FUNCTION:
+i2d_ECParameters 3472 1_1_0 EXIST::FUNCTION:EC
+i2d_ECPKParameters 3473 1_1_0 EXIST::FUNCTION:EC
+BN_GENCB_call 3474 1_1_0 EXIST::FUNCTION:
+d2i_ECPKParameters 3475 1_1_0 EXIST::FUNCTION:EC
+STORE_method_set_generate_function 3476 1_1_0 NOEXIST::FUNCTION:
+ENGINE_set_ECDH 3477 1_1_0 NOEXIST::FUNCTION:
+NAME_CONSTRAINTS_new 3478 1_1_0 EXIST::FUNCTION:
+SHA256_Init 3479 1_1_0 EXIST::FUNCTION:
+EC_KEY_get0_public_key 3480 1_1_0 EXIST::FUNCTION:EC
+PEM_write_bio_EC_PUBKEY 3481 1_1_0 EXIST::FUNCTION:EC
+STORE_ATTR_INFO_set_cstr 3482 1_1_0 NOEXIST::FUNCTION:
+STORE_list_crl_next 3483 1_1_0 NOEXIST::FUNCTION:
+STORE_ATTR_INFO_in_range 3484 1_1_0 NOEXIST::FUNCTION:
+ECParameters_print 3485 1_1_0 EXIST::FUNCTION:EC
+STORE_method_set_delete_function 3486 1_1_0 NOEXIST::FUNCTION:
+STORE_list_certificate_next 3487 1_1_0 NOEXIST::FUNCTION:
+ASN1_generate_nconf 3488 1_1_0 EXIST::FUNCTION:
+BN_GF2m_mod_mul 3490 1_1_0 EXIST::FUNCTION:EC2M
+STORE_method_get_list_next_function 3491 1_1_0 NOEXIST::FUNCTION:
+STORE_ATTR_INFO_get0_dn 3492 1_1_0 NOEXIST::FUNCTION:
+STORE_list_private_key_next 3493 1_1_0 NOEXIST::FUNCTION:
+EC_GROUP_set_seed 3494 1_1_0 EXIST::FUNCTION:EC
+X509_VERIFY_PARAM_set_trust 3495 1_1_0 EXIST::FUNCTION:
+STORE_ATTR_INFO_free 3496 1_1_0 NOEXIST::FUNCTION:
+STORE_get_private_key 3497 1_1_0 NOEXIST::FUNCTION:
+EVP_PKEY_get_attr_count 3498 1_1_0 EXIST::FUNCTION:
+STORE_ATTR_INFO_new 3499 1_1_0 NOEXIST::FUNCTION:
+EC_GROUP_get_curve_GF2m 3500 1_1_0 EXIST::FUNCTION:EC,EC2M
+STORE_method_set_revoke_function 3501 1_1_0 NOEXIST::FUNCTION:
+STORE_store_number 3502 1_1_0 NOEXIST::FUNCTION:
+BN_is_prime_ex 3503 1_1_0 EXIST::FUNCTION:
+STORE_revoke_public_key 3504 1_1_0 NOEXIST::FUNCTION:
+X509_STORE_CTX_get0_param 3505 1_1_0 EXIST::FUNCTION:
+STORE_delete_arbitrary 3506 1_1_0 NOEXIST::FUNCTION:
+PEM_read_X509_CERT_PAIR 3507 1_1_0 NOEXIST::FUNCTION:
+X509_STORE_set_depth 3508 1_1_0 EXIST::FUNCTION:
+ECDSA_get_ex_data 3509 1_1_0 NOEXIST::FUNCTION:
+SHA224 3510 1_1_0 EXIST::FUNCTION:
+BIO_dump_indent_fp 3511 1_1_0 EXIST::FUNCTION:STDIO
+EC_KEY_set_group 3512 1_1_0 EXIST::FUNCTION:EC
+STORE_list_certificate_start 3514 1_1_0 NOEXIST::FUNCTION:
+BN_GF2m_mod 3515 1_1_0 EXIST::FUNCTION:EC2M
+X509_REQ_check_private_key 3516 1_1_0 EXIST::FUNCTION:
+EC_GROUP_get_seed_len 3517 1_1_0 EXIST::FUNCTION:EC
+ERR_load_STORE_strings 3518 1_1_0 NOEXIST::FUNCTION:
+PEM_read_bio_EC_PUBKEY 3519 1_1_0 EXIST::FUNCTION:EC
+STORE_list_private_key_end 3520 1_1_0 NOEXIST::FUNCTION:
+i2d_EC_PUBKEY 3521 1_1_0 EXIST::FUNCTION:EC
+ECDSA_get_default_method 3522 1_1_0 NOEXIST::FUNCTION:
+ASN1_put_eoc 3523 1_1_0 EXIST::FUNCTION:
+X509_STORE_CTX_get_explicit_policy 3524 1_1_0 EXIST::FUNCTION:
+X509_VERIFY_PARAM_table_cleanup 3525 1_1_0 EXIST::FUNCTION:
+STORE_modify_private_key 3526 1_1_0 NOEXIST::FUNCTION:
+X509_VERIFY_PARAM_free 3527 1_1_0 EXIST::FUNCTION:
+EC_METHOD_get_field_type 3528 1_1_0 EXIST::FUNCTION:EC
+EC_GFp_nist_method 3529 1_1_0 EXIST::FUNCTION:EC
+STORE_method_set_modify_function 3530 1_1_0 NOEXIST::FUNCTION:
+STORE_parse_attrs_next 3531 1_1_0 NOEXIST::FUNCTION:
+ENGINE_load_padlock 3532 1_1_0 NOEXIST::FUNCTION:
+EC_GROUP_set_curve_name 3533 1_1_0 EXIST::FUNCTION:EC
+X509_CERT_PAIR_it 3534 1_1_0 NOEXIST::FUNCTION:
+STORE_method_get_revoke_function 3535 1_1_0 NOEXIST::FUNCTION:
+STORE_method_set_get_function 3536 1_1_0 NOEXIST::FUNCTION:
+STORE_modify_number 3537 1_1_0 NOEXIST::FUNCTION:
+STORE_method_get_store_function 3538 1_1_0 NOEXIST::FUNCTION:
+STORE_store_private_key 3539 1_1_0 NOEXIST::FUNCTION:
+BN_GF2m_mod_sqr_arr 3540 1_1_0 EXIST::FUNCTION:EC2M
+RSA_setup_blinding 3541 1_1_0 EXIST::FUNCTION:RSA
+BIO_s_datagram 3542 1_1_0 EXIST::FUNCTION:DGRAM
+STORE_Memory 3543 1_1_0 NOEXIST::FUNCTION:
+sk_find_ex 3544 1_1_0 EXIST::FUNCTION:
+EC_GROUP_set_curve_GF2m 3545 1_1_0 EXIST::FUNCTION:EC,EC2M
+ENGINE_set_default_ECDSA 3546 1_1_0 NOEXIST::FUNCTION:
+POLICY_CONSTRAINTS_new 3547 1_1_0 EXIST::FUNCTION:
+BN_GF2m_mod_sqrt 3548 1_1_0 EXIST::FUNCTION:EC2M
+ECDH_set_default_method 3549 1_1_0 NOEXIST::FUNCTION:
+EC_KEY_generate_key 3550 1_1_0 EXIST::FUNCTION:EC
+SHA384_Update 3551 1_1_0 EXIST:!VMSVAX:FUNCTION:
+BN_GF2m_arr2poly 3552 1_1_0 EXIST::FUNCTION:EC2M
+STORE_method_get_get_function 3553 1_1_0 NOEXIST::FUNCTION:
+STORE_method_set_cleanup_function 3554 1_1_0 NOEXIST::FUNCTION:
+EC_GROUP_check 3555 1_1_0 EXIST::FUNCTION:EC
+d2i_ECPrivateKey_bio 3556 1_1_0 EXIST::FUNCTION:EC
+EC_KEY_insert_key_method_data 3557 1_1_0 NOEXIST::FUNCTION:
+STORE_method_get_lock_store_function 3558 1_1_0 NOEXIST::FUNCTION:
+X509_VERIFY_PARAM_get_depth 3559 1_1_0 EXIST::FUNCTION:
+SHA224_Final 3560 1_1_0 EXIST::FUNCTION:
+STORE_method_set_update_store_function 3561 1_1_0 NOEXIST::FUNCTION:
+SHA224_Update 3562 1_1_0 EXIST::FUNCTION:
+d2i_ECPrivateKey 3563 1_1_0 EXIST::FUNCTION:EC
+ASN1_item_ndef_i2d 3564 1_1_0 EXIST::FUNCTION:
+STORE_delete_private_key 3565 1_1_0 NOEXIST::FUNCTION:
+ERR_pop_to_mark 3566 1_1_0 EXIST::FUNCTION:
+ENGINE_register_all_STORE 3567 1_1_0 NOEXIST::FUNCTION:
+X509_policy_level_get0_node 3568 1_1_0 EXIST::FUNCTION:
+i2d_PKCS7_NDEF 3569 1_1_0 EXIST::FUNCTION:
+EC_GROUP_get_degree 3570 1_1_0 EXIST::FUNCTION:EC
+ASN1_generate_v3 3571 1_1_0 EXIST::FUNCTION:
+STORE_ATTR_INFO_modify_cstr 3572 1_1_0 NOEXIST::FUNCTION:
+X509_policy_tree_level_count 3573 1_1_0 EXIST::FUNCTION:
+BN_GF2m_add 3574 1_1_0 EXIST::FUNCTION:EC2M
+EC_KEY_get0_group 3575 1_1_0 EXIST::FUNCTION:EC
+STORE_generate_crl 3576 1_1_0 NOEXIST::FUNCTION:
+STORE_store_public_key 3577 1_1_0 NOEXIST::FUNCTION:
+X509_CERT_PAIR_free 3578 1_1_0 NOEXIST::FUNCTION:
+STORE_revoke_private_key 3579 1_1_0 NOEXIST::FUNCTION:
+BN_nist_mod_224 3580 1_1_0 EXIST::FUNCTION:
+SHA512_Final 3581 1_1_0 EXIST:!VMSVAX:FUNCTION:
+STORE_ATTR_INFO_modify_dn 3582 1_1_0 NOEXIST::FUNCTION:
+STORE_method_get_initialise_function 3583 1_1_0 NOEXIST::FUNCTION:
+STORE_delete_number 3584 1_1_0 NOEXIST::FUNCTION:
+i2d_EC_PUBKEY_bio 3585 1_1_0 EXIST::FUNCTION:EC
+BIO_dgram_non_fatal_error 3586 1_1_0 EXIST::FUNCTION:
+EC_GROUP_get_asn1_flag 3587 1_1_0 EXIST::FUNCTION:EC
+STORE_ATTR_INFO_in_ex 3588 1_1_0 NOEXIST::FUNCTION:
+STORE_list_crl_start 3589 1_1_0 NOEXIST::FUNCTION:
+ECDH_get_ex_new_index 3590 1_1_0 NOEXIST::FUNCTION:
+STORE_method_get_modify_function 3591 1_1_0 NOEXIST::FUNCTION:
+v2i_ASN1_BIT_STRING 3592 1_1_0 EXIST::FUNCTION:
+STORE_store_certificate 3593 1_1_0 NOEXIST::FUNCTION:
+OBJ_bsearch_ex 3594 1_1_0 NOEXIST::FUNCTION:
+X509_STORE_CTX_set_default 3595 1_1_0 EXIST::FUNCTION:
+STORE_ATTR_INFO_set_sha1str 3596 1_1_0 NOEXIST::FUNCTION:
+BN_GF2m_mod_inv 3597 1_1_0 EXIST::FUNCTION:EC2M
+BN_GF2m_mod_exp 3598 1_1_0 EXIST::FUNCTION:EC2M
+STORE_modify_public_key 3599 1_1_0 NOEXIST::FUNCTION:
+STORE_method_get_list_start_function 3600 1_1_0 NOEXIST::FUNCTION:
+EC_GROUP_get0_seed 3601 1_1_0 EXIST::FUNCTION:EC
+STORE_store_arbitrary 3602 1_1_0 NOEXIST::FUNCTION:
+STORE_method_set_unlock_store_function 3603 1_1_0 NOEXIST::FUNCTION:
+BN_GF2m_mod_div_arr 3604 1_1_0 EXIST::FUNCTION:EC2M
+ENGINE_set_ECDSA 3605 1_1_0 NOEXIST::FUNCTION:
+STORE_create_method 3606 1_1_0 NOEXIST::FUNCTION:
+ECPKParameters_print 3607 1_1_0 EXIST::FUNCTION:EC
+EC_KEY_get0_private_key 3608 1_1_0 EXIST::FUNCTION:EC
+PEM_write_EC_PUBKEY 3609 1_1_0 EXIST::FUNCTION:EC
+X509_VERIFY_PARAM_set1 3610 1_1_0 EXIST::FUNCTION:
+ECDH_set_method 3611 1_1_0 NOEXIST::FUNCTION:
+v2i_GENERAL_NAME_ex 3612 1_1_0 EXIST::FUNCTION:
+ECDH_set_ex_data 3613 1_1_0 NOEXIST::FUNCTION:
+STORE_generate_key 3614 1_1_0 NOEXIST::FUNCTION:
+BN_nist_mod_521 3615 1_1_0 EXIST::FUNCTION:
+X509_policy_tree_get0_level 3616 1_1_0 EXIST::FUNCTION:
+EC_GROUP_set_point_conversion_form 3617 1_1_0 EXIST::FUNCTION:EC
+PEM_read_EC_PUBKEY 3618 1_1_0 EXIST::FUNCTION:EC
+i2d_ECDSA_SIG 3619 1_1_0 EXIST::FUNCTION:EC
+ECDSA_OpenSSL 3620 1_1_0 NOEXIST::FUNCTION:
+STORE_delete_crl 3621 1_1_0 NOEXIST::FUNCTION:
+EC_KEY_get_enc_flags 3622 1_1_0 EXIST::FUNCTION:EC
+ASN1_const_check_infinite_end 3623 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_delete_attr 3624 1_1_0 EXIST::FUNCTION:
+ECDSA_set_default_method 3625 1_1_0 NOEXIST::FUNCTION:
+EC_POINT_set_compressed_coordinates_GF2m 3626 1_1_0 EXIST::FUNCTION:EC,EC2M
+EC_GROUP_cmp 3627 1_1_0 EXIST::FUNCTION:EC
+STORE_revoke_certificate 3628 1_1_0 NOEXIST::FUNCTION:
+BN_get0_nist_prime_256 3629 1_1_0 EXIST::FUNCTION:
+STORE_method_get_delete_function 3630 1_1_0 NOEXIST::FUNCTION:
+SHA224_Init 3631 1_1_0 EXIST::FUNCTION:
+PEM_read_ECPrivateKey 3632 1_1_0 EXIST::FUNCTION:EC
+SHA512_Init 3633 1_1_0 EXIST:!VMSVAX:FUNCTION:
+STORE_parse_attrs_endp 3634 1_1_0 NOEXIST::FUNCTION:
+BN_set_negative 3635 1_1_0 EXIST::FUNCTION:
+ERR_load_ECDSA_strings 3636 1_1_0 NOEXIST::FUNCTION:
+EC_GROUP_get_basis_type 3637 1_1_0 EXIST::FUNCTION:EC
+STORE_list_public_key_next 3638 1_1_0 NOEXIST::FUNCTION:
+i2v_ASN1_BIT_STRING 3639 1_1_0 EXIST::FUNCTION:
+STORE_OBJECT_free 3640 1_1_0 NOEXIST::FUNCTION:
+BN_nist_mod_384 3641 1_1_0 EXIST::FUNCTION:
+i2d_X509_CERT_PAIR 3642 1_1_0 NOEXIST::FUNCTION:
+PEM_write_ECPKParameters 3643 1_1_0 EXIST::FUNCTION:EC
+ECDH_compute_key 3644 1_1_0 EXIST::FUNCTION:EC
+STORE_ATTR_INFO_get0_sha1str 3645 1_1_0 NOEXIST::FUNCTION:
+ENGINE_register_all_ECDH 3646 1_1_0 NOEXIST::FUNCTION:
+pqueue_pop 3647 1_1_0 NOEXIST::FUNCTION:
+STORE_ATTR_INFO_get0_cstr 3648 1_1_0 NOEXIST::FUNCTION:
+POLICY_CONSTRAINTS_it 3649 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+POLICY_CONSTRAINTS_it 3649 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+STORE_get_ex_new_index 3650 1_1_0 NOEXIST::FUNCTION:
+EVP_PKEY_get_attr_by_OBJ 3651 1_1_0 EXIST::FUNCTION:
+X509_VERIFY_PARAM_add0_policy 3652 1_1_0 EXIST::FUNCTION:
+BN_GF2m_mod_solve_quad 3653 1_1_0 EXIST::FUNCTION:EC2M
+SHA256 3654 1_1_0 EXIST::FUNCTION:
+i2d_ECPrivateKey_fp 3655 1_1_0 EXIST::FUNCTION:EC,STDIO
+X509_policy_tree_get0_user_policies 3656 1_1_0 EXIST::FUNCTION:
+OPENSSL_DIR_read 3657 1_1_0 EXIST::FUNCTION:
+ENGINE_register_all_ECDSA 3658 1_1_0 NOEXIST::FUNCTION:
+X509_VERIFY_PARAM_lookup 3659 1_1_0 EXIST::FUNCTION:
+EC_POINT_get_affine_coordinates_GF2m 3660 1_1_0 EXIST::FUNCTION:EC,EC2M
+EC_GROUP_dup 3661 1_1_0 EXIST::FUNCTION:EC
+ENGINE_get_default_ECDSA 3662 1_1_0 NOEXIST::FUNCTION:
+EC_KEY_new 3663 1_1_0 EXIST::FUNCTION:EC
+SHA256_Transform 3664 1_1_0 EXIST::FUNCTION:
+EC_KEY_set_enc_flags 3665 1_1_0 EXIST::FUNCTION:EC
+ECDSA_verify 3666 1_1_0 EXIST::FUNCTION:EC
+EC_POINT_point2hex 3667 1_1_0 EXIST::FUNCTION:EC
+ENGINE_get_STORE 3668 1_1_0 NOEXIST::FUNCTION:
+SHA512 3669 1_1_0 EXIST:!VMSVAX:FUNCTION:
+STORE_get_certificate 3670 1_1_0 NOEXIST::FUNCTION:
+ECDSA_do_sign_ex 3671 1_1_0 EXIST::FUNCTION:EC
+ECDSA_do_verify 3672 1_1_0 EXIST::FUNCTION:EC
+d2i_ECPrivateKey_fp 3673 1_1_0 EXIST::FUNCTION:EC,STDIO
+STORE_delete_certificate 3674 1_1_0 NOEXIST::FUNCTION:
+SHA512_Transform 3675 1_1_0 EXIST:!VMSVAX:FUNCTION:
+X509_STORE_set1_param 3676 1_1_0 EXIST::FUNCTION:
+STORE_method_get_ctrl_function 3677 1_1_0 NOEXIST::FUNCTION:
+STORE_free 3678 1_1_0 NOEXIST::FUNCTION:
+PEM_write_ECPrivateKey 3679 1_1_0 EXIST::FUNCTION:EC
+STORE_method_get_unlock_store_function 3680 1_1_0 NOEXIST::FUNCTION:
+STORE_get_ex_data 3681 1_1_0 NOEXIST::FUNCTION:
+EC_KEY_set_public_key 3682 1_1_0 EXIST::FUNCTION:EC
+PEM_read_ECPKParameters 3683 1_1_0 EXIST::FUNCTION:EC
+X509_CERT_PAIR_new 3684 1_1_0 NOEXIST::FUNCTION:
+ENGINE_register_STORE 3685 1_1_0 NOEXIST::FUNCTION:
+RSA_generate_key_ex 3686 1_1_0 EXIST::FUNCTION:RSA
+DSA_generate_parameters_ex 3687 1_1_0 EXIST::FUNCTION:DSA
+ECParameters_print_fp 3688 1_1_0 EXIST::FUNCTION:EC,STDIO
+X509V3_NAME_from_section 3689 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_add1_attr 3690 1_1_0 EXIST::FUNCTION:
+STORE_modify_crl 3691 1_1_0 NOEXIST::FUNCTION:
+STORE_list_private_key_start 3692 1_1_0 NOEXIST::FUNCTION:
+POLICY_MAPPINGS_it 3693 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+POLICY_MAPPINGS_it 3693 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+GENERAL_SUBTREE_it 3694 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+GENERAL_SUBTREE_it 3694 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+EC_GROUP_get_curve_name 3695 1_1_0 EXIST::FUNCTION:EC
+PEM_write_X509_CERT_PAIR 3696 1_1_0 NOEXIST::FUNCTION:
+BIO_dump_indent_cb 3697 1_1_0 EXIST::FUNCTION:
+d2i_X509_CERT_PAIR 3698 1_1_0 NOEXIST::FUNCTION:
+STORE_list_private_key_endp 3699 1_1_0 NOEXIST::FUNCTION:
+asn1_const_Finish 3700 1_1_0 NOEXIST::FUNCTION:
+i2d_EC_PUBKEY_fp 3701 1_1_0 EXIST::FUNCTION:EC,STDIO
+BN_nist_mod_256 3702 1_1_0 EXIST::FUNCTION:
+X509_VERIFY_PARAM_add0_table 3703 1_1_0 EXIST::FUNCTION:
+pqueue_free 3704 1_1_0 NOEXIST::FUNCTION:
+BN_BLINDING_create_param 3705 1_1_0 EXIST::FUNCTION:
+ECDSA_size 3706 1_1_0 EXIST::FUNCTION:EC
+d2i_EC_PUBKEY_bio 3707 1_1_0 EXIST::FUNCTION:EC
+BN_get0_nist_prime_521 3708 1_1_0 EXIST::FUNCTION:
+STORE_ATTR_INFO_modify_sha1str 3709 1_1_0 NOEXIST::FUNCTION:
+BN_generate_prime_ex 3710 1_1_0 EXIST::FUNCTION:
+EC_GROUP_new_by_curve_name 3711 1_1_0 EXIST::FUNCTION:EC
+SHA256_Final 3712 1_1_0 EXIST::FUNCTION:
+DH_generate_parameters_ex 3713 1_1_0 EXIST::FUNCTION:DH
+PEM_read_bio_ECPrivateKey 3714 1_1_0 EXIST::FUNCTION:EC
+STORE_method_get_cleanup_function 3715 1_1_0 NOEXIST::FUNCTION:
+ENGINE_get_ECDH 3716 1_1_0 NOEXIST::FUNCTION:
+d2i_ECDSA_SIG 3717 1_1_0 EXIST::FUNCTION:EC
+BN_is_prime_fasttest_ex 3718 1_1_0 EXIST::FUNCTION:
+ECDSA_sign 3719 1_1_0 EXIST::FUNCTION:EC
+X509_policy_check 3720 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_get_attr_by_NID 3721 1_1_0 EXIST::FUNCTION:
+STORE_set_ex_data 3722 1_1_0 NOEXIST::FUNCTION:
+ENGINE_get_ECDSA 3723 1_1_0 NOEXIST::FUNCTION:
+EVP_ecdsa 3724 1_1_0 NOEXIST::FUNCTION:
+BN_BLINDING_get_flags 3725 1_1_0 EXIST::FUNCTION:
+PKCS12_add_cert 3726 1_1_0 EXIST::FUNCTION:
+STORE_OBJECT_new 3727 1_1_0 NOEXIST::FUNCTION:
+ERR_load_ECDH_strings 3728 1_1_0 NOEXIST::FUNCTION:
+EC_KEY_dup 3729 1_1_0 EXIST::FUNCTION:EC
+EVP_CIPHER_CTX_rand_key 3730 1_1_0 EXIST::FUNCTION:
+ECDSA_set_method 3731 1_1_0 NOEXIST::FUNCTION:
+a2i_IPADDRESS_NC 3732 1_1_0 EXIST::FUNCTION:
+d2i_ECParameters 3733 1_1_0 EXIST::FUNCTION:EC
+STORE_list_certificate_end 3734 1_1_0 NOEXIST::FUNCTION:
+STORE_get_crl 3735 1_1_0 NOEXIST::FUNCTION:
+X509_POLICY_NODE_print 3736 1_1_0 EXIST::FUNCTION:
+SHA384_Init 3737 1_1_0 EXIST:!VMSVAX:FUNCTION:
+EC_GF2m_simple_method 3738 1_1_0 EXIST::FUNCTION:EC,EC2M
+ECDSA_set_ex_data 3739 1_1_0 NOEXIST::FUNCTION:
+SHA384_Final 3740 1_1_0 EXIST:!VMSVAX:FUNCTION:
+PKCS7_set_digest 3741 1_1_0 EXIST::FUNCTION:
+EC_KEY_print 3742 1_1_0 EXIST::FUNCTION:EC
+STORE_meth_set_lock_store_fn 3743 1_1_0 NOEXIST::FUNCTION:
+STORE_method_set_lock_store_function 3743 1_1_0 NOEXIST::FUNCTION:
+ECDSA_get_ex_new_index 3744 1_1_0 NOEXIST::FUNCTION:
+SHA384 3745 1_1_0 EXIST:!VMSVAX:FUNCTION:
+POLICY_MAPPING_new 3746 1_1_0 EXIST::FUNCTION:
+STORE_list_certificate_endp 3747 1_1_0 NOEXIST::FUNCTION:
+X509_STORE_CTX_get0_policy_tree 3748 1_1_0 EXIST::FUNCTION:
+EC_GROUP_set_asn1_flag 3749 1_1_0 EXIST::FUNCTION:EC
+EC_KEY_check_key 3750 1_1_0 EXIST::FUNCTION:EC
+d2i_EC_PUBKEY_fp 3751 1_1_0 EXIST::FUNCTION:EC,STDIO
+PKCS7_set0_type_other 3752 1_1_0 EXIST::FUNCTION:
+PEM_read_bio_X509_CERT_PAIR 3753 1_1_0 NOEXIST::FUNCTION:
+pqueue_next 3754 1_1_0 NOEXIST::FUNCTION:
+STORE_method_get_list_end_function 3755 1_1_0 NOEXIST::FUNCTION:
+EVP_PKEY_add1_attr_by_OBJ 3756 1_1_0 EXIST::FUNCTION:
+X509_VERIFY_PARAM_set_time 3757 1_1_0 EXIST::FUNCTION:
+pqueue_new 3758 1_1_0 NOEXIST::FUNCTION:
+ENGINE_set_default_ECDH 3759 1_1_0 NOEXIST::FUNCTION:
+STORE_new_method 3760 1_1_0 NOEXIST::FUNCTION:
+PKCS12_add_key 3761 1_1_0 EXIST::FUNCTION:
+DSO_merge 3762 1_1_0 EXIST::FUNCTION:
+EC_POINT_hex2point 3763 1_1_0 EXIST::FUNCTION:EC
+BIO_dump_cb 3764 1_1_0 EXIST::FUNCTION:
+SHA256_Update 3765 1_1_0 EXIST::FUNCTION:
+pqueue_insert 3766 1_1_0 NOEXIST::FUNCTION:
+pitem_free 3767 1_1_0 NOEXIST::FUNCTION:
+BN_GF2m_mod_inv_arr 3768 1_1_0 EXIST::FUNCTION:EC2M
+ENGINE_unregister_ECDSA 3769 1_1_0 NOEXIST::FUNCTION:
+BN_BLINDING_set_thread_id 3770 1_1_0 EXIST::FUNCTION:DEPRECATEDIN_1_0_0
+get_rfc3526_prime_8192 3771 1_1_0 EXIST::FUNCTION:
+X509_VERIFY_PARAM_clear_flags 3772 1_1_0 EXIST::FUNCTION:
+get_rfc2409_prime_1024 3773 1_1_0 EXIST::FUNCTION:
+DH_check_pub_key 3774 1_1_0 EXIST::FUNCTION:DH
+get_rfc3526_prime_2048 3775 1_1_0 EXIST::FUNCTION:
+get_rfc3526_prime_6144 3776 1_1_0 EXIST::FUNCTION:
+get_rfc3526_prime_1536 3777 1_1_0 EXIST::FUNCTION:
+get_rfc3526_prime_3072 3778 1_1_0 EXIST::FUNCTION:
+get_rfc3526_prime_4096 3779 1_1_0 EXIST::FUNCTION:
+get_rfc2409_prime_768 3780 1_1_0 EXIST::FUNCTION:
+X509_VERIFY_PARAM_get_flags 3781 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_CTX_new 3782 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_CTX_free 3783 1_1_0 EXIST::FUNCTION:
+Camellia_cbc_encrypt 3784 1_1_0 EXIST::FUNCTION:CAMELLIA
+Camellia_cfb128_encrypt 3785 1_1_0 EXIST::FUNCTION:CAMELLIA
+Camellia_cfb1_encrypt 3786 1_1_0 EXIST::FUNCTION:CAMELLIA
+Camellia_cfb8_encrypt 3787 1_1_0 EXIST::FUNCTION:CAMELLIA
+Camellia_ctr128_encrypt 3788 1_1_0 EXIST::FUNCTION:CAMELLIA
+Camellia_cfbr_encrypt_block 3789 1_1_0 NOEXIST::FUNCTION:
+Camellia_decrypt 3790 1_1_0 EXIST::FUNCTION:CAMELLIA
+Camellia_ecb_encrypt 3791 1_1_0 EXIST::FUNCTION:CAMELLIA
+Camellia_encrypt 3792 1_1_0 EXIST::FUNCTION:CAMELLIA
+Camellia_ofb128_encrypt 3793 1_1_0 EXIST::FUNCTION:CAMELLIA
+Camellia_set_key 3794 1_1_0 EXIST::FUNCTION:CAMELLIA
+EVP_camellia_128_cbc 3795 1_1_0 EXIST::FUNCTION:CAMELLIA
+EVP_camellia_128_cfb128 3796 1_1_0 EXIST::FUNCTION:CAMELLIA
+EVP_camellia_128_cfb1 3797 1_1_0 EXIST::FUNCTION:CAMELLIA
+EVP_camellia_128_cfb8 3798 1_1_0 EXIST::FUNCTION:CAMELLIA
+EVP_camellia_128_ecb 3799 1_1_0 EXIST::FUNCTION:CAMELLIA
+EVP_camellia_128_ofb 3800 1_1_0 EXIST::FUNCTION:CAMELLIA
+EVP_camellia_192_cbc 3801 1_1_0 EXIST::FUNCTION:CAMELLIA
+EVP_camellia_192_cfb128 3802 1_1_0 EXIST::FUNCTION:CAMELLIA
+EVP_camellia_192_cfb1 3803 1_1_0 EXIST::FUNCTION:CAMELLIA
+EVP_camellia_192_cfb8 3804 1_1_0 EXIST::FUNCTION:CAMELLIA
+EVP_camellia_192_ecb 3805 1_1_0 EXIST::FUNCTION:CAMELLIA
+EVP_camellia_192_ofb 3806 1_1_0 EXIST::FUNCTION:CAMELLIA
+EVP_camellia_256_cbc 3807 1_1_0 EXIST::FUNCTION:CAMELLIA
+EVP_camellia_256_cfb128 3808 1_1_0 EXIST::FUNCTION:CAMELLIA
+EVP_camellia_256_cfb1 3809 1_1_0 EXIST::FUNCTION:CAMELLIA
+EVP_camellia_256_cfb8 3810 1_1_0 EXIST::FUNCTION:CAMELLIA
+EVP_camellia_256_ecb 3811 1_1_0 EXIST::FUNCTION:CAMELLIA
+EVP_camellia_256_ofb 3812 1_1_0 EXIST::FUNCTION:CAMELLIA
+a2i_ipadd 3813 1_1_0 EXIST::FUNCTION:
+ASIdentifiers_free 3814 1_1_0 EXIST::FUNCTION:RFC3779
+i2d_ASIdOrRange 3815 1_1_0 EXIST::FUNCTION:RFC3779
+EVP_CIPHER_block_size 3816 1_1_0 EXIST::FUNCTION:
+v3_asid_is_canonical 3817 1_1_0 EXIST::FUNCTION:RFC3779
+IPAddressChoice_free 3818 1_1_0 EXIST::FUNCTION:RFC3779
+EVP_CIPHER_CTX_set_app_data 3819 1_1_0 EXIST::FUNCTION:
+BIO_set_callback_arg 3820 1_1_0 EXIST::FUNCTION:
+v3_addr_add_prefix 3821 1_1_0 EXIST::FUNCTION:RFC3779
+IPAddressOrRange_it 3822 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RFC3779
+IPAddressOrRange_it 3822 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RFC3779
+BIO_set_flags 3823 1_1_0 EXIST::FUNCTION:
+ASIdentifiers_it 3824 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RFC3779
+ASIdentifiers_it 3824 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RFC3779
+v3_addr_get_range 3825 1_1_0 EXIST::FUNCTION:RFC3779
+BIO_method_type 3826 1_1_0 EXIST::FUNCTION:
+v3_addr_inherits 3827 1_1_0 EXIST::FUNCTION:RFC3779
+IPAddressChoice_it 3828 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RFC3779
+IPAddressChoice_it 3828 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RFC3779
+AES_ige_encrypt 3829 1_1_0 EXIST::FUNCTION:AES
+v3_addr_add_range 3830 1_1_0 EXIST::FUNCTION:RFC3779
+EVP_CIPHER_CTX_nid 3831 1_1_0 EXIST::FUNCTION:
+d2i_ASRange 3832 1_1_0 EXIST::FUNCTION:RFC3779
+v3_addr_add_inherit 3833 1_1_0 EXIST::FUNCTION:RFC3779
+v3_asid_add_id_or_range 3834 1_1_0 EXIST::FUNCTION:RFC3779
+v3_addr_validate_resource_set 3835 1_1_0 EXIST::FUNCTION:RFC3779
+EVP_CIPHER_iv_length 3836 1_1_0 EXIST::FUNCTION:
+EVP_MD_type 3837 1_1_0 EXIST::FUNCTION:
+v3_asid_canonize 3838 1_1_0 EXIST::FUNCTION:RFC3779
+IPAddressRange_free 3839 1_1_0 EXIST::FUNCTION:RFC3779
+v3_asid_add_inherit 3840 1_1_0 EXIST::FUNCTION:RFC3779
+EVP_CIPHER_CTX_key_length 3841 1_1_0 EXIST::FUNCTION:
+IPAddressRange_new 3842 1_1_0 EXIST::FUNCTION:RFC3779
+ASIdOrRange_new 3843 1_1_0 EXIST::FUNCTION:RFC3779
+EVP_MD_size 3844 1_1_0 EXIST::FUNCTION:
+EVP_MD_CTX_test_flags 3845 1_1_0 EXIST::FUNCTION:
+BIO_clear_flags 3846 1_1_0 EXIST::FUNCTION:
+i2d_ASRange 3847 1_1_0 EXIST::FUNCTION:RFC3779
+IPAddressRange_it 3848 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RFC3779
+IPAddressRange_it 3848 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RFC3779
+IPAddressChoice_new 3849 1_1_0 EXIST::FUNCTION:RFC3779
+ASIdentifierChoice_new 3850 1_1_0 EXIST::FUNCTION:RFC3779
+ASRange_free 3851 1_1_0 EXIST::FUNCTION:RFC3779
+EVP_MD_pkey_type 3852 1_1_0 EXIST::FUNCTION:
+EVP_MD_CTX_clear_flags 3853 1_1_0 EXIST::FUNCTION:
+IPAddressFamily_free 3854 1_1_0 EXIST::FUNCTION:RFC3779
+i2d_IPAddressFamily 3855 1_1_0 EXIST::FUNCTION:RFC3779
+IPAddressOrRange_new 3856 1_1_0 EXIST::FUNCTION:RFC3779
+EVP_CIPHER_flags 3857 1_1_0 EXIST::FUNCTION:
+v3_asid_validate_resource_set 3858 1_1_0 EXIST::FUNCTION:RFC3779
+d2i_IPAddressRange 3859 1_1_0 EXIST::FUNCTION:RFC3779
+AES_bi_ige_encrypt 3860 1_1_0 EXIST::FUNCTION:AES
+BIO_get_callback 3861 1_1_0 EXIST::FUNCTION:
+IPAddressOrRange_free 3862 1_1_0 EXIST::FUNCTION:RFC3779
+v3_addr_subset 3863 1_1_0 EXIST::FUNCTION:RFC3779
+d2i_IPAddressFamily 3864 1_1_0 EXIST::FUNCTION:RFC3779
+v3_asid_subset 3865 1_1_0 EXIST::FUNCTION:RFC3779
+BIO_test_flags 3866 1_1_0 EXIST::FUNCTION:
+i2d_ASIdentifierChoice 3867 1_1_0 EXIST::FUNCTION:RFC3779
+ASRange_it 3868 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RFC3779
+ASRange_it 3868 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RFC3779
+d2i_ASIdentifiers 3869 1_1_0 EXIST::FUNCTION:RFC3779
+ASRange_new 3870 1_1_0 EXIST::FUNCTION:RFC3779
+d2i_IPAddressChoice 3871 1_1_0 EXIST::FUNCTION:RFC3779
+v3_addr_get_afi 3872 1_1_0 EXIST::FUNCTION:RFC3779
+EVP_CIPHER_key_length 3873 1_1_0 EXIST::FUNCTION:
+EVP_Cipher 3874 1_1_0 EXIST::FUNCTION:
+i2d_IPAddressOrRange 3875 1_1_0 EXIST::FUNCTION:RFC3779
+ASIdOrRange_it 3876 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RFC3779
+ASIdOrRange_it 3876 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RFC3779
+EVP_CIPHER_nid 3877 1_1_0 EXIST::FUNCTION:
+i2d_IPAddressChoice 3878 1_1_0 EXIST::FUNCTION:RFC3779
+EVP_CIPHER_CTX_block_size 3879 1_1_0 EXIST::FUNCTION:
+ASIdentifiers_new 3880 1_1_0 EXIST::FUNCTION:RFC3779
+v3_addr_validate_path 3881 1_1_0 EXIST::FUNCTION:RFC3779
+IPAddressFamily_new 3882 1_1_0 EXIST::FUNCTION:RFC3779
+EVP_MD_CTX_set_flags 3883 1_1_0 EXIST::FUNCTION:
+v3_addr_is_canonical 3884 1_1_0 EXIST::FUNCTION:RFC3779
+i2d_IPAddressRange 3885 1_1_0 EXIST::FUNCTION:RFC3779
+IPAddressFamily_it 3886 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RFC3779
+IPAddressFamily_it 3886 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RFC3779
+v3_asid_inherits 3887 1_1_0 EXIST::FUNCTION:RFC3779
+EVP_CIPHER_CTX_cipher 3888 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_CTX_get_app_data 3889 1_1_0 EXIST::FUNCTION:
+EVP_MD_block_size 3890 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_CTX_flags 3891 1_1_0 NOEXIST::FUNCTION:
+v3_asid_validate_path 3892 1_1_0 EXIST::FUNCTION:RFC3779
+d2i_IPAddressOrRange 3893 1_1_0 EXIST::FUNCTION:RFC3779
+v3_addr_canonize 3894 1_1_0 EXIST::FUNCTION:RFC3779
+ASIdentifierChoice_it 3895 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RFC3779
+ASIdentifierChoice_it 3895 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RFC3779
+EVP_MD_CTX_md 3896 1_1_0 EXIST::FUNCTION:
+d2i_ASIdentifierChoice 3897 1_1_0 EXIST::FUNCTION:RFC3779
+BIO_method_name 3898 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_CTX_iv_length 3899 1_1_0 EXIST::FUNCTION:
+ASIdOrRange_free 3900 1_1_0 EXIST::FUNCTION:RFC3779
+ASIdentifierChoice_free 3901 1_1_0 EXIST::FUNCTION:RFC3779
+BIO_get_callback_arg 3902 1_1_0 EXIST::FUNCTION:
+BIO_set_callback 3903 1_1_0 EXIST::FUNCTION:
+d2i_ASIdOrRange 3904 1_1_0 EXIST::FUNCTION:RFC3779
+i2d_ASIdentifiers 3905 1_1_0 EXIST::FUNCTION:RFC3779
+CRYPTO_memcmp 3906 1_1_0 EXIST::FUNCTION:
+BN_consttime_swap 3907 1_1_0 EXIST::FUNCTION:
+SEED_decrypt 3908 1_1_0 EXIST::FUNCTION:SEED
+SEED_encrypt 3909 1_1_0 EXIST::FUNCTION:SEED
+SEED_cbc_encrypt 3910 1_1_0 EXIST::FUNCTION:SEED
+EVP_seed_ofb 3911 1_1_0 EXIST::FUNCTION:SEED
+SEED_cfb128_encrypt 3912 1_1_0 EXIST::FUNCTION:SEED
+SEED_ofb128_encrypt 3913 1_1_0 EXIST::FUNCTION:SEED
+EVP_seed_cbc 3914 1_1_0 EXIST::FUNCTION:SEED
+SEED_ecb_encrypt 3915 1_1_0 EXIST::FUNCTION:SEED
+EVP_seed_ecb 3916 1_1_0 EXIST::FUNCTION:SEED
+SEED_set_key 3917 1_1_0 EXIST::FUNCTION:SEED
+EVP_seed_cfb128 3918 1_1_0 EXIST::FUNCTION:SEED
+X509_EXTENSIONS_it 3919 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+X509_EXTENSIONS_it 3919 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+X509_get1_ocsp 3920 1_1_0 EXIST::FUNCTION:
+OCSP_REQ_CTX_free 3921 1_1_0 EXIST::FUNCTION:
+i2d_X509_EXTENSIONS 3922 1_1_0 EXIST::FUNCTION:
+OCSP_sendreq_nbio 3923 1_1_0 EXIST::FUNCTION:
+OCSP_sendreq_new 3924 1_1_0 EXIST::FUNCTION:
+d2i_X509_EXTENSIONS 3925 1_1_0 EXIST::FUNCTION:
+X509_ALGORS_it 3926 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+X509_ALGORS_it 3926 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+X509_ALGOR_get0 3927 1_1_0 EXIST::FUNCTION:
+X509_ALGOR_set0 3928 1_1_0 EXIST::FUNCTION:
+AES_unwrap_key 3929 1_1_0 EXIST::FUNCTION:AES
+AES_wrap_key 3930 1_1_0 EXIST::FUNCTION:AES
+X509at_get0_data_by_OBJ 3931 1_1_0 EXIST::FUNCTION:
+ASN1_TYPE_set1 3932 1_1_0 EXIST::FUNCTION:
+ASN1_STRING_set0 3933 1_1_0 EXIST::FUNCTION:
+i2d_X509_ALGORS 3934 1_1_0 EXIST::FUNCTION:
+BIO_f_zlib 3935 1_1_0 EXIST:ZLIB:FUNCTION:
+COMP_zlib_cleanup 3936 1_1_0 EXIST::FUNCTION:
+d2i_X509_ALGORS 3937 1_1_0 EXIST::FUNCTION:
+CMS_ReceiptRequest_free 3938 1_1_0 EXIST::FUNCTION:CMS
+PEM_write_CMS 3939 1_1_0 EXIST::FUNCTION:CMS
+CMS_add0_CertificateChoices 3940 1_1_0 EXIST::FUNCTION:CMS
+CMS_unsigned_add1_attr_by_OBJ 3941 1_1_0 EXIST::FUNCTION:CMS
+ERR_load_CMS_strings 3942 1_1_0 EXIST::FUNCTION:CMS
+CMS_sign_receipt 3943 1_1_0 EXIST::FUNCTION:CMS
+i2d_CMS_ContentInfo 3944 1_1_0 EXIST::FUNCTION:CMS
+CMS_signed_delete_attr 3945 1_1_0 EXIST::FUNCTION:CMS
+d2i_CMS_bio 3946 1_1_0 EXIST::FUNCTION:CMS
+CMS_unsigned_get_attr_by_NID 3947 1_1_0 EXIST::FUNCTION:CMS
+CMS_verify 3948 1_1_0 EXIST::FUNCTION:CMS
+SMIME_read_CMS 3949 1_1_0 EXIST::FUNCTION:CMS
+CMS_decrypt_set1_key 3950 1_1_0 EXIST::FUNCTION:CMS
+CMS_SignerInfo_get0_algs 3951 1_1_0 EXIST::FUNCTION:CMS
+CMS_add1_cert 3952 1_1_0 EXIST::FUNCTION:CMS
+CMS_set_detached 3953 1_1_0 EXIST::FUNCTION:CMS
+CMS_encrypt 3954 1_1_0 EXIST::FUNCTION:CMS
+CMS_EnvelopedData_create 3955 1_1_0 EXIST::FUNCTION:CMS
+CMS_uncompress 3956 1_1_0 EXIST::FUNCTION:CMS
+CMS_add0_crl 3957 1_1_0 EXIST::FUNCTION:CMS
+CMS_SignerInfo_verify_content 3958 1_1_0 EXIST::FUNCTION:CMS
+CMS_unsigned_get0_data_by_OBJ 3959 1_1_0 EXIST::FUNCTION:CMS
+PEM_write_bio_CMS 3960 1_1_0 EXIST::FUNCTION:CMS
+CMS_unsigned_get_attr 3961 1_1_0 EXIST::FUNCTION:CMS
+CMS_RecipientInfo_ktri_cert_cmp 3962 1_1_0 EXIST::FUNCTION:CMS
+CMS_RecipientInfo_ktri_get0_algs 3963 1_1_0 EXIST::FUNCTION:CMS
+CMS_ContentInfo_free 3964 1_1_0 EXIST::FUNCTION:CMS
+CMS_final 3965 1_1_0 EXIST::FUNCTION:CMS
+CMS_add_simple_smimecap 3966 1_1_0 EXIST::FUNCTION:CMS
+CMS_SignerInfo_verify 3967 1_1_0 EXIST::FUNCTION:CMS
+CMS_data 3968 1_1_0 EXIST::FUNCTION:CMS
+CMS_ContentInfo_it 3969 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:CMS
+CMS_ContentInfo_it 3969 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:CMS
+d2i_CMS_ReceiptRequest 3970 1_1_0 EXIST::FUNCTION:CMS
+CMS_compress 3971 1_1_0 EXIST::FUNCTION:CMS
+CMS_digest_create 3972 1_1_0 EXIST::FUNCTION:CMS
+CMS_SignerInfo_cert_cmp 3973 1_1_0 EXIST::FUNCTION:CMS
+CMS_SignerInfo_sign 3974 1_1_0 EXIST::FUNCTION:CMS
+CMS_data_create 3975 1_1_0 EXIST::FUNCTION:CMS
+i2d_CMS_bio 3976 1_1_0 EXIST::FUNCTION:CMS
+CMS_EncryptedData_set1_key 3977 1_1_0 EXIST::FUNCTION:CMS
+CMS_decrypt 3978 1_1_0 EXIST::FUNCTION:CMS
+int_smime_write_ASN1 3979 1_1_0 NOEXIST::FUNCTION:
+CMS_unsigned_delete_attr 3980 1_1_0 EXIST::FUNCTION:CMS
+CMS_unsigned_get_attr_count 3981 1_1_0 EXIST::FUNCTION:CMS
+CMS_add_smimecap 3982 1_1_0 EXIST::FUNCTION:CMS
+PEM_read_CMS 3983 1_1_0 EXIST::FUNCTION:CMS
+CMS_signed_get_attr_by_OBJ 3984 1_1_0 EXIST::FUNCTION:CMS
+d2i_CMS_ContentInfo 3985 1_1_0 EXIST::FUNCTION:CMS
+CMS_add_standard_smimecap 3986 1_1_0 EXIST::FUNCTION:CMS
+CMS_ContentInfo_new 3987 1_1_0 EXIST::FUNCTION:CMS
+CMS_RecipientInfo_type 3988 1_1_0 EXIST::FUNCTION:CMS
+CMS_get0_type 3989 1_1_0 EXIST::FUNCTION:CMS
+CMS_is_detached 3990 1_1_0 EXIST::FUNCTION:CMS
+CMS_sign 3991 1_1_0 EXIST::FUNCTION:CMS
+CMS_signed_add1_attr 3992 1_1_0 EXIST::FUNCTION:CMS
+CMS_unsigned_get_attr_by_OBJ 3993 1_1_0 EXIST::FUNCTION:CMS
+SMIME_write_CMS 3994 1_1_0 EXIST::FUNCTION:CMS
+CMS_EncryptedData_decrypt 3995 1_1_0 EXIST::FUNCTION:CMS
+CMS_get0_RecipientInfos 3996 1_1_0 EXIST::FUNCTION:CMS
+CMS_add0_RevocationInfoChoice 3997 1_1_0 EXIST::FUNCTION:CMS
+CMS_decrypt_set1_pkey 3998 1_1_0 EXIST::FUNCTION:CMS
+CMS_SignerInfo_set1_signer_cert 3999 1_1_0 EXIST::FUNCTION:CMS
+CMS_get0_signers 4000 1_1_0 EXIST::FUNCTION:CMS
+CMS_ReceiptRequest_get0_values 4001 1_1_0 EXIST::FUNCTION:CMS
+CMS_signed_get0_data_by_OBJ 4002 1_1_0 EXIST::FUNCTION:CMS
+CMS_get0_SignerInfos 4003 1_1_0 EXIST::FUNCTION:CMS
+CMS_add0_cert 4004 1_1_0 EXIST::FUNCTION:CMS
+CMS_EncryptedData_encrypt 4005 1_1_0 EXIST::FUNCTION:CMS
+CMS_digest_verify 4006 1_1_0 EXIST::FUNCTION:CMS
+CMS_set1_signers_certs 4007 1_1_0 EXIST::FUNCTION:CMS
+CMS_signed_get_attr 4008 1_1_0 EXIST::FUNCTION:CMS
+CMS_RecipientInfo_set0_key 4009 1_1_0 EXIST::FUNCTION:CMS
+CMS_SignedData_init 4010 1_1_0 EXIST::FUNCTION:CMS
+CMS_RecipientInfo_kekri_get0_id 4011 1_1_0 EXIST::FUNCTION:CMS
+CMS_verify_receipt 4012 1_1_0 EXIST::FUNCTION:CMS
+CMS_ReceiptRequest_it 4013 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:CMS
+CMS_ReceiptRequest_it 4013 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:CMS
+PEM_read_bio_CMS 4014 1_1_0 EXIST::FUNCTION:CMS
+CMS_get1_crls 4015 1_1_0 EXIST::FUNCTION:CMS
+CMS_add0_recipient_key 4016 1_1_0 EXIST::FUNCTION:CMS
+SMIME_read_ASN1 4017 1_1_0 EXIST::FUNCTION:
+CMS_ReceiptRequest_new 4018 1_1_0 EXIST::FUNCTION:CMS
+CMS_get0_content 4019 1_1_0 EXIST::FUNCTION:CMS
+CMS_get1_ReceiptRequest 4020 1_1_0 EXIST::FUNCTION:CMS
+CMS_signed_add1_attr_by_OBJ 4021 1_1_0 EXIST::FUNCTION:CMS
+CMS_RecipientInfo_kekri_id_cmp 4022 1_1_0 EXIST::FUNCTION:CMS
+CMS_add1_ReceiptRequest 4023 1_1_0 EXIST::FUNCTION:CMS
+CMS_SignerInfo_get0_signer_id 4024 1_1_0 EXIST::FUNCTION:CMS
+CMS_unsigned_add1_attr_by_NID 4025 1_1_0 EXIST::FUNCTION:CMS
+CMS_unsigned_add1_attr 4026 1_1_0 EXIST::FUNCTION:CMS
+CMS_signed_get_attr_by_NID 4027 1_1_0 EXIST::FUNCTION:CMS
+CMS_get1_certs 4028 1_1_0 EXIST::FUNCTION:CMS
+CMS_signed_add1_attr_by_NID 4029 1_1_0 EXIST::FUNCTION:CMS
+CMS_unsigned_add1_attr_by_txt 4030 1_1_0 EXIST::FUNCTION:CMS
+CMS_dataFinal 4031 1_1_0 EXIST::FUNCTION:CMS
+CMS_RecipientInfo_ktri_get0_signer_id 4032 1_1_0 EXIST::FUNCTION:CMS
+i2d_CMS_ReceiptRequest 4033 1_1_0 EXIST::FUNCTION:CMS
+CMS_add1_recipient_cert 4034 1_1_0 EXIST::FUNCTION:CMS
+CMS_dataInit 4035 1_1_0 EXIST::FUNCTION:CMS
+CMS_signed_add1_attr_by_txt 4036 1_1_0 EXIST::FUNCTION:CMS
+CMS_RecipientInfo_decrypt 4037 1_1_0 EXIST::FUNCTION:CMS
+CMS_signed_get_attr_count 4038 1_1_0 EXIST::FUNCTION:CMS
+CMS_get0_eContentType 4039 1_1_0 EXIST::FUNCTION:CMS
+CMS_set1_eContentType 4040 1_1_0 EXIST::FUNCTION:CMS
+CMS_ReceiptRequest_create0 4041 1_1_0 EXIST::FUNCTION:CMS
+CMS_add1_signer 4042 1_1_0 EXIST::FUNCTION:CMS
+CMS_RecipientInfo_set0_pkey 4043 1_1_0 EXIST::FUNCTION:CMS
+ENGINE_set_load_ssl_client_cert_function 4044 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_get_ssl_client_cert_function 4045 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_load_ssl_client_cert 4046 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_load_capi 4047 1_1_0 NOEXIST::FUNCTION:
+OPENSSL_isservice 4048 1_1_0 EXIST::FUNCTION:
+FIPS_dsa_sig_decode 4049 1_1_0 NOEXIST::FUNCTION:
+EVP_CIPHER_CTX_clear_flags 4050 1_1_0 EXIST::FUNCTION:
+FIPS_rand_status 4051 1_1_0 NOEXIST::FUNCTION:
+FIPS_rand_set_key 4052 1_1_0 NOEXIST::FUNCTION:
+RSA_X931_generate_key_ex 4054 1_1_0 EXIST::FUNCTION:RSA
+int_ERR_set_state_func 4055 1_1_0 NOEXIST::FUNCTION:
+int_EVP_MD_set_engine_callbacks 4056 1_1_0 NOEXIST::FUNCTION:
+int_CRYPTO_set_do_dynlock_callback 4057 1_1_0 NOEXIST::FUNCTION:
+FIPS_rng_stick 4058 1_1_0 NOEXIST::FUNCTION:
+EVP_CIPHER_CTX_set_flags 4059 1_1_0 EXIST::FUNCTION:
+BN_X931_generate_prime_ex 4060 1_1_0 EXIST::FUNCTION:
+FIPS_selftest_check 4061 1_1_0 NOEXIST::FUNCTION:
+FIPS_rand_set_dt 4062 1_1_0 NOEXIST::FUNCTION:
+CRYPTO_dbg_pop_info 4063 1_1_0 NOEXIST::FUNCTION:
+FIPS_dsa_free 4064 1_1_0 NOEXIST::FUNCTION:
+RSA_X931_derive_ex 4065 1_1_0 EXIST::FUNCTION:RSA
+FIPS_rsa_new 4066 1_1_0 NOEXIST::FUNCTION:
+FIPS_rand_bytes 4067 1_1_0 NOEXIST::FUNCTION:
+fips_cipher_test 4068 1_1_0 NOEXIST::FUNCTION:
+EVP_CIPHER_CTX_test_flags 4069 1_1_0 EXIST::FUNCTION:
+CRYPTO_malloc_debug_init 4070 1_1_0 NOEXIST::FUNCTION:
+CRYPTO_dbg_push_info 4071 1_1_0 NOEXIST::FUNCTION:
+FIPS_corrupt_rsa_keygen 4072 1_1_0 NOEXIST::FUNCTION:
+FIPS_dh_new 4073 1_1_0 NOEXIST::FUNCTION:
+FIPS_corrupt_dsa_keygen 4074 1_1_0 NOEXIST::FUNCTION:
+FIPS_dh_free 4075 1_1_0 NOEXIST::FUNCTION:
+fips_pkey_signature_test 4076 1_1_0 NOEXIST::FUNCTION:
+EVP_add_alg_module 4077 1_1_0 EXIST::FUNCTION:
+int_RAND_init_engine_callbacks 4078 1_1_0 NOEXIST::FUNCTION:
+int_EVP_CIPHER_set_engine_callbacks 4079 1_1_0 NOEXIST::FUNCTION:
+int_EVP_MD_init_engine_callbacks 4080 1_1_0 NOEXIST::FUNCTION:
+FIPS_rand_test_mode 4081 1_1_0 NOEXIST::FUNCTION:
+FIPS_rand_reset 4082 1_1_0 NOEXIST::FUNCTION:
+FIPS_dsa_new 4083 1_1_0 NOEXIST::FUNCTION:
+int_RAND_set_callbacks 4084 1_1_0 NOEXIST::FUNCTION:
+BN_X931_derive_prime_ex 4085 1_1_0 EXIST::FUNCTION:
+int_ERR_lib_init 4086 1_1_0 NOEXIST::FUNCTION:
+int_EVP_CIPHER_init_engine_callbacks 4087 1_1_0 NOEXIST::FUNCTION:
+FIPS_rsa_free 4088 1_1_0 NOEXIST::FUNCTION:
+FIPS_dsa_sig_encode 4089 1_1_0 NOEXIST::FUNCTION:
+CRYPTO_dbg_remove_all_info 4090 1_1_0 NOEXIST::FUNCTION:
+OPENSSL_init 4091 1_1_0 EXIST::FUNCTION:
+private_Camellia_set_key 4092 1_1_0 NOEXIST::FUNCTION:
+CRYPTO_strdup 4093 1_1_0 EXIST::FUNCTION:
+JPAKE_STEP3A_process 4094 1_1_0 EXIST::FUNCTION:JPAKE
+JPAKE_STEP1_release 4095 1_1_0 EXIST::FUNCTION:JPAKE
+JPAKE_get_shared_key 4096 1_1_0 EXIST::FUNCTION:JPAKE
+JPAKE_STEP3B_init 4097 1_1_0 EXIST::FUNCTION:JPAKE
+JPAKE_STEP1_generate 4098 1_1_0 EXIST::FUNCTION:JPAKE
+JPAKE_STEP1_init 4099 1_1_0 EXIST::FUNCTION:JPAKE
+JPAKE_STEP3B_process 4100 1_1_0 EXIST::FUNCTION:JPAKE
+JPAKE_STEP2_generate 4101 1_1_0 EXIST::FUNCTION:JPAKE
+JPAKE_CTX_new 4102 1_1_0 EXIST::FUNCTION:JPAKE
+JPAKE_CTX_free 4103 1_1_0 EXIST::FUNCTION:JPAKE
+JPAKE_STEP3B_release 4104 1_1_0 EXIST::FUNCTION:JPAKE
+JPAKE_STEP3A_release 4105 1_1_0 EXIST::FUNCTION:JPAKE
+JPAKE_STEP2_process 4106 1_1_0 EXIST::FUNCTION:JPAKE
+JPAKE_STEP3B_generate 4107 1_1_0 EXIST::FUNCTION:JPAKE
+JPAKE_STEP1_process 4108 1_1_0 EXIST::FUNCTION:JPAKE
+JPAKE_STEP3A_generate 4109 1_1_0 EXIST::FUNCTION:JPAKE
+JPAKE_STEP2_release 4110 1_1_0 EXIST::FUNCTION:JPAKE
+JPAKE_STEP3A_init 4111 1_1_0 EXIST::FUNCTION:JPAKE
+ERR_load_JPAKE_strings 4112 1_1_0 EXIST::FUNCTION:JPAKE
+JPAKE_STEP2_init 4113 1_1_0 EXIST::FUNCTION:JPAKE
+pqueue_size 4114 1_1_0 NOEXIST::FUNCTION:
+i2d_TS_ACCURACY 4115 1_1_0 EXIST::FUNCTION:
+i2d_TS_MSG_IMPRINT_fp 4116 1_1_0 EXIST::FUNCTION:STDIO
+i2d_TS_MSG_IMPRINT 4117 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_print_public 4118 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_CTX_new 4119 1_1_0 EXIST::FUNCTION:
+i2d_TS_TST_INFO 4120 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_asn1_find 4121 1_1_0 EXIST::FUNCTION:
+DSO_METHOD_beos 4122 1_1_0 NOEXIST::FUNCTION:
+TS_CONF_load_cert 4123 1_1_0 EXIST::FUNCTION:
+TS_REQ_get_ext 4124 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_sign_init 4125 1_1_0 EXIST::FUNCTION:
+ASN1_item_print 4126 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_set_nonce 4127 1_1_0 EXIST::FUNCTION:
+TS_RESP_dup 4128 1_1_0 EXIST::FUNCTION:
+ENGINE_register_pkey_meths 4129 1_1_0 EXIST::FUNCTION:ENGINE
+EVP_PKEY_asn1_add0 4130 1_1_0 EXIST::FUNCTION:
+PKCS7_add0_attrib_signing_time 4131 1_1_0 EXIST::FUNCTION:
+i2d_TS_TST_INFO_fp 4132 1_1_0 EXIST::FUNCTION:STDIO
+BIO_asn1_get_prefix 4133 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_set_time 4134 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_set_decrypt 4135 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_set_type_str 4136 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_CTX_get_keygen_info 4137 1_1_0 EXIST::FUNCTION:
+TS_REQ_set_policy_id 4138 1_1_0 EXIST::FUNCTION:
+d2i_TS_RESP_fp 4139 1_1_0 EXIST::FUNCTION:STDIO
+ENGINE_get_pkey_asn1_meth_engine 4140 1_1_0 EXIST::FUNCTION:ENGINE
+WHIRLPOOL_Init 4141 1_1_0 EXIST::FUNCTION:WHIRLPOOL
+TS_RESP_set_status_info 4142 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_keygen 4143 1_1_0 EXIST::FUNCTION:
+EVP_DigestSignInit 4144 1_1_0 EXIST::FUNCTION:
+TS_ACCURACY_set_millis 4145 1_1_0 EXIST::FUNCTION:
+TS_REQ_dup 4146 1_1_0 EXIST::FUNCTION:
+GENERAL_NAME_dup 4147 1_1_0 EXIST::FUNCTION:
+ASN1_SEQUENCE_ANY_it 4148 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ASN1_SEQUENCE_ANY_it 4148 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+WHIRLPOOL 4149 1_1_0 EXIST::FUNCTION:WHIRLPOOL
+X509_STORE_get1_crls 4150 1_1_0 EXIST::FUNCTION:
+ENGINE_get_pkey_asn1_meth 4151 1_1_0 EXIST::FUNCTION:ENGINE
+EVP_PKEY_asn1_new 4152 1_1_0 EXIST::FUNCTION:
+BIO_new_NDEF 4153 1_1_0 EXIST::FUNCTION:
+ENGINE_get_pkey_meth 4154 1_1_0 EXIST::FUNCTION:ENGINE
+TS_MSG_IMPRINT_set_algo 4155 1_1_0 EXIST::FUNCTION:
+i2d_TS_TST_INFO_bio 4156 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_set_ordering 4157 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_get_ext_by_OBJ 4158 1_1_0 EXIST::FUNCTION:
+CRYPTO_THREADID_set_pointer 4159 1_1_0 EXIST::FUNCTION:
+TS_CONF_get_tsa_section 4160 1_1_0 EXIST::FUNCTION:
+SMIME_write_ASN1 4161 1_1_0 EXIST::FUNCTION:
+TS_RESP_CTX_set_signer_key 4162 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_encrypt_old 4163 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_encrypt_init 4164 1_1_0 EXIST::FUNCTION:
+CRYPTO_THREADID_cpy 4165 1_1_0 EXIST::FUNCTION:
+ASN1_PCTX_get_cert_flags 4166 1_1_0 EXIST::FUNCTION:
+i2d_ESS_SIGNING_CERT 4167 1_1_0 EXIST::FUNCTION:
+TS_CONF_load_key 4168 1_1_0 EXIST::FUNCTION:
+i2d_ASN1_SEQUENCE_ANY 4169 1_1_0 EXIST::FUNCTION:
+d2i_TS_MSG_IMPRINT_bio 4170 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_asn1_set_public 4171 1_1_0 EXIST::FUNCTION:
+b2i_PublicKey_bio 4172 1_1_0 EXIST::FUNCTION:
+BIO_asn1_set_prefix 4173 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_new_mac_key 4174 1_1_0 EXIST::FUNCTION:
+BIO_new_CMS 4175 1_1_0 EXIST::FUNCTION:CMS
+CRYPTO_THREADID_cmp 4176 1_1_0 EXIST::FUNCTION:
+TS_REQ_ext_free 4177 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_asn1_set_free 4178 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_get0_asn1 4179 1_1_0 EXIST::FUNCTION:
+d2i_NETSCAPE_X509 4180 1_1_0 NOEXIST::FUNCTION:
+EVP_PKEY_verify_recover_init 4181 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_CTX_set_data 4182 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_keygen_init 4183 1_1_0 EXIST::FUNCTION:
+TS_RESP_CTX_set_status_info 4184 1_1_0 EXIST::FUNCTION:
+TS_MSG_IMPRINT_get_algo 4185 1_1_0 EXIST::FUNCTION:
+TS_REQ_print_bio 4186 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_CTX_ctrl_str 4187 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_get_default_digest_nid 4188 1_1_0 EXIST::FUNCTION:
+PEM_write_bio_PKCS7_stream 4189 1_1_0 EXIST::FUNCTION:
+TS_MSG_IMPRINT_print_bio 4190 1_1_0 EXIST::FUNCTION:
+BN_asc2bn 4191 1_1_0 EXIST::FUNCTION:
+TS_REQ_get_policy_id 4192 1_1_0 EXIST::FUNCTION:
+ENGINE_set_default_pkey_asn1_meths 4193 1_1_0 EXIST::FUNCTION:ENGINE
+d2i_TS_ACCURACY 4194 1_1_0 EXIST::FUNCTION:
+DSO_global_lookup 4195 1_1_0 EXIST::FUNCTION:
+TS_CONF_set_tsa_name 4196 1_1_0 EXIST::FUNCTION:
+i2d_ASN1_SET_ANY 4197 1_1_0 EXIST::FUNCTION:
+ENGINE_load_gost 4198 1_1_0 NOEXIST::FUNCTION:
+WHIRLPOOL_BitUpdate 4199 1_1_0 EXIST::FUNCTION:WHIRLPOOL
+ASN1_PCTX_get_flags 4200 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_get_ext_by_NID 4201 1_1_0 EXIST::FUNCTION:
+TS_RESP_new 4202 1_1_0 EXIST::FUNCTION:
+ESS_CERT_ID_dup 4203 1_1_0 EXIST::FUNCTION:
+TS_STATUS_INFO_dup 4204 1_1_0 EXIST::FUNCTION:
+TS_REQ_delete_ext 4205 1_1_0 EXIST::FUNCTION:
+EVP_DigestVerifyFinal 4206 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_print_params 4207 1_1_0 EXIST::FUNCTION:
+i2d_CMS_bio_stream 4208 1_1_0 EXIST::FUNCTION:CMS
+TS_REQ_get_msg_imprint 4209 1_1_0 EXIST::FUNCTION:
+OBJ_find_sigid_by_algs 4210 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_get_serial 4211 1_1_0 EXIST::FUNCTION:
+TS_REQ_get_nonce 4212 1_1_0 EXIST::FUNCTION:
+X509_PUBKEY_set0_param 4213 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_CTX_set0_keygen_info 4214 1_1_0 EXIST::FUNCTION:
+DIST_POINT_set_dpname 4215 1_1_0 EXIST::FUNCTION:
+i2d_ISSUING_DIST_POINT 4216 1_1_0 EXIST::FUNCTION:
+ASN1_SET_ANY_it 4217 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ASN1_SET_ANY_it 4217 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+EVP_PKEY_CTX_get_data 4218 1_1_0 EXIST::FUNCTION:
+TS_STATUS_INFO_print_bio 4219 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_derive_init 4220 1_1_0 EXIST::FUNCTION:
+d2i_TS_TST_INFO 4221 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_asn1_add_alias 4222 1_1_0 EXIST::FUNCTION:
+d2i_TS_RESP_bio 4223 1_1_0 EXIST::FUNCTION:
+OTHERNAME_cmp 4224 1_1_0 EXIST::FUNCTION:
+GENERAL_NAME_set0_value 4225 1_1_0 EXIST::FUNCTION:
+PKCS7_RECIP_INFO_get0_alg 4226 1_1_0 EXIST::FUNCTION:
+TS_RESP_CTX_new 4227 1_1_0 EXIST::FUNCTION:
+TS_RESP_set_tst_info 4228 1_1_0 EXIST::FUNCTION:
+PKCS7_final 4229 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_base_id 4230 1_1_0 EXIST::FUNCTION:
+TS_RESP_CTX_set_signer_cert 4231 1_1_0 EXIST::FUNCTION:
+TS_REQ_set_msg_imprint 4232 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_CTX_ctrl 4233 1_1_0 EXIST::FUNCTION:
+TS_CONF_set_digests 4234 1_1_0 EXIST::FUNCTION:
+d2i_TS_MSG_IMPRINT 4235 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_set_ctrl 4236 1_1_0 EXIST::FUNCTION:
+TS_REQ_get_ext_by_NID 4237 1_1_0 EXIST::FUNCTION:
+PKCS5_pbe_set0_algor 4238 1_1_0 EXIST::FUNCTION:
+BN_BLINDING_thread_id 4239 1_1_0 EXIST::FUNCTION:
+TS_ACCURACY_new 4240 1_1_0 EXIST::FUNCTION:
+X509_CRL_METHOD_free 4241 1_1_0 EXIST::FUNCTION:
+ASN1_PCTX_get_nm_flags 4242 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_set_sign 4243 1_1_0 EXIST::FUNCTION:
+CRYPTO_THREADID_current 4244 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_decrypt_init 4245 1_1_0 EXIST::FUNCTION:
+NETSCAPE_X509_free 4246 1_1_0 NOEXIST::FUNCTION:
+i2b_PVK_bio 4247 1_1_0 EXIST::FUNCTION:RC4
+EVP_PKEY_print_private 4248 1_1_0 EXIST::FUNCTION:
+GENERAL_NAME_get0_value 4249 1_1_0 EXIST::FUNCTION:
+b2i_PVK_bio 4250 1_1_0 EXIST::FUNCTION:RC4
+ASN1_UTCTIME_adj 4251 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_new 4252 1_1_0 EXIST::FUNCTION:
+EVP_MD_do_all_sorted 4253 1_1_0 EXIST::FUNCTION:
+TS_CONF_set_default_engine 4254 1_1_0 EXIST::FUNCTION:ENGINE
+TS_ACCURACY_set_seconds 4255 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_get_time 4256 1_1_0 EXIST::FUNCTION:
+PKCS8_pkey_get0 4257 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_asn1_get0 4258 1_1_0 EXIST::FUNCTION:
+OBJ_add_sigid 4259 1_1_0 EXIST::FUNCTION:
+PKCS7_SIGNER_INFO_sign 4260 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_paramgen_init 4261 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_sign 4262 1_1_0 EXIST::FUNCTION:
+OBJ_sigid_free 4263 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_set_init 4264 1_1_0 EXIST::FUNCTION:
+d2i_ESS_ISSUER_SERIAL 4265 1_1_0 EXIST::FUNCTION:
+ISSUING_DIST_POINT_new 4266 1_1_0 EXIST::FUNCTION:
+ASN1_TIME_adj 4267 1_1_0 EXIST::FUNCTION:
+TS_OBJ_print_bio 4268 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_set_verify_recover 4269 1_1_0 EXIST::FUNCTION:
+TS_RESP_get_status_info 4270 1_1_0 EXIST::FUNCTION:
+CMS_stream 4271 1_1_0 EXIST::FUNCTION:CMS
+EVP_PKEY_CTX_set_cb 4272 1_1_0 EXIST::FUNCTION:
+PKCS7_to_TS_TST_INFO 4273 1_1_0 EXIST::FUNCTION:
+ASN1_PCTX_get_oid_flags 4274 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_add_ext 4275 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_set_derive 4276 1_1_0 EXIST::FUNCTION:
+i2d_TS_RESP_fp 4277 1_1_0 EXIST::FUNCTION:STDIO
+i2d_TS_MSG_IMPRINT_bio 4278 1_1_0 EXIST::FUNCTION:
+TS_RESP_CTX_set_accuracy 4279 1_1_0 EXIST::FUNCTION:
+TS_REQ_set_nonce 4280 1_1_0 EXIST::FUNCTION:
+ESS_CERT_ID_new 4281 1_1_0 EXIST::FUNCTION:
+ENGINE_pkey_asn1_find_str 4282 1_1_0 EXIST::FUNCTION:ENGINE
+TS_REQ_get_ext_count 4283 1_1_0 EXIST::FUNCTION:
+BUF_reverse 4284 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_print_bio 4285 1_1_0 EXIST::FUNCTION:
+d2i_ISSUING_DIST_POINT 4286 1_1_0 EXIST::FUNCTION:
+ENGINE_get_pkey_meths 4287 1_1_0 EXIST::FUNCTION:ENGINE
+i2b_PrivateKey_bio 4288 1_1_0 EXIST::FUNCTION:
+i2d_TS_RESP 4289 1_1_0 EXIST::FUNCTION:
+b2i_PublicKey 4290 1_1_0 EXIST::FUNCTION:
+TS_VERIFY_CTX_cleanup 4291 1_1_0 EXIST::FUNCTION:
+TS_STATUS_INFO_free 4292 1_1_0 EXIST::FUNCTION:
+TS_RESP_verify_token 4293 1_1_0 EXIST::FUNCTION:
+OBJ_bsearch_ex_ 4294 1_1_0 EXIST::FUNCTION:
+ASN1_bn_print 4295 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_asn1_get_count 4296 1_1_0 EXIST::FUNCTION:
+ENGINE_register_pkey_asn1_meths 4297 1_1_0 EXIST::FUNCTION:ENGINE
+ASN1_PCTX_set_nm_flags 4298 1_1_0 EXIST::FUNCTION:
+EVP_DigestVerifyInit 4299 1_1_0 EXIST::FUNCTION:
+ENGINE_set_default_pkey_meths 4300 1_1_0 EXIST::FUNCTION:ENGINE
+TS_TST_INFO_get_policy_id 4301 1_1_0 EXIST::FUNCTION:
+TS_REQ_get_cert_req 4302 1_1_0 EXIST::FUNCTION:
+X509_CRL_set_meth_data 4303 1_1_0 EXIST::FUNCTION:
+PKCS8_pkey_set0 4304 1_1_0 EXIST::FUNCTION:
+ASN1_STRING_copy 4305 1_1_0 EXIST::FUNCTION:
+d2i_TS_TST_INFO_fp 4306 1_1_0 EXIST::FUNCTION:STDIO
+X509_CRL_match 4307 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_asn1_set_private 4308 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_get_ext_d2i 4309 1_1_0 EXIST::FUNCTION:
+TS_RESP_CTX_add_policy 4310 1_1_0 EXIST::FUNCTION:
+d2i_TS_RESP 4311 1_1_0 EXIST::FUNCTION:
+TS_CONF_load_certs 4312 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_get_msg_imprint 4313 1_1_0 EXIST::FUNCTION:
+ERR_load_TS_strings 4314 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_get_version 4315 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_CTX_dup 4316 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_set_verify 4317 1_1_0 EXIST::FUNCTION:
+i2b_PublicKey_bio 4318 1_1_0 EXIST::FUNCTION:
+TS_CONF_set_certs 4319 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_asn1_get0_info 4320 1_1_0 EXIST::FUNCTION:
+TS_VERIFY_CTX_free 4321 1_1_0 EXIST::FUNCTION:
+TS_REQ_get_ext_by_critical 4322 1_1_0 EXIST::FUNCTION:
+TS_RESP_CTX_set_serial_cb 4323 1_1_0 EXIST::FUNCTION:
+X509_CRL_get_meth_data 4324 1_1_0 EXIST::FUNCTION:
+TS_RESP_CTX_set_time_cb 4325 1_1_0 EXIST::FUNCTION:
+TS_MSG_IMPRINT_get_msg 4326 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_ext_free 4327 1_1_0 EXIST::FUNCTION:
+TS_REQ_get_version 4328 1_1_0 EXIST::FUNCTION:
+TS_REQ_add_ext 4329 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_CTX_set_app_data 4330 1_1_0 EXIST::FUNCTION:
+OBJ_bsearch_ 4331 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_set_verifyctx 4332 1_1_0 EXIST::FUNCTION:
+i2d_PKCS7_bio_stream 4333 1_1_0 EXIST::FUNCTION:
+CRYPTO_THREADID_set_numeric 4334 1_1_0 EXIST::FUNCTION:
+PKCS7_sign_add_signer 4335 1_1_0 EXIST::FUNCTION:
+d2i_TS_TST_INFO_bio 4336 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_get_ordering 4337 1_1_0 EXIST::FUNCTION:
+TS_RESP_print_bio 4338 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_get_exts 4339 1_1_0 EXIST::FUNCTION:
+HMAC_CTX_copy 4340 1_1_0 EXIST::FUNCTION:
+PKCS5_pbe2_set_iv 4341 1_1_0 EXIST::FUNCTION:
+ENGINE_get_pkey_asn1_meths 4342 1_1_0 EXIST::FUNCTION:ENGINE
+b2i_PrivateKey 4343 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_CTX_get_app_data 4344 1_1_0 EXIST::FUNCTION:
+TS_REQ_set_cert_req 4345 1_1_0 EXIST::FUNCTION:
+CRYPTO_THREADID_set_callback 4346 1_1_0 EXIST::FUNCTION:
+TS_CONF_set_serial 4347 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_free 4348 1_1_0 EXIST::FUNCTION:
+d2i_TS_REQ_fp 4349 1_1_0 EXIST::FUNCTION:STDIO
+TS_RESP_verify_response 4350 1_1_0 EXIST::FUNCTION:
+i2d_ESS_ISSUER_SERIAL 4351 1_1_0 EXIST::FUNCTION:
+TS_ACCURACY_get_seconds 4352 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_do_all 4353 1_1_0 EXIST::FUNCTION:
+b2i_PrivateKey_bio 4354 1_1_0 EXIST::FUNCTION:
+OCSP_CERTID_dup 4355 1_1_0 EXIST::FUNCTION:
+X509_PUBKEY_get0_param 4356 1_1_0 EXIST::FUNCTION:
+TS_MSG_IMPRINT_dup 4357 1_1_0 EXIST::FUNCTION:
+PKCS7_print_ctx 4358 1_1_0 EXIST::FUNCTION:
+i2d_TS_REQ_bio 4359 1_1_0 EXIST::FUNCTION:
+EVP_whirlpool 4360 1_1_0 EXIST::FUNCTION:WHIRLPOOL
+EVP_PKEY_asn1_set_param 4361 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_set_encrypt 4362 1_1_0 EXIST::FUNCTION:
+ASN1_PCTX_set_flags 4363 1_1_0 EXIST::FUNCTION:
+i2d_ESS_CERT_ID 4364 1_1_0 EXIST::FUNCTION:
+TS_VERIFY_CTX_new 4365 1_1_0 EXIST::FUNCTION:
+TS_RESP_CTX_set_extension_cb 4366 1_1_0 EXIST::FUNCTION:
+ENGINE_register_all_pkey_meths 4367 1_1_0 EXIST::FUNCTION:ENGINE
+TS_RESP_CTX_set_status_info_cond 4368 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_verify 4369 1_1_0 EXIST::FUNCTION:
+WHIRLPOOL_Final 4370 1_1_0 EXIST::FUNCTION:WHIRLPOOL
+X509_CRL_METHOD_new 4371 1_1_0 EXIST::FUNCTION:
+EVP_DigestSignFinal 4372 1_1_0 EXIST::FUNCTION:
+TS_RESP_CTX_set_def_policy 4373 1_1_0 EXIST::FUNCTION:
+NETSCAPE_X509_it 4374 1_1_0 NOEXIST::FUNCTION:
+TS_RESP_create_response 4375 1_1_0 EXIST::FUNCTION:
+PKCS7_SIGNER_INFO_get0_algs 4376 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_get_nonce 4377 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_decrypt_old 4378 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_set_policy_id 4379 1_1_0 EXIST::FUNCTION:
+TS_CONF_set_ess_cert_id_chain 4380 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_CTX_get0_pkey 4381 1_1_0 EXIST::FUNCTION:
+d2i_TS_REQ 4382 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_asn1_find_str 4383 1_1_0 EXIST::FUNCTION:
+BIO_f_asn1 4384 1_1_0 EXIST::FUNCTION:
+ESS_SIGNING_CERT_new 4385 1_1_0 EXIST::FUNCTION:
+EVP_PBE_find 4386 1_1_0 EXIST::FUNCTION:
+X509_CRL_get0_by_cert 4387 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_derive 4388 1_1_0 EXIST::FUNCTION:
+i2d_TS_REQ 4389 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_delete_ext 4390 1_1_0 EXIST::FUNCTION:
+ESS_ISSUER_SERIAL_free 4391 1_1_0 EXIST::FUNCTION:
+ASN1_PCTX_set_str_flags 4392 1_1_0 EXIST::FUNCTION:
+ENGINE_get_pkey_asn1_meth_str 4393 1_1_0 EXIST::FUNCTION:ENGINE
+TS_CONF_set_signer_key 4394 1_1_0 EXIST::FUNCTION:
+TS_ACCURACY_get_millis 4395 1_1_0 EXIST::FUNCTION:
+TS_RESP_get_token 4396 1_1_0 EXIST::FUNCTION:
+TS_ACCURACY_dup 4397 1_1_0 EXIST::FUNCTION:
+ENGINE_register_all_pkey_asn1_meths 4398 1_1_0 EXIST::FUNCTION:ENGINE
+X509_CRL_set_default_method 4399 1_1_0 EXIST::FUNCTION:
+CRYPTO_THREADID_hash 4400 1_1_0 EXIST::FUNCTION:
+CMS_ContentInfo_print_ctx 4401 1_1_0 EXIST::FUNCTION:CMS
+TS_RESP_free 4402 1_1_0 EXIST::FUNCTION:
+ISSUING_DIST_POINT_free 4403 1_1_0 EXIST::FUNCTION:
+ESS_ISSUER_SERIAL_new 4404 1_1_0 EXIST::FUNCTION:
+CMS_add1_crl 4405 1_1_0 EXIST::FUNCTION:CMS
+PKCS7_add1_attrib_digest 4406 1_1_0 EXIST::FUNCTION:
+TS_RESP_CTX_add_md 4407 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_dup 4408 1_1_0 EXIST::FUNCTION:
+ENGINE_set_pkey_asn1_meths 4409 1_1_0 EXIST::FUNCTION:ENGINE
+PEM_write_bio_Parameters 4410 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_get_accuracy 4411 1_1_0 EXIST::FUNCTION:
+X509_CRL_get0_by_serial 4412 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_set_version 4413 1_1_0 EXIST::FUNCTION:
+TS_RESP_CTX_get_tst_info 4414 1_1_0 EXIST::FUNCTION:
+TS_RESP_verify_signature 4415 1_1_0 EXIST::FUNCTION:
+CRYPTO_THREADID_get_callback 4416 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_get_tsa 4417 1_1_0 EXIST::FUNCTION:
+TS_STATUS_INFO_new 4418 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_CTX_get_cb 4419 1_1_0 EXIST::FUNCTION:
+TS_REQ_get_ext_d2i 4420 1_1_0 EXIST::FUNCTION:
+GENERAL_NAME_set0_othername 4421 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_get_ext_count 4422 1_1_0 EXIST::FUNCTION:
+TS_RESP_CTX_get_request 4423 1_1_0 EXIST::FUNCTION:
+i2d_NETSCAPE_X509 4424 1_1_0 NOEXIST::FUNCTION:
+ENGINE_get_pkey_meth_engine 4425 1_1_0 EXIST::FUNCTION:ENGINE
+EVP_PKEY_meth_set_signctx 4426 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_asn1_copy 4427 1_1_0 EXIST::FUNCTION:
+ASN1_TYPE_cmp 4428 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_do_all_sorted 4429 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_CTX_free 4430 1_1_0 EXIST::FUNCTION:
+ISSUING_DIST_POINT_it 4431 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
+ISSUING_DIST_POINT_it 4431 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
+d2i_TS_MSG_IMPRINT_fp 4432 1_1_0 EXIST::FUNCTION:STDIO
+X509_STORE_get1_certs 4433 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_CTX_get_operation 4434 1_1_0 EXIST::FUNCTION:
+d2i_ESS_SIGNING_CERT 4435 1_1_0 EXIST::FUNCTION:
+TS_CONF_set_ordering 4436 1_1_0 EXIST::FUNCTION:
+EVP_PBE_alg_add_type 4437 1_1_0 EXIST::FUNCTION:
+TS_REQ_set_version 4438 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_get0 4439 1_1_0 EXIST::FUNCTION:
+BIO_asn1_set_suffix 4440 1_1_0 EXIST::FUNCTION:
+i2d_TS_STATUS_INFO 4441 1_1_0 EXIST::FUNCTION:
+EVP_MD_do_all 4442 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_set_accuracy 4443 1_1_0 EXIST::FUNCTION:
+PKCS7_add_attrib_content_type 4444 1_1_0 EXIST::FUNCTION:
+ERR_remove_thread_state 4445 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_add0 4446 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_set_tsa 4447 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_new 4448 1_1_0 EXIST::FUNCTION:
+WHIRLPOOL_Update 4449 1_1_0 EXIST::FUNCTION:WHIRLPOOL
+TS_CONF_set_accuracy 4450 1_1_0 EXIST::FUNCTION:
+ASN1_PCTX_set_oid_flags 4451 1_1_0 EXIST::FUNCTION:
+ESS_SIGNING_CERT_dup 4452 1_1_0 EXIST::FUNCTION:
+d2i_TS_REQ_bio 4453 1_1_0 EXIST::FUNCTION:
+X509_time_adj_ex 4454 1_1_0 EXIST::FUNCTION:
+TS_RESP_CTX_add_flags 4455 1_1_0 EXIST::FUNCTION:
+d2i_TS_STATUS_INFO 4456 1_1_0 EXIST::FUNCTION:
+TS_MSG_IMPRINT_set_msg 4457 1_1_0 EXIST::FUNCTION:
+BIO_asn1_get_suffix 4458 1_1_0 EXIST::FUNCTION:
+TS_REQ_free 4459 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_free 4460 1_1_0 EXIST::FUNCTION:
+TS_REQ_get_exts 4461 1_1_0 EXIST::FUNCTION:
+TS_RESP_CTX_set_clock_precision_digits 4462 1_1_0 EXIST::FUNCTION:
+TS_RESP_CTX_add_failure_info 4463 1_1_0 EXIST::FUNCTION:
+i2d_TS_RESP_bio 4464 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_CTX_get0_peerkey 4465 1_1_0 EXIST::FUNCTION:
+PEM_write_bio_CMS_stream 4466 1_1_0 EXIST::FUNCTION:CMS
+TS_REQ_new 4467 1_1_0 EXIST::FUNCTION:
+TS_MSG_IMPRINT_new 4468 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_find 4469 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_id 4470 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_set_serial 4471 1_1_0 EXIST::FUNCTION:
+a2i_GENERAL_NAME 4472 1_1_0 EXIST::FUNCTION:
+TS_CONF_set_crypto_device 4473 1_1_0 EXIST::FUNCTION:ENGINE
+EVP_PKEY_verify_init 4474 1_1_0 EXIST::FUNCTION:
+TS_CONF_set_policies 4475 1_1_0 EXIST::FUNCTION:
+ASN1_PCTX_new 4476 1_1_0 EXIST::FUNCTION:
+ESS_CERT_ID_free 4477 1_1_0 EXIST::FUNCTION:
+ENGINE_unregister_pkey_meths 4478 1_1_0 EXIST::FUNCTION:ENGINE
+TS_MSG_IMPRINT_free 4479 1_1_0 EXIST::FUNCTION:
+TS_VERIFY_CTX_init 4480 1_1_0 EXIST::FUNCTION:
+PKCS7_stream 4481 1_1_0 EXIST::FUNCTION:
+TS_RESP_CTX_set_certs 4482 1_1_0 EXIST::FUNCTION:
+TS_CONF_set_def_policy 4483 1_1_0 EXIST::FUNCTION:
+ASN1_GENERALIZEDTIME_adj 4484 1_1_0 EXIST::FUNCTION:
+NETSCAPE_X509_new 4485 1_1_0 NOEXIST::FUNCTION:
+TS_ACCURACY_free 4486 1_1_0 EXIST::FUNCTION:
+TS_RESP_get_tst_info 4487 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_derive_set_peer 4488 1_1_0 EXIST::FUNCTION:
+PEM_read_bio_Parameters 4489 1_1_0 EXIST::FUNCTION:
+TS_CONF_set_clock_precision_digits 4490 1_1_0 EXIST::FUNCTION:
+ESS_ISSUER_SERIAL_dup 4491 1_1_0 EXIST::FUNCTION:
+TS_ACCURACY_get_micros 4492 1_1_0 EXIST::FUNCTION:
+ASN1_PCTX_get_str_flags 4493 1_1_0 EXIST::FUNCTION:
+NAME_CONSTRAINTS_check 4494 1_1_0 EXIST::FUNCTION:
+ASN1_BIT_STRING_check 4495 1_1_0 EXIST::FUNCTION:
+X509_check_akid 4496 1_1_0 EXIST::FUNCTION:
+ENGINE_unregister_pkey_asn1_meths 4497 1_1_0 EXIST::FUNCTION:ENGINE
+ASN1_PCTX_free 4498 1_1_0 EXIST::FUNCTION:
+PEM_write_bio_ASN1_stream 4499 1_1_0 EXIST::FUNCTION:
+i2d_ASN1_bio_stream 4500 1_1_0 EXIST::FUNCTION:
+TS_X509_ALGOR_print_bio 4501 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_set_cleanup 4502 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_asn1_free 4503 1_1_0 EXIST::FUNCTION:
+ESS_SIGNING_CERT_free 4504 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_set_msg_imprint 4505 1_1_0 EXIST::FUNCTION:
+GENERAL_NAME_cmp 4506 1_1_0 EXIST::FUNCTION:
+d2i_ASN1_SET_ANY 4507 1_1_0 EXIST::FUNCTION:
+ENGINE_set_pkey_meths 4508 1_1_0 EXIST::FUNCTION:ENGINE
+i2d_TS_REQ_fp 4509 1_1_0 EXIST::FUNCTION:STDIO
+d2i_ASN1_SEQUENCE_ANY 4510 1_1_0 EXIST::FUNCTION:
+GENERAL_NAME_get0_otherName 4511 1_1_0 EXIST::FUNCTION:
+d2i_ESS_CERT_ID 4512 1_1_0 EXIST::FUNCTION:
+OBJ_find_sigid_algs 4513 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_set_keygen 4514 1_1_0 EXIST::FUNCTION:
+PKCS5_PBKDF2_HMAC 4515 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_paramgen 4516 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_set_paramgen 4517 1_1_0 EXIST::FUNCTION:
+BIO_new_PKCS7 4518 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_verify_recover 4519 1_1_0 EXIST::FUNCTION:
+TS_ext_print_bio 4520 1_1_0 EXIST::FUNCTION:
+TS_ASN1_INTEGER_print_bio 4521 1_1_0 EXIST::FUNCTION:
+check_defer 4522 1_1_0 EXIST::FUNCTION:
+DSO_pathbyaddr 4523 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_set_type 4524 1_1_0 EXIST::FUNCTION:
+TS_ACCURACY_set_micros 4525 1_1_0 EXIST::FUNCTION:
+TS_REQ_to_TS_VERIFY_CTX 4526 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_set_copy 4527 1_1_0 EXIST::FUNCTION:
+ASN1_PCTX_set_cert_flags 4528 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_get_ext 4529 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_asn1_set_ctrl 4530 1_1_0 EXIST::FUNCTION:
+TS_TST_INFO_get_ext_by_critical 4531 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_CTX_new_id 4532 1_1_0 EXIST::FUNCTION:
+TS_REQ_get_ext_by_OBJ 4533 1_1_0 EXIST::FUNCTION:
+TS_CONF_set_signer_cert 4534 1_1_0 EXIST::FUNCTION:
+X509_NAME_hash_old 4535 1_1_0 EXIST::FUNCTION:
+ASN1_TIME_set_string 4536 1_1_0 EXIST::FUNCTION:
+EVP_MD_flags 4537 1_1_0 EXIST::FUNCTION:
+TS_RESP_CTX_free 4538 1_1_0 EXIST::FUNCTION:
+DSAparams_dup 4539 1_1_0 EXIST::FUNCTION:DSA
+DHparams_dup 4540 1_1_0 EXIST::FUNCTION:DH
+OCSP_REQ_CTX_add1_header 4541 1_1_0 EXIST::FUNCTION:
+OCSP_REQ_CTX_set1_req 4542 1_1_0 EXIST::FUNCTION:
+X509_STORE_set_verify_cb 4543 1_1_0 EXIST::FUNCTION:
+X509_STORE_CTX_get0_current_crl 4544 1_1_0 EXIST::FUNCTION:
+X509_STORE_CTX_get0_parent_ctx 4545 1_1_0 EXIST::FUNCTION:
+X509_STORE_CTX_get0_current_issuer 4546 1_1_0 EXIST::FUNCTION:
+X509_issuer_name_hash_old 4547 1_1_0 EXIST::FUNCTION:MD5
+X509_subject_name_hash_old 4548 1_1_0 EXIST::FUNCTION:MD5
+EVP_CIPHER_CTX_copy 4549 1_1_0 EXIST::FUNCTION:
+UI_method_get_prompt_constructor 4550 1_1_0 EXIST::FUNCTION:
+UI_method_set_prompt_constructor 4551 1_1_0 EXIST::FUNCTION:
+EVP_read_pw_string_min 4552 1_1_0 EXIST::FUNCTION:
+CRYPTO_cts128_encrypt 4553 1_1_0 EXIST::FUNCTION:
+CRYPTO_cts128_decrypt_block 4554 1_1_0 EXIST::FUNCTION:
+CRYPTO_cfb128_1_encrypt 4555 1_1_0 EXIST::FUNCTION:
+CRYPTO_cbc128_encrypt 4556 1_1_0 EXIST::FUNCTION:
+CRYPTO_ctr128_encrypt 4557 1_1_0 EXIST::FUNCTION:
+CRYPTO_ofb128_encrypt 4558 1_1_0 EXIST::FUNCTION:
+CRYPTO_cts128_decrypt 4559 1_1_0 EXIST::FUNCTION:
+CRYPTO_cts128_encrypt_block 4560 1_1_0 EXIST::FUNCTION:
+CRYPTO_cbc128_decrypt 4561 1_1_0 EXIST::FUNCTION:
+CRYPTO_cfb128_encrypt 4562 1_1_0 EXIST::FUNCTION:
+CRYPTO_cfb128_8_encrypt 4563 1_1_0 EXIST::FUNCTION:
+OPENSSL_strcasecmp 4564 1_1_0 EXIST::FUNCTION:
+OPENSSL_memcmp 4565 1_1_0 EXIST::FUNCTION:
+OPENSSL_strncasecmp 4566 1_1_0 EXIST::FUNCTION:
+OPENSSL_gmtime 4567 1_1_0 EXIST::FUNCTION:
+OPENSSL_gmtime_adj 4568 1_1_0 EXIST::FUNCTION:
+SRP_VBASE_get_by_user 4569 1_1_0 EXIST::FUNCTION:SRP
+SRP_Calc_server_key 4570 1_1_0 EXIST::FUNCTION:SRP
+SRP_create_verifier 4571 1_1_0 EXIST::FUNCTION:SRP
+SRP_create_verifier_BN 4572 1_1_0 EXIST::FUNCTION:SRP
+SRP_Calc_u 4573 1_1_0 EXIST::FUNCTION:SRP
+SRP_VBASE_free 4574 1_1_0 EXIST::FUNCTION:SRP
+SRP_Calc_client_key 4575 1_1_0 EXIST::FUNCTION:SRP
+SRP_get_default_gN 4576 1_1_0 EXIST::FUNCTION:SRP
+SRP_Calc_x 4577 1_1_0 EXIST::FUNCTION:SRP
+SRP_Calc_B 4578 1_1_0 EXIST::FUNCTION:SRP
+SRP_VBASE_new 4579 1_1_0 EXIST::FUNCTION:SRP
+SRP_check_known_gN_param 4580 1_1_0 EXIST::FUNCTION:SRP
+SRP_Calc_A 4581 1_1_0 EXIST::FUNCTION:SRP
+SRP_Verify_A_mod_N 4582 1_1_0 EXIST::FUNCTION:SRP
+SRP_VBASE_init 4583 1_1_0 EXIST::FUNCTION:SRP
+SRP_Verify_B_mod_N 4584 1_1_0 EXIST::FUNCTION:SRP
+EC_KEY_set_public_key_affine_coordinates 4585 1_1_0 EXIST::FUNCTION:EC
+EVP_aes_192_ctr 4586 1_1_0 EXIST::FUNCTION:AES
+EVP_PKEY_meth_get0_info 4587 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_copy 4588 1_1_0 EXIST::FUNCTION:
+ERR_add_error_vdata 4589 1_1_0 EXIST::FUNCTION:
+EVP_aes_128_ctr 4590 1_1_0 EXIST::FUNCTION:AES
+EVP_aes_256_ctr 4591 1_1_0 EXIST::FUNCTION:AES
+EC_GFp_nistp224_method 4592 1_1_0 EXIST:!WIN32:FUNCTION:EC,EC_NISTP_64_GCC_128
+EC_KEY_get_flags 4593 1_1_0 EXIST::FUNCTION:EC
+RSA_padding_add_PKCS1_PSS_mgf1 4594 1_1_0 EXIST::FUNCTION:RSA
+EVP_aes_128_xts 4595 1_1_0 EXIST::FUNCTION:AES
+private_SHA224_Init 4596 1_1_0 NOEXIST::FUNCTION:
+private_AES_set_decrypt_key 4597 1_1_0 NOEXIST::FUNCTION:
+private_WHIRLPOOL_Init 4598 1_1_0 NOEXIST::FUNCTION:
+EVP_aes_256_xts 4599 1_1_0 EXIST::FUNCTION:AES
+private_SHA512_Init 4600 1_1_0 NOEXIST::FUNCTION:
+EVP_aes_128_gcm 4601 1_1_0 EXIST::FUNCTION:AES
+EC_KEY_clear_flags 4602 1_1_0 EXIST::FUNCTION:EC
+EC_KEY_set_flags 4603 1_1_0 EXIST::FUNCTION:EC
+private_DES_set_key_unchecked 4604 1_1_0 NOEXIST::FUNCTION:
+EVP_aes_256_ccm 4605 1_1_0 EXIST::FUNCTION:AES
+private_AES_set_encrypt_key 4606 1_1_0 NOEXIST::FUNCTION:
+RSA_verify_PKCS1_PSS_mgf1 4607 1_1_0 EXIST::FUNCTION:RSA
+private_SHA1_Init 4608 1_1_0 NOEXIST::FUNCTION:
+EVP_aes_128_ccm 4609 1_1_0 EXIST::FUNCTION:AES
+private_SEED_set_key 4610 1_1_0 NOEXIST::FUNCTION:
+EVP_aes_192_gcm 4611 1_1_0 EXIST::FUNCTION:AES
+X509_ALGOR_set_md 4612 1_1_0 EXIST::FUNCTION:
+private_SHA256_Init 4613 1_1_0 NOEXIST::FUNCTION:
+RAND_init_fips 4614 1_1_0 NOEXIST::FUNCTION:
+EVP_aes_256_gcm 4615 1_1_0 EXIST::FUNCTION:AES
+private_SHA384_Init 4616 1_1_0 NOEXIST::FUNCTION:
+EVP_aes_192_ccm 4617 1_1_0 EXIST::FUNCTION:AES
+CMAC_CTX_copy 4618 1_1_0 EXIST::FUNCTION:
+CMAC_CTX_free 4619 1_1_0 EXIST::FUNCTION:
+CMAC_CTX_get0_cipher_ctx 4620 1_1_0 EXIST::FUNCTION:
+CMAC_CTX_cleanup 4621 1_1_0 EXIST::FUNCTION:
+CMAC_Init 4622 1_1_0 EXIST::FUNCTION:
+CMAC_Update 4623 1_1_0 EXIST::FUNCTION:
+CMAC_resume 4624 1_1_0 EXIST::FUNCTION:
+CMAC_CTX_new 4625 1_1_0 EXIST::FUNCTION:
+CMAC_Final 4626 1_1_0 EXIST::FUNCTION:
+CRYPTO_ctr128_encrypt_ctr32 4627 1_1_0 EXIST::FUNCTION:
+CRYPTO_gcm128_release 4628 1_1_0 EXIST::FUNCTION:
+CRYPTO_ccm128_decrypt_ccm64 4629 1_1_0 EXIST::FUNCTION:
+CRYPTO_ccm128_encrypt 4630 1_1_0 EXIST::FUNCTION:
+CRYPTO_gcm128_encrypt 4631 1_1_0 EXIST::FUNCTION:
+CRYPTO_xts128_encrypt 4632 1_1_0 EXIST::FUNCTION:
+EVP_rc4_hmac_md5 4633 1_1_0 EXIST::FUNCTION:MD5,RC4
+CRYPTO_nistcts128_decrypt_block 4634 1_1_0 EXIST::FUNCTION:
+CRYPTO_gcm128_setiv 4635 1_1_0 EXIST::FUNCTION:
+CRYPTO_nistcts128_encrypt 4636 1_1_0 EXIST::FUNCTION:
+EVP_aes_128_cbc_hmac_sha1 4637 1_1_0 EXIST::FUNCTION:AES
+CRYPTO_gcm128_tag 4638 1_1_0 EXIST::FUNCTION:
+CRYPTO_ccm128_encrypt_ccm64 4639 1_1_0 EXIST::FUNCTION:
+ENGINE_load_rdrand 4640 1_1_0 NOEXIST::FUNCTION:
+CRYPTO_ccm128_setiv 4641 1_1_0 EXIST::FUNCTION:
+CRYPTO_nistcts128_encrypt_block 4642 1_1_0 EXIST::FUNCTION:
+CRYPTO_gcm128_aad 4643 1_1_0 EXIST::FUNCTION:
+CRYPTO_ccm128_init 4644 1_1_0 EXIST::FUNCTION:
+CRYPTO_nistcts128_decrypt 4645 1_1_0 EXIST::FUNCTION:
+CRYPTO_gcm128_new 4646 1_1_0 EXIST::FUNCTION:
+CRYPTO_ccm128_tag 4647 1_1_0 EXIST::FUNCTION:
+CRYPTO_ccm128_decrypt 4648 1_1_0 EXIST::FUNCTION:
+CRYPTO_ccm128_aad 4649 1_1_0 EXIST::FUNCTION:
+CRYPTO_gcm128_init 4650 1_1_0 EXIST::FUNCTION:
+CRYPTO_gcm128_decrypt 4651 1_1_0 EXIST::FUNCTION:
+ENGINE_load_rsax 4652 1_1_0 NOEXIST::FUNCTION:
+CRYPTO_gcm128_decrypt_ctr32 4653 1_1_0 EXIST::FUNCTION:
+CRYPTO_gcm128_encrypt_ctr32 4654 1_1_0 EXIST::FUNCTION:
+CRYPTO_gcm128_finish 4655 1_1_0 EXIST::FUNCTION:
+EVP_aes_256_cbc_hmac_sha1 4656 1_1_0 EXIST::FUNCTION:AES
+PKCS5_pbkdf2_set 4657 1_1_0 EXIST::FUNCTION:
+CMS_add0_recipient_password 4658 1_1_0 EXIST::FUNCTION:CMS
+CMS_decrypt_set1_password 4659 1_1_0 EXIST::FUNCTION:CMS
+CMS_RecipientInfo_set0_password 4660 1_1_0 EXIST::FUNCTION:CMS
+RAND_set_fips_drbg_type 4661 1_1_0 NOEXIST::FUNCTION:
+X509_REQ_sign_ctx 4662 1_1_0 EXIST::FUNCTION:
+RSA_PSS_PARAMS_new 4663 1_1_0 EXIST::FUNCTION:RSA
+X509_CRL_sign_ctx 4664 1_1_0 EXIST::FUNCTION:
+X509_signature_dump 4665 1_1_0 EXIST::FUNCTION:
+d2i_RSA_PSS_PARAMS 4666 1_1_0 EXIST::FUNCTION:RSA
+RSA_PSS_PARAMS_it 4667 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RSA
+RSA_PSS_PARAMS_it 4667 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RSA
+RSA_PSS_PARAMS_free 4668 1_1_0 EXIST::FUNCTION:RSA
+X509_sign_ctx 4669 1_1_0 EXIST::FUNCTION:
+i2d_RSA_PSS_PARAMS 4670 1_1_0 EXIST::FUNCTION:RSA
+ASN1_item_sign_ctx 4671 1_1_0 EXIST::FUNCTION:
+EC_GFp_nistp521_method 4672 1_1_0 EXIST:!WIN32:FUNCTION:EC,EC_NISTP_64_GCC_128
+EC_GFp_nistp256_method 4673 1_1_0 EXIST:!WIN32:FUNCTION:EC,EC_NISTP_64_GCC_128
+OPENSSL_stderr 4674 1_1_0 NOEXIST::FUNCTION:
+OPENSSL_cpuid_setup 4675 1_1_0 NOEXIST::FUNCTION:
+OPENSSL_showfatal 4676 1_1_0 NOEXIST::FUNCTION:
+BIO_new_dgram_sctp 4677 1_1_0 EXIST::FUNCTION:SCTP
+BIO_dgram_sctp_msg_waiting 4678 1_1_0 EXIST::FUNCTION:SCTP
+BIO_dgram_sctp_wait_for_dry 4679 1_1_0 EXIST::FUNCTION:SCTP
+BIO_s_datagram_sctp 4680 1_1_0 EXIST::FUNCTION:DGRAM,SCTP
+BIO_dgram_is_sctp 4681 1_1_0 EXIST::FUNCTION:SCTP
+BIO_dgram_sctp_notification_cb 4682 1_1_0 EXIST::FUNCTION:SCTP
+i2d_DHxparams 4683 1_1_0 EXIST::FUNCTION:DH
+EC_curve_nist2nid 4684 1_1_0 EXIST::FUNCTION:EC
+DH_get_1024_160 4685 1_1_0 EXIST::FUNCTION:DH
+PEM_write_DHxparams 4686 1_1_0 EXIST::FUNCTION:DH
+d2i_DHxparams 4687 1_1_0 EXIST::FUNCTION:DH
+EC_curve_nid2nist 4688 1_1_0 EXIST::FUNCTION:EC
+DH_get_2048_256 4689 1_1_0 EXIST::FUNCTION:DH
+PEM_write_bio_DHxparams 4690 1_1_0 EXIST::FUNCTION:DH
+DH_get_2048_224 4691 1_1_0 EXIST::FUNCTION:DH
+X509_chain_check_suiteb 4692 1_1_0 EXIST::FUNCTION:
+X509_chain_up_ref 4693 1_1_0 EXIST::FUNCTION:
+X509_VERIFY_PARAM_set1_ip_asc 4694 1_1_0 EXIST::FUNCTION:
+X509_CRL_check_suiteb 4695 1_1_0 EXIST::FUNCTION:
+X509_VERIFY_PARAM_set1_email 4696 1_1_0 EXIST::FUNCTION:
+X509_check_email 4697 1_1_0 EXIST::FUNCTION:
+X509_check_host 4698 1_1_0 EXIST::FUNCTION:
+X509_check_ip_asc 4699 1_1_0 EXIST::FUNCTION:
+X509_get0_signature 4700 1_1_0 EXIST::FUNCTION:
+X509_get_signature_nid 4701 1_1_0 EXIST::FUNCTION:
+X509_VERIFY_PARAM_set1_host 4702 1_1_0 EXIST::FUNCTION:
+X509_VERIFY_PARAM_set1_ip 4703 1_1_0 EXIST::FUNCTION:
+X509_check_ip 4704 1_1_0 EXIST::FUNCTION:
+X509_STORE_set_lookup_crls_cb 4705 1_1_0 EXIST::FUNCTION:
+X509_CRL_diff 4706 1_1_0 EXIST::FUNCTION:
+X509_CRL_http_nbio 4707 1_1_0 EXIST::FUNCTION:
+OCSP_REQ_CTX_i2d 4708 1_1_0 EXIST::FUNCTION:
+OCSP_REQ_CTX_get0_mem_bio 4709 1_1_0 EXIST::FUNCTION:
+X509_STORE_CTX_get0_store 4710 1_1_0 EXIST::FUNCTION:
+X509_REVOKED_dup 4711 1_1_0 EXIST::FUNCTION:
+CMS_RecipientInfo_encrypt 4712 1_1_0 EXIST::FUNCTION:CMS
+OCSP_REQ_CTX_http 4713 1_1_0 EXIST::FUNCTION:
+OCSP_REQ_CTX_nbio 4714 1_1_0 EXIST::FUNCTION:
+X509_http_nbio 4715 1_1_0 EXIST::FUNCTION:
+OCSP_set_max_response_length 4716 1_1_0 EXIST::FUNCTION:
+OCSP_REQ_CTX_new 4717 1_1_0 EXIST::FUNCTION:
+OCSP_REQ_CTX_nbio_d2i 4718 1_1_0 EXIST::FUNCTION:
+EVP_aes_256_wrap 4719 1_1_0 EXIST::FUNCTION:AES
+CRYPTO_128_wrap 4720 1_1_0 EXIST::FUNCTION:
+RSA_OAEP_PARAMS_new 4721 1_1_0 EXIST::FUNCTION:RSA
+CRYPTO_128_unwrap 4722 1_1_0 EXIST::FUNCTION:
+ECDSA_METHOD_set_name 4723 1_1_0 NOEXIST::FUNCTION:
+CMS_RecipientInfo_kari_decrypt 4724 1_1_0 EXIST::FUNCTION:CMS
+CMS_SignerInfo_get0_pkey_ctx 4725 1_1_0 EXIST::FUNCTION:CMS
+ECDSA_METHOD_set_flags 4726 1_1_0 NOEXIST::FUNCTION:
+ECDSA_METHOD_set_sign_setup 4727 1_1_0 NOEXIST::FUNCTION:
+CMS_RecipientInfo_kari_orig_id_cmp 4728 1_1_0 EXIST::FUNCTION:CMS
+CMS_RecipientInfo_kari_get0_alg 4729 1_1_0 EXIST::FUNCTION:CMS
+EVP_aes_192_wrap 4730 1_1_0 EXIST::FUNCTION:AES
+EVP_aes_128_cbc_hmac_sha256 4731 1_1_0 EXIST::FUNCTION:AES
+DH_compute_key_padded 4732 1_1_0 EXIST::FUNCTION:DH
+ECDSA_METHOD_set_sign 4733 1_1_0 NOEXIST::FUNCTION:
+CMS_RecipientEncryptedKey_cert_cmp 4734 1_1_0 EXIST::FUNCTION:CMS
+DH_KDF_X9_42 4735 1_1_0 EXIST::FUNCTION:CMS,DH
+RSA_OAEP_PARAMS_free 4736 1_1_0 EXIST::FUNCTION:RSA
+EVP_des_ede3_wrap 4737 1_1_0 EXIST::FUNCTION:DES
+RSA_OAEP_PARAMS_it 4738 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RSA
+RSA_OAEP_PARAMS_it 4738 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:RSA
+ASN1_TIME_diff 4739 1_1_0 EXIST::FUNCTION:
+EVP_aes_256_cbc_hmac_sha256 4740 1_1_0 EXIST::FUNCTION:AES
+CMS_SignerInfo_get0_signature 4741 1_1_0 EXIST::FUNCTION:CMS
+CMS_RecipientInfo_kari_get0_reks 4742 1_1_0 EXIST::FUNCTION:CMS
+EVP_aes_128_wrap 4743 1_1_0 EXIST::FUNCTION:AES
+CMS_SignerInfo_get0_md_ctx 4744 1_1_0 EXIST::FUNCTION:CMS
+OPENSSL_gmtime_diff 4745 1_1_0 EXIST::FUNCTION:
+CMS_RecipientInfo_kari_set0_pkey 4746 1_1_0 EXIST::FUNCTION:CMS
+i2d_RSA_OAEP_PARAMS 4747 1_1_0 EXIST::FUNCTION:RSA
+d2i_RSA_OAEP_PARAMS 4748 1_1_0 EXIST::FUNCTION:RSA
+ECDH_KDF_X9_62 4749 1_1_0 EXIST::FUNCTION:EC
+CMS_RecipientInfo_kari_get0_ctx 4750 1_1_0 EXIST::FUNCTION:CMS
+ECDSA_METHOD_new 4751 1_1_0 NOEXIST::FUNCTION:
+CMS_RecipientInfo_get0_pkey_ctx 4752 1_1_0 EXIST::FUNCTION:CMS
+CMS_RecipientEncryptedKey_get0_id 4753 1_1_0 EXIST::FUNCTION:CMS
+RSA_padding_check_PKCS1_OAEP_mgf1 4754 1_1_0 EXIST::FUNCTION:RSA
+ECDSA_METHOD_set_verify 4755 1_1_0 NOEXIST::FUNCTION:
+CMS_SharedInfo_encode 4756 1_1_0 EXIST::FUNCTION:CMS
+RSA_padding_add_PKCS1_OAEP_mgf1 4757 1_1_0 EXIST::FUNCTION:RSA
+CMS_RecipientInfo_kari_get0_orig_id 4758 1_1_0 EXIST::FUNCTION:CMS
+ECDSA_METHOD_free 4759 1_1_0 NOEXIST::FUNCTION:
+X509_VERIFY_PARAM_get_count 4760 1_1_0 EXIST::FUNCTION:
+X509_VERIFY_PARAM_get0_name 4761 1_1_0 EXIST::FUNCTION:
+X509_VERIFY_PARAM_get0 4762 1_1_0 EXIST::FUNCTION:
+X509V3_EXT_free 4763 1_1_0 NOEXIST::FUNCTION:
+BIO_hex_string 4764 1_1_0 EXIST::FUNCTION:
+X509_VERIFY_PARAM_set_hostflags 4765 1_1_0 EXIST::FUNCTION:
+X509_VERIFY_PARAM_get0_peername 4767 1_1_0 EXIST::FUNCTION:
+ECDSA_METHOD_set_app_data 4768 1_1_0 NOEXIST::FUNCTION:
+sk_deep_copy 4769 1_1_0 EXIST::FUNCTION:
+ECDSA_METHOD_get_app_data 4770 1_1_0 NOEXIST::FUNCTION:
+X509_VERIFY_PARAM_add1_host 4771 1_1_0 EXIST::FUNCTION:
+EC_GROUP_get_mont_data 4772 1_1_0 EXIST::FUNCTION:EC
+i2d_re_X509_tbs 4773 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_asn1_set_item 4774 1_1_0 EXIST::FUNCTION:
+RSA_security_bits 4775 1_1_0 EXIST::FUNCTION:RSA
+FIPS_ecdsa_verify 4776 1_1_0 NOEXIST::FUNCTION:
+BN_security_bits 4777 1_1_0 EXIST::FUNCTION:
+FIPS_ecdsa_verify_ctx 4778 1_1_0 NOEXIST::FUNCTION:
+ASN1_SCTX_get_template 4779 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_asn1_set_security_bits 4780 1_1_0 EXIST::FUNCTION:
+ASN1_SCTX_set_app_data 4781 1_1_0 EXIST::FUNCTION:
+ASN1_SCTX_free 4782 1_1_0 EXIST::FUNCTION:
+FIPS_dsa_sign 4783 1_1_0 NOEXIST::FUNCTION:
+DH_security_bits 4784 1_1_0 EXIST::FUNCTION:DH
+EVP_aes_128_wrap_pad 4785 1_1_0 EXIST::FUNCTION:AES
+EVP_aes_192_wrap_pad 4786 1_1_0 EXIST::FUNCTION:AES
+FIPS_dsa_verify_digest 4787 1_1_0 NOEXIST::FUNCTION:
+ASN1_add_stable_module 4788 1_1_0 EXIST::FUNCTION:
+DSA_security_bits 4789 1_1_0 EXIST::FUNCTION:DSA
+ASN1_SCTX_get_item 4790 1_1_0 EXIST::FUNCTION:
+ASN1_SCTX_get_app_data 4791 1_1_0 EXIST::FUNCTION:
+FIPS_dsa_sign_digest 4792 1_1_0 NOEXIST::FUNCTION:
+CRYPTO_128_unwrap_pad 4793 1_1_0 EXIST::FUNCTION:
+ASN1_str2mask 4794 1_1_0 EXIST::FUNCTION:
+EVP_aes_256_wrap_pad 4795 1_1_0 EXIST::FUNCTION:AES
+CRYPTO_128_wrap_pad 4796 1_1_0 EXIST::FUNCTION:
+FIPS_ecdsa_sign_ctx 4797 1_1_0 NOEXIST::FUNCTION:
+FIPS_ecdsa_sign_digest 4798 1_1_0 NOEXIST::FUNCTION:
+ASN1_SCTX_new 4799 1_1_0 EXIST::FUNCTION:
+BN_generate_dsa_nonce 4800 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_security_bits 4801 1_1_0 EXIST::FUNCTION:
+BN_nist_mod_func 4802 1_1_0 EXIST::FUNCTION:
+ASN1_SCTX_get_flags 4803 1_1_0 EXIST::FUNCTION:
+FIPS_dsa_verify 4804 1_1_0 NOEXIST::FUNCTION:
+FIPS_dsa_verify_ctx 4805 1_1_0 NOEXIST::FUNCTION:
+FIPS_selftest 4806 1_1_0 NOEXIST::FUNCTION:
+FIPS_set_error_callbacks 4807 1_1_0 NOEXIST::FUNCTION:
+FIPS_drbg_set_check_interval 4808 1_1_0 NOEXIST::FUNCTION:
+FIPS_rsa_sign 4809 1_1_0 NOEXIST::FUNCTION:
+FIPS_rsa_sign_digest 4810 1_1_0 NOEXIST::FUNCTION:
+FIPS_drbg_set_callbacks 4811 1_1_0 NOEXIST::FUNCTION:
+FIPS_drbg_free 4812 1_1_0 NOEXIST::FUNCTION:
+FIPS_drbg_get_strength 4813 1_1_0 NOEXIST::FUNCTION:
+FIPS_drbg_set_reseed_interval 4814 1_1_0 NOEXIST::FUNCTION:
+FIPS_get_default_drbg 4815 1_1_0 NOEXIST::FUNCTION:
+FIPS_x931_set_dt 4816 1_1_0 NOEXIST::FUNCTION:
+FIPS_get_cipherbynid 4817 1_1_0 NOEXIST::FUNCTION:
+FIPS_rand_strength 4818 1_1_0 NOEXIST::FUNCTION:
+fips_check_rsa_prng 4819 1_1_0 NOEXIST::FUNCTION:
+FIPS_drbg_stick 4820 1_1_0 NOEXIST::FUNCTION:
+FIPS_rsa_verify 4821 1_1_0 NOEXIST::FUNCTION:
+FIPS_drbg_instantiate 4822 1_1_0 NOEXIST::FUNCTION:
+FIPS_rand_set_method 4823 1_1_0 NOEXIST::FUNCTION:
+FIPS_selftest_ecdh 4824 1_1_0 NOEXIST::FUNCTION:
+FIPS_rand_set_bits 4825 1_1_0 NOEXIST::FUNCTION:
+FIPS_set_malloc_callbacks 4826 1_1_0 NOEXIST::FUNCTION:
+FIPS_drbg_init 4827 1_1_0 NOEXIST::FUNCTION:
+FIPS_selftest_drbg_all 4828 1_1_0 NOEXIST::FUNCTION:
+fips_check_rsa 4829 1_1_0 NOEXIST::FUNCTION:
+FIPS_get_digestbynid 4830 1_1_0 NOEXIST::FUNCTION:
+FIPS_x931_reset 4831 1_1_0 NOEXIST::FUNCTION:
+FIPS_selftest_aes_gcm 4832 1_1_0 NOEXIST::FUNCTION:
+FIPS_check_incore_fingerprint 4833 1_1_0 NOEXIST::FUNCTION:
+FIPS_selftest_ecdsa 4834 1_1_0 NOEXIST::FUNCTION:
+FIPS_incore_fingerprint 4835 1_1_0 NOEXIST::FUNCTION:
+FIPS_drbg_uninstantiate 4836 1_1_0 NOEXIST::FUNCTION:
+FIPS_selftest_aes_ccm 4837 1_1_0 NOEXIST::FUNCTION:
+fips_check_ec_prng 4838 1_1_0 NOEXIST::FUNCTION:
+FIPS_set_locking_callbacks 4839 1_1_0 NOEXIST::FUNCTION:
+FIPS_drbg_method 4840 1_1_0 NOEXIST::FUNCTION:
+FIPS_drbg_set_rand_callbacks 4841 1_1_0 NOEXIST::FUNCTION:
+FIPS_rsa_verify_digest 4842 1_1_0 NOEXIST::FUNCTION:
+FIPS_selftest_x931 4843 1_1_0 NOEXIST::FUNCTION:
+FIPS_x931_seed 4844 1_1_0 NOEXIST::FUNCTION:
+FIPS_module_version 4845 1_1_0 NOEXIST::FUNCTION:
+fips_set_selftest_fail 4846 1_1_0 NOEXIST::FUNCTION:
+FIPS_module_mode_set 4847 1_1_0 NOEXIST::FUNCTION:
+FIPS_x931_stick 4848 1_1_0 NOEXIST::FUNCTION:
+FIPS_drbg_generate 4849 1_1_0 NOEXIST::FUNCTION:
+FIPS_module_mode 4850 1_1_0 NOEXIST::FUNCTION:
+FIPS_selftest_drbg 4851 1_1_0 NOEXIST::FUNCTION:
+FIPS_drbg_health_check 4852 1_1_0 NOEXIST::FUNCTION:
+FIPS_x931_bytes 4853 1_1_0 NOEXIST::FUNCTION:
+FIPS_rand_get_method 4854 1_1_0 NOEXIST::FUNCTION:
+FIPS_get_timevec 4855 1_1_0 NOEXIST::FUNCTION:
+FIPS_drbg_new 4856 1_1_0 NOEXIST::FUNCTION:
+FIPS_drbg_get_blocklength 4857 1_1_0 NOEXIST::FUNCTION:
+FIPS_rsa_sign_ctx 4858 1_1_0 NOEXIST::FUNCTION:
+FIPS_selftest_cmac 4859 1_1_0 NOEXIST::FUNCTION:
+FIPS_selftest_aes_xts 4860 1_1_0 NOEXIST::FUNCTION:
+fips_check_dsa_prng 4861 1_1_0 NOEXIST::FUNCTION:
+FIPS_x931_status 4862 1_1_0 NOEXIST::FUNCTION:
+FIPS_drbg_reseed 4863 1_1_0 NOEXIST::FUNCTION:
+FIPS_x931_test_mode 4864 1_1_0 NOEXIST::FUNCTION:
+FIPS_module_version_text 4865 1_1_0 NOEXIST::FUNCTION:
+FIPS_drbg_set_app_data 4866 1_1_0 NOEXIST::FUNCTION:
+FIPS_x931_set_key 4867 1_1_0 NOEXIST::FUNCTION:
+FIPS_x931_method 4868 1_1_0 NOEXIST::FUNCTION:
+FIPS_post_set_callback 4869 1_1_0 NOEXIST::FUNCTION:
+FIPS_drbg_get_app_data 4870 1_1_0 NOEXIST::FUNCTION:
+FIPS_rsa_verify_ctx 4871 1_1_0 NOEXIST::FUNCTION:
+RSA_check_key_ex 4872 1_1_0 EXIST::FUNCTION:RSA
+i2s_ASN1_IA5STRING 4874 1_1_0 EXIST::FUNCTION:
+s2i_ASN1_IA5STRING 4875 1_1_0 EXIST::FUNCTION:
+FIPS_dsa_sign_ctx 4876 1_1_0 NOEXIST::FUNCTION:
+CRYPTO_ocb128_release 4878 1_1_0 NOEXIST::FUNCTION:
+CRYPTO_ocb128_new 4879 1_1_0 EXIST::FUNCTION:OCB
+CRYPTO_ocb128_finish 4880 1_1_0 EXIST::FUNCTION:OCB
+EVP_aes_256_ocb 4881 1_1_0 EXIST::FUNCTION:AES,OCB
+CRYPTO_ocb128_setiv 4882 1_1_0 EXIST::FUNCTION:OCB
+CRYPTO_ocb128_aad 4883 1_1_0 EXIST::FUNCTION:OCB
+CRYPTO_ocb128_decrypt 4884 1_1_0 EXIST::FUNCTION:OCB
+CRYPTO_ocb128_tag 4885 1_1_0 EXIST::FUNCTION:OCB
+EVP_aes_192_ocb 4886 1_1_0 EXIST::FUNCTION:AES,OCB
+EVP_aes_128_ocb 4887 1_1_0 EXIST::FUNCTION:AES,OCB
+CRYPTO_ocb128_init 4888 1_1_0 EXIST::FUNCTION:OCB
+CRYPTO_ocb128_encrypt 4889 1_1_0 EXIST::FUNCTION:OCB
+CRYPTO_ocb128_copy_ctx 4890 1_1_0 EXIST::FUNCTION:OCB
+BN_is_word 4891 1_1_0 EXIST::FUNCTION:
+BN_GENCB_set 4892 1_1_0 EXIST::FUNCTION:
+CRYPTO_ocb128_cleanup 4893 1_1_0 EXIST::FUNCTION:OCB
+BN_GENCB_set_old 4894 1_1_0 EXIST::FUNCTION:
+BN_is_zero 4895 1_1_0 EXIST::FUNCTION:
+BN_with_flags 4896 1_1_0 EXIST::FUNCTION:
+BN_GENCB_new 4897 1_1_0 EXIST::FUNCTION:
+BN_to_montgomery 4898 1_1_0 EXIST::FUNCTION:
+BN_GENCB_free 4899 1_1_0 EXIST::FUNCTION:
+BN_is_negative 4900 1_1_0 EXIST::FUNCTION:
+BN_get_flags 4901 1_1_0 EXIST::FUNCTION:
+BN_is_one 4902 1_1_0 EXIST::FUNCTION:
+BN_abs_is_word 4903 1_1_0 EXIST::FUNCTION:
+BN_GENCB_get_arg 4904 1_1_0 EXIST::FUNCTION:
+BN_zero_ex 4905 1_1_0 EXIST::FUNCTION:
+BN_is_odd 4906 1_1_0 EXIST::FUNCTION:
+BN_set_flags 4907 1_1_0 EXIST::FUNCTION:
+EVP_camellia_128_ctr 4908 1_1_0 EXIST::FUNCTION:CAMELLIA
+EVP_camellia_256_ctr 4909 1_1_0 EXIST::FUNCTION:CAMELLIA
+EVP_camellia_192_ctr 4910 1_1_0 EXIST::FUNCTION:CAMELLIA
+OCSP_resp_get0_signature 4911 1_1_0 EXIST::FUNCTION:
+OBJ_length 4912 1_1_0 EXIST::FUNCTION:
+OBJ_get0_data 4913 1_1_0 EXIST::FUNCTION:
+X509_NAME_ENTRY_set 4914 1_1_0 EXIST::FUNCTION:
+ASN1_TYPE_pack_sequence 4915 1_1_0 EXIST::FUNCTION:
+ASN1_TYPE_unpack_sequence 4916 1_1_0 EXIST::FUNCTION:
+CRYPTO_clean_free 4917 1_1_0 NOEXIST::FUNCTION:
+CRYPTO_clear_free 4918 1_1_0 EXIST::FUNCTION:
+COMP_CTX_get_method 4919 1_1_0 EXIST::FUNCTION:
+COMP_CTX_get_type 4920 1_1_0 EXIST::FUNCTION:
+COMP_get_name 4921 1_1_0 EXIST::FUNCTION:
+COMP_get_type 4922 1_1_0 EXIST::FUNCTION:
+ASN1_INTEGER_get_int64 4923 1_1_0 EXIST::FUNCTION:
+ASN1_ENUMERATED_set_int64 4924 1_1_0 EXIST::FUNCTION:
+EVP_PBE_scrypt 4925 1_1_0 EXIST::FUNCTION:SCRYPT
+ASN1_INTEGER_set_int64 4926 1_1_0 EXIST::FUNCTION:
+ASN1_ENUMERATED_get_int64 4927 1_1_0 EXIST::FUNCTION:
+PKCS5_v2_scrypt_keyivgen 4928 1_1_0 EXIST::FUNCTION:SCRYPT
+ASN1_INTEGER_get_uint64 4929 1_1_0 EXIST::FUNCTION:
+ASN1_INTEGER_set_uint64 4930 1_1_0 EXIST::FUNCTION:
+PKCS5_pbe2_set_scrypt 4931 1_1_0 EXIST::FUNCTION:SCRYPT
+PKCS8_set0_pbe 4932 1_1_0 EXIST::FUNCTION:
+DH_bits 4933 1_1_0 EXIST::FUNCTION:DH
+RSA_bits 4934 1_1_0 EXIST::FUNCTION:RSA
+CRYPTO_secure_allocated 4936 1_1_0 EXIST::FUNCTION:
+BN_CTX_secure_new 4937 1_1_0 EXIST::FUNCTION:
+CRYPTO_secure_malloc 4938 1_1_0 EXIST::FUNCTION:
+CRYPTO_secure_malloc_done 4939 1_1_0 EXIST::FUNCTION:
+BUF_MEM_new_ex 4940 1_1_0 EXIST::FUNCTION:
+CRYPTO_secure_malloc_initialized 4941 1_1_0 EXIST::FUNCTION:
+CRYPTO_secure_malloc_init 4942 1_1_0 EXIST::FUNCTION:
+BN_secure_new 4944 1_1_0 EXIST::FUNCTION:
+CRYPTO_secure_free 4945 1_1_0 EXIST::FUNCTION:
+BIO_s_secmem 4946 1_1_0 EXIST::FUNCTION:
+X509_STORE_CTX_get_num_untrusted 4949 1_1_0 EXIST::FUNCTION:
+X509_up_ref 4950 1_1_0 EXIST::FUNCTION:
+X509_REQ_get_version 4951 1_1_0 EXIST::FUNCTION:
+X509_REQ_get_subject_name 4952 1_1_0 EXIST::FUNCTION:
+X509_CRL_up_ref 4953 1_1_0 EXIST::FUNCTION:
+CRYPTO_zalloc 4954 1_1_0 EXIST::FUNCTION:
+X509_get_extension_flags 4955 1_1_0 EXIST::FUNCTION:
+X509_get_extended_key_usage 4956 1_1_0 EXIST::FUNCTION:
+X509_get_key_usage 4957 1_1_0 EXIST::FUNCTION:
+X509_CRL_get_issuer 4958 1_1_0 EXIST::FUNCTION:
+X509_CRL_get_nextUpdate 4959 1_1_0 EXIST::FUNCTION:
+X509_CRL_get0_signature 4960 1_1_0 EXIST::FUNCTION:
+X509_CRL_get_REVOKED 4961 1_1_0 EXIST::FUNCTION:
+X509_CRL_get_version 4962 1_1_0 EXIST::FUNCTION:
+X509_CRL_get_lastUpdate 4963 1_1_0 EXIST::FUNCTION:
+EVP_PBE_get 4964 1_1_0 EXIST::FUNCTION:
+X509_get_version 4965 1_1_0 EXIST::FUNCTION:
+X509_get_X509_PUBKEY 4966 1_1_0 EXIST::FUNCTION:
+X509_get_notBefore 4967 1_1_0 EXIST::FUNCTION:
+X509_get_notAfter 4968 1_1_0 EXIST::FUNCTION:
+X509_get_signature_type 4969 1_1_0 EXIST::FUNCTION:
+TS_VERIFY_CTX_set_data 4970 1_1_0 EXIST::FUNCTION:
+TS_VERIFY_CTX_set_imprint 4971 1_1_0 EXIST::FUNCTION:
+TS_VERIFY_CTX_set_flags 4972 1_1_0 EXIST::FUNCTION:
+TS_VERIFY_CTS_set_certs 4973 1_1_0 EXIST::FUNCTION:
+TS_VERIFY_CTX_add_flags 4974 1_1_0 EXIST::FUNCTION:
+TS_STATUS_INFO_set_status 4975 1_1_0 EXIST::FUNCTION:
+TS_VERIFY_CTX_set_store 4976 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_get_signctx 4977 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_get_paramgen 4978 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_get_encrypt 4979 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_get_keygen 4980 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_get_verify_recover 4981 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_get_cleanup 4982 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_get_verify 4984 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_get_init 4985 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_get_sign 4986 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_get_verifyctx 4987 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_get_ctrl 4988 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_get_derive 4989 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_get_decrypt 4990 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_meth_get_copy 4991 1_1_0 EXIST::FUNCTION:
+X509_get0_subject_key_id 4992 1_1_0 EXIST::FUNCTION:
+i2d_re_X509_CRL_tbs 4993 1_1_0 EXIST::FUNCTION:
+X509_REQ_get_X509_PUBKEY 4994 1_1_0 EXIST::FUNCTION:
+X509_REQ_get0_signature 4995 1_1_0 EXIST::FUNCTION:
+X509_REVOKED_get0_revocationDate 4996 1_1_0 EXIST::FUNCTION:
+X509_REVOKED_get0_serialNumber 4997 1_1_0 EXIST::FUNCTION:
+X509_CRL_get0_extensions 4998 1_1_0 EXIST::FUNCTION:
+X509_REQ_get_signature_nid 4999 1_1_0 EXIST::FUNCTION:
+X509_CRL_get_signature_nid 5000 1_1_0 EXIST::FUNCTION:
+i2d_re_X509_REQ_tbs 5001 1_1_0 EXIST::FUNCTION:
+X509_REVOKED_get0_extensions 5002 1_1_0 EXIST::FUNCTION:
+X509_get0_tbs_sigalg 5003 1_1_0 EXIST::FUNCTION:
+X509_trusted 5004 1_1_0 EXIST::FUNCTION:
+X509_get0_reject_objects 5005 1_1_0 EXIST::FUNCTION:
+X509_get0_extensions 5006 1_1_0 EXIST::FUNCTION:
+X509_get0_trust_objects 5007 1_1_0 EXIST::FUNCTION:
+X509_get0_uids 5008 1_1_0 EXIST::FUNCTION:
+X509_aux_print 5009 1_1_0 EXIST::FUNCTION:STDIO
+TS_RESP_CTX_set_signer_digest 5010 1_1_0 EXIST::FUNCTION:
+TS_CONF_set_signer_digest 5011 1_1_0 EXIST::FUNCTION:
+ENGINE_load_dasync 5012 1_1_0 NOEXIST::FUNCTION:
+ASYNC_pause_job 5013 1_1_0 EXIST::FUNCTION:
+ASYNC_start_job 5014 1_1_0 EXIST::FUNCTION:
+ASYNC_init_thread 5015 1_1_0 EXIST::FUNCTION:
+ASYNC_cleanup_thread 5016 1_1_0 EXIST::FUNCTION:
+ASYNC_wake 5017 1_1_0 EXIST::FUNCTION:
+ASYNC_clear_wake 5018 1_1_0 EXIST::FUNCTION:
+ASYNC_get_current_job 5019 1_1_0 EXIST::FUNCTION:
+ASYNC_get_wait_fd 5020 1_1_0 EXIST::FUNCTION:
+ERR_load_ASYNC_strings 5021 1_1_0 EXIST::FUNCTION:
+ASYNC_unblock_pause 5022 1_1_0 EXIST::FUNCTION:
+ASYNC_block_pause 5023 1_1_0 EXIST::FUNCTION:
+ASYNC_cleanup 5024 1_1_0 NOEXIST::FUNCTION:
+ASYNC_init 5025 1_1_0 NOEXIST::FUNCTION:
+EVP_MD_CTX_ctrl 5026 1_1_0 EXIST::FUNCTION:
+EVP_md5_sha1 5027 1_1_0 EXIST::FUNCTION:MD5
+CRYPTO_free_ex_index 5028 1_1_0 EXIST::FUNCTION:
+EVP_MD_meth_set_copy 5029 1_1_0 EXIST::FUNCTION:
+EVP_MD_meth_set_flags 5030 1_1_0 EXIST::FUNCTION:
+EVP_MD_meth_set_input_blocksize 5031 1_1_0 EXIST::FUNCTION:
+EVP_MD_meth_get_update 5032 1_1_0 EXIST::FUNCTION:
+EVP_MD_meth_get_input_blocksize 5033 1_1_0 EXIST::FUNCTION:
+EVP_MD_CTX_pkey_ctx 5034 1_1_0 EXIST::FUNCTION:
+EVP_MD_meth_set_ctrl 5035 1_1_0 EXIST::FUNCTION:
+EVP_MD_meth_get_init 5036 1_1_0 EXIST::FUNCTION:
+EVP_MD_meth_new 5037 1_1_0 EXIST::FUNCTION:
+EVP_MD_meth_get_ctrl 5038 1_1_0 EXIST::FUNCTION:
+EVP_MD_CTX_update_fn 5039 1_1_0 EXIST::FUNCTION:
+EVP_MD_meth_set_update 5040 1_1_0 EXIST::FUNCTION:
+EVP_MD_meth_get_final 5041 1_1_0 EXIST::FUNCTION:
+EVP_MD_CTX_md_data 5042 1_1_0 EXIST::FUNCTION:
+EVP_MD_meth_set_app_datasize 5043 1_1_0 EXIST::FUNCTION:
+EVP_MD_meth_set_result_size 5044 1_1_0 EXIST::FUNCTION:
+EVP_MD_meth_set_final 5045 1_1_0 EXIST::FUNCTION:
+EVP_MD_meth_get_result_size 5046 1_1_0 EXIST::FUNCTION:
+EVP_MD_meth_get_flags 5047 1_1_0 EXIST::FUNCTION:
+EVP_MD_meth_get_app_datasize 5048 1_1_0 EXIST::FUNCTION:
+EVP_MD_meth_free 5049 1_1_0 EXIST::FUNCTION:
+EVP_MD_meth_set_cleanup 5050 1_1_0 EXIST::FUNCTION:
+EVP_MD_meth_get_cleanup 5051 1_1_0 EXIST::FUNCTION:
+EVP_MD_meth_set_init 5052 1_1_0 EXIST::FUNCTION:
+EVP_MD_meth_get_copy 5053 1_1_0 EXIST::FUNCTION:
+EVP_MD_CTX_set_update_fn 5054 1_1_0 EXIST::FUNCTION:
+EVP_MD_meth_dup 5055 1_1_0 EXIST::FUNCTION:
+HMAC_size 5056 1_1_0 EXIST::FUNCTION:
+HMAC_CTX_new 5057 1_1_0 EXIST::FUNCTION:
+HMAC_CTX_free 5058 1_1_0 EXIST::FUNCTION:
+EC_KEY_OpenSSL 5059 1_1_0 EXIST::FUNCTION:EC
+EC_KEY_METHOD_set_compute_key 5060 1_1_0 EXIST::FUNCTION:EC
+ENGINE_register_EC 5061 1_1_0 EXIST::FUNCTION:ENGINE
+EC_KEY_set_default_method 5062 1_1_0 EXIST::FUNCTION:EC
+ENGINE_set_default_EC 5063 1_1_0 EXIST::FUNCTION:ENGINE
+EC_KEY_METHOD_set_verify 5064 1_1_0 EXIST::FUNCTION:EC
+EC_KEY_METHOD_set_init 5065 1_1_0 EXIST::FUNCTION:EC
+ENGINE_get_default_EC 5066 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_set_EC 5067 1_1_0 EXIST::FUNCTION:ENGINE
+EC_KEY_new_method 5068 1_1_0 EXIST::FUNCTION:EC
+ENGINE_register_all_EC 5069 1_1_0 EXIST::FUNCTION:ENGINE
+ENGINE_get_EC 5070 1_1_0 EXIST::FUNCTION:ENGINE
+EC_KEY_METHOD_get_init 5071 1_1_0 EXIST::FUNCTION:EC
+EC_KEY_METHOD_get_keygen 5072 1_1_0 EXIST::FUNCTION:EC
+EC_KEY_METHOD_free 5073 1_1_0 EXIST::FUNCTION:EC
+EC_KEY_METHOD_new 5074 1_1_0 EXIST::FUNCTION:EC
+ECDSA_SIG_get0 5075 1_1_0 EXIST::FUNCTION:EC
+EC_KEY_METHOD_set_sign 5076 1_1_0 EXIST::FUNCTION:EC
+EC_KEY_get_default_method 5077 1_1_0 EXIST::FUNCTION:EC
+EC_KEY_METHOD_set_keygen 5078 1_1_0 EXIST::FUNCTION:EC
+EC_KEY_METHOD_get_verify 5079 1_1_0 EXIST::FUNCTION:EC
+ENGINE_unregister_EC 5080 1_1_0 EXIST::FUNCTION:ENGINE
+EC_KEY_METHOD_get_sign 5081 1_1_0 EXIST::FUNCTION:EC
+EC_KEY_METHOD_get_compute_key 5082 1_1_0 EXIST::FUNCTION:EC
+Poly1305_Init 5083 1_1_0 NOEXIST::FUNCTION:
+ChaCha20_ctr32 5084 1_1_0 NOEXIST::FUNCTION:
+Poly1305_ctx_size 5085 1_1_0 NOEXIST::FUNCTION:
+Poly1305_Update 5086 1_1_0 NOEXIST::FUNCTION:
+Poly1305_Final 5087 1_1_0 NOEXIST::FUNCTION:
+EVP_chacha20_poly1305 5088 1_1_0 EXIST::FUNCTION:CHACHA,POLY1305
+EVP_chacha20 5089 1_1_0 EXIST::FUNCTION:CHACHA
+TLS_FEATURE_free 5093 1_1_0 EXIST::FUNCTION:
+TLS_FEATURE_new 5094 1_1_0 EXIST::FUNCTION:
+EVP_ENCODE_CTX_free 5095 1_1_0 EXIST::FUNCTION:
+EVP_ENCODE_CTX_num 5096 1_1_0 EXIST::FUNCTION:
+EVP_ENCODE_CTX_new 5097 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_up_ref 5098 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_get0_EC_KEY 5099 1_1_0 EXIST::FUNCTION:EC
+EVP_PKEY_get0_DSA 5100 1_1_0 EXIST::FUNCTION:DSA
+EVP_PKEY_get0_DH 5101 1_1_0 EXIST::FUNCTION:DH
+X509_get0_pubkey 5102 1_1_0 EXIST::FUNCTION:
+X509_PUBKEY_get0 5103 1_1_0 EXIST::FUNCTION:
+EVP_PKEY_get0_RSA 5104 1_1_0 EXIST::FUNCTION:RSA
+EC_POINT_point2buf 5105 1_1_0 EXIST::FUNCTION:EC
+EC_KEY_key2buf 5106 1_1_0 EXIST::FUNCTION:EC
+EC_KEY_oct2key 5107 1_1_0 EXIST::FUNCTION:EC
+OPENSSL_strlcpy 5108 1_1_0 EXIST::FUNCTION:
+OPENSSL_strnlen 5109 1_1_0 EXIST::FUNCTION:
+OPENSSL_strlcat 5110 1_1_0 EXIST::FUNCTION:
+CRYPTO_memdup 5112 1_1_0 EXIST::FUNCTION:
+CRYPTO_strndup 5113 1_1_0 EXIST::FUNCTION:
+X509_VERIFY_PARAM_move_peername 5114 1_1_0 EXIST::FUNCTION:
+X509_STORE_CTX_set0_dane 5115 1_1_0 EXIST::FUNCTION:
+CRYPTO_secure_used 5116 1_1_0 EXIST::FUNCTION:
+CRYPTO_clear_realloc 5117 1_1_0 EXIST::FUNCTION:
+CRYPTO_mem_debug_push 5118 1_1_0 EXIST::FUNCTION:CRYPTO_MDEBUG
+CRYPTO_set_mem_debug 5119 1_1_0 EXIST::FUNCTION:
+CRYPTO_mem_debug_pop 5120 1_1_0 EXIST::FUNCTION:CRYPTO_MDEBUG
+CRYPTO_secure_actual_size 5121 1_1_0 EXIST::FUNCTION:
+lh_get_down_load 5122 1_1_0 EXIST::FUNCTION:
+lh_error 5123 1_1_0 EXIST::FUNCTION:
+lh_set_down_load 5124 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_CTX_set_num 5125 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_meth_set_init 5126 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_impl_ctx_size 5127 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_meth_set_cleanup 5128 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_meth_free 5129 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_CTX_encrypting 5130 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_meth_set_set_asn1_params 5131 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_meth_dup 5132 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_meth_set_ctrl 5133 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_CTX_reset 5134 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_CTX_iv 5135 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_CTX_num 5136 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_meth_get_get_asn1_params 5137 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_meth_get_set_asn1_params 5138 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_CTX_get_cipher_data 5139 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_CTX_iv_noconst 5140 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_meth_set_do_cipher 5141 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_meth_new 5142 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_meth_get_do_cipher 5143 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_meth_get_init 5144 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_CTX_original_iv 5145 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_meth_get_cleanup 5146 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_meth_get_ctrl 5147 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_meth_set_impl_ctx_size 5148 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_CTX_buf_noconst 5149 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_meth_set_flags 5150 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_meth_set_iv_length 5151 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_meth_set_get_asn1_params 5152 1_1_0 EXIST::FUNCTION:
+EC_KEY_set_ex_data 5153 1_1_0 EXIST::FUNCTION:EC
+EC_KEY_get_ex_data 5154 1_1_0 EXIST::FUNCTION:EC
+EC_KEY_set_method 5155 1_1_0 EXIST::FUNCTION:EC
+EC_KEY_get_method 5156 1_1_0 EXIST::FUNCTION:EC
+OCSP_SINGLERESP_get0_id 5157 1_1_0 EXIST::FUNCTION:
+TS_STATUS_INFO_get0_status 5158 1_1_0 EXIST::FUNCTION:
+OCSP_resp_get0_produced_at 5159 1_1_0 EXIST::FUNCTION:
+TS_STATUS_INFO_get0_failure_info 5160 1_1_0 EXIST::FUNCTION:
+TS_STATUS_INFO_get0_text 5161 1_1_0 EXIST::FUNCTION:
+CRYPTO_secure_zalloc 5162 1_1_0 EXIST::FUNCTION:
+X509_NAME_get0_der 5163 1_1_0 EXIST::FUNCTION:
+EC_GROUP_order_bits 5164 1_1_0 EXIST::FUNCTION:EC
+EC_GROUP_get0_order 5165 1_1_0 EXIST::FUNCTION:EC
+EC_GROUP_get0_cofactor 5166 1_1_0 EXIST::FUNCTION:EC
+BN_bn2lebinpad 5167 1_1_0 EXIST::FUNCTION:
+BN_lebin2bn 5168 1_1_0 EXIST::FUNCTION:
+BN_bn2binpad 5169 1_1_0 EXIST::FUNCTION:
+BIO_ADDR_service_string 5170 1_1_0 EXIST::FUNCTION:
+BIO_ADDRINFO_family 5171 1_1_0 EXIST::FUNCTION:
+BIO_ADDR_family 5172 1_1_0 EXIST::FUNCTION:
+BIO_lookup 5173 1_1_0 EXIST::FUNCTION:
+BIO_ADDR_path_string 5174 1_1_0 EXIST::FUNCTION:
+BIO_ADDRINFO_protocol 5175 1_1_0 EXIST::FUNCTION:
+BIO_ADDRINFO_socktype 5176 1_1_0 EXIST::FUNCTION:
+BIO_ADDRINFO_next 5177 1_1_0 EXIST::FUNCTION:
+BIO_ADDR_rawaddress 5178 1_1_0 EXIST::FUNCTION:
+BIO_ADDR_hostname_string 5179 1_1_0 EXIST::FUNCTION:
+BIO_ADDR_free 5180 1_1_0 EXIST::FUNCTION:
+BIO_ADDR_rawport 5181 1_1_0 EXIST::FUNCTION:
+BIO_ADDRINFO_address 5182 1_1_0 EXIST::FUNCTION:
+BIO_ADDR_new 5183 1_1_0 EXIST::FUNCTION:
+BIO_ADDR_rawmake 5184 1_1_0 EXIST::FUNCTION:
+BIO_ADDRINFO_free 5185 1_1_0 EXIST::FUNCTION:
+BIO_parse_hostserv 5186 1_1_0 EXIST::FUNCTION:
+BIO_accept_ex 5187 1_1_0 EXIST::FUNCTION:
+BIO_connect 5188 1_1_0 EXIST::FUNCTION:
+BIO_closesocket 5189 1_1_0 EXIST::FUNCTION:
+BIO_sock_info 5190 1_1_0 EXIST::FUNCTION:
+BIO_socket 5191 1_1_0 EXIST::FUNCTION:
+BIO_listen 5192 1_1_0 EXIST::FUNCTION:
+EC_KEY_priv2oct 5193 1_1_0 EXIST::FUNCTION:EC
+EC_KEY_oct2priv 5194 1_1_0 EXIST::FUNCTION:EC
+ASN1_buf_print 5195 1_1_0 EXIST::FUNCTION:
+EC_KEY_priv2buf 5196 1_1_0 EXIST::FUNCTION:EC
+BIO_ADDR_clear 5197 1_1_0 EXIST::FUNCTION:
+PKCS12_SAFEBAG_get0_safes 5198 1_1_0 EXIST::FUNCTION:
+PKCS12_SAFEBAG_get0_p8inf 5199 1_1_0 EXIST::FUNCTION:
+PKCS12_SAFEBAG_get_nid 5200 1_1_0 EXIST::FUNCTION:
+PKCS12_mac_present 5201 1_1_0 EXIST::FUNCTION:
+PKCS12_SAFEBAG_get0_attrs 5202 1_1_0 EXIST::FUNCTION:
+PKCS12_SAFEBAG_get_bag_nid 5203 1_1_0 EXIST::FUNCTION:
+PKCS12_SAFEBAG_get0_type 5204 1_1_0 EXIST::FUNCTION:
+PKCS12_SAFEBAG_create0_pkcs8 5205 1_1_0 EXIST::FUNCTION:
+PKCS8_get_attr 5206 1_1_0 EXIST::FUNCTION:
+PKCS12_SAFEBAG_get0_attr 5207 1_1_0 EXIST::FUNCTION:
+PKCS12_get0_mac 5208 1_1_0 EXIST::FUNCTION:
+PKCS12_SAFEBAG_get0_pkcs8 5209 1_1_0 EXIST::FUNCTION:
+OPENSSL_cleanup 5210 1_1_0 EXIST::FUNCTION:
+OPENSSL_atexit 5211 1_1_0 EXIST::FUNCTION:
+OPENSSL_init_crypto 5212 1_1_0 EXIST::FUNCTION:
+OPENSSL_thread_stop 5213 1_1_0 EXIST::FUNCTION:
+OPENSSL_INIT_new 5215 1_1_0 EXIST::FUNCTION:
+OPENSSL_INIT_free 5216 1_1_0 EXIST::FUNCTION:
+OPENSSL_INIT_set_config_filename 5217 1_1_0 EXIST::FUNCTION:
+EVP_CIPHER_CTX_set_cipher_data 5218 1_1_0 EXIST::FUNCTION:
diff --git a/util/libssl.num b/util/libssl.num
index f1f2dd1..b73962a 100644
--- a/util/libssl.num
+++ b/util/libssl.num
@@ -381,3 +381,6 @@ SSL_get_ct_validation_callback 380 1_1_0 EXIST::FUNCTION:CT
SSL_get0_peer_scts 381 1_1_0 EXIST::FUNCTION:CT
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
index 0000000..7377ffe
--- /dev/null
+++ b/util/ssleay.num
@@ -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:
More information about the openssl-commits
mailing list