Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Correct tls1.3-draft19 intermediate secret derivation #2989

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion ssl/tls13_enc.c
Expand Up @@ -124,7 +124,7 @@ int tls13_generate_secret(SSL *s, const EVP_MD *md,
size_t mdlen, prevsecretlen;
int ret;
EVP_PKEY_CTX *pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_HKDF, NULL);
const char *derived_secret_label = "derived secret";
static const char derived_secret_label[] = "derived secret";
unsigned char preextractsec[EVP_MAX_MD_SIZE];

if (pctx == NULL)
Expand Down
60 changes: 30 additions & 30 deletions test/tls13secretstest.c
Expand Up @@ -53,83 +53,83 @@ static unsigned char ecdhe_secret[] = {
};

static unsigned char handshake_secret[] = {
0xed, 0x80, 0x0a, 0x28, 0x28, 0xf6, 0x3b, 0x45, 0x6b, 0x26, 0xf6, 0x5c, 0x5e,
0x2e, 0x30, 0x57, 0xc8, 0x02, 0xe2, 0x03, 0x5c, 0xf6, 0xf2, 0xd7, 0x1b, 0x95,
0x45, 0x5f, 0xb0, 0x76, 0x23, 0x4e
0xa4, 0xc6, 0x2e, 0x1c, 0x3c, 0xb8, 0x0a, 0xae, 0x34, 0x34, 0x0d, 0xb8, 0xfb,
0x0d, 0xd5, 0x0d, 0x2d, 0x2f, 0x08, 0xa4, 0x54, 0x6b, 0xbb, 0x2e, 0x60, 0xc6,
0x53, 0xac, 0xb3, 0xca, 0xf2, 0x87
};

static const char *client_hts_label = "client handshake traffic secret";

static unsigned char client_hts[] = {
0x39, 0x58, 0x9d, 0x3f, 0xaf, 0x5f, 0xc0, 0xc2, 0xa3, 0x56, 0x94, 0x4f, 0x0a,
0x08, 0x63, 0x84, 0xbc, 0xec, 0xcf, 0x2c, 0x25, 0x2f, 0xce, 0xfe, 0x0c, 0x57,
0xb3, 0xca, 0x21, 0xc4, 0x37, 0x73
0xd7, 0x58, 0x9f, 0x10, 0xa8, 0x30, 0xf3, 0x85, 0x63, 0x6f, 0xd9, 0xb0, 0x61,
0xd5, 0x20, 0x19, 0xb1, 0x45, 0x96, 0x82, 0x24, 0x8e, 0x36, 0x45, 0xf7, 0x5a,
0xd7, 0x2f, 0x31, 0xec, 0x57, 0xf7
};

static unsigned char client_hts_key[] = {
0x6d, 0x91, 0x24, 0xf2, 0xd8, 0xd7, 0x65, 0x90, 0x86, 0x4d, 0x04, 0xbc, 0x94,
0x26, 0xcb, 0x2f
0xcc, 0x8b, 0xda, 0xbf, 0x83, 0x74, 0x2d, 0xf4, 0x53, 0x44, 0xff, 0xbc, 0xa4,
0x43, 0xc8, 0x2a
};

static unsigned char client_hts_iv[] = {
0x16, 0x9b, 0x9f, 0x47, 0x16, 0x8a, 0xb5, 0x4d, 0xf5, 0x28, 0x1e, 0xe2
0xa4, 0x83, 0x46, 0x11, 0xc2, 0x78, 0xea, 0x0f, 0x94, 0x52, 0x1d, 0xca
};

static const char *server_hts_label = "server handshake traffic secret";

static unsigned char server_hts[] = {
0x3a, 0xb5, 0x28, 0x21, 0x7d, 0xb3, 0xbc, 0x5a, 0xf4, 0x8b, 0xc2, 0x3a, 0x1b,
0x1e, 0x6f, 0x2b, 0x8e, 0xb0, 0xac, 0x26, 0xe9, 0x6d, 0xee, 0xa7, 0x3e, 0xfd,
0x0a, 0x9f, 0xc0, 0x28, 0x62, 0x70
0xba, 0x7c, 0x3b, 0x74, 0x0d, 0x1e, 0x84, 0x82, 0xd6, 0x6f, 0x3e, 0x5e, 0x1d,
0x6e, 0x25, 0xdc, 0x87, 0x1f, 0x48, 0x74, 0x2f, 0x65, 0xa4, 0x40, 0x39, 0xda,
0xdc, 0x02, 0x2a, 0x16, 0x19, 0x5c
};

static unsigned char server_hts_key[] = {
0x6d, 0x92, 0xe8, 0x71, 0x97, 0xf4, 0x12, 0xf5, 0x8f, 0x9c, 0xab, 0xf9, 0x55,
0xe9, 0x74, 0x7e
0x7d, 0x22, 0x2a, 0x3f, 0x72, 0x37, 0x92, 0xd9, 0x95, 0x9a, 0xe1, 0x66, 0x32,
0x6f, 0x0d, 0xc9
};

