diff options
-rw-r--r-- | doc/ssl/SSL_get_client_random.pod | 14 | ||||
-rw-r--r-- | include/openssl/ssl.h | 12 | ||||
-rw-r--r-- | ssl/ssl_lib.c | 16 | ||||
-rwxr-xr-x | util/ssleay.num | 4 |
4 files changed, 25 insertions, 21 deletions
diff --git a/doc/ssl/SSL_get_client_random.pod b/doc/ssl/SSL_get_client_random.pod index 75a5c33d22..2cddf73797 100644 --- a/doc/ssl/SSL_get_client_random.pod +++ b/doc/ssl/SSL_get_client_random.pod @@ -8,9 +8,9 @@ SSL_get_client_random, SSL_get_server_random, SSL_SESSION_get_master_key - retri #include <openssl/ssl.h> - int SSL_get_client_random(const SSL *ssl, unsigned char *out, size_t outlen); - int SSL_get_server_random(const SSL *ssl, unsigned char *out, size_t outlen); - int SSL_SESSION_get_master_key(const SSL_SESSION *session, unsigned char *out, size_t outlen); + size_t SSL_get_client_random(const SSL *ssl, unsigned char *out, size_t outlen); + size_t SSL_get_server_random(const SSL *ssl, unsigned char *out, size_t outlen); + size_t SSL_SESSION_get_master_key(const SSL_SESSION *session, unsigned char *out, size_t outlen); =head1 DESCRIPTION @@ -18,8 +18,8 @@ SSL_get_client_random() extracts the random value sent from the client to the server during the initial SSL/TLS handshake. It copies as many bytes as it can of this value into the buffer provided in B<out>, which must have at least B<outlen> bytes available. It returns the -total number of bytes that were actually copied. If B<outlen> is less -than zero, SSL_get_client_random() copies nothing, and returns the +total number of bytes that were actually copied. If B<outlen> is +zero, SSL_get_client_random() copies nothing, and returns the total size of the client_random value. SSL_get_server_random() behaves the same, but extracts the random value @@ -63,10 +63,10 @@ values based on their view of the current time. =head1 RETURN VALUES -If B<outlen> is at least 0, these functions return the number of bytes +If B<outlen> is greater than 0, these functions return the number of bytes actually copied, which will be less than or equal to B<outlen>. -If B<outlen> is less than 0, these functions return the maximum number +If B<outlen> is 0, these functions return the maximum number of bytes they would copy--that is, the length of the underlying field. =head1 SEE ALSO diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h index 261e399640..3e2dac6746 100644 --- a/include/openssl/ssl.h +++ b/include/openssl/ssl.h @@ -1652,12 +1652,12 @@ void SSL_set_state(SSL *ssl, int state); void SSL_set_verify_result(SSL *ssl, long v); __owur long SSL_get_verify_result(const SSL *ssl); -__owur int SSL_get_client_random(const SSL *ssl, unsigned char *out, - size_t outlen); -__owur int SSL_get_server_random(const SSL *ssl, unsigned char *out, - size_t outlen); -__owur int SSL_SESSION_get_master_key(const SSL_SESSION *ssl, - unsigned char *out, size_t outlen); +__owur size_t SSL_get_client_random(const SSL *ssl, unsigned char *out, + size_t outlen); +__owur size_t SSL_get_server_random(const SSL *ssl, unsigned char *out, + size_t outlen); +__owur size_t SSL_SESSION_get_master_key(const SSL_SESSION *ssl, + unsigned char *out, size_t outlen); __owur int SSL_set_ex_data(SSL *ssl, int idx, void *data); void *SSL_get_ex_data(const SSL *ssl, int idx); diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c index f046770756..1ce4f36cc9 100644 --- a/ssl/ssl_lib.c +++ b/ssl/ssl_lib.c @@ -2897,39 +2897,39 @@ long SSL_get_verify_result(const SSL *ssl) return (ssl->verify_result); } -int SSL_get_client_random(const SSL *ssl, unsigned char *out, size_t outlen) +size_t SSL_get_client_random(const SSL *ssl, unsigned char *out, size_t outlen) { if (outlen == 0) return sizeof(ssl->s3->client_random); if (outlen > sizeof(ssl->s3->client_random)) outlen = sizeof(ssl->s3->client_random); memcpy(out, ssl->s3->client_random, outlen); - return (outlen); + return outlen; } -int SSL_get_server_random(const SSL *ssl, unsigned char *out, size_t outlen) +size_t SSL_get_server_random(const SSL *ssl, unsigned char *out, size_t outlen) { if (outlen == 0) return sizeof(ssl->s3->server_random); if (outlen > sizeof(ssl->s3->server_random)) outlen = sizeof(ssl->s3->server_random); memcpy(out, ssl->s3->server_random, outlen); - return (outlen); + return outlen; } -int SSL_SESSION_get_master_key(const SSL_SESSION *session, +size_t SSL_SESSION_get_master_key(const SSL_SESSION *session, unsigned char *out, size_t outlen) { - if (outlen == 0) - return session->master_key_length; if (session->master_key_length < 0) { /* Should never happen */ return 0; } + if (outlen == 0) + return session->master_key_length; if (outlen > (size_t)session->master_key_length) outlen = session->master_key_length; memcpy(out, session->master_key, outlen); - return (outlen); + return outlen; } int SSL_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, diff --git a/util/ssleay.num b/util/ssleay.num index 1b4755cb12..1441be770b 100755 --- a/util/ssleay.num +++ b/util/ssleay.num @@ -399,3 +399,7 @@ SSL_use_certificate_chain_file 433 EXIST::FUNCTION:STDIO TLS_server_method 434 EXIST::FUNCTION: TLS_method 435 EXIST::FUNCTION: TLS_client_method 436 EXIST::FUNCTION: +SSL_get_server_random 437 EXIST::FUNCTION: +SSL_get_client_ciphers 438 EXIST::FUNCTION: +SSL_get_client_random 439 EXIST::FUNCTION: +SSL_SESSION_get_master_key 440 EXIST::FUNCTION: |