njs_ext_get_random_values(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs,
njs_index_t unused, njs_value_t *retval)
{
- njs_int_t ret;
- njs_str_t fill;
+ njs_int_t ret;
+ njs_str_t fill;
+ njs_value_t *buffer;
- ret = njs_vm_value_to_bytes(vm, &fill, njs_arg(args, nargs, 1));
+ buffer = njs_arg(args, nargs, 1);
+
+ ret = njs_vm_value_to_bytes(vm, &fill, buffer);
if (njs_slow_path(ret != NJS_OK)) {
return NJS_ERROR;
}
return NJS_ERROR;
}
+ njs_value_assign(retval, buffer);
+
return NJS_OK;
}
"let condition = bits1 > (mean - 10 * stddev) && bits1 < (mean + 10 * stddev);"
"condition ? true : [buf, nbits, bits1, mean, stddev]"),
njs_str("true") },
+
+ { njs_str("let buf = new Uint32Array(4);"
+ "buf === crypto.getRandomValues(buf)"),
+ njs_str("true") },
};