Peter Atashian | d860867 | 2015-05-30 12:35:54 | [diff] [blame] | 1 | // Copyright © 2015, Peter Atashian |
| 2 | // Licensed under the MIT License <LICENSE.md> |
| 3 | //! Cryptographic Primitive API Prototypes and Definitions |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 4 | pub const KDF_HASH_ALGORITHM: ::ULONG = 0x0; |
| 5 | pub const KDF_SECRET_PREPEND: ::ULONG = 0x1; |
| 6 | pub const KDF_SECRET_APPEND: ::ULONG = 0x2; |
| 7 | pub const KDF_HMAC_KEY: ::ULONG = 0x3; |
| 8 | pub const KDF_TLS_PRF_LABEL: ::ULONG = 0x4; |
| 9 | pub const KDF_TLS_PRF_SEED: ::ULONG = 0x5; |
| 10 | pub const KDF_SECRET_HANDLE: ::ULONG = 0x6; |
| 11 | pub const KDF_TLS_PRF_PROTOCOL: ::ULONG = 0x7; |
| 12 | pub const KDF_ALGORITHMID: ::ULONG = 0x8; |
| 13 | pub const KDF_PARTYUINFO: ::ULONG = 0x9; |
| 14 | pub const KDF_PARTYVINFO: ::ULONG = 0xA; |
| 15 | pub const KDF_SUPPPUBINFO: ::ULONG = 0xB; |
| 16 | pub const KDF_SUPPPRIVINFO: ::ULONG = 0xC; |
| 17 | pub const KDF_LABEL: ::ULONG = 0xD; |
| 18 | pub const KDF_CONTEXT: ::ULONG = 0xE; |
| 19 | pub const KDF_SALT: ::ULONG = 0xF; |
| 20 | pub const KDF_ITERATION_COUNT: ::ULONG = 0x10; |
| 21 | pub const KDF_GENERIC_PARAMETER: ::ULONG = 0x11; |
| 22 | pub const KDF_KEYBITLENGTH: ::ULONG = 0x12; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 23 | pub const KDF_USE_SECRET_AS_HMAC_KEY_FLAG: ::ULONG = 0x1; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 24 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 25 | pub struct BCRYPT_KEY_LENGTHS_STRUCT { |
| 26 | pub dwMinLength: ::ULONG, |
| 27 | pub dwMaxLength: ::ULONG, |
| 28 | pub dwIncrement: ::ULONG, |
| 29 | } |
| 30 | pub type BCRYPT_AUTH_TAG_LENGTHS_STRUCT = BCRYPT_KEY_LENGTHS_STRUCT; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 31 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 32 | pub struct BCRYPT_OID { |
| 33 | pub cbOID: ::ULONG, |
| 34 | pub pbOID: ::PUCHAR, |
| 35 | } |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 36 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 37 | pub struct BCRYPT_OID_LIST { |
| 38 | pub dwOIDCount: ::ULONG, |
| 39 | pub pOIDs: *mut BCRYPT_OID, |
| 40 | } |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 41 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 42 | pub struct BCRYPT_PKCS1_PADDING_INFO { |
| 43 | pub pszAlgId: ::LPCWSTR, |
| 44 | } |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 45 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 46 | pub struct BCRYPT_PSS_PADDING_INFO { |
| 47 | pub pszAlgId: ::LPCWSTR, |
| 48 | pub cbSalt: ::ULONG, |
| 49 | } |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 50 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 51 | pub struct BCRYPT_OAEP_PADDING_INFO { |
| 52 | pub pszAlgId: ::LPCWSTR, |
| 53 | pub pbLabel: ::PUCHAR, |
| 54 | pub cbLabel: ::ULONG, |
| 55 | } |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 56 | pub const BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO_VERSION: ::ULONG = 1; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 57 | pub const BCRYPT_AUTH_MODE_CHAIN_CALLS_FLAG: ::ULONG = 0x00000001; |
| 58 | pub const BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG: ::ULONG = 0x00000002; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 59 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 60 | pub struct BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO { |
| 61 | pub cbSize: ::ULONG, |
| 62 | pub dwInfoVersion: ::ULONG, |
| 63 | pub pbNonce: ::PUCHAR, |
| 64 | pub cbNonce: ::ULONG, |
| 65 | pub pbAuthData: ::PUCHAR, |
| 66 | pub cbAuthData: ::ULONG, |
| 67 | pub pbTag: ::PUCHAR, |
| 68 | pub cbTag: ::ULONG, |
| 69 | pub pbMacContext: ::PUCHAR, |
| 70 | pub cbMacContext: ::ULONG, |
| 71 | pub cbAAD: ::ULONG, |
| 72 | pub cbData: ::ULONGLONG, |
| 73 | pub dwFlags: ::ULONG, |
| 74 | } |
| 75 | pub type PBCRYPT_AUTHENTICATED_CIPHER_MODE_INFO = *mut BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 76 | pub const BCRYPT_PROV_DISPATCH: ::ULONG = 0x00000001; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 77 | pub const BCRYPT_BLOCK_PADDING: ::ULONG = 0x00000001; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 78 | pub const BCRYPT_PAD_NONE: ::ULONG = 0x00000001; |
| 79 | pub const BCRYPT_PAD_PKCS1: ::ULONG = 0x00000002; |
| 80 | pub const BCRYPT_PAD_OAEP: ::ULONG = 0x00000004; |
| 81 | pub const BCRYPT_PAD_PSS: ::ULONG = 0x00000008; |
| 82 | pub const BCRYPT_PAD_PKCS1_OPTIONAL_HASH_OID: ::ULONG = 0x00000010; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 83 | pub const BCRYPTBUFFER_VERSION: ::ULONG = 0; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 84 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 85 | pub struct BCryptBuffer { |
| 86 | pub cbBuffer: ::ULONG, |
| 87 | pub BufferType: ::ULONG, |
| 88 | pub pvBuffer: ::PVOID, |
| 89 | } |
| 90 | pub type PBCryptBuffer = *mut BCryptBuffer; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 91 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 92 | pub struct BCryptBufferDesc { |
| 93 | pub ulVersion: ::ULONG, |
| 94 | pub cBuffers: ::ULONG, |
| 95 | pub pBuffers: PBCryptBuffer, |
| 96 | } |
| 97 | pub type PBCryptBufferDesc = *mut BCryptBufferDesc; |
skdltmxn | 3ffa9c0 | 2015-07-17 09:48:32 | [diff] [blame] | 98 | //321 |
| 99 | pub type BCRYPT_HANDLE = ::PVOID; |
| 100 | pub type BCRYPT_ALG_HANDLE = ::PVOID; |
| 101 | pub type BCRYPT_KEY_HANDLE = ::PVOID; |
| 102 | pub type BCRYPT_HASH_HANDLE = ::PVOID; |
| 103 | pub type BCRYPT_SECRET_HANDLE = ::PVOID; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 104 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 105 | pub struct BCRYPT_KEY_BLOB { |
| 106 | pub Magic: ::ULONG, |
| 107 | } |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 108 | pub const BCRYPT_RSAPUBLIC_MAGIC: ::ULONG = 0x31415352; |
| 109 | pub const BCRYPT_RSAPRIVATE_MAGIC: ::ULONG = 0x32415352; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 110 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 111 | pub struct BCRYPT_RSAKEY_BLOB { |
| 112 | pub Magic: ::ULONG, |
| 113 | pub BitLength: ::ULONG, |
| 114 | pub cbPublicExp: ::ULONG, |
| 115 | pub cbModulus: ::ULONG, |
| 116 | pub cbPrime1: ::ULONG, |
| 117 | pub cbPrime2: ::ULONG, |
| 118 | } |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 119 | pub const BCRYPT_RSAFULLPRIVATE_MAGIC: ::ULONG = 0x33415352; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 120 | pub const BCRYPT_ECDH_PUBLIC_P256_MAGIC: ::ULONG = 0x314B4345; |
| 121 | pub const BCRYPT_ECDH_PRIVATE_P256_MAGIC: ::ULONG = 0x324B4345; |
| 122 | pub const BCRYPT_ECDH_PUBLIC_P384_MAGIC: ::ULONG = 0x334B4345; |
| 123 | pub const BCRYPT_ECDH_PRIVATE_P384_MAGIC: ::ULONG = 0x344B4345; |
| 124 | pub const BCRYPT_ECDH_PUBLIC_P521_MAGIC: ::ULONG = 0x354B4345; |
| 125 | pub const BCRYPT_ECDH_PRIVATE_P521_MAGIC: ::ULONG = 0x364B4345; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 126 | pub const BCRYPT_ECDSA_PUBLIC_P256_MAGIC: ::ULONG = 0x31534345; |
| 127 | pub const BCRYPT_ECDSA_PRIVATE_P256_MAGIC: ::ULONG = 0x32534345; |
| 128 | pub const BCRYPT_ECDSA_PUBLIC_P384_MAGIC: ::ULONG = 0x33534345; |
| 129 | pub const BCRYPT_ECDSA_PRIVATE_P384_MAGIC: ::ULONG = 0x34534345; |
| 130 | pub const BCRYPT_ECDSA_PUBLIC_P521_MAGIC: ::ULONG = 0x35534345; |
| 131 | pub const BCRYPT_ECDSA_PRIVATE_P521_MAGIC: ::ULONG = 0x36534345; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 132 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 133 | pub struct BCRYPT_ECCKEY_BLOB { |
| 134 | pub dwMagic: ::ULONG, |
| 135 | pub cbKey: ::ULONG, |
| 136 | } |
| 137 | pub type PBCRYPT_ECCKEY_BLOB = *mut BCRYPT_ECCKEY_BLOB; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 138 | pub const BCRYPT_DH_PUBLIC_MAGIC: ::ULONG = 0x42504844; |
| 139 | pub const BCRYPT_DH_PRIVATE_MAGIC: ::ULONG = 0x56504844; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 140 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 141 | pub struct BCRYPT_DH_KEY_BLOB { |
| 142 | pub dwMagic: ::ULONG, |
| 143 | pub cbKey: ::ULONG, |
| 144 | } |
| 145 | pub type PBCRYPT_DH_KEY_BLOB = *mut BCRYPT_DH_KEY_BLOB; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 146 | pub const BCRYPT_DH_PARAMETERS_MAGIC: ::ULONG = 0x4d504844; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 147 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 148 | pub struct BCRYPT_DH_PARAMETER_HEADER { |
| 149 | pub cbLength: ::ULONG, |
| 150 | pub dwMagic: ::ULONG, |
| 151 | pub cbKeyLength: ::ULONG, |
| 152 | } |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 153 | pub const BCRYPT_DSA_PUBLIC_MAGIC: ::ULONG = 0x42505344; |
| 154 | pub const BCRYPT_DSA_PRIVATE_MAGIC: ::ULONG = 0x56505344; |
| 155 | pub const BCRYPT_DSA_PUBLIC_MAGIC_V2: ::ULONG = 0x32425044; |
| 156 | pub const BCRYPT_DSA_PRIVATE_MAGIC_V2: ::ULONG = 0x32565044; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 157 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 158 | pub struct BCRYPT_DSA_KEY_BLOB { |
| 159 | pub dwMagic: ::ULONG, |
| 160 | pub cbKey: ::ULONG, |
| 161 | pub Count: [::UCHAR; 4], |
| 162 | pub Seed: [::UCHAR; 20], |
| 163 | pub q: [::UCHAR; 20], |
| 164 | } |
| 165 | pub type PBCRYPT_DSA_KEY_BLOB = *mut BCRYPT_DSA_KEY_BLOB; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 166 | #[repr(i32)] #[derive(Clone, Copy, Debug)] |
| 167 | pub enum HASHALGORITHM_ENUM { |
| 168 | DSA_HASH_ALGORITHM_SHA1, |
| 169 | DSA_HASH_ALGORITHM_SHA256, |
| 170 | DSA_HASH_ALGORITHM_SHA512, |
| 171 | } |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 172 | #[repr(i32)] #[derive(Clone, Copy, Debug)] |
| 173 | pub enum DSAFIPSVERSION_ENUM { |
| 174 | DSA_FIPS186_2, |
| 175 | DSA_FIPS186_3, |
| 176 | } |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 177 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 178 | pub struct BCRYPT_DSA_KEY_BLOB_V2 { |
| 179 | pub dwMagic: ::ULONG, |
| 180 | pub cbKey: ::ULONG, |
| 181 | pub hashAlgorithm: HASHALGORITHM_ENUM, |
| 182 | pub standardVersion: DSAFIPSVERSION_ENUM, |
| 183 | pub cbSeedLength: ::ULONG, |
| 184 | pub cbGroupSize: ::ULONG, |
| 185 | pub Count: [::UCHAR; 4], |
| 186 | } |
| 187 | pub type PBCRYPT_DSA_KEY_BLOB_V2 = *mut BCRYPT_DSA_KEY_BLOB_V2; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 188 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 189 | pub struct BCRYPT_KEY_DATA_BLOB_HEADER { |
| 190 | pub dwMagic: ::ULONG, |
| 191 | pub dwVersion: ::ULONG, |
| 192 | pub cbKeyData: ::ULONG, |
| 193 | } |
| 194 | pub type PBCRYPT_KEY_DATA_BLOB_HEADER = *mut BCRYPT_KEY_DATA_BLOB_HEADER; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 195 | pub const BCRYPT_KEY_DATA_BLOB_MAGIC: ::ULONG = 0x4d42444b; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 196 | pub const BCRYPT_KEY_DATA_BLOB_VERSION1: ::ULONG = 0x1; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 197 | pub const BCRYPT_DSA_PARAMETERS_MAGIC: ::ULONG = 0x4d505344; |
| 198 | pub const BCRYPT_DSA_PARAMETERS_MAGIC_V2: ::ULONG = 0x324d5044; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 199 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 200 | pub struct BCRYPT_DSA_PARAMETER_HEADER { |
| 201 | pub cbLength: ::ULONG, |
| 202 | pub dwMagic: ::ULONG, |
| 203 | pub cbKeyLength: ::ULONG, |
| 204 | pub Count: [::UCHAR; 4], |
| 205 | pub Seed: [::UCHAR; 20], |
| 206 | pub q: [::UCHAR; 20], |
| 207 | } |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 208 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 209 | pub struct BCRYPT_DSA_PARAMETER_HEADER_V2 { |
| 210 | pub cbLength: ::ULONG, |
| 211 | pub dwMagic: ::ULONG, |
| 212 | pub cbKeyLength: ::ULONG, |
| 213 | pub hashAlgorithm: HASHALGORITHM_ENUM, |
| 214 | pub standardVersion: DSAFIPSVERSION_ENUM, |
| 215 | pub cbSeedLength: ::ULONG, |
| 216 | pub cbGroupSize: ::ULONG, |
| 217 | pub Count: [::UCHAR; 4], |
| 218 | } |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 219 | #[repr(i32)] #[derive(Clone, Copy, Debug)] |
| 220 | pub enum BCRYPT_HASH_OPERATION_TYPE { |
| 221 | BCRYPT_HASH_OPERATION_HASH_DATA = 1, |
| 222 | BCRYPT_HASH_OPERATION_FINISH_HASH = 2, |
| 223 | } |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 224 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 225 | pub struct BCRYPT_MULTI_HASH_OPERATION { |
| 226 | pub iHash: ::ULONG, |
| 227 | pub hashOperation: BCRYPT_HASH_OPERATION_TYPE, |
| 228 | pub pbBuffer: ::PUCHAR, |
| 229 | pub cbBuffer: ::ULONG, |
| 230 | } |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 231 | #[repr(i32)] #[derive(Clone, Copy, Debug)] |
| 232 | pub enum BCRYPT_MULTI_OPERATION_TYPE { |
| 233 | BCRYPT_OPERATION_TYPE_HASH = 1, |
| 234 | DUMMY, // FIXME: due to `rustc --explain E0083` |
| 235 | } |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 236 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 237 | pub struct BCRYPT_MULTI_OBJECT_LENGTH_STRUCT { |
| 238 | pub cbPerObject: ::ULONG, |
| 239 | pub cbPerElement: ::ULONG, |
| 240 | } |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 241 | pub const BCRYPT_CIPHER_INTERFACE: ::ULONG = 0x00000001; |
| 242 | pub const BCRYPT_HASH_INTERFACE: ::ULONG = 0x00000002; |
| 243 | pub const BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE: ::ULONG = 0x00000003; |
| 244 | pub const BCRYPT_SECRET_AGREEMENT_INTERFACE: ::ULONG = 0x00000004; |
| 245 | pub const BCRYPT_SIGNATURE_INTERFACE: ::ULONG = 0x00000005; |
| 246 | pub const BCRYPT_RNG_INTERFACE: ::ULONG = 0x00000006; |
| 247 | pub const BCRYPT_KEY_DERIVATION_INTERFACE: ::ULONG = 0x00000007; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 248 | pub const BCRYPT_ALG_HANDLE_HMAC_FLAG: ::ULONG = 0x00000008; |
| 249 | pub const BCRYPT_CAPI_AES_FLAG: ::ULONG = 0x00000010; |
| 250 | pub const BCRYPT_HASH_REUSABLE_FLAG: ::ULONG = 0x00000020; |
| 251 | pub const BCRYPT_BUFFERS_LOCKED_FLAG: ::ULONG = 0x00000040; |
| 252 | pub const BCRYPT_EXTENDED_KEYSIZE: ::ULONG = 0x00000080; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 253 | pub const BCRYPT_CIPHER_OPERATION: ::ULONG = 0x00000001; |
| 254 | pub const BCRYPT_HASH_OPERATION: ::ULONG = 0x00000002; |
| 255 | pub const BCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION: ::ULONG = 0x00000004; |
| 256 | pub const BCRYPT_SECRET_AGREEMENT_OPERATION: ::ULONG = 0x00000008; |
| 257 | pub const BCRYPT_SIGNATURE_OPERATION: ::ULONG = 0x00000010; |
| 258 | pub const BCRYPT_RNG_OPERATION: ::ULONG = 0x00000020; |
| 259 | pub const BCRYPT_KEY_DERIVATION_OPERATION: ::ULONG = 0x00000040; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 260 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 261 | pub struct BCRYPT_ALGORITHM_IDENTIFIER { |
| 262 | pub pszName: ::LPWSTR, |
| 263 | pub dwClass: ::ULONG, |
| 264 | pub dwFlags: ::ULONG, |
| 265 | } |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 266 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 267 | pub struct BCRYPT_PROVIDER_NAME { |
| 268 | pub pszProviderName: ::LPWSTR, |
| 269 | } |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 270 | pub const BCRYPT_PUBLIC_KEY_FLAG: ::ULONG = 0x00000001; |
| 271 | pub const BCRYPT_PRIVATE_KEY_FLAG: ::ULONG = 0x00000002; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 272 | pub const BCRYPT_RNG_USE_ENTROPY_IN_BUFFER: ::ULONG = 0x00000001; |
| 273 | pub const BCRYPT_USE_SYSTEM_PREFERRED_RNG: ::ULONG = 0x00000002; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 274 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 275 | pub struct BCRYPT_INTERFACE_VERSION { |
| 276 | pub MajorVersion: ::USHORT, |
| 277 | pub MinorVersion: ::USHORT, |
| 278 | } |
| 279 | pub type PBCRYPT_INTERFACE_VERSION = *mut BCRYPT_INTERFACE_VERSION; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 280 | #[inline] #[allow(dead_code)] |
| 281 | pub fn BCRYPT_MAKE_INTERFACE_VERSION(major: ::USHORT, minor: ::USHORT) -> BCRYPT_INTERFACE_VERSION { |
| 282 | BCRYPT_INTERFACE_VERSION{ MajorVersion: major, MinorVersion: minor } |
| 283 | } |
Peter Atashian | d8e8820 | 2015-10-06 19:40:30 | [diff] [blame^] | 284 | pub const BCRYPT_CIPHER_INTERFACE_VERSION_1: BCRYPT_INTERFACE_VERSION = |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 285 | BCRYPT_INTERFACE_VERSION{ MajorVersion: 1, MinorVersion: 0 }; |
Peter Atashian | d8e8820 | 2015-10-06 19:40:30 | [diff] [blame^] | 286 | pub const BCRYPT_HASH_INTERFACE_VERSION_1: BCRYPT_INTERFACE_VERSION = |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 287 | BCRYPT_INTERFACE_VERSION{ MajorVersion: 1, MinorVersion: 0 }; |
| 288 | pub const BCRYPT_HASH_INTERFACE_MAJORVERSION_2: ::USHORT = 2; |
Peter Atashian | d8e8820 | 2015-10-06 19:40:30 | [diff] [blame^] | 289 | pub const BCRYPT_HASH_INTERFACE_VERSION_2: BCRYPT_INTERFACE_VERSION = |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 290 | BCRYPT_INTERFACE_VERSION{ MajorVersion: BCRYPT_HASH_INTERFACE_MAJORVERSION_2, MinorVersion: 0 }; |
Peter Atashian | d8e8820 | 2015-10-06 19:40:30 | [diff] [blame^] | 291 | pub const BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE_VERSION_1: BCRYPT_INTERFACE_VERSION = |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 292 | BCRYPT_INTERFACE_VERSION{ MajorVersion: 1, MinorVersion: 0 }; |
Peter Atashian | d8e8820 | 2015-10-06 19:40:30 | [diff] [blame^] | 293 | pub const BCRYPT_SECRET_AGREEMENT_INTERFACE_VERSION_1: BCRYPT_INTERFACE_VERSION = |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 294 | BCRYPT_INTERFACE_VERSION{ MajorVersion: 1, MinorVersion: 0 }; |
Peter Atashian | d8e8820 | 2015-10-06 19:40:30 | [diff] [blame^] | 295 | pub const BCRYPT_SIGNATURE_INTERFACE_VERSION_1: BCRYPT_INTERFACE_VERSION = |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 296 | BCRYPT_INTERFACE_VERSION{ MajorVersion: 1, MinorVersion: 0 }; |
Peter Atashian | d8e8820 | 2015-10-06 19:40:30 | [diff] [blame^] | 297 | pub const BCRYPT_RNG_INTERFACE_VERSION_1: BCRYPT_INTERFACE_VERSION = |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 298 | BCRYPT_INTERFACE_VERSION{ MajorVersion: 1, MinorVersion: 0 }; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 299 | pub const CRYPT_MIN_DEPENDENCIES: ::ULONG = 0x00000001; |
| 300 | pub const CRYPT_PROCESS_ISOLATE: ::ULONG = 0x00010000; |
| 301 | pub const CRYPT_UM: ::ULONG = 0x00000001; |
| 302 | pub const CRYPT_KM: ::ULONG = 0x00000002; |
| 303 | pub const CRYPT_MM: ::ULONG = 0x00000003; |
| 304 | pub const CRYPT_ANY: ::ULONG = 0x00000004; |
| 305 | pub const CRYPT_OVERWRITE: ::ULONG = 0x00000001; |
| 306 | pub const CRYPT_LOCAL: ::ULONG = 0x00000001; |
| 307 | pub const CRYPT_DOMAIN: ::ULONG = 0x00000002; |
| 308 | pub const CRYPT_EXCLUSIVE: ::ULONG = 0x00000001; |
| 309 | pub const CRYPT_OVERRIDE: ::ULONG = 0x00010000; |
| 310 | pub const CRYPT_ALL_FUNCTIONS: ::ULONG = 0x00000001; |
| 311 | pub const CRYPT_ALL_PROVIDERS: ::ULONG = 0x00000002; |
| 312 | pub const CRYPT_PRIORITY_TOP: ::ULONG = 0x00000000; |
| 313 | pub const CRYPT_PRIORITY_BOTTOM: ::ULONG = 0xFFFFFFFF; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 314 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 315 | pub struct CRYPT_INTERFACE_REG { |
| 316 | pub dwInterface: ::ULONG, |
| 317 | pub dwFlags: ::ULONG, |
| 318 | pub cFunctions: ::ULONG, |
| 319 | pub rgpszFunctions: *mut ::PWSTR, |
| 320 | } |
| 321 | pub type PCRYPT_INTERFACE_REG = *mut CRYPT_INTERFACE_REG; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 322 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 323 | pub struct CRYPT_IMAGE_REG { |
| 324 | pub pszImage: ::PWSTR, |
| 325 | pub cInterfaces: ::ULONG, |
| 326 | pub rgpInterfaces: *mut PCRYPT_INTERFACE_REG, |
| 327 | } |
| 328 | pub type PCRYPT_IMAGE_REG = *mut CRYPT_IMAGE_REG; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 329 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 330 | pub struct CRYPT_PROVIDER_REG { |
| 331 | pub cAliases: ::ULONG, |
| 332 | pub rgpszAliases: *mut ::PWSTR, |
| 333 | pub pUM: PCRYPT_IMAGE_REG, |
| 334 | pub pKM: PCRYPT_IMAGE_REG, |
| 335 | } |
| 336 | pub type PCRYPT_PROVIDER_REG = *mut CRYPT_PROVIDER_REG; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 337 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 338 | pub struct CRYPT_PROVIDERS { |
| 339 | pub cProviders: ::ULONG, |
| 340 | pub rgpszProviders: *mut ::PWSTR, |
| 341 | } |
| 342 | pub type PCRYPT_PROVIDERS = *mut CRYPT_PROVIDERS; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 343 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 344 | pub struct CRYPT_CONTEXT_CONFIG { |
| 345 | pub dwFlags: ::ULONG, |
| 346 | pub dwReserved: ::ULONG, |
| 347 | } |
| 348 | pub type PCRYPT_CONTEXT_CONFIG = *mut CRYPT_CONTEXT_CONFIG; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 349 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 350 | pub struct CRYPT_CONTEXT_FUNCTION_CONFIG { |
| 351 | pub dwFlags: ::ULONG, |
| 352 | pub dwReserved: ::ULONG, |
| 353 | } |
| 354 | pub type PCRYPT_CONTEXT_FUNCTION_CONFIG = *mut CRYPT_CONTEXT_FUNCTION_CONFIG; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 355 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 356 | pub struct CRYPT_CONTEXTS { |
| 357 | pub cContexts: ::ULONG, |
| 358 | pub rgpszContexts: *mut ::PWSTR, |
| 359 | } |
| 360 | pub type PCRYPT_CONTEXTS = *mut CRYPT_CONTEXTS; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 361 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 362 | pub struct CRYPT_CONTEXT_FUNCTIONS { |
| 363 | pub cFunctions: ::ULONG, |
| 364 | pub rgpszFunctions: *mut ::PWSTR, |
| 365 | } |
| 366 | pub type PCRYPT_CONTEXT_FUNCTIONS = *mut CRYPT_CONTEXT_FUNCTIONS; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 367 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 368 | pub struct CRYPT_CONTEXT_FUNCTION_PROVIDERS { |
| 369 | pub cProviders: ::ULONG, |
| 370 | pub rgpszProviders: *mut ::PWSTR, |
| 371 | } |
| 372 | pub type PCRYPT_CONTEXT_FUNCTION_PROVIDERS = *mut CRYPT_CONTEXT_FUNCTION_PROVIDERS; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 373 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 374 | pub struct CRYPT_PROPERTY_REF { |
| 375 | pub pszProperty: ::PWSTR, |
| 376 | pub cbValue: ::ULONG, |
| 377 | pub pbValue: ::PUCHAR, |
| 378 | } |
| 379 | pub type PCRYPT_PROPERTY_REF = *mut CRYPT_PROPERTY_REF; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 380 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 381 | pub struct CRYPT_IMAGE_REF { |
| 382 | pub pszImage: ::PWSTR, |
| 383 | pub dwFlags: ::ULONG, |
| 384 | } |
| 385 | pub type PCRYPT_IMAGE_REF = *mut CRYPT_IMAGE_REF; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 386 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 387 | pub struct CRYPT_PROVIDER_REF { |
| 388 | pub dwInterface: ::ULONG, |
| 389 | pub pszFunction: ::PWSTR, |
| 390 | pub pszProvider: ::PWSTR, |
| 391 | pub cProperties: ::ULONG, |
| 392 | pub rgpProperties: *mut PCRYPT_PROPERTY_REF, |
| 393 | pub pUM: PCRYPT_IMAGE_REF, |
| 394 | pub pKM: PCRYPT_IMAGE_REF, |
| 395 | } |
| 396 | pub type PCRYPT_PROVIDER_REF = *mut CRYPT_PROVIDER_REF; |
skdltmxn | 54268b6 | 2015-07-26 14:44:18 | [diff] [blame] | 397 | #[repr(C)] #[derive(Clone, Copy, Debug)] |
| 398 | pub struct CRYPT_PROVIDER_REFS { |
| 399 | pub cProviders: ::ULONG, |
| 400 | pub rgpProviders: *mut PCRYPT_PROVIDER_REF, |
| 401 | } |
| 402 | pub type PCRYPT_PROVIDER_REFS = *mut CRYPT_PROVIDER_REFS; |