#ifndef _WSSA_ #define _WSSA_ #ifdef __cplusplus extern "C" { #endif /*Included Files------------------------------------------------------------*/ #include /*Secure socket type--------------------------------------------------------*/ /*This is actually a pointer, but declared as an int for backwards compatability*/ typedef SOCKET SECURE_SOCKET; /*Redefinition of SSL Error Messages----------------------------------------*/ #define SSL_PE_NO_CIPHER 0x0001 #define SSL_PE_NO_CERTIFICATE 0x0002 #define SSL_PE_BAD_CERTIFICATE 0x0004 #define SSL_PE_UNSUPPORTED_CERTIFICATE_TYPE 0x0006 #define WSSA_SSL_PE_NO_CIPHER 13001 #define WSSA_SSL_PE_NO_CERTIFICATE 13002 #define WSSA_SSL_PE_BAD_CERTIFICATE 13004 #define WSSA_SSL_PE_UNSUPPORTED_CERTIFICATE_TYPE 13006 /*Extra Error messages------------------------------------------------------*/ #define WSSA_ERROR_NO_MEM 13100 #define WSSA_ERROR_UNRECOVERABLE 13101 #define WSSA_ERROR_DATA_TOO_LARGE 13102 #define WSSA_ERROR_NO_ENCRYPTION_DATA 13103 #define WSSA_ERROR_HUH 13104 #ifdef _DEBUG #define WSSA_ERROR_BAD_SS 13200 #define WSSA_ERROR_UNDEFINED 13201 #endif /*Cipher Kind Values--------------------------------------------------------*/ #define SSL_CK_RC4_128_WITH_MD5 0x01,0x00,0x80 #define SSL_CK_RC4_128_EXPORT40_WITH_MD5 0x02,0x00,0x80 #define SSL_CK_RC2_128_CBC_WITH_MD5 0x03,0x00,0x80 #define SSL_CK_RC2_128_CBC_EXPORT40_WITH_MD5 0x04,0x00,0x80 #define SSL_CK_IDEA_128_CBC_WITH_MD5 0x05,0x00,0x80 #define SSL_CK_DES_64_CBC_WITH_MD5 0x06,0x00,0x40 #define SSL_CK_DES_192_EDE3_CBC_WITH_MD5 0x07,0x00,0xC0 /*Certificate Type Codes----------------------------------------------------*/ #define SSL_CT_X509_CERTIFICATE 0x01 /*Certificate Type Codes----------------------------------------------------*/ #define WSSA_MAGIC_PREPAD 19 /*Socket Options------------------------------------------------------------*/ /*level*/ #define SO_SSL_LEVEL (SOL_SOCKET^IPPROTO_TCP) /*option names*/ #define SO_SSL_FLAGS 1 #define SO_SSL_CERTIFICATE 2 #define SO_SSL_SESSION_ID_DATA 3 #define SO_SSL_CIPHER_SPECS 4 #define SO_SSL_CERTIFICATE_TYPE 5 #define SO_SSL_STATE_INFO 6 #define SO_SSL_HOSTNAME 7 /*constants for SO_SSL_FLAGS*/ #define SO_SSL_ENABLE 0x0001 #define SO_SSL_SERVER 0x0002 #define SO_SSL_AUTH_CLIENT 0x0004 #define SO_SSL_BAD_COMMON_NAME 0x0008 #define SO_SSL_CERT_EXPIRED 0x0010 #define SO_SSL_ERROR (SO_SSL_CERT_EXPIRED | SO_SSL_BAD_COMMON_NAME) /*Functions-----------------------------------------------------------------*/ #define WSSAFNCT PASCAL FAR /*standard socket calls*/ SECURE_SOCKET WSSAFNCT WssaAccept(SECURE_SOCKET ss, struct sockaddr FAR *addr,int FAR *addrlen); SECURE_SOCKET WSSAFNCT WssaSocket(int af, int type, int protocol); int WSSAFNCT WssaBind (SECURE_SOCKET ss, const struct sockaddr FAR *addr, int namelen); int WSSAFNCT WssaCloseSocket (SECURE_SOCKET ss); int WSSAFNCT WssaConnect (SECURE_SOCKET ss, const struct sockaddr FAR *name, int namelen); int WSSAFNCT WssaIoctlSocket (SECURE_SOCKET ss, long cmd, u_long FAR *argp); int WSSAFNCT WssaGetPeerName (SECURE_SOCKET ss, struct sockaddr FAR *name, int FAR * namelen); int WSSAFNCT WssaGetSocketName (SECURE_SOCKET ss, struct sockaddr FAR *name, int FAR * namelen); int WSSAFNCT WssaGetSocketOption(SECURE_SOCKET ss, int level, int optname, char FAR * optval, int FAR *optlen); int WSSAFNCT WssaListen (SECURE_SOCKET ss, int backlog); int WSSAFNCT WssaReceive (SECURE_SOCKET ss, char FAR * buf, int len, int flags); int WSSAFNCT WssaReceiveFrom (SECURE_SOCKET ss, char FAR * buf, int len, int flags, struct sockaddr FAR *from, int FAR * fromlen); int WSSAFNCT WssaSend (SECURE_SOCKET ss, const char FAR * buf, int len, int flags); int WSSAFNCT WssaSendTo (SECURE_SOCKET ss, const char FAR * buf, int len, int flags, const struct sockaddr FAR *to, int tolen); int WSSAFNCT WssaSetSocketOption(SECURE_SOCKET ss, int level, int optname, const char FAR * optval, int optlen); int WSSAFNCT WssaShutdown (SECURE_SOCKET ss, int how); /*microsoft extensions to winsock*/ int WSSAFNCT WssaAsyncSelect (SECURE_SOCKET ss, HWND hWnd, unsigned int wMsg, long lEvent); int WSSAFNCT WssaStartup (WORD wVersionRequired, LPWSADATA lpWSAData); int WSSAFNCT WssaCleanup (void); #ifdef __cplusplus } #endif #endif /*_WSSA_*/