static unsigned char server_hts_iv[] = {
0x85, 0x45, 0xc8, 0x3e, 0x94, 0x68, 0x4f, 0xd9, 0xe4, 0xd8, 0x42, 0x64
0xa2, 0x73, 0xcd, 0x4e, 0x20, 0xe7, 0xe1, 0xe3, 0xcb, 0x0e, 0x18, 0x9e
};

static unsigned char master_secret[] = {
0x3d, 0x10, 0x81, 0xb3, 0x9d, 0x60, 0x3a, 0x9f, 0x3a, 0x1b, 0x7c, 0xec, 0x0d,
0xfc, 0x92, 0xe5, 0xca, 0xcc, 0x6c, 0xd6, 0xec, 0xd1, 0x58, 0xcd, 0xd9, 0x93,
0xf1, 0xfc, 0xe3, 0x10, 0x8e, 0x84
0x9a, 0x2f, 0x36, 0xdc, 0x68, 0xab, 0x8f, 0x07, 0xef, 0x41, 0xea, 0x63, 0x39,
0xfc, 0x46, 0x6b, 0x11, 0x24, 0xd6, 0xba, 0x6b, 0x8a, 0x92, 0x74, 0x61, 0xd3,
0x64, 0x82, 0xc1, 0xc9, 0xc7, 0x0e
};

static const char *client_ats_label = "client application traffic secret";

static unsigned char client_ats[] = {
0xe6, 0xb3, 0xbd, 0x9b, 0x6b, 0xd5, 0xbf, 0x4c, 0xba, 0x8f, 0xbf, 0xc1, 0x15,
0xb2, 0x06, 0x34, 0x83, 0xfa, 0xad, 0x72, 0xb3, 0xb8, 0x08, 0xa7, 0xa8, 0xd1,
0x6e, 0xc5, 0x37, 0x1f, 0x4d, 0x9c
0xc3, 0x60, 0x5f, 0xb3, 0xc4, 0x4b, 0xc2, 0x25, 0xd2, 0xaf, 0x36, 0xad, 0x99,
0xa1, 0xcd, 0xcf, 0x71, 0xc4, 0xb9, 0xa2, 0x3d, 0xd2, 0x3e, 0xe6, 0xff, 0xca,
0x2c, 0x71, 0x86, 0x3d, 0x1f, 0x85
};

static unsigned char client_ats_key[] = {
0x87, 0xe6, 0xee, 0xdc, 0x4d, 0x9b, 0x0c, 0xa4, 0x65, 0xff, 0xe4, 0xb9, 0xeb,
0x2b, 0x26, 0xf9
0x3a, 0x25, 0x23, 0x12, 0xde, 0x0f, 0x53, 0xc7, 0xa0, 0xb2, 0xcf, 0x71, 0xb7,
0x1a, 0x0d, 0xc7
};

static unsigned char client_ats_iv[] = {
0xf0, 0x15, 0xc6, 0xbc, 0x95, 0x89, 0xc8, 0x94, 0x03, 0x4d, 0x6c, 0x70
0xbd, 0x0d, 0x3c, 0x26, 0x9d, 0x2d, 0xa6, 0x52, 0x1b, 0x8d, 0x45, 0xef
};

static const char *server_ats_label = "server application traffic secret";

static unsigned char server_ats[] = {
0x27, 0x72, 0x45, 0xe1, 0x1c, 0xcd, 0x40, 0x67, 0xdf, 0xa7, 0xf5, 0xd2, 0xa2,
0xda, 0xe8, 0x87, 0x61, 0x52, 0xc3, 0x0d, 0x7f, 0x62, 0x22, 0x03, 0xd4, 0x97,
0xfa, 0xaf, 0x31, 0xab, 0xaa, 0xba
0x27, 0x8d, 0x96, 0x76, 0x95, 0x9e, 0x3e, 0x39, 0xa4, 0xa9, 0xfc, 0x46, 0x9c,
0x32, 0x9f, 0xe0, 0x29, 0x50, 0x22, 0x45, 0x39, 0x82, 0xdd, 0x1c, 0xc5, 0xfb,
0xa9, 0x0a, 0x68, 0x29, 0x4e, 0x80
};

static unsigned char server_ats_key[] = {
0xd2, 0xa3, 0x23, 0x54, 0x66, 0x92, 0x33, 0xa2, 0x49, 0x19, 0x74, 0xc2, 0x1a,
0x0e, 0x19, 0x01
0x78, 0xbd, 0xd7, 0xc6, 0xb0, 0xf1, 0x50, 0x5e, 0xae, 0x54, 0xff, 0xa5, 0xf2,
0xed, 0x0b, 0x77
};

static unsigned char server_ats_iv[] = {
0x70, 0x28, 0x1e, 0x0d, 0xf7, 0xd4, 0x16, 0x97, 0xd3, 0xc3, 0xc4, 0x51
0xb1, 0x7b, 0x1c, 0xa2, 0xca, 0xbe, 0xe4, 0xac, 0xb5, 0xf3, 0x91, 0x7e
};

/* Mocked out implementations of various functions */
Expand Down