Expose RAND_bytes
This commit is contained in:
parent
6794c17af6
commit
b2f3316758
|
|
@ -25,3 +25,4 @@ mod hash;
|
||||||
mod pkey;
|
mod pkey;
|
||||||
mod symm;
|
mod symm;
|
||||||
mod pkcs5;
|
mod pkcs5;
|
||||||
|
mod rand;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
import libc::{c_uchar, c_int};
|
||||||
|
|
||||||
|
#[link_name = "crypto"]
|
||||||
|
#[abi = "cdecl"]
|
||||||
|
native mod _native {
|
||||||
|
fn RAND_bytes(buf: *c_uchar, num: c_int) -> c_int;
|
||||||
|
}
|
||||||
|
|
||||||
|
fn rand_bytes(len: uint) -> [u8] {
|
||||||
|
let mut out = [];
|
||||||
|
vec::reserve(out, len);
|
||||||
|
|
||||||
|
vec::as_buf(out) { |out_buf|
|
||||||
|
let r = _native::RAND_bytes(out_buf, len as c_int);
|
||||||
|
if r != 1 as c_int { fail }
|
||||||
|
|
||||||
|
unsafe { vec::unsafe::set_len(out, len); }
|
||||||
|
out
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
#[test]
|
||||||
|
fn test_rand_bytes() {
|
||||||
|
let _bytes = rand_bytes(5u);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue