diff --git a/include/Makefile.in b/include/Makefile.in index 59e997eb8e..47b9582815 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -204,7 +204,9 @@ WINDOWS_INCLUDES = \ rpcndr.h \ rpcnterr.h \ rpcproxy.h \ + schannel.h \ schemadef.h \ + schnlsp.h \ sddl.h \ secext.h \ sensapi.h \ diff --git a/include/schannel.h b/include/schannel.h new file mode 100644 index 0000000000..5cb144dbb1 --- /dev/null +++ b/include/schannel.h @@ -0,0 +1,205 @@ +/* + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef __WINE_SCHANNEL_H__ +#define __WINE_SCHANNEL_H__ + +#include + +/* 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__ */ diff --git a/include/schnlsp.h b/include/schnlsp.h new file mode 100644 index 0000000000..1b1e8fea51 --- /dev/null +++ b/include/schnlsp.h @@ -0,0 +1,23 @@ +/* + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef __WINE_SHNLSP_H__ +#define __WINE_SHNLSP_H__ + +#include + +#endif /* __WINE_SHNLSP_H__ */