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