fn bignum_to_vec()

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)
}