You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
156 lines
3.8 KiB
156 lines
3.8 KiB
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1992 - 1995.
|
|
//
|
|
// File: certmap.c
|
|
//
|
|
// Contents: Routines to call appropriate mapper, be it the system
|
|
// default one (in the LSA process) or an application one (in
|
|
// the application process).
|
|
//
|
|
// Classes:
|
|
//
|
|
// Functions:
|
|
//
|
|
// History: 12-23-96 jbanes Created.
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#include <spbase.h>
|
|
|
|
DWORD
|
|
WINAPI
|
|
SslReferenceMapper(HMAPPER *phMapper)
|
|
{
|
|
if(phMapper == NULL)
|
|
{
|
|
return SP_LOG_RESULT((DWORD)-1);
|
|
}
|
|
|
|
// System mapper.
|
|
return phMapper->m_vtable->ReferenceMapper(phMapper);
|
|
}
|
|
|
|
|
|
DWORD
|
|
WINAPI
|
|
SslDereferenceMapper(HMAPPER *phMapper)
|
|
{
|
|
if(phMapper == NULL)
|
|
{
|
|
return SP_LOG_RESULT(0);
|
|
}
|
|
|
|
// System mapper.
|
|
return phMapper->m_vtable->DeReferenceMapper(phMapper);
|
|
}
|
|
|
|
|
|
SECURITY_STATUS
|
|
WINAPI
|
|
SslGetMapperIssuerList(
|
|
HMAPPER * phMapper, // in
|
|
BYTE ** ppIssuerList, // out
|
|
DWORD * pcbIssuerList) // out
|
|
{
|
|
SECURITY_STATUS Status;
|
|
|
|
if(phMapper == NULL)
|
|
{
|
|
return SP_LOG_RESULT(SEC_E_INTERNAL_ERROR);
|
|
}
|
|
|
|
// System mapper.
|
|
Status = phMapper->m_vtable->GetIssuerList(phMapper,
|
|
0,
|
|
NULL,
|
|
pcbIssuerList);
|
|
|
|
if(!NT_SUCCESS(Status))
|
|
{
|
|
return SP_LOG_RESULT(Status);
|
|
}
|
|
|
|
*ppIssuerList = SPExternalAlloc(*pcbIssuerList);
|
|
if(*ppIssuerList == NULL)
|
|
{
|
|
return SP_LOG_RESULT(SEC_E_INSUFFICIENT_MEMORY);
|
|
}
|
|
|
|
Status = phMapper->m_vtable->GetIssuerList(phMapper,
|
|
0,
|
|
*ppIssuerList,
|
|
pcbIssuerList);
|
|
if(!NT_SUCCESS(Status))
|
|
{
|
|
SPExternalFree(*ppIssuerList);
|
|
return SP_LOG_RESULT(Status);
|
|
}
|
|
|
|
return Status;
|
|
}
|
|
|
|
|
|
SECURITY_STATUS
|
|
WINAPI
|
|
SslGetMapperChallenge(
|
|
HMAPPER * phMapper, // in
|
|
BYTE * pAuthenticatorId, // in
|
|
DWORD cbAuthenticatorId, // in
|
|
BYTE * pChallenge, // out
|
|
DWORD * pcbChallenge) // out
|
|
{
|
|
UNREFERENCED_PARAMETER(phMapper);
|
|
UNREFERENCED_PARAMETER(pAuthenticatorId);
|
|
UNREFERENCED_PARAMETER(cbAuthenticatorId);
|
|
UNREFERENCED_PARAMETER(pChallenge);
|
|
UNREFERENCED_PARAMETER(pcbChallenge);
|
|
|
|
return SP_LOG_RESULT(SEC_E_UNSUPPORTED_FUNCTION);
|
|
}
|
|
|
|
|
|
SECURITY_STATUS
|
|
WINAPI
|
|
SslMapCredential(
|
|
HMAPPER * phMapper, // in
|
|
DWORD dwCredentialType, // in
|
|
PCCERT_CONTEXT pCredential, // in
|
|
PCCERT_CONTEXT pAuthority, // in
|
|
HLOCATOR * phLocator) // out
|
|
{
|
|
SECURITY_STATUS scRet;
|
|
|
|
if(phMapper == NULL)
|
|
{
|
|
return SP_LOG_RESULT(SEC_E_INTERNAL_ERROR);
|
|
}
|
|
|
|
// System mapper.
|
|
scRet = phMapper->m_vtable->MapCredential(phMapper,
|
|
dwCredentialType,
|
|
pCredential,
|
|
pAuthority,
|
|
phLocator);
|
|
return MapWinTrustError(scRet, SEC_E_NO_IMPERSONATION, 0);
|
|
}
|
|
|
|
|
|
SECURITY_STATUS
|
|
WINAPI
|
|
SslCloseLocator(
|
|
HMAPPER * phMapper, // in
|
|
HLOCATOR hLocator) // in
|
|
{
|
|
if(phMapper == NULL)
|
|
{
|
|
return SP_LOG_RESULT(SEC_E_INTERNAL_ERROR);
|
|
}
|
|
|
|
// System mapper.
|
|
return phMapper->m_vtable->CloseLocator(phMapper,
|
|
hLocator);
|
|
}
|
|
|
|
|