Inline definitions from winapi/advapi32
For now it's probably worth the decrease in build times
diff --git a/Cargo.toml b/Cargo.toml
index 85a75bf..e738ee8 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -15,8 +15,6 @@
[dependencies]
libc = "0.2"
-winapi = "0.2"
-advapi32-sys = "0.1.2"
[dev-dependencies]
log = "0.3.0"
diff --git a/src/os.rs b/src/os.rs
index e395ee8..d804808 100644
--- a/src/os.rs
+++ b/src/os.rs
@@ -250,15 +250,33 @@
#[cfg(windows)]
mod imp {
- extern crate winapi;
- extern crate advapi32;
-
use std::io;
use std::mem;
use std::ptr;
use Rng;
- use self::winapi::{CRYPT_SILENT, CRYPT_VERIFYCONTEXT, DWORD, HCRYPTPROV, PROV_RSA_FULL};
- use self::advapi32::{CryptAcquireContextA, CryptGenRandom, CryptReleaseContext};
+
+ type BOOL = i32;
+ type LPCSTR = *const i8;
+ type DWORD = u32;
+ type HCRYPTPROV = usize;
+ type BYTE = u8;
+
+ const PROV_RSA_FULL: DWORD = 1;
+ const CRYPT_SILENT: DWORD = 0x00000040;
+ const CRYPT_VERIFYCONTEXT: DWORD = 0xF0000000;
+
+ #[link(name = "advapi32")]
+ extern "system" {
+ fn CryptAcquireContextA(phProv: *mut HCRYPTPROV,
+ szContainer: LPCSTR,
+ szProvider: LPCSTR,
+ dwProvType: DWORD,
+ dwFlags: DWORD) -> BOOL;
+ fn CryptGenRandom(hProv: HCRYPTPROV,
+ dwLen: DWORD,
+ pbBuffer: *mut BYTE) -> BOOL;
+ fn CryptReleaseContext(hProv: HCRYPTPROV, dwFlags: DWORD) -> BOOL;
+ }
pub struct OsRng {
hcryptprov: HCRYPTPROV