xref: /haiku/headers/os/net/SecureSocket.h (revision e81a954787e50e56a7f06f72705b7859b6ab06d1)
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