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 <agl@google.com>
diff --git a/include/openssl/dtls1.h b/include/openssl/dtls1.h index c835789..cc91349 100644 --- a/include/openssl/dtls1.h +++ b/include/openssl/dtls1.h
@@ -173,8 +173,8 @@ 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 6e44b93..49fccd8 100644 --- a/include/openssl/ssl.h +++ b/include/openssl/ssl.h
@@ -903,13 +903,11 @@ /* 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 @@ #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 df691ab..18d2470 100644 --- a/ssl/d1_srvr.c +++ b/ssl/d1_srvr.c
@@ -719,8 +719,7 @@ *(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 76766b0..6a028ef 100644 --- a/ssl/s3_srvr.c +++ b/ssl/s3_srvr.c
@@ -1010,8 +1010,7 @@ 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 5749574..0b6a6e3 100644 --- a/ssl/ssl_sess.c +++ b/ssl/ssl_sess.c
@@ -1066,14 +1066,13 @@ } 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 4f26bfb..bc4a186 100644 --- a/ssl/test/bssl_shim.cc +++ b/ssl/test/bssl_shim.cc
@@ -125,13 +125,13 @@ 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;