PageRenderTime 57ms CodeModel.GetById 20ms RepoModel.GetById 1ms app.codeStats 0ms

/imports/c/windows/ncrypt.d

http://kdlib.googlecode.com/
D | 251 lines | 207 code | 35 blank | 9 comment | 0 complexity | 95818339e68cc71ac16577c4968f3b63 MD5 | raw file
  1. /** ncrypt.d
  2. Converted from 'ncrypt.h'.
  3. Version: V7.0
  4. Authors: Koji Kishita
  5. */
  6. module c.windows.ncrypt;
  7. import c.windows.windef;
  8. import c.windows.bcrypt;
  9. //import c.windows.wincrypt;
  10. extern(C){
  11. alias LONG SECURITY_STATUS;
  12. const wchar* MS_KEY_STORAGE_PROVIDER = "Microsoft Software Key Storage Provider";
  13. const wchar* MS_SMART_CARD_KEY_STORAGE_PROVIDER = "Microsoft Smart Card Key Storage Provider";
  14. alias BCRYPT_RSA_ALGORITHM NCRYPT_RSA_ALGORITHM;
  15. alias BCRYPT_RSA_SIGN_ALGORITHM NCRYPT_RSA_SIGN_ALGORITHM;
  16. alias BCRYPT_DH_ALGORITHM NCRYPT_DH_ALGORITHM;
  17. alias BCRYPT_DSA_ALGORITHM NCRYPT_DSA_ALGORITHM;
  18. alias BCRYPT_MD2_ALGORITHM NCRYPT_MD2_ALGORITHM;
  19. alias BCRYPT_MD4_ALGORITHM NCRYPT_MD4_ALGORITHM;
  20. alias BCRYPT_MD5_ALGORITHM NCRYPT_MD5_ALGORITHM;
  21. alias BCRYPT_SHA1_ALGORITHM NCRYPT_SHA1_ALGORITHM;
  22. alias BCRYPT_SHA256_ALGORITHM NCRYPT_SHA256_ALGORITHM;
  23. alias BCRYPT_SHA384_ALGORITHM NCRYPT_SHA384_ALGORITHM;
  24. alias BCRYPT_SHA512_ALGORITHM NCRYPT_SHA512_ALGORITHM;
  25. alias BCRYPT_ECDSA_P256_ALGORITHM NCRYPT_ECDSA_P256_ALGORITHM;
  26. alias BCRYPT_ECDSA_P384_ALGORITHM NCRYPT_ECDSA_P384_ALGORITHM;
  27. alias BCRYPT_ECDSA_P521_ALGORITHM NCRYPT_ECDSA_P521_ALGORITHM;
  28. alias BCRYPT_ECDH_P256_ALGORITHM NCRYPT_ECDH_P256_ALGORITHM;
  29. alias BCRYPT_ECDH_P384_ALGORITHM NCRYPT_ECDH_P384_ALGORITHM;
  30. alias BCRYPT_ECDH_P521_ALGORITHM NCRYPT_ECDH_P521_ALGORITHM;
  31. const wchar* NCRYPT_KEY_STORAGE_ALGORITHM = "KEY_STORAGE";
  32. alias BCRYPT_HASH_INTERFACE NCRYPT_HASH_INTERFACE;
  33. alias BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE NCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE;
  34. alias BCRYPT_SECRET_AGREEMENT_INTERFACE NCRYPT_SECRET_AGREEMENT_INTERFACE;
  35. alias BCRYPT_SIGNATURE_INTERFACE NCRYPT_SIGNATURE_INTERFACE;
  36. enum {
  37. NCRYPT_KEY_STORAGE_INTERFACE = 0x00010001,
  38. NCRYPT_SCHANNEL_INTERFACE = 0x00010002,
  39. NCRYPT_SCHANNEL_SIGNATURE_INTERFACE = 0x00010003,
  40. }
  41. alias NCRYPT_RSA_ALGORITHM NCRYPT_RSA_ALGORITHM_GROUP;
  42. alias NCRYPT_DH_ALGORITHM NCRYPT_DH_ALGORITHM_GROUP;
  43. alias NCRYPT_DSA_ALGORITHM NCRYPT_DSA_ALGORITHM_GROUP;
  44. const wchar* NCRYPT_ECDSA_ALGORITHM_GROUP = "ECDSA";
  45. const wchar* NCRYPT_ECDH_ALGORITHM_GROUP = "ECDH";
  46. enum {
  47. NCRYPTBUFFER_VERSION = 0,
  48. NCRYPTBUFFER_EMPTY = 0,
  49. NCRYPTBUFFER_DATA = 1,
  50. NCRYPTBUFFER_SSL_CLIENT_RANDOM = 20,
  51. NCRYPTBUFFER_SSL_SERVER_RANDOM = 21,
  52. NCRYPTBUFFER_SSL_HIGHEST_VERSION = 22,
  53. NCRYPTBUFFER_SSL_CLEAR_KEY = 23,
  54. NCRYPTBUFFER_SSL_KEY_ARG_DATA = 24,
  55. NCRYPTBUFFER_PKCS_OID = 40,
  56. NCRYPTBUFFER_PKCS_ALG_OID = 41,
  57. NCRYPTBUFFER_PKCS_ALG_PARAM = 42,
  58. NCRYPTBUFFER_PKCS_ALG_ID = 43,
  59. NCRYPTBUFFER_PKCS_ATTRS = 44,
  60. NCRYPTBUFFER_PKCS_KEY_NAME = 45,
  61. NCRYPTBUFFER_PKCS_SECRET = 46,
  62. NCRYPTBUFFER_CERT_BLOB = 47,
  63. }
  64. typedef BCryptBuffer NCryptBuffer;
  65. alias NCryptBuffer* PNCryptBuffer;
  66. typedef BCryptBufferDesc NCryptBufferDesc;
  67. alias NCryptBufferDesc* PNCryptBufferDesc;
  68. typedef ULONG_PTR NCRYPT_HANDLE;
  69. typedef ULONG_PTR NCRYPT_PROV_HANDLE;
  70. typedef ULONG_PTR NCRYPT_KEY_HANDLE;
  71. typedef ULONG_PTR NCRYPT_HASH_HANDLE;
  72. typedef ULONG_PTR NCRYPT_SECRET_HANDLE;
  73. alias BCRYPT_PAD_NONE NCRYPT_NO_PADDING_FLAG;
  74. alias BCRYPT_PAD_PKCS1 NCRYPT_PAD_PKCS1_FLAG;
  75. alias BCRYPT_PAD_OAEP NCRYPT_PAD_OAEP_FLAG;
  76. alias BCRYPT_PAD_PSS NCRYPT_PAD_PSS_FLAG;
  77. alias BCRYPT_NO_KEY_VALIDATION NCRYPT_NO_KEY_VALIDATION;
  78. enum {
  79. NCRYPT_MACHINE_KEY_FLAG = 0x00000020,
  80. NCRYPT_SILENT_FLAG = 0x00000040,
  81. NCRYPT_OVERWRITE_KEY_FLAG = 0x00000080,
  82. NCRYPT_WRITE_KEY_TO_LEGACY_STORE_FLAG = 0x00000200,
  83. NCRYPT_DO_NOT_FINALIZE_FLAG = 0x00000400,
  84. NCRYPT_PERSIST_ONLY_FLAG = 0x40000000,
  85. NCRYPT_PERSIST_FLAG = 0x80000000,
  86. NCRYPT_REGISTER_NOTIFY_FLAG = 0x00000001,
  87. NCRYPT_UNREGISTER_NOTIFY_FLAG = 0x00000002,
  88. }
  89. export extern(Windows) SECURITY_STATUS NCryptOpenStorageProvider(NCRYPT_PROV_HANDLE* phProvider, LPCWSTR pszProviderName, DWORD dwFlags);
  90. alias BCRYPT_CIPHER_OPERATION NCRYPT_CIPHER_OPERATION;
  91. alias BCRYPT_HASH_OPERATION NCRYPT_HASH_OPERATION;
  92. alias BCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION NCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION;
  93. alias BCRYPT_SECRET_AGREEMENT_OPERATION NCRYPT_SECRET_AGREEMENT_OPERATION;
  94. alias BCRYPT_SIGNATURE_OPERATION NCRYPT_SIGNATURE_OPERATION;
  95. alias BCRYPT_RNG_OPERATION NCRYPT_RNG_OPERATION;
  96. struct NCryptAlgorithmName {
  97. LPWSTR pszName;
  98. DWORD dwClass;
  99. DWORD dwAlgOperations;
  100. DWORD dwFlags;
  101. }
  102. export extern(Windows) SECURITY_STATUS NCryptEnumAlgorithms(NCRYPT_PROV_HANDLE hProvider, DWORD dwAlgOperations, DWORD* pdwAlgCount, NCryptAlgorithmName** ppAlgList, DWORD dwFlags);
  103. export extern(Windows) SECURITY_STATUS NCryptIsAlgSupported(NCRYPT_PROV_HANDLE hProvider, LPCWSTR pszAlgId, DWORD dwFlags);
  104. struct NCryptKeyName {
  105. LPWSTR pszName;
  106. LPWSTR pszAlgid;
  107. DWORD dwLegacyKeySpec;
  108. DWORD dwFlags;
  109. }
  110. export extern(Windows) SECURITY_STATUS NCryptEnumKeys(NCRYPT_PROV_HANDLE hProvider, LPCWSTR pszScope, NCryptKeyName** ppKeyName, PVOID* ppEnumState, DWORD dwFlags);
  111. struct NCryptProviderName {
  112. LPWSTR pszName;
  113. LPWSTR pszComment;
  114. }
  115. export extern(Windows) SECURITY_STATUS NCryptEnumStorageProviders(DWORD* pdwProviderCount, NCryptProviderName** ppProviderList, DWORD dwFlags);
  116. export extern(Windows) SECURITY_STATUS NCryptFreeBuffer(PVOID pvInput);
  117. export extern(Windows) SECURITY_STATUS NCryptOpenKey(NCRYPT_PROV_HANDLE hProvider, NCRYPT_KEY_HANDLE* phKey, LPCWSTR pszKeyName, DWORD dwLegacyKeySpec, DWORD dwFlags);
  118. export extern(Windows) SECURITY_STATUS NCryptCreatePersistedKey(NCRYPT_PROV_HANDLE hProvider, NCRYPT_KEY_HANDLE* phKey, LPCWSTR pszAlgId, LPCWSTR pszKeyName, DWORD dwLegacyKeySpec, DWORD dwFlags);
  119. const wchar* NCRYPT_NAME_PROPERTY = "Name";
  120. const wchar* NCRYPT_UNIQUE_NAME_PROPERTY = "Unique Name";
  121. const wchar* NCRYPT_ALGORITHM_PROPERTY = "Algorithm Name";
  122. const wchar* NCRYPT_LENGTH_PROPERTY = "Length";
  123. const wchar* NCRYPT_LENGTHS_PROPERTY = "Lengths";
  124. const wchar* NCRYPT_BLOCK_LENGTH_PROPERTY = "Block Length";
  125. const wchar* NCRYPT_UI_POLICY_PROPERTY = "UI Policy";
  126. const wchar* NCRYPT_EXPORT_POLICY_PROPERTY = "Export Policy";
  127. const wchar* NCRYPT_WINDOW_HANDLE_PROPERTY = "HWND Handle";
  128. const wchar* NCRYPT_USE_CONTEXT_PROPERTY = "Use Context";
  129. const wchar* NCRYPT_IMPL_TYPE_PROPERTY = "Impl Type";
  130. const wchar* NCRYPT_KEY_USAGE_PROPERTY = "Key Usage";
  131. const wchar* NCRYPT_KEY_TYPE_PROPERTY = "Key Type";
  132. const wchar* NCRYPT_VERSION_PROPERTY = "Version";
  133. const wchar* NCRYPT_SECURITY_DESCR_SUPPORT_PROPERTY = "Security Descr Support";
  134. const wchar* NCRYPT_SECURITY_DESCR_PROPERTY = "Security Descr";
  135. const wchar* NCRYPT_USE_COUNT_ENABLED_PROPERTY = "Enabled Use Count";
  136. const wchar* NCRYPT_USE_COUNT_PROPERTY = "Use Count";
  137. const wchar* NCRYPT_LAST_MODIFIED_PROPERTY = "Modified";
  138. const wchar* NCRYPT_MAX_NAME_LENGTH_PROPERTY = "Max Name Length";
  139. const wchar* NCRYPT_ALGORITHM_GROUP_PROPERTY = "Algorithm Group";
  140. alias BCRYPT_DH_PARAMETERS NCRYPT_DH_PARAMETERS_PROPERTY;
  141. const wchar* NCRYPT_PROVIDER_HANDLE_PROPERTY = "Provider Handle";
  142. const wchar* NCRYPT_PIN_PROPERTY = "SmartCardPin";
  143. const wchar* NCRYPT_READER_PROPERTY = "SmartCardReader";
  144. const wchar* NCRYPT_SMARTCARD_GUID_PROPERTY = "SmartCardGuid";
  145. const wchar* NCRYPT_CERTIFICATE_PROPERTY = "SmartCardKeyCertificate";
  146. const wchar* NCRYPT_PIN_PROMPT_PROPERTY = "SmartCardPinPrompt";
  147. const wchar* NCRYPT_USER_CERTSTORE_PROPERTY = "SmartCardUserCertStore";
  148. const wchar* NCRYPT_ROOT_CERTSTORE_PROPERTY = "SmartcardRootCertStore";
  149. const wchar* NCRYPT_SECURE_PIN_PROPERTY = "SmartCardSecurePin";
  150. const wchar* NCRYPT_ASSOCIATED_ECDH_KEY = "SmartCardAssociatedECDHKey";
  151. const wchar* NCRYPT_SCARD_PIN_ID = "SmartCardPinId";
  152. const wchar* NCRYPT_SCARD_PIN_INFO = "SmartCardPinInfo";
  153. enum {
  154. NCRYPT_MAX_PROPERTY_NAME = 64,
  155. NCRYPT_MAX_PROPERTY_DATA = 0x100000,
  156. NCRYPT_ALLOW_EXPORT_FLAG = 0x00000001,
  157. NCRYPT_ALLOW_PLAINTEXT_EXPORT_FLAG = 0x00000002,
  158. NCRYPT_ALLOW_ARCHIVING_FLAG = 0x00000004,
  159. NCRYPT_ALLOW_PLAINTEXT_ARCHIVING_FLAG = 0x00000008,
  160. NCRYPT_IMPL_HARDWARE_FLAG = 0x00000001,
  161. NCRYPT_IMPL_SOFTWARE_FLAG = 0x00000002,
  162. NCRYPT_IMPL_REMOVABLE_FLAG = 0x00000008,
  163. NCRYPT_IMPL_HARDWARE_RNG_FLAG = 0x00000010,
  164. NCRYPT_ALLOW_DECRYPT_FLAG = 0x00000001,
  165. NCRYPT_ALLOW_SIGNING_FLAG = 0x00000002,
  166. NCRYPT_ALLOW_KEY_AGREEMENT_FLAG = 0x00000004,
  167. NCRYPT_ALLOW_ALL_USAGES = 0x00ffffff,
  168. NCRYPT_UI_PROTECT_KEY_FLAG = 0x00000001,
  169. NCRYPT_UI_FORCE_HIGH_PROTECTION_FLAG = 0x00000002,
  170. }
  171. struct NCRYPT_UI_POLICY_BLOB {
  172. DWORD dwVersion;
  173. DWORD dwFlags;
  174. DWORD cbCreationTitle;
  175. DWORD cbFriendlyName;
  176. DWORD cbDescription;
  177. }
  178. struct NCRYPT_UI_POLICY {
  179. DWORD dwVersion;
  180. DWORD dwFlags;
  181. LPCWSTR pszCreationTitle;
  182. LPCWSTR pszFriendlyName;
  183. LPCWSTR pszDescription;
  184. }
  185. struct NCRYPT_SUPPORTED_LENGTHS {
  186. DWORD dwMinLength;
  187. DWORD dwMaxLength;
  188. DWORD dwIncrement;
  189. DWORD dwDefaultLength;
  190. }
  191. export extern(Windows) SECURITY_STATUS NCryptGetProperty(NCRYPT_HANDLE hObject, LPCWSTR pszProperty, PBYTE pbOutput, DWORD cbOutput, DWORD* pcbResult, DWORD dwFlags);
  192. export extern(Windows) SECURITY_STATUS NCryptSetProperty(NCRYPT_HANDLE hObject, LPCWSTR pszProperty, PBYTE pbInput, DWORD cbInput, DWORD dwFlags);
  193. export extern(Windows) SECURITY_STATUS NCryptFinalizeKey(NCRYPT_KEY_HANDLE hKey, DWORD dwFlags);
  194. export extern(Windows) SECURITY_STATUS NCryptEncrypt(NCRYPT_KEY_HANDLE hKey, PBYTE pbInput, DWORD cbInput, VOID* pPaddingInfo, PBYTE pbOutput, DWORD cbOutput, DWORD* pcbResult, DWORD dwFlags);
  195. export extern(Windows) SECURITY_STATUS NCryptDecrypt(NCRYPT_KEY_HANDLE hKey, PBYTE pbInput, DWORD cbInput, VOID* pPaddingInfo, PBYTE pbOutput, DWORD cbOutput, DWORD* pcbResult, DWORD dwFlags);
  196. const wchar* NCRYPT_PKCS7_ENVELOPE_BLOB = "PKCS7_ENVELOPE";
  197. const wchar* NCRYPT_PKCS8_PRIVATE_KEY_BLOB = "PKCS8_PRIVATEKEY";
  198. const wchar* NCRYPT_OPAQUETRANSPORT_BLOB = "OpaqueTransport";
  199. enum {
  200. NCRYPT_EXPORT_LEGACY_FLAG = 0x00000800,
  201. }
  202. export extern(Windows) SECURITY_STATUS NCryptImportKey(NCRYPT_PROV_HANDLE hProvider, NCRYPT_KEY_HANDLE hImportKey, LPCWSTR pszBlobType, NCryptBufferDesc* pParameterList, NCRYPT_KEY_HANDLE* phKey, PBYTE pbData, DWORD cbData, DWORD dwFlags);
  203. export extern(Windows) SECURITY_STATUS NCryptExportKey(NCRYPT_KEY_HANDLE hKey, NCRYPT_KEY_HANDLE hExportKey, LPCWSTR pszBlobType, NCryptBufferDesc* pParameterList, PBYTE pbOutput, DWORD cbOutput, DWORD* pcbResult, DWORD dwFlags);
  204. export extern(Windows) SECURITY_STATUS NCryptSignHash(NCRYPT_KEY_HANDLE hKey, VOID* pPaddingInfo, PBYTE pbHashValue, DWORD cbHashValue, PBYTE pbSignature, DWORD cbSignature, DWORD* pcbResult, DWORD dwFlags);
  205. export extern(Windows) SECURITY_STATUS NCryptVerifySignature(NCRYPT_KEY_HANDLE hKey, VOID* pPaddingInfo, PBYTE pbHashValue, DWORD cbHashValue, PBYTE pbSignature, DWORD cbSignature, DWORD dwFlags);
  206. export extern(Windows) SECURITY_STATUS NCryptDeleteKey(NCRYPT_KEY_HANDLE hKey, DWORD dwFlags);
  207. export extern(Windows) SECURITY_STATUS NCryptFreeObject(NCRYPT_HANDLE hObject);
  208. export extern(Windows) BOOL NCryptIsKeyHandle(NCRYPT_KEY_HANDLE hKey);
  209. export extern(Windows) SECURITY_STATUS NCryptTranslateHandle(NCRYPT_PROV_HANDLE* phProvider, NCRYPT_KEY_HANDLE* phKey, HCRYPTPROV hLegacyProv, HCRYPTKEY hLegacyKey, DWORD dwLegacyKeySpec, DWORD dwFlags);
  210. export extern(Windows) SECURITY_STATUS NCryptNotifyChangeKey(NCRYPT_PROV_HANDLE hProvider, HANDLE* phEvent, DWORD dwFlags);
  211. export extern(Windows) SECURITY_STATUS NCryptSecretAgreement(NCRYPT_KEY_HANDLE hPrivKey, NCRYPT_KEY_HANDLE hPubKey, NCRYPT_SECRET_HANDLE* phAgreedSecret, DWORD dwFlags);
  212. export extern(Windows) SECURITY_STATUS NCryptDeriveKey(NCRYPT_SECRET_HANDLE hSharedSecret, LPCWSTR pwszKDF, NCryptBufferDesc* pParameterList, PBYTE pbDerivedKey, DWORD cbDerivedKey, DWORD* pcbResult, ULONG dwFlags);
  213. // NCRYPT_KEY_STORAGE_INTERFACE_VERSION BCRYPT_MAKE_INTERFACE_VERSION(1,0)
  214. }// extern(C)