Expose early keying material export
This commit is contained in:
parent
d5d414b16f
commit
69c75a178b
|
|
@ -89,4 +89,14 @@ extern "C" {
|
||||||
pub fn SSL_get_max_early_data(ctx: *const ::SSL) -> u32;
|
pub fn SSL_get_max_early_data(ctx: *const ::SSL) -> u32;
|
||||||
pub fn SSL_SESSION_set_max_early_data(ctx: *mut ::SSL_SESSION, max_early_data: u32) -> c_int;
|
pub fn SSL_SESSION_set_max_early_data(ctx: *mut ::SSL_SESSION, max_early_data: u32) -> c_int;
|
||||||
pub fn SSL_SESSION_get_max_early_data(ctx: *const ::SSL_SESSION) -> u32;
|
pub fn SSL_SESSION_get_max_early_data(ctx: *const ::SSL_SESSION) -> u32;
|
||||||
|
|
||||||
|
pub fn SSL_export_keying_material_early(
|
||||||
|
s: *mut ::SSL,
|
||||||
|
out: *mut c_uchar,
|
||||||
|
olen: size_t,
|
||||||
|
label: *const c_char,
|
||||||
|
llen: size_t,
|
||||||
|
context: *const c_uchar,
|
||||||
|
contextlen: size_t,
|
||||||
|
) -> c_int;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2498,6 +2498,33 @@ impl SslRef {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Derives keying material for application use in accordance to RFC 5705.
|
||||||
|
///
|
||||||
|
/// Requires OpenSSL 1.1.1 or newer.
|
||||||
|
///
|
||||||
|
/// This corresponds to [`SSL_export_keying_material_early`].
|
||||||
|
///
|
||||||
|
/// [`SSL_export_keying_material_early`]: https://www.openssl.org/docs/manmaster/man3/SSL_export_keying_material_early.html
|
||||||
|
#[cfg(ossl111)]
|
||||||
|
pub fn export_keying_material_early(
|
||||||
|
&self,
|
||||||
|
out: &mut [u8],
|
||||||
|
label: &str,
|
||||||
|
context: &[u8],
|
||||||
|
) -> Result<(), ErrorStack> {
|
||||||
|
unsafe {
|
||||||
|
cvt(ffi::SSL_export_keying_material_early(
|
||||||
|
self.as_ptr(),
|
||||||
|
out.as_mut_ptr() as *mut c_uchar,
|
||||||
|
out.len(),
|
||||||
|
label.as_ptr() as *const c_char,
|
||||||
|
label.len(),
|
||||||
|
context.as_ptr() as *const c_uchar,
|
||||||
|
context.len(),
|
||||||
|
)).map(|_| ())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Sets the session to be used.
|
/// Sets the session to be used.
|
||||||
///
|
///
|
||||||
/// This should be called before the handshake to attempt to reuse a previously established
|
/// This should be called before the handshake to attempt to reuse a previously established
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue