mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-11-03 22:49:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			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;
 | 
						|
}
 |