Added implementation of keying material export (RFC 5705) (API for PRF implementations changed, to handle chunked seeds).
This commit is contained in:
parent
2b738493bd
commit
ea95d8264c
15 changed files with 256 additions and 77 deletions
|
|
@ -1075,21 +1075,43 @@ test_HMAC_DRBG(void)
|
|||
}
|
||||
|
||||
static void
|
||||
do_KAT_PRF(
|
||||
void (*prf)(void *dst, size_t len,
|
||||
const void *secret, size_t secret_len,
|
||||
const char *label, const void *seed, size_t seed_len),
|
||||
do_KAT_PRF(br_tls_prf_impl prf,
|
||||
const char *ssecret, const char *label, const char *sseed,
|
||||
const char *sref)
|
||||
{
|
||||
unsigned char secret[100], seed[100], ref[500], out[500];
|
||||
size_t secret_len, seed_len, ref_len;
|
||||
br_tls_prf_seed_chunk chunks[2];
|
||||
|
||||
secret_len = hextobin(secret, ssecret);
|
||||
seed_len = hextobin(seed, sseed);
|
||||
ref_len = hextobin(ref, sref);
|
||||
prf(out, ref_len, secret, secret_len, label, seed, seed_len);
|
||||
check_equals("TLS PRF KAT", out, ref, ref_len);
|
||||
|
||||
chunks[0].data = seed;
|
||||
chunks[0].len = seed_len;
|
||||
prf(out, ref_len, secret, secret_len, label, 1, chunks);
|
||||
check_equals("TLS PRF KAT 1", out, ref, ref_len);
|
||||
|
||||
chunks[0].data = seed;
|
||||
chunks[0].len = seed_len;
|
||||
chunks[1].data = NULL;
|
||||
chunks[1].len = 0;
|
||||
prf(out, ref_len, secret, secret_len, label, 2, chunks);
|
||||
check_equals("TLS PRF KAT 2", out, ref, ref_len);
|
||||
|
||||
chunks[0].data = NULL;
|
||||
chunks[0].len = 0;
|
||||
chunks[1].data = seed;
|
||||
chunks[1].len = seed_len;
|
||||
prf(out, ref_len, secret, secret_len, label, 2, chunks);
|
||||
check_equals("TLS PRF KAT 3", out, ref, ref_len);
|
||||
|
||||
chunks[0].data = seed;
|
||||
chunks[0].len = seed_len >> 1;
|
||||
chunks[1].data = seed + chunks[0].len;
|
||||
chunks[1].len = seed_len - chunks[0].len;
|
||||
prf(out, ref_len, secret, secret_len, label, 2, chunks);
|
||||
check_equals("TLS PRF KAT 4", out, ref, ref_len);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue