]> git.proxmox.com Git - ceph.git/blame - 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
CommitLineData
b32b8144
FG
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>
b32b8144
FG
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 )
23namespace boost { namespace winapi {
24typedef ULONG_PTR_ HCRYPTPROV_;
25}}
26
b32b8144
FG
27extern "C" {
28#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
29#if !defined( BOOST_NO_ANSI_APIS )
92f5a8d4 30BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
b32b8144
FG
31CryptEnumProvidersA(
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);
b32b8144 38
92f5a8d4 39BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
b32b8144
FG
40CryptAcquireContextA(
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
92f5a8d4 48BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
b32b8144
FG
49CryptEnumProvidersW(
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);
b32b8144 56
92f5a8d4 57BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
b32b8144
FG
58CryptAcquireContextW(
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
92f5a8d4 65BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
b32b8144
FG
66CryptGenRandom(
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.
92f5a8d4 77BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
b32b8144
FG
78CryptReleaseContext(
79 boost::winapi::HCRYPTPROV_ hProv,
80 boost::winapi::ULONG_PTR_ dwFlags);
81#else
92f5a8d4 82BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
b32b8144
FG
83CryptReleaseContext(
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
91namespace boost {
92namespace winapi {
93
94#if defined( BOOST_USE_WINDOWS_H )
95
96typedef ::HCRYPTPROV HCRYPTPROV_;
97
98#if BOOST_WINAPI_PARTITION_APP_SYSTEM
92f5a8d4 99BOOST_CONSTEXPR_OR_CONST DWORD_ PROV_RSA_FULL_ = PROV_RSA_FULL;
b32b8144 100
92f5a8d4
TL
101BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_VERIFYCONTEXT_ = CRYPT_VERIFYCONTEXT;
102BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_NEWKEYSET_ = CRYPT_NEWKEYSET;
103BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_DELETEKEYSET_ = CRYPT_DELETEKEYSET;
104BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_MACHINE_KEYSET_ = CRYPT_MACHINE_KEYSET;
105BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_SILENT_ = CRYPT_SILENT;
b32b8144
FG
106#endif
107
108#else
109
110#if BOOST_WINAPI_PARTITION_APP_SYSTEM
92f5a8d4 111BOOST_CONSTEXPR_OR_CONST DWORD_ PROV_RSA_FULL_ = 1;
b32b8144 112
92f5a8d4
TL
113BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_VERIFYCONTEXT_ = 0xF0000000;
114BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_NEWKEYSET_ = 8;
115BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_DELETEKEYSET_ = 16;
116BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_MACHINE_KEYSET_ = 32;
117BOOST_CONSTEXPR_OR_CONST DWORD_ CRYPT_SILENT_ = 64;
b32b8144
FG
118#endif
119
120#endif
121
122#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
123
124#if !defined( BOOST_NO_ANSI_APIS )
92f5a8d4 125using ::CryptEnumProvidersA;
b32b8144
FG
126using ::CryptAcquireContextA;
127#endif
92f5a8d4 128using ::CryptEnumProvidersW;
b32b8144
FG
129using ::CryptAcquireContextW;
130using ::CryptGenRandom;
131
132#if !defined( BOOST_NO_ANSI_APIS )
b32b8144
FG
133BOOST_FORCEINLINE BOOL_ crypt_enum_providers(
134 DWORD_ dwIndex,
135 DWORD_ *pdwReserved,
136 DWORD_ dwFlags,
137 DWORD_ *pdwProvType,
138 LPSTR_ szProvName,
139 DWORD_ *pcbProvName)
140{
92f5a8d4 141 return ::CryptEnumProvidersA(dwIndex, pdwReserved, dwFlags, pdwProvType, szProvName, pcbProvName);
b32b8144
FG
142}
143
144BOOST_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
b32b8144
FG
155BOOST_FORCEINLINE BOOL_ crypt_enum_providers(
156 DWORD_ dwIndex,
157 DWORD_ *pdwReserved,
158 DWORD_ dwFlags,
159 DWORD_ *pdwProvType,
160 LPWSTR_ szProvName,
161 DWORD_ *pcbProvName)
162{
92f5a8d4 163 return ::CryptEnumProvidersW(dwIndex, pdwReserved, dwFlags, pdwProvType, szProvName, pcbProvName);
b32b8144
FG
164}
165
166BOOST_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
179BOOST_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_