| /* |
| * LSA-mode functions of the SChannel security provider |
| * |
| * Copyright 2007 Yuval Fledel |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Lesser General Public |
| * License as published by the Free Software Foundation; either |
| * version 2.1 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public |
| * License along with this library; if not, write to the Free Software |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA |
| */ |
| |
| #include <stdarg.h> |
| |
| #include "ntstatus.h" |
| #define WIN32_NO_STATUS |
| #include "windef.h" |
| #include "winbase.h" |
| #include "sspi.h" |
| #include "ntsecapi.h" |
| #include "ntsecpkg.h" |
| #include "schannel.h" |
| |
| #include "wine/debug.h" |
| |
| WINE_DEFAULT_DEBUG_CHANNEL(schannel); |
| |
| /*********************************************************************** |
| * SpGetInfoUnified |
| */ |
| static NTSTATUS WINAPI SpGetInfoUnified(PSecPkgInfoW PackageInfo) |
| { |
| TRACE("(%p)\n", PackageInfo); |
| |
| PackageInfo->fCapabilities = SECPKG_FLAG_MUTUAL_AUTH | |
| SECPKG_FLAG_INTEGRITY | SECPKG_FLAG_PRIVACY | |
| SECPKG_FLAG_CONNECTION | SECPKG_FLAG_MULTI_REQUIRED | |
| SECPKG_FLAG_EXTENDED_ERROR | SECPKG_FLAG_IMPERSONATION | |
| SECPKG_FLAG_ACCEPT_WIN32_NAME | SECPKG_FLAG_STREAM; |
| PackageInfo->wVersion = 1; |
| PackageInfo->wRPCID = UNISP_RPC_ID; |
| PackageInfo->cbMaxToken = 0x4000; |
| PackageInfo->Name = (LPWSTR)UNISP_NAME_W; |
| PackageInfo->Comment = (LPWSTR)UNISP_NAME_W; |
| |
| return STATUS_SUCCESS; |
| } |
| |
| static SEC_WCHAR schannelCommentW[] = { 'S','c','h','a','n','n','e','l', |
| ' ','S','e','c','u','r','i','t','y',' ','P','a','c','k','a','g','e',0 }; |
| |
| /*********************************************************************** |
| * SpGetInfoSChannel |
| */ |
| static NTSTATUS WINAPI SpGetInfoSChannel(PSecPkgInfoW PackageInfo) |
| { |
| TRACE("(%p)\n", PackageInfo); |
| |
| PackageInfo->fCapabilities = SECPKG_FLAG_MUTUAL_AUTH | |
| SECPKG_FLAG_INTEGRITY | SECPKG_FLAG_PRIVACY | |
| SECPKG_FLAG_CONNECTION | SECPKG_FLAG_MULTI_REQUIRED | |
| SECPKG_FLAG_EXTENDED_ERROR | SECPKG_FLAG_IMPERSONATION | |
| SECPKG_FLAG_ACCEPT_WIN32_NAME | SECPKG_FLAG_STREAM; |
| PackageInfo->wVersion = 1; |
| PackageInfo->wRPCID = UNISP_RPC_ID; |
| PackageInfo->cbMaxToken = 0x4000; |
| PackageInfo->Name = (LPWSTR)SCHANNEL_NAME_W; |
| PackageInfo->Comment = schannelCommentW; |
| |
| return STATUS_SUCCESS; |
| } |
| |
| static SECPKG_FUNCTION_TABLE secPkgFunctionTable[2] = |
| { { |
| NULL, /* InitializePackage */ |
| NULL, /* LsaLogonUser */ |
| NULL, /* CallPackage */ |
| NULL, /* LogonTerminated */ |
| NULL, /* CallPackageUntrusted */ |
| NULL, /* CallPackagePassthrough */ |
| NULL, /* LogonUserEx */ |
| NULL, /* LogonUserEx2 */ |
| NULL, /* Initialize */ |
| NULL, /* Shutdown */ |
| SpGetInfoUnified, |
| NULL, /* AcceptCredentials */ |
| NULL, /* SpAcquireCredentialsHandle */ |
| NULL, /* SpQueryCredentialsAttributes */ |
| NULL, /* FreeCredentialsHandle */ |
| NULL, /* SaveCredentials */ |
| NULL, /* GetCredentials */ |
| NULL, /* DeleteCredentials */ |
| NULL, /* InitLsaModeContext */ |
| NULL, /* AcceptLsaModeContext */ |
| NULL, /* DeleteContext */ |
| NULL, /* ApplyControlToken */ |
| NULL, /* GetUserInfo */ |
| NULL, /* GetExtendedInformation */ |
| NULL, /* SpQueryContextAttributes */ |
| NULL, /* SpAddCredentials */ |
| NULL, /* SetExtendedInformation */ |
| NULL, /* SetContextAttributes */ |
| NULL, /* SetCredentialsAttributes */ |
| NULL, /* ChangeAccountPassword */ |
| NULL, /* QueryMetaData */ |
| NULL, /* ExchangeMetaData */ |
| NULL, /* GetCredUIContext */ |
| NULL, /* UpdateCredentials */ |
| NULL, /* ValidateTargetInfo */ |
| NULL, /* PostLogonUser */ |
| }, { |
| NULL, /* InitializePackage */ |
| NULL, /* LsaLogonUser */ |
| NULL, /* CallPackage */ |
| NULL, /* LogonTerminated */ |
| NULL, /* CallPackageUntrusted */ |
| NULL, /* CallPackagePassthrough */ |
| NULL, /* LogonUserEx */ |
| NULL, /* LogonUserEx2 */ |
| NULL, /* Initialize */ |
| NULL, /* Shutdown */ |
| SpGetInfoSChannel, |
| NULL, /* AcceptCredentials */ |
| NULL, /* SpAcquireCredentialsHandle */ |
| NULL, /* SpQueryCredentialsAttributes */ |
| NULL, /* FreeCredentialsHandle */ |
| NULL, /* SaveCredentials */ |
| NULL, /* GetCredentials */ |
| NULL, /* DeleteCredentials */ |
| NULL, /* InitLsaModeContext */ |
| NULL, /* AcceptLsaModeContext */ |
| NULL, /* DeleteContext */ |
| NULL, /* ApplyControlToken */ |
| NULL, /* GetUserInfo */ |
| NULL, /* GetExtendedInformation */ |
| NULL, /* SpQueryContextAttributes */ |
| NULL, /* SpAddCredentials */ |
| NULL, /* SetExtendedInformation */ |
| NULL, /* SetContextAttributes */ |
| NULL, /* SetCredentialsAttributes */ |
| NULL, /* ChangeAccountPassword */ |
| NULL, /* QueryMetaData */ |
| NULL, /* ExchangeMetaData */ |
| NULL, /* GetCredUIContext */ |
| NULL, /* UpdateCredentials */ |
| NULL, /* ValidateTargetInfo */ |
| NULL, /* PostLogonUser */ |
| } |
| }; |
| |
| /*********************************************************************** |
| * SpLsaModeInitialize (SCHANNEL.@) |
| */ |
| NTSTATUS WINAPI SpLsaModeInitialize(ULONG LsaVersion, PULONG PackageVersion, |
| PSECPKG_FUNCTION_TABLE *ppTables, PULONG pcTables) |
| { |
| TRACE("(%u, %p, %p, %p)\n", LsaVersion, PackageVersion, ppTables, pcTables); |
| |
| *PackageVersion = SECPKG_INTERFACE_VERSION_7; |
| *pcTables = 2; |
| *ppTables = secPkgFunctionTable; |
| |
| return STATUS_SUCCESS; |
| } |