mirror of
https://github.com/Icinga/icinga2.git
synced 2025-08-25 03:28:12 +02:00
124 lines
6.3 KiB
C++
124 lines
6.3 KiB
C++
//
|
|
// Copyright (c) 2020 Kasper Laudrup (laudrup at stacktrace dot dk)
|
|
//
|
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
|
//
|
|
|
|
#ifndef BOOST_WINTLS_DETAIL_SSPI_FUNCTIONS_HPP
|
|
#define BOOST_WINTLS_DETAIL_SSPI_FUNCTIONS_HPP
|
|
|
|
#include <boost/wintls/detail/sspi_types.hpp>
|
|
|
|
namespace boost {
|
|
namespace wintls {
|
|
namespace detail {
|
|
namespace sspi_functions {
|
|
|
|
inline SecurityFunctionTable* sspi_function_table() {
|
|
static SecurityFunctionTable* impl = InitSecurityInterface();
|
|
// TODO: Figure out some way to signal this to the user instead of aborting
|
|
BOOST_ASSERT_MSG(impl != nullptr, "Unable to initialize SecurityFunctionTable");
|
|
return impl;
|
|
}
|
|
|
|
inline SECURITY_STATUS AcquireCredentialsHandle(SEC_CHAR* pPrincipal,
|
|
SEC_CHAR* pPackage,
|
|
unsigned long fCredentialUse,
|
|
void* pvLogonId,
|
|
void* pAuthData,
|
|
SEC_GET_KEY_FN pGetKeyFn,
|
|
void* pvGetKeyArgument,
|
|
PCredHandle phCredential,
|
|
PTimeStamp ptsExpiry) {
|
|
return sspi_function_table()->AcquireCredentialsHandle(pPrincipal,
|
|
pPackage,
|
|
fCredentialUse,
|
|
pvLogonId,
|
|
pAuthData,
|
|
pGetKeyFn,
|
|
pvGetKeyArgument,
|
|
phCredential,
|
|
ptsExpiry);
|
|
}
|
|
|
|
inline SECURITY_STATUS DeleteSecurityContext(PCtxtHandle phContext) {
|
|
return sspi_function_table()->DeleteSecurityContext(phContext);
|
|
}
|
|
|
|
inline SECURITY_STATUS InitializeSecurityContext(PCredHandle phCredential,
|
|
PCtxtHandle phContext,
|
|
SEC_CHAR* pTargetName,
|
|
unsigned long fContextReq,
|
|
unsigned long Reserved1,
|
|
unsigned long TargetDataRep,
|
|
PSecBufferDesc pInput,
|
|
unsigned long Reserved2,
|
|
PCtxtHandle phNewContext,
|
|
PSecBufferDesc pOutput,
|
|
unsigned long* pfContextAttr,
|
|
PTimeStamp ptsExpiry) {
|
|
return sspi_function_table()->InitializeSecurityContext(phCredential,
|
|
phContext,
|
|
pTargetName,
|
|
fContextReq,
|
|
Reserved1,
|
|
TargetDataRep,
|
|
pInput,
|
|
Reserved2,
|
|
phNewContext,
|
|
pOutput,
|
|
pfContextAttr,
|
|
ptsExpiry);
|
|
}
|
|
|
|
inline SECURITY_STATUS FreeContextBuffer(PVOID pvContextBuffer) {
|
|
return sspi_function_table()->FreeContextBuffer(pvContextBuffer);
|
|
}
|
|
|
|
inline SECURITY_STATUS DecryptMessage(PCtxtHandle phContext, PSecBufferDesc pMessage, unsigned long MessageSeqNo, unsigned long* pfQOP) {
|
|
return sspi_function_table()->DecryptMessage(phContext, pMessage, MessageSeqNo, pfQOP);
|
|
}
|
|
|
|
inline SECURITY_STATUS QueryContextAttributes(PCtxtHandle phContext, unsigned long ulAttribute, void* pBuffer) {
|
|
return sspi_function_table()->QueryContextAttributes(phContext, ulAttribute, pBuffer);
|
|
}
|
|
|
|
inline SECURITY_STATUS EncryptMessage(PCtxtHandle phContext, unsigned long fQOP, PSecBufferDesc pMessage, unsigned long MessageSeqNo) {
|
|
return sspi_function_table()->EncryptMessage(phContext, fQOP, pMessage, MessageSeqNo);
|
|
}
|
|
|
|
inline SECURITY_STATUS FreeCredentialsHandle(PCredHandle phCredential) {
|
|
return sspi_function_table()->FreeCredentialsHandle(phCredential);
|
|
}
|
|
|
|
inline SECURITY_STATUS ApplyControlToken(PCtxtHandle phContext, PSecBufferDesc pInput) {
|
|
return sspi_function_table()->ApplyControlToken(phContext, pInput);
|
|
}
|
|
|
|
inline SECURITY_STATUS AcceptSecurityContext(PCredHandle phCredential,
|
|
PCtxtHandle phContext,
|
|
PSecBufferDesc pInput,
|
|
unsigned long fContextReq,
|
|
unsigned long TargetDataRep,
|
|
PCtxtHandle phNewContext,
|
|
PSecBufferDesc pOutput,
|
|
unsigned long* pfContextAttr,
|
|
PTimeStamp ptsExpiry) {
|
|
return sspi_function_table()->AcceptSecurityContext(phCredential,
|
|
phContext,
|
|
pInput,
|
|
fContextReq,
|
|
TargetDataRep,
|
|
phNewContext,
|
|
pOutput,
|
|
pfContextAttr,
|
|
ptsExpiry);
|
|
}
|
|
} // namespace sspi_functions
|
|
} // namespace detail
|
|
} // namespace wintls
|
|
} // namespace boost
|
|
|
|
#endif // BOOST_WINTLS_DETAIL_SSPI_FUNCTIONS_HPP
|