1/**
2 * Windows API header module
3 *
4 * Translated from MinGW Windows headers
5 *
6 * Authors: Stewart Gordon
7 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
8 * Source: $(DRUNTIMESRC core/sys/windows/_schannel.d)
9 */
10module core.sys.windows.schannel;
11version (Windows):
12@system:
13
14import core.sys.windows.wincrypt;
15import core.sys.windows.windef;
16
17enum DWORD SCHANNEL_CRED_VERSION = 4;
18enum SCHANNEL_SHUTDOWN           = 1;
19/* Comment from MinGW
20    ? Do these belong here or in wincrypt.h
21 */
22enum : DWORD {
23    AUTHTYPE_CLIENT = 1,
24    AUTHTYPE_SERVER = 2
25}
26
27enum DWORD
28    SP_PROT_PCT1_SERVER = 0x01,
29    SP_PROT_PCT1_CLIENT = 0x02,
30    SP_PROT_SSL2_SERVER = 0x04,
31    SP_PROT_SSL2_CLIENT = 0x08,
32    SP_PROT_SSL3_SERVER = 0x10,
33    SP_PROT_SSL3_CLIENT = 0x20,
34    SP_PROT_TLS1_SERVER = 0x40,
35    SP_PROT_TLS1_CLIENT = 0x80,
36    SP_PROT_PCT1        = SP_PROT_PCT1_CLIENT | SP_PROT_PCT1_SERVER,
37    SP_PROT_TLS1        = SP_PROT_TLS1_CLIENT | SP_PROT_TLS1_SERVER,
38    SP_PROT_SSL2        = SP_PROT_SSL2_CLIENT | SP_PROT_SSL2_SERVER,
39    SP_PROT_SSL3        = SP_PROT_SSL3_CLIENT | SP_PROT_SSL3_SERVER;
40
41enum DWORD
42    SCH_CRED_NO_SYSTEM_MAPPER                    = 0x0002,
43    SCH_CRED_NO_SERVERNAME_CHECK                 = 0x0004,
44    SCH_CRED_MANUAL_CRED_VALIDATION              = 0x0008,
45    SCH_CRED_NO_DEFAULT_CREDS                    = 0x0010,
46    SCH_CRED_AUTO_CRED_VALIDATION                = 0x0020,
47    SCH_CRED_USE_DEFAULT_CREDS                   = 0x0040,
48    SCH_CRED_REVOCATION_CHECK_END_CERT           = 0x0100,
49    SCH_CRED_REVOCATION_CHECK_CHAIN              = 0x0200,
50    SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT = 0x0400,
51    SCH_CRED_IGNORE_NO_REVOCATION_CHECK          = 0x0800,
52    SCH_CRED_IGNORE_REVOCATION_OFFLINE           = 0x1000;
53
54// No definition - presumably an opaque structure
55struct _HMAPPER;
56
57struct SCHANNEL_CRED {
58    DWORD           dwVersion = SCHANNEL_CRED_VERSION;
59    DWORD           cCreds;
60    PCCERT_CONTEXT* paCred;
61    HCERTSTORE      hRootStore;
62    DWORD           cMappers;
63    _HMAPPER**      aphMappers;
64    DWORD           cSupportedAlgs;
65    ALG_ID*         palgSupportedAlgs;
66    DWORD           grbitEnabledProtocols;
67    DWORD           dwMinimumCypherStrength;
68    DWORD           dwMaximumCypherStrength;
69    DWORD           dwSessionLifespan;
70    DWORD           dwFlags;
71    DWORD           reserved;
72}
73alias SCHANNEL_CRED* PSCHANNEL_CRED;
74
75struct SecPkgCred_SupportedAlgs {
76    DWORD   cSupportedAlgs;
77    ALG_ID* palgSupportedAlgs;
78}
79alias SecPkgCred_SupportedAlgs* PSecPkgCred_SupportedAlgs;
80
81struct SecPkgCred_CypherStrengths {
82    DWORD dwMinimumCypherStrength;
83    DWORD dwMaximumCypherStrength;
84}
85alias SecPkgCred_CypherStrengths* PSecPkgCred_CypherStrengths;
86
87struct SecPkgCred_SupportedProtocols {
88    DWORD grbitProtocol;
89}
90alias SecPkgCred_SupportedProtocols* PSecPkgCred_SupportedProtocols;
91
92struct SecPkgContext_IssuerListInfoEx {
93    PCERT_NAME_BLOB aIssuers;
94    DWORD           cIssuers;
95}
96alias SecPkgContext_IssuerListInfoEx* PSecPkgContext_IssuerListInfoEx;
97
98struct SecPkgContext_ConnectionInfo {
99    DWORD  dwProtocol;
100    ALG_ID aiCipher;
101    DWORD  dwCipherStrength;
102    ALG_ID aiHash;
103    DWORD  dwHashStrength;
104    ALG_ID aiExch;
105    DWORD  dwExchStrength;
106}
107alias SecPkgContext_ConnectionInfo* PSecPkgContext_ConnectionInfo;
108