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 version(Windows): 13 14 import win32.wincrypt; 15 private import win32.windef; 16 17 const DWORD SCHANNEL_CRED_VERSION = 4; 18 const SCHANNEL_SHUTDOWN = 1; 19 /* Comment from MinGW 20 ? Do these belong here or in wincrypt.h 21 */ 22 enum : DWORD { 23 AUTHTYPE_CLIENT = 1, 24 AUTHTYPE_SERVER = 2 25 } 26 27 const 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 41 const 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 55 struct _HMAPPER; 56 57 struct 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 } 73 alias SCHANNEL_CRED* PSCHANNEL_CRED; 74 75 struct SecPkgCred_SupportedAlgs { 76 DWORD cSupportedAlgs; 77 ALG_ID* palgSupportedAlgs; 78 } 79 alias SecPkgCred_SupportedAlgs* PSecPkgCred_SupportedAlgs; 80 81 struct SecPkgCred_CypherStrengths { 82 DWORD dwMinimumCypherStrength; 83 DWORD dwMaximumCypherStrength; 84 } 85 alias SecPkgCred_CypherStrengths* PSecPkgCred_CypherStrengths; 86 87 struct SecPkgCred_SupportedProtocols { 88 DWORD grbitProtocol; 89 } 90 alias SecPkgCred_SupportedProtocols* PSecPkgCred_SupportedProtocols; 91 92 struct SecPkgContext_IssuerListInfoEx { 93 PCERT_NAME_BLOB aIssuers; 94 DWORD cIssuers; 95 } 96 alias SecPkgContext_IssuerListInfoEx* PSecPkgContext_IssuerListInfoEx; 97 98 struct 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 } 107 alias SecPkgContext_ConnectionInfo* PSecPkgContext_ConnectionInfo;