Commit b2f33167 authored by Erick Tryzelaar's avatar Erick Tryzelaar
Browse files

Expose RAND_bytes

parent 6794c17a
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -25,3 +25,4 @@ mod hash;
mod pkey;
mod symm;
mod pkcs5;
mod rand;

rand.rs

0 → 100644
+28 −0
Original line number Diff line number Diff line
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);
    }
}