提交 8ea404fb 编写于 作者: B Benjamin Kaduk 提交者: Matt Caswell

Add sslapitest for SSL_early_get1_extensions_present()

Call it from the early callback used for testing these functions, and verify
the expected contents of the ClientHello
Reviewed-by: NMatt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/2976)
上级 193b5d76
...@@ -404,6 +404,7 @@ static int full_early_callback(SSL *s, int *al, void *arg) ...@@ -404,6 +404,7 @@ static int full_early_callback(SSL *s, int *al, void *arg)
{ {
int *ctr = arg; int *ctr = arg;
const unsigned char *p; const unsigned char *p;
int *exts;
/* We only configure two ciphers, but the SCSV is added automatically. */ /* We only configure two ciphers, but the SCSV is added automatically. */
#ifdef OPENSSL_NO_EC #ifdef OPENSSL_NO_EC
const unsigned char expected_ciphers[] = {0x00, 0x9d, 0x00, 0xff}; const unsigned char expected_ciphers[] = {0x00, 0x9d, 0x00, 0xff};
...@@ -411,6 +412,11 @@ static int full_early_callback(SSL *s, int *al, void *arg) ...@@ -411,6 +412,11 @@ static int full_early_callback(SSL *s, int *al, void *arg)
const unsigned char expected_ciphers[] = {0x00, 0x9d, 0xc0, const unsigned char expected_ciphers[] = {0x00, 0x9d, 0xc0,
0x2c, 0x00, 0xff}; 0x2c, 0x00, 0xff};
#endif #endif
const int expected_extensions[] = {
#ifndef OPENSSL_NO_EC
11, 10,
#endif
35, 13, 22, 23};
size_t len; size_t len;
/* Make sure we can defer processing and get called back. */ /* Make sure we can defer processing and get called back. */
...@@ -422,6 +428,15 @@ static int full_early_callback(SSL *s, int *al, void *arg) ...@@ -422,6 +428,15 @@ static int full_early_callback(SSL *s, int *al, void *arg)
|| !TEST_size_t_eq(SSL_early_get0_compression_methods(s, &p), 1) || !TEST_size_t_eq(SSL_early_get0_compression_methods(s, &p), 1)
|| !TEST_int_eq(*p, 0)) || !TEST_int_eq(*p, 0))
return 0; return 0;
if (!SSL_early_get1_extensions_present(s, &exts, &len))
return 0;
if (len != OSSL_NELEM(expected_extensions) ||
memcmp(exts, expected_extensions, len * sizeof(*exts)) != 0) {
printf("Early callback expected ClientHello extensions mismatch\n");
OPENSSL_free(exts);
return 0;
}
OPENSSL_free(exts);
return 1; return 1;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册