From fb4ea28bb84875a844cd65a9e4a2167ec884cd48 Mon Sep 17 00:00:00 2001 From: David Benjamin Date: Fri, 15 Aug 2014 13:38:15 -0400 Subject: [PATCH] Tidy DTLS cookie callback types. const-correctness, unsigned long -> size_t. Change-Id: Ic0c2685a48a0f98396c5753b6077c6c0c3b92326 Reviewed-on: https://boringssl-review.googlesource.com/1540 Reviewed-by: Adam Langley --- include/openssl/dtls1.h | 4 ++-- include/openssl/ssl.h | 14 ++++++-------- ssl/d1_srvr.c | 3 +-- ssl/s3_srvr.c | 3 +-- ssl/ssl_sess.c | 5 ++--- ssl/test/bssl_shim.cc | 4 ++-- 6 files changed, 14 insertions(+), 19 deletions(-) diff --git a/include/openssl/dtls1.h b/include/openssl/dtls1.h index c83578929..cc91349d7 100644 --- a/include/openssl/dtls1.h +++ b/include/openssl/dtls1.h @@ -173,8 +173,8 @@ typedef struct hm_fragment_st typedef struct dtls1_state_st { unsigned int send_cookie; - unsigned char cookie[DTLS1_COOKIE_LENGTH]; - unsigned int cookie_len; + uint8_t cookie[DTLS1_COOKIE_LENGTH]; + size_t cookie_len; /* * The current data and handshake epoch. This is initially diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h index 6e44b93b1..49fccd8dd 100644 --- a/include/openssl/ssl.h +++ b/include/openssl/ssl.h @@ -903,13 +903,11 @@ struct ssl_ctx_st /* get channel id callback */ void (*channel_id_cb)(SSL *ssl, EVP_PKEY **pkey); - /* cookie generate callback */ - int (*app_gen_cookie_cb)(SSL *ssl, unsigned char *cookie, - unsigned int *cookie_len); + /* cookie generate callback */ + int (*app_gen_cookie_cb)(SSL *ssl, uint8_t *cookie, size_t *cookie_len); - /* verify cookie callback */ - int (*app_verify_cookie_cb)(SSL *ssl, unsigned char *cookie, - unsigned int cookie_len); + /* verify cookie callback */ + int (*app_verify_cookie_cb)(SSL *ssl, const uint8_t *cookie, size_t cookie_len); CRYPTO_EX_DATA ex_data; @@ -1136,8 +1134,8 @@ OPENSSL_EXPORT void (*SSL_CTX_get_channel_id_cb(SSL_CTX *ctx))(SSL *ssl, EVP_PKE #ifndef OPENSSL_NO_ENGINE OPENSSL_EXPORT int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e); #endif -OPENSSL_EXPORT void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, int (*app_gen_cookie_cb)(SSL *ssl, unsigned char *cookie, unsigned int *cookie_len)); -OPENSSL_EXPORT void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, int (*app_verify_cookie_cb)(SSL *ssl, unsigned char *cookie, unsigned int cookie_len)); +OPENSSL_EXPORT void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, int (*app_gen_cookie_cb)(SSL *ssl, uint8_t *cookie, size_t *cookie_len)); +OPENSSL_EXPORT void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, int (*app_verify_cookie_cb)(SSL *ssl, const uint8_t *cookie, size_t cookie_len)); #ifndef OPENSSL_NO_NEXTPROTONEG OPENSSL_EXPORT void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s, int (*cb) (SSL *ssl, diff --git a/ssl/d1_srvr.c b/ssl/d1_srvr.c index df691ab53..18d247041 100644 --- a/ssl/d1_srvr.c +++ b/ssl/d1_srvr.c @@ -719,8 +719,7 @@ int dtls1_send_hello_verify_request(SSL *s) *(p++) = DTLS1_VERSION & 0xFF; if (s->ctx->app_gen_cookie_cb == NULL || - s->ctx->app_gen_cookie_cb(s, s->d1->cookie, - &(s->d1->cookie_len)) == 0) + s->ctx->app_gen_cookie_cb(s, s->d1->cookie, &(s->d1->cookie_len)) == 0) { OPENSSL_PUT_ERROR(SSL, dtls1_send_hello_verify_request, ERR_R_INTERNAL_ERROR); return 0; diff --git a/ssl/s3_srvr.c b/ssl/s3_srvr.c index 76766b054..6a028ef6e 100644 --- a/ssl/s3_srvr.c +++ b/ssl/s3_srvr.c @@ -1010,8 +1010,7 @@ int ssl3_get_client_hello(SSL *s) if (s->ctx->app_verify_cookie_cb != NULL) { if (s->ctx->app_verify_cookie_cb(s, - (unsigned char*)CBS_data(&cookie), - CBS_len(&cookie)) == 0) + CBS_data(&cookie), CBS_len(&cookie)) == 0) { al=SSL_AD_HANDSHAKE_FAILURE; OPENSSL_PUT_ERROR(SSL, ssl3_get_client_hello, SSL_R_COOKIE_MISMATCH); diff --git a/ssl/ssl_sess.c b/ssl/ssl_sess.c index 5749574c3..0b6a6e39a 100644 --- a/ssl/ssl_sess.c +++ b/ssl/ssl_sess.c @@ -1066,14 +1066,13 @@ int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx))(SSL * ssl, X509 ** x509 , EVP_PK } void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, - int (*cb)(SSL *ssl, unsigned char *cookie, unsigned int *cookie_len)) + int (*cb)(SSL *ssl, uint8_t *cookie, size_t *cookie_len)) { ctx->app_gen_cookie_cb=cb; } -/* TODO(davidben): |cookie| should be a const pointer. */ void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, - int (*cb)(SSL *ssl, unsigned char *cookie, unsigned int cookie_len)) + int (*cb)(SSL *ssl, const uint8_t *cookie, size_t cookie_len)) { ctx->app_verify_cookie_cb=cb; } diff --git a/ssl/test/bssl_shim.cc b/ssl/test/bssl_shim.cc index 4f26bfbdd..bc4a186eb 100644 --- a/ssl/test/bssl_shim.cc +++ b/ssl/test/bssl_shim.cc @@ -125,13 +125,13 @@ static int next_proto_select_callback(SSL* ssl, return SSL_TLSEXT_ERR_OK; } -static int cookie_generate_callback(SSL *ssl, uint8_t *cookie, unsigned *cookie_len) { +static int cookie_generate_callback(SSL *ssl, uint8_t *cookie, size_t *cookie_len) { *cookie_len = 32; memset(cookie, 42, *cookie_len); return 1; } -static int cookie_verify_callback(SSL *ssl, uint8_t *cookie, unsigned cookie_len) { +static int cookie_verify_callback(SSL *ssl, const uint8_t *cookie, size_t cookie_len) { if (cookie_len != 32) { fprintf(stderr, "Cookie length mismatch.\n"); return 0;