1 /* 2 * Copyright 2011-2016, Haiku, Inc. All Rights Reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5 #ifndef _SECURE_SOCKET_H 6 #define _SECURE_SOCKET_H 7 8 9 #include <Socket.h> 10 11 12 class BCertificate; 13 14 15 class BSecureSocket : public BSocket { 16 public: 17 BSecureSocket(); 18 BSecureSocket(const BNetworkAddress& peer, 19 bigtime_t timeout = B_INFINITE_TIMEOUT); 20 BSecureSocket(const BSecureSocket& other); 21 virtual ~BSecureSocket(); 22 23 virtual bool CertificateVerificationFailed(BCertificate& 24 certificate, const char* message); 25 26 status_t InitCheck(); 27 28 // BSocket implementation 29 30 virtual status_t Accept(BAbstractSocket*& _socket); 31 32 virtual status_t Connect(const BNetworkAddress& peer, 33 bigtime_t timeout = B_INFINITE_TIMEOUT); 34 virtual void Disconnect(); 35 36 virtual status_t WaitForReadable(bigtime_t timeout 37 = B_INFINITE_TIMEOUT) const; 38 39 // BDataIO implementation 40 41 virtual ssize_t Read(void* buffer, size_t size); 42 virtual ssize_t Write(const void* buffer, size_t size); 43 44 protected: 45 status_t _SetupCommon(const char* host = NULL); 46 status_t _SetupConnect(const char* host = NULL); 47 status_t _SetupAccept(); 48 49 private: 50 friend class BCertificate; 51 class Private; 52 Private* fPrivate; 53 }; 54 55 56 #endif // _SECURE_SOCKET_H 57