|  | /* | 
|  | * Copyright (C) 2005 Juan Lang | 
|  | * | 
|  | * 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 | 
|  | */ | 
|  | #ifndef __WINE_SCHANNEL_H__ | 
|  | #define __WINE_SCHANNEL_H__ | 
|  |  | 
|  | #include <wincrypt.h> | 
|  |  | 
|  | /* Package names */ | 
|  | #define UNISP_NAME_A "Microsoft Unified Security Protocol Provider" | 
|  | #if defined(__GNUC__) | 
|  | #define UNISP_NAME_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',\ | 
|  | ' ','U','n','i','f','i','e','d',' ','S','e','c','u','r','i','t','y',' ',\ | 
|  | 'P','r','o','t','o','c','o','l',' ','P','r','o','v','i','d','e','r',0 } | 
|  | #elif defined(_MSC_VER) | 
|  | #define UNISP_NAME_W L"Microsoft Unified Security Protocol Provider" | 
|  | #else | 
|  | static const WCHAR UNISP_NAME_W[] = { 'M','i','c','r','o','s','o','f','t', | 
|  | ' ','U','n','i','f','i','e','d',' ','S','e','c','u','r','i','t','y',' ', | 
|  | 'P','r','o','t','o','c','o','l',' ','P','r','o','v','i','d','e','r',0 }; | 
|  | #endif | 
|  | #define UNISP_NAME WINELIB_NAME_AW(UNISP_NAME_) | 
|  |  | 
|  | #define SSL2SP_NAME_A   "Microsoft SSL 2.0" | 
|  | #if defined(__GNUC__) | 
|  | #define SSL2SP_NAME_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',\ | 
|  | ' ','S','S','L',' ','2','.','0',0 } | 
|  | #elif defined(_MSC_VER) | 
|  | #define SSL2SP_NAME_W  L"Microsoft SSL 2.0" | 
|  | #else | 
|  | static const WCHAR SSL2SP_NAME_W[] = { 'M','i','c','r','o','s','o','f','t', | 
|  | ' ','S','S','L',' ','2','.','0',0 }; | 
|  | #endif | 
|  | #define SSL2SP_NAME WINELIB_NAME_AW(SSL2SP_NAME_) | 
|  |  | 
|  | #define SSL3SP_NAME_A   "Microsoft SSL 3.0" | 
|  | #if defined(__GNUC__) | 
|  | #define SSL3SP_NAME_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',\ | 
|  | ' ','S','S','L',' ','3','.','0',0 } | 
|  | #elif defined(_MSC_VER) | 
|  | #define SSL3SP_NAME_W  L"Microsoft SSL 3.0" | 
|  | #else | 
|  | static const WCHAR SSL3SP_NAME_W[] = { 'M','i','c','r','o','s','o','f','t', | 
|  | ' ','S','S','L',' ','3','.','0',0 }; | 
|  | #endif | 
|  | #define SSL3SP_NAME WINELIB_NAME_AW(SSL3SP_NAME_) | 
|  |  | 
|  | #define TLS1SP_NAME_A   "Microsoft TLS 1.0" | 
|  | #if defined(__GNUC__) | 
|  | #define TLS1SP_NAME_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',\ | 
|  | ' ','T','L','S',' ','1','.','0',0 } | 
|  | #elif defined(_MSC_VER) | 
|  | #define TLS1SP_NAME_W  L"Microsoft TLS 1.0" | 
|  | #else | 
|  | static const WCHAR TLS1SP_NAME_W[] = { 'M','i','c','r','o','s','o','f','t', | 
|  | ' ','T','L','S',' ','1','.','0',0 }; | 
|  | #endif | 
|  | #define TLS1SP_NAME WINELIB_NAME_AW(TLS1SP_NAME_) | 
|  |  | 
|  | #define PCT1SP_NAME_A   "Microsoft PCT 1.0" | 
|  | #if defined(__GNUC__) | 
|  | #define PCT1SP_NAME_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',\ | 
|  | ' ','P','C','T',' ','1','.','0',0 } | 
|  | #elif defined(_MSC_VER) | 
|  | #define PCT1SP_NAME_W  L"Microsoft PCT 1.0" | 
|  | #else | 
|  | static const WCHAR PCT1SP_NAME_W[] = { 'M','i','c','r','o','s','o','f','t', | 
|  | ' ','P','C','T',' ','1','.','0',0 }; | 
|  | #endif | 
|  | #define PCT1SP_NAME WINELIB_NAME_AW(PCT1SP_NAME_) | 
|  |  | 
|  | #define SCHANNEL_NAME_A "Schannel" | 
|  | #if defined(__GNUC__) | 
|  | #define SCHANNEL_NAME_W (const WCHAR []){ 'S','c','h','a','n','n','e','l',0 } | 
|  | #elif defined(_MSC_VER) | 
|  | #define SCHANNEL_NAME_W  L"Schannel" | 
|  | #else | 
|  | static const WCHAR SCHANNEL_NAME_W[] = { 'S','c','h','a','n','n','e','l',0 }; | 
|  | #endif | 
|  | #define SCHANNEL_NAME WINELIB_NAME_AW(SCHANNEL_NAME_) | 
|  |  | 
|  | #define SCH_CRED_V1           1 | 
|  | #define SCH_CRED_V2           2 | 
|  | #define SCH_CRED_VERSION      2 | 
|  | #define SCH_CRED_V3           3 | 
|  | #define SCHANNEL_CRED_VERSION 4 | 
|  |  | 
|  | #define SCHANNEL_RENEGOTIATE 0 | 
|  | #define SCHANNEL_SHUTDOWN    1 | 
|  | #define SCHANNEL_ALERT       2 | 
|  | #define SCHANNEL_SESSION     3 | 
|  |  | 
|  | #define SP_PROT_TLS1_CLIENT 128 | 
|  | #define SP_PROT_TLS1_SERVER 64 | 
|  | #define SP_PROT_SSL3_CLIENT 32 | 
|  | #define SP_PROT_SSL3_SERVER 16 | 
|  | #define SP_PROT_SSL2_CLIENT 8 | 
|  | #define SP_PROT_SSL2_SERVER 4 | 
|  | #define SP_PROT_PCT1_CLIENT 2 | 
|  | #define SP_PROT_PCT1_SERVER 1 | 
|  |  | 
|  | #define SP_PROT_TLS1 (SP_PROT_TLS1_CLIENT | SP_PROT_TLS1_SERVER) | 
|  | #define SP_PROT_SSL3 (SP_PROT_SSL3_CLIENT | SP_PROT_SSL3_SERVER) | 
|  | #define SP_PROT_SSL2 (SP_PROT_SSL2_CLIENT | SP_PROT_SSL2_SERVER) | 
|  | #define SP_PROT_PCT1 (SP_PROT_PCT1_CLIENT | SP_PROT_PCT1_SERVER) | 
|  |  | 
|  | #define SCH_CRED_NO_SYSTEM_MAPPER                    2 | 
|  | #define SCH_CRED_NO_SERVERNAME_CHECK                 4 | 
|  | #define SCH_CRED_MANUAL_CRED_VALIDATION              8 | 
|  | #define SCH_CRED_NO_DEFAULT_CREDS                    16 | 
|  | #define SCH_CRED_AUTO_CRED_VALIDATION                32 | 
|  | #define SCH_CRED_USE_DEFAULT_CREDS                   64 | 
|  | #define SCH_CRED_REVOCATION_CHECK_CHAIN_END_CERT     256 | 
|  | #define SCH_CRED_REVOCATION_CHECK_CHAIN              512 | 
|  | #define SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT 1024 | 
|  | #define SCH_CRED_IGNORE_NO_REVOCATION_CHECK          2048 | 
|  | #define SCH_CRED_IGNORE_REVOCATION_OFFLINE           4096 | 
|  |  | 
|  | #define SECPKG_ATTR_ISSUER_LIST         0x50 | 
|  | #define SECPKG_ATTR_REMOTE_CRED         0x51 | 
|  | #define SECPKG_ATTR_LOCAL_CRED          0x52 | 
|  | #define SECPKG_ATTR_REMOTE_CERT_CONTEXT 0x53 | 
|  | #define SECPKG_ATTR_LOCAL_CERT_CONTEXT  0x54 | 
|  | #define SECPKG_ATTR_ROOT_STORE          0x55 | 
|  | #define SECPKG_ATTR_SUPPORTED_ALGS      0x56 | 
|  | #define SECPKG_ATTR_CIPHER_STRENGTHS    0x57 | 
|  | #define SECPKG_ATTR_SUPPORTED_PROTOCOLS 0x58 | 
|  | #define SECPKG_ATTR_ISSUER_LIST_EX      0x59 | 
|  | #define SECPKG_ATTR_CONNECTION_INFO     0x5a | 
|  | #define SECPKG_ATTR_EAP_KEY_BLOCK       0x5b | 
|  | #define SECPKG_ATTR_MAPPED_CRED_ATTR    0x5c | 
|  | #define SECPKG_ATTR_SESSION_INFO        0x5d | 
|  | #define SECPKG_ATTR_APP_DATA            0x5e | 
|  |  | 
|  | #define UNISP_RPC_ID 14 | 
|  |  | 
|  | struct _HMAPPER; | 
|  |  | 
|  | typedef struct _SCHANNEL_CRED | 
|  | { | 
|  | DWORD dwVersion; | 
|  | DWORD cCreds; | 
|  | PCCERT_CONTEXT *paCred; | 
|  | HCERTSTORE hRootStore; | 
|  | DWORD cMappers; | 
|  | struct _HMAPPER **aphMappers; | 
|  | DWORD cSupportedAlgs; | 
|  | ALG_ID *palgSupportedAlgs; | 
|  | DWORD grbitEnabledProtocols; | 
|  | DWORD dwMinimumCipherStrength; | 
|  | DWORD dwMaximumCipherStrength; | 
|  | DWORD dwSessionLength; | 
|  | DWORD dwFlags; | 
|  | DWORD reserved; | 
|  | } SCHANNEL_CRED, *PSCHANNEL_CRED; | 
|  |  | 
|  | typedef struct _SecPkgCred_SupportedAlgs | 
|  | { | 
|  | DWORD cSupportedAlgs; | 
|  | ALG_ID *palgSupportedAlgs; | 
|  | } SecPkgCred_SupportedAlgs, *PSecPkgCred_SupportedAlgs; | 
|  |  | 
|  | typedef struct _SecPkgCred_CipherStrengths | 
|  | { | 
|  | DWORD dwMinimumCipherStrength; | 
|  | DWORD dwMaximumCipherStrength; | 
|  | } SecPkgCred_CipherStrengths, *PSecPkgCred_CipherStrengths; | 
|  |  | 
|  | typedef struct _SecPkgCred_SupportedProtocols | 
|  | { | 
|  | DWORD grbitProtocol; | 
|  | } SecPkgCred_SupportedProtocols, *PSecPkgCred_SupportedProtocols; | 
|  |  | 
|  | typedef struct _SecPkgContext_IssuerListInfoEx | 
|  | { | 
|  | PCERT_NAME_BLOB aIssuers; | 
|  | DWORD cIssuers; | 
|  | } SecPkgContext_IssuerListInfoEx, *PSecPkgContext_IssuerListInfoEx; | 
|  |  | 
|  | typedef struct _SecPkgContext_ConnectionInfo | 
|  | { | 
|  | DWORD dwProtocol; | 
|  | ALG_ID aiCipher; | 
|  | DWORD dwCipherStrength; | 
|  | ALG_ID aiHash; | 
|  | DWORD dwHashStrength; | 
|  | ALG_ID aiExch; | 
|  | DWORD dwExchStrength; | 
|  | } SecPkgContext_ConnectionInfo, *PSecPkgContext_ConnectionInfo; | 
|  |  | 
|  | #endif /* __WINE_SCHANNEL_H__ */ |