boost/winapi/bcrypt.hpp
/*
* Copyright 2017 James E. King, III
*
* Distributed under the Boost Software License, Version 1.0.
* See http://www.boost.org/LICENSE_1_0.txt
*/
#ifndef BOOST_WINAPI_BCRYPT_HPP_INCLUDED_
#define BOOST_WINAPI_BCRYPT_HPP_INCLUDED_
#include <boost/winapi/basic_types.hpp>
#ifdef BOOST_HAS_PRAGMA_ONCE
#pragma once
#endif
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
#if BOOST_WINAPI_PARTITION_APP_SYSTEM
#if defined(BOOST_USE_WINDOWS_H)
#include <bcrypt.h>
#endif
#include <boost/winapi/detail/header.hpp>
#if defined(BOOST_USE_WINDOWS_H)
namespace boost { namespace winapi {
typedef ::BCRYPT_ALG_HANDLE BCRYPT_ALG_HANDLE_;
}}
#else // defined(BOOST_USE_WINDOWS_H)
namespace boost { namespace winapi {
typedef PVOID_ BCRYPT_ALG_HANDLE_;
}}
extern "C" {
boost::winapi::NTSTATUS_ BOOST_WINAPI_WINAPI_CC
BCryptCloseAlgorithmProvider(
boost::winapi::BCRYPT_ALG_HANDLE_ hAlgorithm,
boost::winapi::ULONG_ dwFlags
);
boost::winapi::NTSTATUS_ BOOST_WINAPI_WINAPI_CC
BCryptGenRandom(
boost::winapi::BCRYPT_ALG_HANDLE_ hAlgorithm,
boost::winapi::PUCHAR_ pbBuffer,
boost::winapi::ULONG_ cbBuffer,
boost::winapi::ULONG_ dwFlags
);
boost::winapi::NTSTATUS_ BOOST_WINAPI_WINAPI_CC
BCryptOpenAlgorithmProvider(
boost::winapi::BCRYPT_ALG_HANDLE_ *phAlgorithm,
boost::winapi::LPCWSTR_ pszAlgId,
boost::winapi::LPCWSTR_ pszImplementation,
boost::winapi::DWORD_ dwFlags
);
} // extern "C"
#endif // defined(BOOST_USE_WINDOWS_H)
namespace boost {
namespace winapi {
#if defined(BOOST_USE_WINDOWS_H)
const WCHAR_ BCRYPT_RNG_ALGORITHM_[] = BCRYPT_RNG_ALGORITHM;
#else
const WCHAR_ BCRYPT_RNG_ALGORITHM_[] = L"RNG";
#endif
using ::BCryptCloseAlgorithmProvider;
using ::BCryptGenRandom;
using ::BCryptOpenAlgorithmProvider;
} // winapi
} // boost
#include <boost/winapi/detail/footer.hpp>
#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
#endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
#endif // BOOST_WINAPI_BCRYPT_HPP_INCLUDED_