diff --git a/doc/ssl/SSL_get_client_random.pod b/doc/ssl/SSL_get_client_random.pod index 75a5c33d2217f0d352dfa49b8667d86020d723bc..2cddf73797517ed79b7898c71d37a735205a61ce 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 - 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, which must have at least B bytes available. It returns the -total number of bytes that were actually copied. If B is less -than zero, SSL_get_client_random() copies nothing, and returns the +total number of bytes that were actually copied. If B 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 is at least 0, these functions return the number of bytes +If B is greater than 0, these functions return the number of bytes actually copied, which will be less than or equal to B. -If B is less than 0, these functions return the maximum number +If B 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 261e399640f468891de1eabef26d2be48ee3c372..3e2dac674688d7ece98714a0fb0c0ba412678b8f 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 f046770756c0def1c02888171d027144e6a85978..1ce4f36cc906283a7046c196fa17264f4061c47b 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 1b4755cb12b29e4af90e66ae85fa5d412dc47c52..1441be770b99fbeb7de1d5110967f89fc80ef285 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: