This is the method called by `RAND_pseudo_bytes` the one on line 148 is the pointer called by `RAND_bytes`.

They have the same arguments but this is what the man page says about the return values of those functions.

> RAND_bytes() returns 1 on success, 0 otherwise. The error code can be obtained by ERR_get_error(3). RAND_pseudo_bytes() returns 1 if the bytes generated are cryptographically strong, 0 otherwise. Both functions return -1 if they are not supported by the current RAND method.

Things I think we get wrong according to that:

 * We never push an error on the stack.
 * We return 0 even if we didn't actually write anything to the buffer in the case of `RAND_pseudo_bytes`.

`RAND_pseudo_bytes` appears to be a generally awful idea anyway and isn't used or implemented with much consistency inside OpenSSL anyway. http://jbp.io/2014/01/16/openssl-rand-api/

I think we should copy the behaviour of the FIPS RNG and return -1 on error for `RAND_pseudo_bytes` and actually push an error on the stack for both of them?