00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00026 #ifndef OW32_SecureSocketClient_h
00027 #define OW32_SecureSocketClient_h
00028
00029 #include <OW32/SecureSocket.h>
00030
00031
00032 namespace OW32
00033 {
00034
00038 class OW32_LIB_EXPORT CSecureSocketClient :
00039 public CSecureSocket
00040 {
00041 private:
00042 CSecureSocketClient(const CSecureSocketClient& );
00043 CSecureSocketClient& operator=(const CSecureSocketClient& );
00044
00045 protected:
00046 virtual SECURITY_STATUS handshakeLoop(bool fDoInitialRead);
00047
00048 public:
00049 CSecureSocketClient();
00050 CSecureSocketClient(SOCKET s);
00051 ~CSecureSocketClient();
00052
00053 virtual bool negotiate();
00054 virtual int shutdown(int how);
00055
00056 void setServerName(LPCTSTR lpszServerName);
00057
00058 SECURITY_STATUS setClientCertificate(PCCERT_CONTEXT pCertContext,
00059 DWORD dwEnabledProtocols=0);
00060
00061 SECURITY_STATUS createNullCredentials(DWORD dwEnabledProtocols=0);
00062
00063 static SECURITY_STATUS createCredentialsFromCertificate(
00064 CredHandle* phCreds, PCCERT_CONTEXT pCertContext, DWORD dwEnabledProtocols=0)
00065 {
00066 return CSecureSocket::createCredentialsFromCertificate(phCreds, pCertContext,
00067 SECPKG_CRED_OUTBOUND, dwEnabledProtocols);
00068 }
00069
00070 private:
00071 TCHAR m_szServerName[260];
00072 int disconnectFromServer();
00073 };
00074
00075 }
00076
00077 #endif // OW32_SecureSocketClient_h