home *** CD-ROM | disk | FTP | other *** search
/ Team Palmtops 7 / Palmtops_numero07.iso / WinCE / SDKWindowsCE / AutoPC / apcsdk10.exe / data1.cab / Emulation_Include_Files / sslsock.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-05-13  |  14.6 KB  |  442 lines

  1. /*++
  2.  
  3. Copyright (c) 1997 Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     sslsock.h
  8.  
  9. Abstract:
  10.  
  11.     WinSock SSL external function prototypes and data declarations.
  12.  
  13. --*/
  14.  
  15. #ifndef __SSLSOCK_H__
  16. #define __SSLSOCK_H__
  17.  
  18. #ifdef __cplusplus
  19. extern "C" {
  20. #endif
  21.  
  22. //
  23. // SSL PROVIDER_INFO security protocol tag
  24. //
  25.  
  26. #define SECURITY_PROTOCOL_SSL           0x0001
  27.  
  28. //
  29. // SSL WSAIoctl control code tags
  30. //
  31.  
  32. #define SO_SSL_FAMILY                   0x00730000
  33. #define SO_SSL_FAMILY_MASK              0x07ff0000
  34.  
  35. #define _SO_SSL                         ((2L << 27) | SO_SSL_FAMILY)
  36.  
  37. // Base SSL WSAIoctl tags
  38. #define _SO_SSL_CAPABILITIES            0x01
  39. #define _SO_SSL_FLAGS                   0x02
  40. #define _SO_SSL_PROTOCOLS               0x03
  41. #define _SO_SSL_CIPHERS                 0x04
  42. #define _SO_SSL_CLIENT_OPTS             0x05
  43. #define _SO_SSL_SERVER_OPTS             0x06
  44. #define _SO_SSL_CLIENT_AUTH_OPTS        0x07
  45. #define _SO_SSL_VALIDATE_CERT_HOOK      0x08
  46. #define _SO_SSL_AUTH_REQUEST_HOOK       0x09
  47. #define _SO_SSL_KEY_EXCH_HOOK           0x0a
  48. #define _SO_SSL_SIGNATURE_HOOK          0x0b
  49. #define _SO_SSL_PERFORM_HANDSHAKE       0x0d
  50. #define _SO_SSL_CONNECTION_INFO         0x0e
  51.  
  52. // Actual SSL WSAIoctl commands
  53. #define SO_SSL_GET_CAPABILITIES         (IOC_OUT | _SO_SSL | _SO_SSL_CAPABILITIES)
  54. #define SO_SSL_SET_FLAGS                (IOC_IN  | _SO_SSL | _SO_SSL_FLAGS)
  55. #define SO_SSL_GET_FLAGS                (IOC_OUT | _SO_SSL | _SO_SSL_FLAGS)
  56. #define SO_SSL_SET_PROTOCOLS            (IOC_IN  | _SO_SSL | _SO_SSL_PROTOCOLS)
  57. #define SO_SSL_GET_PROTOCOLS            (IOC_OUT | _SO_SSL | _SO_SSL_PROTOCOLS)
  58. #define SO_SSL_SET_CIPHERS              (IOC_IN  | _SO_SSL | _SO_SSL_CIPHERS)
  59. #define SO_SSL_GET_CIPHERS              (IOC_OUT | IOC_IN | _SO_SSL | _SO_SSL_CIPHERS)
  60. #define SO_SSL_SET_CLIENT_OPTS          (IOC_IN  | _SO_SSL | _SO_SSL_CLIENT_OPTS)
  61. #define SO_SSL_GET_CLIENT_OPTS          (IOC_OUT | _SO_SSL | _SO_SSL_CLIENT_OPTS)
  62. #define SO_SSL_SET_SERVER_OPTS          (IOC_IN  | _SO_SSL | _SO_SSL_SERVER_OPTS)
  63. #define SO_SSL_GET_SERVER_OPTS          (IOC_OUT | _SO_SSL | _SO_SSL_SERVER_OPTS)
  64. #define SO_SSL_SET_CLIENT_AUTH_OPTS     (IOC_IN  | _SO_SSL | _SO_SSL_CLIENT_AUTH_OPTS)
  65. #define SO_SSL_GET_CLIENT_AUTH_OPTS     (IOC_OUT | _SO_SSL | _SO_SSL_CLIENT_AUTH_OPTS)
  66. #define SO_SSL_SET_VALIDATE_CERT_HOOK   (IOC_IN  | _SO_SSL | _SO_SSL_VALIDATE_CERT_HOOK)
  67. #define SO_SSL_GET_VALIDATE_CERT_HOOK   (IOC_OUT | _SO_SSL | _SO_SSL_VALIDATE_CERT_HOOK)
  68. #define SO_SSL_SET_AUTH_REQUEST_HOOK    (IOC_IN  | _SO_SSL | _SO_SSL_AUTH_REQUEST_HOOK)
  69. #define SO_SSL_GET_AUTH_REQUEST_HOOK    (IOC_OUT | _SO_SSL | _SO_SSL_AUTH_REQUEST_HOOK)
  70. #define SO_SSL_SET_KEY_EXCH_HOOK        (IOC_IN  | _SO_SSL | _SO_SSL_KEY_EXCH_HOOK)
  71. #define SO_SSL_GET_KEY_EXCH_HOOK        (IOC_OUT | _SO_SSL | _SO_SSL_KEY_EXCH_HOOK)
  72. #define SO_SSL_SET_SIGNATURE_HOOK       (IOC_IN  | _SO_SSL | _SO_SSL_SIGNATURE_HOOK)
  73. #define SO_SSL_GET_SIGNATURE_HOOK       (IOC_OUT | _SO_SSL | _SO_SSL_SIGNATURE_HOOK)
  74. #define SO_SSL_PERFORM_HANDSHAKE        (          _SO_SSL | _SO_SSL_PERFORM_HANDSHAKE)
  75. #define SO_SSL_GET_CONNECTION_INFO      (IOC_OUT | _SO_SSL | _SO_SSL_CONNECTION_INFO)
  76.  
  77. //
  78. // Error codes to be returned by the hook functions.
  79. //
  80.  
  81. #define SSL_ERR_OKAY            0
  82. #define SSL_ERR_FAILED          2
  83. #define SSL_ERR_BAD_LEN         3
  84. #define SSL_ERR_BAD_TYPE        4
  85. #define SSL_ERR_BAD_DATA        5
  86. #define SSL_ERR_NO_CERT         6
  87. #define SSL_ERR_BAD_SIG         7
  88. #define SSL_ERR_CERT_EXPIRED    8
  89. #define SSL_ERR_CERT_REVOKED    9
  90. #define SSL_ERR_CERT_UNKNOWN    10
  91. #define SSL_ERR_SIGNATURE       11
  92.  
  93. //
  94. // Definition copied from <winsock2.h>.
  95. //
  96.  
  97. #ifndef _tagBLOB_DEFINED
  98. #define _tagBLOB_DEFINED
  99. #define _BLOB_DEFINED
  100. #define _LPBLOB_DEFINED
  101. typedef struct _BLOB {
  102.     ULONG cbSize ;
  103. #ifdef MIDL_PASS
  104.     [size_is(cbSize)] BYTE *pBlobData;
  105. #else  /* MIDL_PASS */
  106.     BYTE *pBlobData ;
  107. #endif /* MIDL_PASS */
  108. } BLOB, *LPBLOB ;
  109. #endif
  110.  
  111. //
  112. // Declarations for _SO_SSL_CAPABILITIES
  113. //
  114.  
  115. #define SSL_CAP_CLIENT          0x0001
  116. #define SSL_CAP_SERVER          0x0002
  117. #define SSL_CAP_CLIENT_AUTH     0x0004
  118. #define SSL_CAP_CRYPTOAPI       0x0008
  119.  
  120. //
  121. // Declarations for _SO_SSL_FLAGS
  122. //
  123.  
  124. // Provider option flags.
  125. #define SSL_FLAG_SERVER          0x0002
  126. #define SSL_FLAG_AUTH_CLIENT     0x0004
  127. #define SSL_FLAG_DEFER_HANDSHAKE 0x0008
  128.  
  129. //
  130. // Declarations for _SO_SSL_PROTOCOLS
  131. //
  132.  
  133. #define SSL_PROTOCOL_PCT1       1
  134. #define SSL_PROTOCOL_SSL2       2
  135. #define SSL_PROTOCOL_SSL3       3
  136.  
  137. typedef struct _SSLPROTOCOL {
  138.     DWORD dwProtocol;
  139.     DWORD dwVersion;
  140.     DWORD dwFlags;
  141. } SSLPROTOCOL, FAR *LPSSLPROTOCOL;
  142.  
  143. typedef struct _SSLPROTOCOLS {
  144.     DWORD dwCount;
  145.     SSLPROTOCOL ProtocolList[1];   // array of 'count' structures
  146. } SSLPROTOCOLS, FAR *LPSSLPROTOCOLS;
  147.  
  148. //
  149. // Declarations for _SO_SSL_CIPHERS
  150. //
  151.  
  152. typedef struct _SSLCIPHERS {
  153.     DWORD dwProtocol;
  154.     DWORD dwCount;
  155.     DWORD CipherList[1];             // array of 'count' integers
  156. } SSLCIPHERS, FAR *LPSSLCIPHERS;
  157.  
  158. //
  159. // Declarations for _SO_SSL_CLIENT_OPTS
  160. //
  161.  
  162. typedef struct _SSLCLIENTOPTS {
  163.     time_t CacheTimeout;
  164.     DWORD  dwCacheEntries;
  165.     DWORD  dwFlags;
  166. } SSLCLIENTOPTS, FAR *LPSSLCLIENTOPTS;
  167.  
  168. //
  169. // Declarations for _SO_SSL_SERVER_OPTS
  170. //
  171.  
  172. typedef struct _SSLSERVEROPTS {
  173.     time_t CacheTimeout;
  174.     DWORD  dwCacheEntries;
  175.     DWORD  dwFlags;
  176. } SSLSERVEROPTS, FAR *LPSSLSERVEROPTS;
  177.  
  178. //
  179. // Declarations for _SO_SSL_CLIENT_AUTH_OPTS
  180. //
  181.  
  182. typedef struct _SSLCLIENTAUTHOPTS {
  183.     DWORD  dwRequestClientAuth;
  184.     DWORD  dwRedoHandshake;
  185.     DWORD  dwType;
  186.     DWORD  dwIssuerCount;
  187.     LPBLOB pIssuerList;
  188.     DWORD  dwFlags;
  189. } SSLCLIENTAUTHOPTS, FAR *LPSSLCLIENTAUTHOPTS;
  190.  
  191. //
  192. // Declarations for _SO_SSL_VALIDATE_CERT_HOOK
  193. //
  194.  
  195. #define SSL_CERT_X509       0x0001
  196. #define SSL_CERT_FLAG_ISSUER_UNKNOWN 0x0001
  197.  
  198. typedef int (CALLBACK FAR *SSLVALIDATECERTFUNC)(
  199.     DWORD  dwType,          // in
  200.     LPVOID pvArg,           // in
  201.     DWORD  dwChainLen,      // in
  202.     LPBLOB pCertChain,      // in
  203.     DWORD dwFlags);         // in
  204.  
  205. typedef struct _SSLVALIDATECERTHOOK {
  206.     SSLVALIDATECERTFUNC HookFunc;
  207.     LPVOID pvArg;
  208. } SSLVALIDATECERTHOOK, FAR *LPSSLVALIDATECERTHOOK;
  209.  
  210. //
  211. // Declarations for _SO_SSL_AUTH_REQUEST_HOOK
  212. //
  213.  
  214. typedef int (CALLBACK FAR *SSLAUTHREQUESTFUNC)(
  215.     DWORD         dwType,           // in
  216.     LPVOID        pvArg,            // in
  217.     DWORD         dwIssuerCount,    // in
  218.     LPBLOB        pIssuerList,      // in
  219.     DWORD         dwFlags,          // in
  220.     LPDWORD       pdwChainLen,      // out
  221.     LPBLOB        *ppCertChain);    // out
  222.  
  223. typedef struct _SSLAUTHREQUESTHOOK {
  224.     SSLAUTHREQUESTFUNC HookFunc;
  225.     LPVOID pvArg;
  226. } SSLAUTHREQUESTHOOK, FAR *LPSSLAUTHREQUESTHOOK;
  227.  
  228. //
  229. // Declarations for _SO_SSL_KEY_EXCH_HOOK
  230. //
  231.  
  232. #define SSL_EXCH_RSAENCRYPT   1
  233. #define SSL_EXCH_RSADECRYPT   2
  234.  
  235. typedef int (CALLBACK FAR *SSLKEYEXCHANGEFUNC)(
  236.     DWORD   dwType,           // in
  237.     LPVOID  pvArg,            // in
  238.     LPBYTE  pSource,          // in
  239.     DWORD   dwSourceLen,      // in
  240.     DWORD   dwFlags,          // in
  241.     LPBYTE  pDest,            // out
  242.     LPDWORD pdwDestLen);      // in, out
  243.  
  244. typedef struct _SSLKEYEXCHANGEHOOK {
  245.     SSLKEYEXCHANGEFUNC HookFunc;
  246.     LPVOID pvArg;
  247. } SSLKEYEXCHANGEHOOK, FAR *LPSSLKEYEXCHANGEHOOK;
  248.  
  249. //
  250. // Declarations for _SO_SSL_SIGNATURE_HOOK
  251. //
  252.  
  253. // Values for 'dwType'.
  254. #define SSL_SIGN_RSA_MD2    1
  255. #define SSL_SIGN_RSA_MD5    2
  256. #define SSL_SIGN_RSA_SHA    3
  257. #define SSL_SIGN_RSA_SHAMD5 4
  258.  
  259. // Values for 'dwFlags'.
  260. #define SSL_SIGN_VERIFY_SIGNATURE   0x00000001
  261. #define SSL_SIGN_PERFORM_HASH       0x00000002
  262.  
  263. typedef int (CALLBACK FAR *SSLSIGNATUREFUNC)(
  264.     DWORD   dwType,           // in
  265.     LPVOID  pvArg,            // in
  266.     LPBYTE  pSource,          // in
  267.     DWORD   dwSourceLen,      // in
  268.     DWORD   dwFlags,          // in
  269.     LPBYTE  pDest,            // out
  270.     LPDWORD pdwDestLen);      // in, out
  271.  
  272. typedef struct _SSLSIGNATUREHOOK {
  273.     SSLSIGNATUREFUNC HookFunc;
  274.     LPVOID pvArg;
  275. } SSLSIGNATUREHOOK, FAR *LPSSLSIGNATUREHOOK;
  276.  
  277. //
  278. // ALG_ID definitions.
  279. //
  280.  
  281. #ifndef ALGIDDEF
  282.  
  283. #define ALGIDDEF
  284. typedef unsigned int ALG_ID;
  285.  
  286. // ALG_ID crackers
  287. #define GET_ALG_CLASS(x)                (x & (7 << 13))
  288. #define GET_ALG_TYPE(x)                 (x & (15 << 9))
  289. #define GET_ALG_SID(x)                  (x & (511))
  290.  
  291. // Algorithm classes
  292. #define ALG_CLASS_ANY                   (0)
  293. #define ALG_CLASS_SIGNATURE             (1 << 13)
  294. #define ALG_CLASS_MSG_ENCRYPT           (2 << 13)
  295. #define ALG_CLASS_DATA_ENCRYPT          (3 << 13)
  296. #define ALG_CLASS_HASH                  (4 << 13)
  297. #define ALG_CLASS_KEY_EXCHANGE          (5 << 13)
  298.  
  299. // Algorithm types
  300. #define ALG_TYPE_ANY                    (0)
  301. #define ALG_TYPE_DSS                    (1 << 9)
  302. #define ALG_TYPE_RSA                    (2 << 9)
  303. #define ALG_TYPE_BLOCK                  (3 << 9)
  304. #define ALG_TYPE_STREAM                 (4 << 9)
  305. #define ALG_TYPE_DH                     (5 << 9)
  306. #define ALG_TYPE_SECURECHANNEL          (6 << 9)
  307.  
  308. // Generic sub-ids
  309. #define ALG_SID_ANY                     (0)
  310.  
  311. // Some RSA sub-ids
  312. #define ALG_SID_RSA_ANY                 0
  313. #define ALG_SID_RSA_PKCS                1
  314. #define ALG_SID_RSA_MSATWORK            2
  315. #define ALG_SID_RSA_ENTRUST             3
  316. #define ALG_SID_RSA_PGP                 4
  317.  
  318. // Some DSS sub-ids
  319. //
  320. #define ALG_SID_DSS_ANY                 0
  321. #define ALG_SID_DSS_PKCS                1
  322. #define ALG_SID_DSS_DMS                 2
  323.  
  324. // Block cipher sub ids
  325. // DES sub_ids
  326. #define ALG_SID_DES                     1
  327. #define ALG_SID_3DES                    3
  328. #define ALG_SID_DESX                    4
  329. #define ALG_SID_IDEA                    5
  330. #define ALG_SID_CAST                    6
  331. #define ALG_SID_SAFERSK64               7
  332. #define ALD_SID_SAFERSK128              8
  333. #define ALG_SID_3DES_112                9
  334. #define ALG_SID_CYLINK_MEK              12
  335.  
  336. // Fortezza sub-ids
  337. #define ALG_SID_SKIPJACK                10
  338. #define ALG_SID_TEK                     11
  339.  
  340. // RC2 sub-ids
  341. #define ALG_SID_RC2                     2
  342.  
  343. // Stream cipher sub-ids
  344. #define ALG_SID_RC4                     1
  345. #define ALG_SID_SEAL                    2
  346.  
  347. // Diffie-Hellman sub-ids
  348. #define ALG_SID_DH_SANDF                1
  349. #define ALG_SID_DH_EPHEM                2
  350. #define ALG_SID_AGREED_KEY_ANY          3
  351. #define ALG_SID_KEA                     4
  352.  
  353. // Hash sub ids
  354. #define ALG_SID_MD2                     1
  355. #define ALG_SID_MD4                     2
  356. #define ALG_SID_MD5                     3
  357. #define ALG_SID_SHA                     4
  358. #define ALG_SID_SHA1                    4
  359. #define ALG_SID_MAC                     5
  360. #define ALG_SID_RIPEMD                  6
  361. #define ALG_SID_RIPEMD160               7
  362. #define ALG_SID_SSL3SHAMD5              8
  363.  
  364. // secure channel sub ids
  365. #define ALG_SID_SSL3_MASTER             1
  366. #define ALG_SID_SCHANNEL_MASTER_HASH    2
  367. #define ALG_SID_SCHANNEL_MAC_KEY        3
  368. #define ALG_SID_PCT1_MASTER             4
  369. #define ALG_SID_SSL2_MASTER             5
  370. #define ALG_SID_TLS1_MASTER             6
  371. #define ALG_SID_SCHANNEL_ENC_KEY        7
  372.  
  373. // Our silly example sub-id
  374. #define ALG_SID_EXAMPLE                 80
  375.  
  376. // algorithm identifier definitions
  377. #define CALG_MD2                (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD2)
  378. #define CALG_MD4                (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD4)
  379. #define CALG_MD5                (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD5)
  380. #define CALG_SHA                (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA)
  381. #define CALG_SHA1               (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA1)
  382. #define CALG_MAC                (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MAC)
  383. #define CALG_RSA_SIGN           (ALG_CLASS_SIGNATURE | ALG_TYPE_RSA | ALG_SID_RSA_ANY)
  384. #define CALG_DSS_SIGN           (ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_DSS_ANY)
  385. #define CALG_RSA_KEYX           (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_RSA|ALG_SID_RSA_ANY)
  386. #define CALG_DES                (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_DES)
  387. #define CALG_3DES_112           (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_3DES_112)
  388. #define CALG_3DES               (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_3DES)
  389. #define CALG_RC2                (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_RC2)
  390. #define CALG_RC4                (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_STREAM|ALG_SID_RC4)
  391. #define CALG_SEAL               (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_STREAM|ALG_SID_SEAL)
  392. #define CALG_DH_SF              (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_DH_SANDF)
  393. #define CALG_DH_EPHEM           (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_DH_EPHEM)
  394. #define CALG_AGREEDKEY_ANY      (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_AGREED_KEY_ANY)
  395. #define CALG_KEA_KEYX           (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_KEA)
  396. #define CALG_HUGHES_MD5         (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_ANY|ALG_SID_MD5)
  397. #define CALG_SKIPJACK           (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_SKIPJACK)
  398. #define CALG_TEK                (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_TEK)
  399. #define CALG_CYLINK_MEK         (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_CYLINK_MEK)
  400. #define CALG_SSL3_SHAMD5        (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SSL3SHAMD5)
  401. #define CALG_SSL3_MASTER        (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SSL3_MASTER)
  402. #define CALG_SCHANNEL_MASTER_HASH   (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SCHANNEL_MASTER_HASH)
  403. #define CALG_SCHANNEL_MAC_KEY   (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SCHANNEL_MAC_KEY)
  404. #define CALG_SCHANNEL_ENC_KEY   (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SCHANNEL_ENC_KEY)
  405. #define CALG_PCT1_MASTER        (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_PCT1_MASTER)
  406. #define CALG_SSL2_MASTER        (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SSL2_MASTER)
  407. #define CALG_TLS1_MASTER        (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_TLS1_MASTER)
  408.  
  409. #endif // !ALGIDDEF
  410.  
  411. //
  412. // Declarations for _SO_SSL_GET_CONNECTION_INFO
  413. //
  414.  
  415. typedef struct _SSLCONNECTIONINFO
  416. {
  417.     DWORD   dwProtocol;
  418.     ALG_ID  aiCipher;
  419.     DWORD   dwCipherStrength;
  420.     ALG_ID  aiHash;
  421.     DWORD   dwHashStrength;
  422.     ALG_ID  aiExch;
  423.     DWORD   dwExchStrength;
  424. } SSLCONNECTIONINFO, FAR *PSSLCONNECTIONINFO;
  425.  
  426. //
  427. // dwProtocol bit array values.
  428. //
  429.  
  430. #define SSL_PROT_PCT1_SERVER        0x00000001
  431. #define SSL_PROT_PCT1_CLIENT        0x00000002
  432. #define SSL_PROT_SSL2_SERVER        0x00000004
  433. #define SSL_PROT_SSL2_CLIENT        0x00000008
  434. #define SSL_PROT_SSL3_SERVER        0x00000010
  435. #define SSL_PROT_SSL3_CLIENT        0x00000020
  436.  
  437. #ifdef __cplusplus
  438. }
  439. #endif
  440.  
  441. #endif //__SSLSOCK_H__
  442.