in src/vtok_p11/src/crypto/mod.rs [264:279]
fn bignum_to_vec(bn: *const ffi::BIGNUM) -> Result<Vec<u8>> {
if bn.is_null() {
return Err(Error::GeneralError);
}
let len = unsafe { ffi::BN_num_bytes(bn) };
if len == 0 {
return Err(Error::GeneralError);
}
let mut ret = vec![0u8; len as usize];
let written = unsafe { ffi::BN_bn2bin(bn, ret.as_mut_ptr() as *mut _) };
if ret.len() != written as usize {
return Err(Error::GeneralError);
}
Ok(ret)
}