OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #ifndef RUNTIME_BIN_SECURE_SOCKET_BORINGSSL_H_ | 5 #ifndef RUNTIME_BIN_SECURE_SOCKET_BORINGSSL_H_ |
6 #define RUNTIME_BIN_SECURE_SOCKET_BORINGSSL_H_ | 6 #define RUNTIME_BIN_SECURE_SOCKET_BORINGSSL_H_ |
7 | 7 |
8 #if !defined(RUNTIME_BIN_SECURE_SOCKET_H_) | 8 #if !defined(RUNTIME_BIN_SECURE_SOCKET_H_) |
9 #error Do not include secure_socket_boringssl.h directly. Use secure_socket.h. | 9 #error Do not include secure_socket_boringssl.h directly. Use secure_socket.h. |
10 #endif | 10 #endif |
(...skipping 17 matching lines...) Expand all Loading... |
28 | 28 |
29 namespace dart { | 29 namespace dart { |
30 namespace bin { | 30 namespace bin { |
31 | 31 |
32 /* These are defined in root_certificates.cc. */ | 32 /* These are defined in root_certificates.cc. */ |
33 extern const unsigned char* root_certificates_pem; | 33 extern const unsigned char* root_certificates_pem; |
34 extern unsigned int root_certificates_pem_length; | 34 extern unsigned int root_certificates_pem_length; |
35 | 35 |
36 class SSLContext { | 36 class SSLContext { |
37 public: | 37 public: |
| 38 static const intptr_t kApproximateSize; |
| 39 |
38 explicit SSLContext(SSL_CTX* context) | 40 explicit SSLContext(SSL_CTX* context) |
39 : context_(context), alpn_protocol_string_(NULL) {} | 41 : context_(context), alpn_protocol_string_(NULL) {} |
40 | 42 |
41 ~SSLContext() { | 43 ~SSLContext() { |
42 SSL_CTX_free(context_); | 44 SSL_CTX_free(context_); |
43 if (alpn_protocol_string_ != NULL) { | 45 if (alpn_protocol_string_ != NULL) { |
44 free(alpn_protocol_string_); | 46 free(alpn_protocol_string_); |
45 } | 47 } |
46 } | 48 } |
47 | 49 |
(...skipping 26 matching lines...) Expand all Loading... |
74 // These enums must agree with those in sdk/lib/io/secure_socket.dart. | 76 // These enums must agree with those in sdk/lib/io/secure_socket.dart. |
75 enum BufferIndex { | 77 enum BufferIndex { |
76 kReadPlaintext, | 78 kReadPlaintext, |
77 kWritePlaintext, | 79 kWritePlaintext, |
78 kReadEncrypted, | 80 kReadEncrypted, |
79 kWriteEncrypted, | 81 kWriteEncrypted, |
80 kNumBuffers, | 82 kNumBuffers, |
81 kFirstEncrypted = kReadEncrypted | 83 kFirstEncrypted = kReadEncrypted |
82 }; | 84 }; |
83 | 85 |
| 86 static const intptr_t kApproximateSize; |
| 87 |
84 SSLFilter() | 88 SSLFilter() |
85 : callback_error(NULL), | 89 : callback_error(NULL), |
86 ssl_(NULL), | 90 ssl_(NULL), |
87 socket_side_(NULL), | 91 socket_side_(NULL), |
88 string_start_(NULL), | 92 string_start_(NULL), |
89 string_length_(NULL), | 93 string_length_(NULL), |
90 handshake_complete_(NULL), | 94 handshake_complete_(NULL), |
91 bad_certificate_callback_(NULL), | 95 bad_certificate_callback_(NULL), |
92 in_handshake_(false), | 96 in_handshake_(false), |
93 hostname_(NULL) {} | 97 hostname_(NULL) {} |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 static CObject* ProcessFilterRequest(const CObjectArray& request); | 130 static CObject* ProcessFilterRequest(const CObjectArray& request); |
127 | 131 |
128 // The index of the external data field in _ssl that points to the SSLFilter. | 132 // The index of the external data field in _ssl that points to the SSLFilter. |
129 static int filter_ssl_index; | 133 static int filter_ssl_index; |
130 | 134 |
131 // TODO(whesse): make private: | 135 // TODO(whesse): make private: |
132 SSL* ssl_; | 136 SSL* ssl_; |
133 BIO* socket_side_; | 137 BIO* socket_side_; |
134 | 138 |
135 private: | 139 private: |
| 140 static const intptr_t kInternalBIOSize; |
136 static bool library_initialized_; | 141 static bool library_initialized_; |
137 static Mutex* mutex_; // To protect library initialization. | 142 static Mutex* mutex_; // To protect library initialization. |
138 | 143 |
139 uint8_t* buffers_[kNumBuffers]; | 144 uint8_t* buffers_[kNumBuffers]; |
140 int buffer_size_; | 145 int buffer_size_; |
141 int encrypted_buffer_size_; | 146 int encrypted_buffer_size_; |
142 Dart_PersistentHandle string_start_; | 147 Dart_PersistentHandle string_start_; |
143 Dart_PersistentHandle string_length_; | 148 Dart_PersistentHandle string_length_; |
144 Dart_PersistentHandle dart_buffer_objects_[kNumBuffers]; | 149 Dart_PersistentHandle dart_buffer_objects_[kNumBuffers]; |
145 Dart_PersistentHandle handshake_complete_; | 150 Dart_PersistentHandle handshake_complete_; |
146 Dart_PersistentHandle bad_certificate_callback_; | 151 Dart_PersistentHandle bad_certificate_callback_; |
147 bool in_handshake_; | 152 bool in_handshake_; |
148 bool is_server_; | 153 bool is_server_; |
149 char* hostname_; | 154 char* hostname_; |
150 | 155 |
151 static bool isBufferEncrypted(int i) { | 156 static bool isBufferEncrypted(int i) { |
152 return static_cast<BufferIndex>(i) >= kFirstEncrypted; | 157 return static_cast<BufferIndex>(i) >= kFirstEncrypted; |
153 } | 158 } |
154 Dart_Handle InitializeBuffers(Dart_Handle dart_this); | 159 Dart_Handle InitializeBuffers(Dart_Handle dart_this); |
155 void InitializePlatformData(); | 160 void InitializePlatformData(); |
156 | 161 |
157 DISALLOW_COPY_AND_ASSIGN(SSLFilter); | 162 DISALLOW_COPY_AND_ASSIGN(SSLFilter); |
158 }; | 163 }; |
159 | 164 |
160 } // namespace bin | 165 } // namespace bin |
161 } // namespace dart | 166 } // namespace dart |
162 | 167 |
163 #endif // RUNTIME_BIN_SECURE_SOCKET_BORINGSSL_H_ | 168 #endif // RUNTIME_BIN_SECURE_SOCKET_BORINGSSL_H_ |
OLD | NEW |