17 #if defined(OPENSSL_WINDOWS) && !defined(BORINGSSL_UNSAFE_DETERMINISTIC_MODE)
26 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && \
27 !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
34 #define SystemFunction036 NTAPI SystemFunction036
36 #undef SystemFunction036
37 #endif // WINAPI_PARTITION_APP && !WINAPI_PARTITION_DESKTOP
41 #include "../fipsmodule/rand/internal.h"
45 while (requested > 0) {
46 ULONG output_bytes_this_pass = ULONG_MAX;
47 if (requested < output_bytes_this_pass) {
48 output_bytes_this_pass = (ULONG)requested;
53 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && \
54 !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
55 if (!BCRYPT_SUCCESS(BCryptGenRandom(
56 NULL,
out, output_bytes_this_pass,
57 BCRYPT_USE_SYSTEM_PREFERRED_RNG))) {
59 if (RtlGenRandom(
out, output_bytes_this_pass) ==
FALSE) {
60 #endif // WINAPI_PARTITION_APP && !WINAPI_PARTITION_DESKTOP
63 requested -= output_bytes_this_pass;
64 out += output_bytes_this_pass;
73 #endif // OPENSSL_WINDOWS && !BORINGSSL_UNSAFE_DETERMINISTIC_MODE