4e2933c620 2015-04-21 kinaba: /***********************************************************************\ 4e2933c620 2015-04-21 kinaba: * schannel.d * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Windows API header module * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Translated from MinGW Windows headers * 4e2933c620 2015-04-21 kinaba: * by Stewart Gordon * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Placed into public domain * 4e2933c620 2015-04-21 kinaba: \***********************************************************************/ 4e2933c620 2015-04-21 kinaba: module win32.schannel; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: import win32.wincrypt; 4e2933c620 2015-04-21 kinaba: private import win32.windef; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: const DWORD SCHANNEL_CRED_VERSION = 4; 4e2933c620 2015-04-21 kinaba: const SCHANNEL_SHUTDOWN = 1; 4e2933c620 2015-04-21 kinaba: /* Comment from MinGW 4e2933c620 2015-04-21 kinaba: ? Do these belong here or in wincrypt.h 4e2933c620 2015-04-21 kinaba: */ 4e2933c620 2015-04-21 kinaba: enum : DWORD { 4e2933c620 2015-04-21 kinaba: AUTHTYPE_CLIENT = 1, 4e2933c620 2015-04-21 kinaba: AUTHTYPE_SERVER = 2 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: const DWORD 4e2933c620 2015-04-21 kinaba: SP_PROT_PCT1_SERVER = 0x01, 4e2933c620 2015-04-21 kinaba: SP_PROT_PCT1_CLIENT = 0x02, 4e2933c620 2015-04-21 kinaba: SP_PROT_SSL2_SERVER = 0x04, 4e2933c620 2015-04-21 kinaba: SP_PROT_SSL2_CLIENT = 0x08, 4e2933c620 2015-04-21 kinaba: SP_PROT_SSL3_SERVER = 0x10, 4e2933c620 2015-04-21 kinaba: SP_PROT_SSL3_CLIENT = 0x20, 4e2933c620 2015-04-21 kinaba: SP_PROT_TLS1_SERVER = 0x40, 4e2933c620 2015-04-21 kinaba: SP_PROT_TLS1_CLIENT = 0x80, 4e2933c620 2015-04-21 kinaba: SP_PROT_PCT1 = SP_PROT_PCT1_CLIENT | SP_PROT_PCT1_SERVER, 4e2933c620 2015-04-21 kinaba: SP_PROT_TLS1 = SP_PROT_TLS1_CLIENT | SP_PROT_TLS1_SERVER, 4e2933c620 2015-04-21 kinaba: SP_PROT_SSL2 = SP_PROT_SSL2_CLIENT | SP_PROT_SSL2_SERVER, 4e2933c620 2015-04-21 kinaba: SP_PROT_SSL3 = SP_PROT_SSL3_CLIENT | SP_PROT_SSL3_SERVER; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: const DWORD 4e2933c620 2015-04-21 kinaba: SCH_CRED_NO_SYSTEM_MAPPER = 0x0002, 4e2933c620 2015-04-21 kinaba: SCH_CRED_NO_SERVERNAME_CHECK = 0x0004, 4e2933c620 2015-04-21 kinaba: SCH_CRED_MANUAL_CRED_VALIDATION = 0x0008, 4e2933c620 2015-04-21 kinaba: SCH_CRED_NO_DEFAULT_CREDS = 0x0010, 4e2933c620 2015-04-21 kinaba: SCH_CRED_AUTO_CRED_VALIDATION = 0x0020, 4e2933c620 2015-04-21 kinaba: SCH_CRED_USE_DEFAULT_CREDS = 0x0040, 4e2933c620 2015-04-21 kinaba: SCH_CRED_REVOCATION_CHECK_END_CERT = 0x0100, 4e2933c620 2015-04-21 kinaba: SCH_CRED_REVOCATION_CHECK_CHAIN = 0x0200, 4e2933c620 2015-04-21 kinaba: SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT = 0x0400, 4e2933c620 2015-04-21 kinaba: SCH_CRED_IGNORE_NO_REVOCATION_CHECK = 0x0800, 4e2933c620 2015-04-21 kinaba: SCH_CRED_IGNORE_REVOCATION_OFFLINE = 0x1000; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: // No definition - presumably an opaque structure 4e2933c620 2015-04-21 kinaba: struct _HMAPPER; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SCHANNEL_CRED { 4e2933c620 2015-04-21 kinaba: DWORD dwVersion = SCHANNEL_CRED_VERSION; 4e2933c620 2015-04-21 kinaba: DWORD cCreds; 4e2933c620 2015-04-21 kinaba: PCCERT_CONTEXT* paCred; 4e2933c620 2015-04-21 kinaba: HCERTSTORE hRootStore; 4e2933c620 2015-04-21 kinaba: DWORD cMappers; 4e2933c620 2015-04-21 kinaba: _HMAPPER** aphMappers; 4e2933c620 2015-04-21 kinaba: DWORD cSupportedAlgs; 4e2933c620 2015-04-21 kinaba: ALG_ID* palgSupportedAlgs; 4e2933c620 2015-04-21 kinaba: DWORD grbitEnabledProtocols; 4e2933c620 2015-04-21 kinaba: DWORD dwMinimumCypherStrength; 4e2933c620 2015-04-21 kinaba: DWORD dwMaximumCypherStrength; 4e2933c620 2015-04-21 kinaba: DWORD dwSessionLifespan; 4e2933c620 2015-04-21 kinaba: DWORD dwFlags; 4e2933c620 2015-04-21 kinaba: DWORD reserved; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias SCHANNEL_CRED* PSCHANNEL_CRED; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SecPkgCred_SupportedAlgs { 4e2933c620 2015-04-21 kinaba: DWORD cSupportedAlgs; 4e2933c620 2015-04-21 kinaba: ALG_ID* palgSupportedAlgs; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias SecPkgCred_SupportedAlgs* PSecPkgCred_SupportedAlgs; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SecPkgCred_CypherStrengths { 4e2933c620 2015-04-21 kinaba: DWORD dwMinimumCypherStrength; 4e2933c620 2015-04-21 kinaba: DWORD dwMaximumCypherStrength; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias SecPkgCred_CypherStrengths* PSecPkgCred_CypherStrengths; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SecPkgCred_SupportedProtocols { 4e2933c620 2015-04-21 kinaba: DWORD grbitProtocol; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias SecPkgCred_SupportedProtocols* PSecPkgCred_SupportedProtocols; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SecPkgContext_IssuerListInfoEx { 4e2933c620 2015-04-21 kinaba: PCERT_NAME_BLOB aIssuers; 4e2933c620 2015-04-21 kinaba: DWORD cIssuers; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias SecPkgContext_IssuerListInfoEx* PSecPkgContext_IssuerListInfoEx; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: struct SecPkgContext_ConnectionInfo { 4e2933c620 2015-04-21 kinaba: DWORD dwProtocol; 4e2933c620 2015-04-21 kinaba: ALG_ID aiCipher; 4e2933c620 2015-04-21 kinaba: DWORD dwCipherStrength; 4e2933c620 2015-04-21 kinaba: ALG_ID aiHash; 4e2933c620 2015-04-21 kinaba: DWORD dwHashStrength; 4e2933c620 2015-04-21 kinaba: ALG_ID aiExch; 4e2933c620 2015-04-21 kinaba: DWORD dwExchStrength; 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: alias SecPkgContext_ConnectionInfo* PSecPkgContext_ConnectionInfo;