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