Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(253)

Side by Side Diff: runtime/bin/secure_socket_patch.dart

Issue 2759973004: Fix observatory tests broken by running dartfmt. Temporarily reverted formatting for evaluate_activ… (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « runtime/bin/process_patch.dart ('k') | runtime/bin/socket_patch.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 @patch class SecureSocket { 5 @patch
6 @patch factory SecureSocket._(RawSecureSocket rawSocket) => 6 class SecureSocket {
7 @patch
8 factory SecureSocket._(RawSecureSocket rawSocket) =>
7 new _SecureSocket(rawSocket); 9 new _SecureSocket(rawSocket);
8 } 10 }
9 11
10 12 @patch
11 @patch class _SecureFilter { 13 class _SecureFilter {
12 @patch factory _SecureFilter() => new _SecureFilterImpl(); 14 @patch
15 factory _SecureFilter() => new _SecureFilterImpl();
13 } 16 }
14 17
15 @patch class X509Certificate { 18 @patch
16 @patch factory X509Certificate._() => new _X509CertificateImpl(); 19 class X509Certificate {
20 @patch
21 factory X509Certificate._() => new _X509CertificateImpl();
17 } 22 }
18 23
19 class _SecureSocket extends _Socket implements SecureSocket { 24 class _SecureSocket extends _Socket implements SecureSocket {
20 _SecureSocket(RawSecureSocket raw) : super(raw); 25 _SecureSocket(RawSecureSocket raw) : super(raw);
21 26
22 void set onBadCertificate(bool callback(X509Certificate certificate)) { 27 void set onBadCertificate(bool callback(X509Certificate certificate)) {
23 if (_raw == null) { 28 if (_raw == null) {
24 throw new StateError("onBadCertificate called on destroyed SecureSocket"); 29 throw new StateError("onBadCertificate called on destroyed SecureSocket");
25 } 30 }
26 _raw.onBadCertificate = callback; 31 _raw.onBadCertificate = callback;
27 } 32 }
28 33
29 void renegotiate({bool useSessionCache: true, 34 void renegotiate(
30 bool requestClientCertificate: false, 35 {bool useSessionCache: true,
31 bool requireClientCertificate: false}) { 36 bool requestClientCertificate: false,
32 _raw.renegotiate(useSessionCache: useSessionCache, 37 bool requireClientCertificate: false}) {
33 requestClientCertificate: requestClientCertificate, 38 _raw.renegotiate(
34 requireClientCertificate: requireClientCertificate); 39 useSessionCache: useSessionCache,
40 requestClientCertificate: requestClientCertificate,
41 requireClientCertificate: requireClientCertificate);
35 } 42 }
36 43
37 X509Certificate get peerCertificate { 44 X509Certificate get peerCertificate {
38 if (_raw == null) { 45 if (_raw == null) {
39 throw new StateError("peerCertificate called on destroyed SecureSocket"); 46 throw new StateError("peerCertificate called on destroyed SecureSocket");
40 } 47 }
41 return _raw.peerCertificate; 48 return _raw.peerCertificate;
42 } 49 }
43 50
44 String get selectedProtocol { 51 String get selectedProtocol {
45 if (_raw == null) { 52 if (_raw == null) {
46 throw new StateError("selectedProtocol called on destroyed SecureSocket"); 53 throw new StateError("selectedProtocol called on destroyed SecureSocket");
47 } 54 }
48 return _raw.selectedProtocol; 55 return _raw.selectedProtocol;
49 } 56 }
50 } 57 }
51 58
52
53 /** 59 /**
54 * _SecureFilterImpl wraps a filter that encrypts and decrypts data travelling 60 * _SecureFilterImpl wraps a filter that encrypts and decrypts data travelling
55 * over an encrypted socket. The filter also handles the handshaking 61 * over an encrypted socket. The filter also handles the handshaking
56 * and certificate verification. 62 * and certificate verification.
57 * 63 *
58 * The filter exposes its input and output buffers as Dart objects that 64 * The filter exposes its input and output buffers as Dart objects that
59 * are backed by an external C array of bytes, so that both Dart code and 65 * are backed by an external C array of bytes, so that both Dart code and
60 * native code can access the same data. 66 * native code can access the same data.
61 */ 67 */
62 class _SecureFilterImpl 68 class _SecureFilterImpl extends NativeFieldWrapperClass1
63 extends NativeFieldWrapperClass1
64 implements _SecureFilter { 69 implements _SecureFilter {
65 // Performance is improved if a full buffer of plaintext fits 70 // Performance is improved if a full buffer of plaintext fits
66 // in the encrypted buffer, when encrypted. 71 // in the encrypted buffer, when encrypted.
67 static final int SIZE = 8 * 1024; 72 static final int SIZE = 8 * 1024;
68 static final int ENCRYPTED_SIZE = 10 * 1024; 73 static final int ENCRYPTED_SIZE = 10 * 1024;
69 74
70 _SecureFilterImpl() { 75 _SecureFilterImpl() {
71 buffers = new List<_ExternalBuffer>(_RawSecureSocket.NUM_BUFFERS); 76 buffers = new List<_ExternalBuffer>(_RawSecureSocket.NUM_BUFFERS);
72 for (int i = 0; i < _RawSecureSocket.NUM_BUFFERS; ++i) { 77 for (int i = 0; i < _RawSecureSocket.NUM_BUFFERS; ++i) {
73 buffers[i] = new _ExternalBuffer(_RawSecureSocket._isBufferEncrypted(i) ? 78 buffers[i] = new _ExternalBuffer(
74 ENCRYPTED_SIZE : 79 _RawSecureSocket._isBufferEncrypted(i) ? ENCRYPTED_SIZE : SIZE);
75 SIZE);
76 } 80 }
77 } 81 }
78 82
79 void connect(String hostName, 83 void connect(
80 SecurityContext context, 84 String hostName,
81 bool is_server, 85 SecurityContext context,
82 bool requestClientCertificate, 86 bool is_server,
83 bool requireClientCertificate, 87 bool requestClientCertificate,
84 Uint8List protocols) native "SecureSocket_Connect"; 88 bool requireClientCertificate,
89 Uint8List protocols) native "SecureSocket_Connect";
85 90
86 void destroy() { 91 void destroy() {
87 buffers = null; 92 buffers = null;
88 _destroy(); 93 _destroy();
89 } 94 }
90 95
91 void _destroy() native "SecureSocket_Destroy"; 96 void _destroy() native "SecureSocket_Destroy";
92 97
93 void handshake() native "SecureSocket_Handshake"; 98 void handshake() native "SecureSocket_Handshake";
94 99
95 String selectedProtocol() native "SecureSocket_GetSelectedProtocol"; 100 String selectedProtocol() native "SecureSocket_GetSelectedProtocol";
96 101
97 void renegotiate(bool useSessionCache, 102 void renegotiate(bool useSessionCache, bool requestClientCertificate,
98 bool requestClientCertificate, 103 bool requireClientCertificate) native "SecureSocket_Renegotiate";
99 bool requireClientCertificate)
100 native "SecureSocket_Renegotiate";
101 104
102 void init() native "SecureSocket_Init"; 105 void init() native "SecureSocket_Init";
103 106
104 X509Certificate get peerCertificate native "SecureSocket_PeerCertificate"; 107 X509Certificate get peerCertificate native "SecureSocket_PeerCertificate";
105 108
106 void registerBadCertificateCallback(Function callback) 109 void registerBadCertificateCallback(Function callback)
107 native "SecureSocket_RegisterBadCertificateCallback"; 110 native "SecureSocket_RegisterBadCertificateCallback";
108 111
109 void registerHandshakeCompleteCallback(Function handshakeCompleteHandler) 112 void registerHandshakeCompleteCallback(Function handshakeCompleteHandler)
110 native "SecureSocket_RegisterHandshakeCompleteCallback"; 113 native "SecureSocket_RegisterHandshakeCompleteCallback";
111 114
112 // This is a security issue, as it exposes a raw pointer to Dart code. 115 // This is a security issue, as it exposes a raw pointer to Dart code.
113 int _pointer() native "SecureSocket_FilterPointer"; 116 int _pointer() native "SecureSocket_FilterPointer";
114 117
115 List<_ExternalBuffer> buffers; 118 List<_ExternalBuffer> buffers;
116 } 119 }
117 120
118 @patch class SecurityContext { 121 @patch
119 @patch factory SecurityContext() { 122 class SecurityContext {
123 @patch
124 factory SecurityContext() {
120 return new _SecurityContext(); 125 return new _SecurityContext();
121 } 126 }
122 127
123 @patch static SecurityContext get defaultContext { 128 @patch
129 static SecurityContext get defaultContext {
124 return _SecurityContext.defaultContext; 130 return _SecurityContext.defaultContext;
125 } 131 }
126 132
127 @patch static bool get alpnSupported { 133 @patch
134 static bool get alpnSupported {
128 return _SecurityContext.alpnSupported; 135 return _SecurityContext.alpnSupported;
129 } 136 }
130 } 137 }
131 138
132 class _SecurityContext 139 class _SecurityContext extends NativeFieldWrapperClass1
133 extends NativeFieldWrapperClass1
134 implements SecurityContext { 140 implements SecurityContext {
135 _SecurityContext() { 141 _SecurityContext() {
136 _createNativeContext(); 142 _createNativeContext();
137 } 143 }
138 144
139 void _createNativeContext() native "SecurityContext_Allocate"; 145 void _createNativeContext() native "SecurityContext_Allocate";
140 146
141 static final SecurityContext defaultContext = 147 static final SecurityContext defaultContext = new _SecurityContext()
142 new _SecurityContext().._trustBuiltinRoots(); 148 .._trustBuiltinRoots();
143 149
144 void usePrivateKey(String file, {String password}) { 150 void usePrivateKey(String file, {String password}) {
145 List<int> bytes = (new File(file)).readAsBytesSync(); 151 List<int> bytes = (new File(file)).readAsBytesSync();
146 usePrivateKeyBytes(bytes, password: password); 152 usePrivateKeyBytes(bytes, password: password);
147 } 153 }
154
148 void usePrivateKeyBytes(List<int> keyBytes, {String password}) 155 void usePrivateKeyBytes(List<int> keyBytes, {String password})
149 native "SecurityContext_UsePrivateKeyBytes"; 156 native "SecurityContext_UsePrivateKeyBytes";
150 157
151 void setTrustedCertificates(String file, {String password}) { 158 void setTrustedCertificates(String file, {String password}) {
152 List<int> bytes = (new File(file)).readAsBytesSync(); 159 List<int> bytes = (new File(file)).readAsBytesSync();
153 setTrustedCertificatesBytes(bytes, password: password); 160 setTrustedCertificatesBytes(bytes, password: password);
154 } 161 }
162
155 void setTrustedCertificatesBytes(List<int> certBytes, {String password}) 163 void setTrustedCertificatesBytes(List<int> certBytes, {String password})
156 native "SecurityContext_SetTrustedCertificatesBytes"; 164 native "SecurityContext_SetTrustedCertificatesBytes";
157 165
158 void useCertificateChain(String file, {String password}) { 166 void useCertificateChain(String file, {String password}) {
159 List<int> bytes = (new File(file)).readAsBytesSync(); 167 List<int> bytes = (new File(file)).readAsBytesSync();
160 useCertificateChainBytes(bytes, password: password); 168 useCertificateChainBytes(bytes, password: password);
161 } 169 }
170
162 void useCertificateChainBytes(List<int> chainBytes, {String password}) 171 void useCertificateChainBytes(List<int> chainBytes, {String password})
163 native "SecurityContext_UseCertificateChainBytes"; 172 native "SecurityContext_UseCertificateChainBytes";
164 173
165 void setClientAuthorities(String file, {String password}) { 174 void setClientAuthorities(String file, {String password}) {
166 List<int> bytes = (new File(file)).readAsBytesSync(); 175 List<int> bytes = (new File(file)).readAsBytesSync();
167 setClientAuthoritiesBytes(bytes, password: password); 176 setClientAuthoritiesBytes(bytes, password: password);
168 } 177 }
178
169 void setClientAuthoritiesBytes(List<int> authCertBytes, {String password}) 179 void setClientAuthoritiesBytes(List<int> authCertBytes, {String password})
170 native "SecurityContext_SetClientAuthoritiesBytes"; 180 native "SecurityContext_SetClientAuthoritiesBytes";
171 181
172 static bool get alpnSupported => _alpnSupported(); 182 static bool get alpnSupported => _alpnSupported();
173 static bool _alpnSupported() native "SecurityContext_AlpnSupported"; 183 static bool _alpnSupported() native "SecurityContext_AlpnSupported";
174 void setAlpnProtocols(List<String> protocols, bool isServer) { 184 void setAlpnProtocols(List<String> protocols, bool isServer) {
175 Uint8List encodedProtocols = 185 Uint8List encodedProtocols =
176 SecurityContext._protocolsToLengthEncoding(protocols); 186 SecurityContext._protocolsToLengthEncoding(protocols);
177 _setAlpnProtocols(encodedProtocols, isServer); 187 _setAlpnProtocols(encodedProtocols, isServer);
178 } 188 }
189
179 void _setAlpnProtocols(Uint8List protocols, bool isServer) 190 void _setAlpnProtocols(Uint8List protocols, bool isServer)
180 native "SecurityContext_SetAlpnProtocols"; 191 native "SecurityContext_SetAlpnProtocols";
181 void _trustBuiltinRoots() 192 void _trustBuiltinRoots() native "SecurityContext_TrustBuiltinRoots";
182 native "SecurityContext_TrustBuiltinRoots";
183 } 193 }
184 194
185 /** 195 /**
186 * _X509CertificateImpl wraps an X509 certificate object held by the BoringSSL 196 * _X509CertificateImpl wraps an X509 certificate object held by the BoringSSL
187 * library. It exposes the fields of the certificate object. 197 * library. It exposes the fields of the certificate object.
188 */ 198 */
189 class _X509CertificateImpl extends NativeFieldWrapperClass1 199 class _X509CertificateImpl extends NativeFieldWrapperClass1
190 implements X509Certificate { 200 implements X509Certificate {
191 // The native field must be set manually on a new object, in native code. 201 // The native field must be set manually on a new object, in native code.
192 // This is done by WrappedX509 in secure_socket.cc. 202 // This is done by WrappedX509 in secure_socket.cc.
193 _X509CertificateImpl(); 203 _X509CertificateImpl();
194 204
195 String get subject native "X509_Subject"; 205 String get subject native "X509_Subject";
196 String get issuer native "X509_Issuer"; 206 String get issuer native "X509_Issuer";
197 DateTime get startValidity { 207 DateTime get startValidity {
198 return new DateTime.fromMillisecondsSinceEpoch(_startValidity(), 208 return new DateTime.fromMillisecondsSinceEpoch(_startValidity(),
199 isUtc: true); 209 isUtc: true);
200 } 210 }
211
201 DateTime get endValidity { 212 DateTime get endValidity {
202 return new DateTime.fromMillisecondsSinceEpoch(_endValidity(), 213 return new DateTime.fromMillisecondsSinceEpoch(_endValidity(), isUtc: true);
203 isUtc: true);
204 } 214 }
215
205 int _startValidity() native "X509_StartValidity"; 216 int _startValidity() native "X509_StartValidity";
206 int _endValidity() native "X509_EndValidity"; 217 int _endValidity() native "X509_EndValidity";
207 } 218 }
OLDNEW
« no previous file with comments | « runtime/bin/process_patch.dart ('k') | runtime/bin/socket_patch.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698