diff options
author | Nick Mathewson <nickm@torproject.org> | 2016-05-10 16:47:52 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2016-11-03 08:37:20 -0400 |
commit | b004ff45d7f637675be976737eb7efea8da5b49c (patch) | |
tree | 3a1db9609917f593d325e11e8eee2abbd404afe4 /src/common/tortls.c | |
parent | fdd8f8df67be92b5e3058afcad68a1e267442b77 (diff) | |
download | tor-b004ff45d7f637675be976737eb7efea8da5b49c.tar.gz tor-b004ff45d7f637675be976737eb7efea8da5b49c.zip |
New authentication types to use RFC5705.
See proposal 244. This feature lets us stop looking at the internals
of SSL objects, *and* should let us port better to more SSL libraries,
if they have RFC5705 support.
Preparatory for #19156
Diffstat (limited to 'src/common/tortls.c')
-rw-r--r-- | src/common/tortls.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/common/tortls.c b/src/common/tortls.c index 23889be259..eaa5748f33 100644 --- a/src/common/tortls.c +++ b/src/common/tortls.c @@ -2448,6 +2448,28 @@ tor_tls_get_tlssecrets,(tor_tls_t *tls, uint8_t *secrets_out)) return 0; } +/** Using the RFC5705 key material exporting construction, and the + * provided <b>context</b> (<b>context_len</b> bytes long) and + * <b>label</b> (a NUL-terminated string), compute a 32-byte secret in + * <b>secrets_out</b> that only the parties to this TLS session can + * compute. Return 0 on success and -1 on failure. + */ +MOCK_IMPL(int, +tor_tls_export_key_material,(tor_tls_t *tls, uint8_t *secrets_out, + const uint8_t *context, + size_t context_len, + const char *label)) +{ + tor_assert(tls); + tor_assert(tls->ssl); + + int r = SSL_export_keying_material(tls->ssl, + secrets_out, DIGEST256_LEN, + label, strlen(label), + context, context_len, 1); + return (r == 1) ? 0 : -1; +} + /** Examine the amount of memory used and available for buffers in <b>tls</b>. * Set *<b>rbuf_capacity</b> to the amount of storage allocated for the read * buffer and *<b>rbuf_bytes</b> to the amount actually used. |