]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/boost/winapi/crypt.hpp
import new upstream nautilus stable release 14.2.8
[ceph.git] / ceph / src / boost / boost / winapi / crypt.hpp
1 /*
2 * Copyright 2014 Antony Polukhin
3 * Copyright 2015 Andrey Semashev
4 *
5 * Distributed under the Boost Software License, Version 1.0.
6 * See http://www.boost.org/LICENSE_1_0.txt
7 */
8
9 #ifndef BOOST_WINAPI_CRYPT_HPP_INCLUDED_
10 #define BOOST_WINAPI_CRYPT_HPP_INCLUDED_
11
12 #include <boost/winapi/basic_types.hpp>
13 #if defined( BOOST_USE_WINDOWS_H )
14 // This header is not always included as part of windows.h
15 #include <wincrypt.h>
16 #endif
17
18 #ifdef BOOST_HAS_PRAGMA_ONCE
19 #pragma once
20 #endif
21
22 #if !defined( BOOST_USE_WINDOWS_H )
23 namespace boost { namespace winapi {
24 typedef ULONG_PTR_ HCRYPTPROV_;
25 }}
26
27 extern "C" {
28 #if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
29 #if !defined( BOOST_NO_ANSI_APIS )
30 BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
31 CryptEnumProvidersA(
32 boost::winapi::DWORD_ dwIndex,
33 boost::winapi::DWORD_ *pdwReserved,
34 boost::winapi::DWORD_ dwFlags,
35 boost::winapi::DWORD_ *pdwProvType,
36 boost::winapi::LPSTR_ szProvName,
37 boost::winapi::DWORD_ *pcbProvName);
38
39 BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
40 CryptAcquireContextA(
41 boost::winapi::HCRYPTPROV_ *phProv,
42 boost::winapi::LPCSTR_ pszContainer,
43 boost::winapi::LPCSTR_ pszProvider,
44 boost::winapi::DWORD_ dwProvType,
45 boost::winapi::DWORD_ dwFlags);
46 #endif // !defined( BOOST_NO_ANSI_APIS )
47
48 BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
49 CryptEnumProvidersW(
50 boost::winapi::DWORD_ dwIndex,
51 boost::winapi::DWORD_ *pdwReserved,
52 boost::winapi::DWORD_ dwFlags,
53 boost::winapi::DWORD_ *pdwProvType,
54 boost::winapi::LPWSTR_ szProvName,
55 boost::winapi::DWORD_ *pcbProvName);
56
57 BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
58 CryptAcquireContextW(
59 boost::winapi::HCRYPTPROV_ *phProv,
60 boost::winapi::LPCWSTR_ szContainer,
61 boost::winapi::LPCWSTR_ szProvider,
62 boost::winapi::DWORD_ dwProvType,
63 boost::winapi::DWORD_ dwFlags);
64
65 BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
66 CryptGenRandom(
67 boost::winapi::HCRYPTPROV_ hProv,
68 boost::winapi::DWORD_ dwLen,
69 boost::winapi::BYTE_ *pbBuffer);
70 #endif // BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
71
72 #if BOOST_WINAPI_PARTITION_APP_SYSTEM
73 #if defined(_MSC_VER) && (_MSC_VER+0) >= 1500 && (_MSC_VER+0) < 1900 && BOOST_USE_NTDDI_VERSION < BOOST_WINAPI_NTDDI_WINXP
74 // Standalone MS Windows SDK 6.0A and later until 10.0 provide a different declaration of CryptReleaseContext for Windows 2000 and older.
75 // This is not the case for (a) MinGW and MinGW-w64, (b) MSVC 7.1 and 8, which are shipped with their own Windows SDK,
76 // and (c) MSVC 14.0 and later, which are used with Windows SDK 10.
77 BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
78 CryptReleaseContext(
79 boost::winapi::HCRYPTPROV_ hProv,
80 boost::winapi::ULONG_PTR_ dwFlags);
81 #else
82 BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
83 CryptReleaseContext(
84 boost::winapi::HCRYPTPROV_ hProv,
85 boost::winapi::DWORD_ dwFlags);
86 #endif
87 #endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
88 }
89 #endif // !defined( BOOST_USE_WINDOWS_H )
90
91 namespace boost {
92 namespace winapi {
93
94 #if defined( BOOST_USE_WINDOWS_H )
95
96 typedef ::HCRYPTPROV HCRYPTPROV_;
97
98 #if BOOST_WINAPI_PARTITION_APP_SYSTEM
99 BOOST_CONSTEXPR_OR_CONST DWORD_ PROV_RSA_FULL_ = PROV_RSA_FULL;
100
101 BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_VERIFYCONTEXT_ = CRYPT_VERIFYCONTEXT;
102 BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_NEWKEYSET_ = CRYPT_NEWKEYSET;
103 BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_DELETEKEYSET_ = CRYPT_DELETEKEYSET;
104 BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_MACHINE_KEYSET_ = CRYPT_MACHINE_KEYSET;
105 BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_SILENT_ = CRYPT_SILENT;
106 #endif
107
108 #else
109
110 #if BOOST_WINAPI_PARTITION_APP_SYSTEM
111 BOOST_CONSTEXPR_OR_CONST DWORD_ PROV_RSA_FULL_ = 1;
112
113 BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_VERIFYCONTEXT_ = 0xF0000000;
114 BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_NEWKEYSET_ = 8;
115 BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_DELETEKEYSET_ = 16;
116 BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_MACHINE_KEYSET_ = 32;
117 BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_SILENT_ = 64;
118 #endif
119
120 #endif
121
122 #if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
123
124 #if !defined( BOOST_NO_ANSI_APIS )
125 using ::CryptEnumProvidersA;
126 using ::CryptAcquireContextA;
127 #endif
128 using ::CryptEnumProvidersW;
129 using ::CryptAcquireContextW;
130 using ::CryptGenRandom;
131
132 #if !defined( BOOST_NO_ANSI_APIS )
133 BOOST_FORCEINLINE BOOL_ crypt_enum_providers(
134 DWORD_ dwIndex,
135 DWORD_ *pdwReserved,
136 DWORD_ dwFlags,
137 DWORD_ *pdwProvType,
138 LPSTR_ szProvName,
139 DWORD_ *pcbProvName)
140 {
141 return ::CryptEnumProvidersA(dwIndex, pdwReserved, dwFlags, pdwProvType, szProvName, pcbProvName);
142 }
143
144 BOOST_FORCEINLINE BOOL_ crypt_acquire_context(
145 HCRYPTPROV_ *phProv,
146 LPCSTR_ pszContainer,
147 LPCSTR_ pszProvider,
148 DWORD_ dwProvType,
149 DWORD_ dwFlags)
150 {
151 return ::CryptAcquireContextA(phProv, pszContainer, pszProvider, dwProvType, dwFlags);
152 }
153 #endif
154
155 BOOST_FORCEINLINE BOOL_ crypt_enum_providers(
156 DWORD_ dwIndex,
157 DWORD_ *pdwReserved,
158 DWORD_ dwFlags,
159 DWORD_ *pdwProvType,
160 LPWSTR_ szProvName,
161 DWORD_ *pcbProvName)
162 {
163 return ::CryptEnumProvidersW(dwIndex, pdwReserved, dwFlags, pdwProvType, szProvName, pcbProvName);
164 }
165
166 BOOST_FORCEINLINE BOOL_ crypt_acquire_context(
167 HCRYPTPROV_ *phProv,
168 LPCWSTR_ szContainer,
169 LPCWSTR_ szProvider,
170 DWORD_ dwProvType,
171 DWORD_ dwFlags)
172 {
173 return ::CryptAcquireContextW(phProv, szContainer, szProvider, dwProvType, dwFlags);
174 }
175
176 #endif // BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
177
178 #if BOOST_WINAPI_PARTITION_APP_SYSTEM
179 BOOST_FORCEINLINE BOOL_ CryptReleaseContext(HCRYPTPROV_ hProv, DWORD_ dwFlags)
180 {
181 return ::CryptReleaseContext(hProv, dwFlags);
182 }
183 #endif
184
185 }
186 }
187
188 #endif // BOOST_WINAPI_CRYPT_HPP_INCLUDED_