23 lines
657 B
Rust
23 lines
657 B
Rust
// Shim for bcryptprimitives.dll. The Wine version shipped with Ubuntu 22.04
|
|
// doesn't support it yet. Authored by @ChrisDenton
|
|
|
|
#![crate_type = "cdylib"]
|
|
#![allow(nonstandard_style)]
|
|
|
|
#[no_mangle]
|
|
pub unsafe extern "system" fn ProcessPrng(mut pbData: *mut u8, mut cbData: usize) -> i32 {
|
|
while cbData > 0 {
|
|
let size = core::cmp::min(cbData, u32::MAX as usize);
|
|
RtlGenRandom(pbData, size as u32);
|
|
cbData -= size;
|
|
pbData = pbData.add(size);
|
|
}
|
|
1
|
|
}
|
|
|
|
#[link(name = "advapi32")]
|
|
extern "system" {
|
|
#[link_name = "SystemFunction036"]
|
|
pub fn RtlGenRandom(RandomBuffer: *mut u8, RandomBufferLength: u32) -> u8;
|
|
}
|