| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| patch class TlsSocket { |
| /* patch */ static void setCertificateDatabase(String pkcertDirectory) |
| native "TlsSocket_SetCertificateDatabase"; |
| } |
| |
| |
| patch class _TlsFilter { |
| /* patch */ factory _TlsFilter() => new _TlsFilterImpl(); |
| } |
| |
| |
| /** |
| * _TlsFilterImpl wraps a filter that encrypts and decrypts data travelling |
| * over a TLS encrypted socket. The filter also handles the handshaking |
| * and certificate verification. |
| * |
| * The filter exposes its input and output buffers as Dart objects that |
| * are backed by an external C array of bytes, so that both Dart code and |
| * native code can access the same data. |
| */ |
| class _TlsFilterImpl extends NativeFieldWrapperClass1 implements _TlsFilter { |
| _TlsFilterImpl() { |
| buffers = new List<_TlsExternalBuffer>(_TlsSocket.NUM_BUFFERS); |
| for (int i = 0; i < _TlsSocket.NUM_BUFFERS; ++i) { |
| buffers[i] = new _TlsExternalBuffer(); |
| } |
| } |
| |
| void connect(String hostName, int port) native "TlsSocket_Connect"; |
| |
| void destroy() { |
| buffers = null; |
| _destroy(); |
| } |
| |
| void _destroy() native "TlsSocket_Destroy"; |
| |
| void handshake() native "TlsSocket_Handshake"; |
| |
| void init() native "TlsSocket_Init"; |
| |
| int processBuffer(int bufferIndex) native "TlsSocket_ProcessBuffer"; |
| |
| void registerHandshakeCompleteCallback(Function handshakeCompleteHandler) |
| native "TlsSocket_RegisterHandshakeCompleteCallback"; |
| |
| List<_TlsExternalBuffer> buffers; |
| } |