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

Side by Side Diff: remoting/protocol/content_description.cc

Issue 7616017: Remove key exchange code from JingleSession. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « remoting/protocol/content_description.h ('k') | remoting/protocol/jingle_session.h » ('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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "remoting/protocol/content_description.h" 5 #include "remoting/protocol/content_description.h"
6 6
7 #include "base/base64.h" 7 #include "base/base64.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/string_number_conversions.h" 9 #include "base/string_number_conversions.h"
10 #include "remoting/base/constants.h" 10 #include "remoting/base/constants.h"
(...skipping 13 matching lines...) Expand all
24 const char kChromotingContentName[] = "chromoting"; 24 const char kChromotingContentName[] = "chromoting";
25 25
26 // Following constants are used to format session description in XML. 26 // Following constants are used to format session description in XML.
27 const char kDescriptionTag[] = "description"; 27 const char kDescriptionTag[] = "description";
28 const char kControlTag[] = "control"; 28 const char kControlTag[] = "control";
29 const char kEventTag[] = "event"; 29 const char kEventTag[] = "event";
30 const char kVideoTag[] = "video"; 30 const char kVideoTag[] = "video";
31 const char kResolutionTag[] = "initial-resolution"; 31 const char kResolutionTag[] = "initial-resolution";
32 const char kAuthenticationTag[] = "authentication"; 32 const char kAuthenticationTag[] = "authentication";
33 const char kCertificateTag[] = "certificate"; 33 const char kCertificateTag[] = "certificate";
34 const char kMasterKeyTag[] = "master-key";
35 const char kAuthTokenTag[] = "auth-token"; 34 const char kAuthTokenTag[] = "auth-token";
36 35
37 const char kTransportAttr[] = "transport"; 36 const char kTransportAttr[] = "transport";
38 const char kVersionAttr[] = "version"; 37 const char kVersionAttr[] = "version";
39 const char kCodecAttr[] = "codec"; 38 const char kCodecAttr[] = "codec";
40 const char kWidthAttr[] = "width"; 39 const char kWidthAttr[] = "width";
41 const char kHeightAttr[] = "height"; 40 const char kHeightAttr[] = "height";
42 41
43 const char kStreamTransport[] = "stream"; 42 const char kStreamTransport[] = "stream";
44 const char kDatagramTransport[] = "datagram"; 43 const char kDatagramTransport[] = "datagram";
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 } 145 }
147 146
148 return true; 147 return true;
149 } 148 }
150 149
151 } // namespace 150 } // namespace
152 151
153 ContentDescription::ContentDescription( 152 ContentDescription::ContentDescription(
154 const CandidateSessionConfig* candidate_config, 153 const CandidateSessionConfig* candidate_config,
155 const std::string& auth_token, 154 const std::string& auth_token,
156 const std::string& master_key,
157 const std::string& certificate) 155 const std::string& certificate)
158 : candidate_config_(candidate_config), 156 : candidate_config_(candidate_config),
159 auth_token_(auth_token), 157 auth_token_(auth_token),
160 master_key_(master_key),
161 certificate_(certificate) { 158 certificate_(certificate) {
162 } 159 }
163 160
164 ContentDescription::~ContentDescription() { } 161 ContentDescription::~ContentDescription() { }
165 162
166 // ToXml() creates content description for chromoting session. The 163 // ToXml() creates content description for chromoting session. The
167 // description looks as follows: 164 // description looks as follows:
168 // <description xmlns="google:remoting"> 165 // <description xmlns="google:remoting">
169 // <control transport="stream" version="1" /> 166 // <control transport="stream" version="1" />
170 // <event transport="datagram" version="1" /> 167 // <event transport="datagram" version="1" />
171 // <video transport="srtp" codec="vp8" version="1" /> 168 // <video transport="srtp" codec="vp8" version="1" />
172 // <initial-resolution width="800" height="600" /> 169 // <initial-resolution width="800" height="600" />
173 // <authentication> 170 // <authentication>
174 // <certificate>[BASE64 Encoded Certificate]</certificate> 171 // <certificate>[BASE64 Encoded Certificate]</certificate>
175 // <master-key>[master key encrypted with hosts
176 // public key encoded with BASE64]</master-key>
177 // <auth-token>...</auth-token> // IT2Me only. 172 // <auth-token>...</auth-token> // IT2Me only.
178 // </authentication> 173 // </authentication>
179 // </description> 174 // </description>
180 // 175 //
181 XmlElement* ContentDescription::ToXml() const { 176 XmlElement* ContentDescription::ToXml() const {
182 XmlElement* root = new XmlElement( 177 XmlElement* root = new XmlElement(
183 QName(kChromotingXmlNamespace, kDescriptionTag), true); 178 QName(kChromotingXmlNamespace, kDescriptionTag), true);
184 179
185 std::vector<ChannelConfig>::const_iterator it; 180 std::vector<ChannelConfig>::const_iterator it;
186 181
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 214
220 std::string base64_cert; 215 std::string base64_cert;
221 if (!base::Base64Encode(certificate(), &base64_cert)) { 216 if (!base::Base64Encode(certificate(), &base64_cert)) {
222 LOG(DFATAL) << "Cannot perform base64 encode on certificate"; 217 LOG(DFATAL) << "Cannot perform base64 encode on certificate";
223 } 218 }
224 219
225 certificate_tag->SetBodyText(base64_cert); 220 certificate_tag->SetBodyText(base64_cert);
226 authentication_tag->AddElement(certificate_tag); 221 authentication_tag->AddElement(certificate_tag);
227 } 222 }
228 223
229 if (!master_key().empty()) {
230 XmlElement* master_key_tag = new XmlElement(
231 QName(kChromotingXmlNamespace, kMasterKeyTag));
232
233 std::string master_key_base64;
234 if (!base::Base64Encode(master_key(), &master_key_base64)) {
235 LOG(DFATAL) << "Cannot perform base64 encode on master key";
236 }
237
238 master_key_tag->SetBodyText(master_key_base64);
239 authentication_tag->AddElement(master_key_tag);
240 }
241
242 if (!auth_token().empty()) { 224 if (!auth_token().empty()) {
243 XmlElement* auth_token_tag = new XmlElement( 225 XmlElement* auth_token_tag = new XmlElement(
244 QName(kChromotingXmlNamespace, kAuthTokenTag)); 226 QName(kChromotingXmlNamespace, kAuthTokenTag));
245 auth_token_tag->SetBodyText(auth_token()); 227 auth_token_tag->SetBodyText(auth_token());
246 authentication_tag->AddElement(auth_token_tag); 228 authentication_tag->AddElement(auth_token_tag);
247 } 229 }
248 230
249 root->AddElement(authentication_tag); 231 root->AddElement(authentication_tag);
250 } 232 }
251 233
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 ScreenResolution resolution(width, height); 290 ScreenResolution resolution(width, height);
309 if (!resolution.IsValid()) { 291 if (!resolution.IsValid()) {
310 return NULL; 292 return NULL;
311 } 293 }
312 294
313 *config->mutable_initial_resolution() = resolution; 295 *config->mutable_initial_resolution() = resolution;
314 296
315 // Parse authentication information. 297 // Parse authentication information.
316 std::string certificate; 298 std::string certificate;
317 std::string auth_token; 299 std::string auth_token;
318 std::string master_key;
319 child = element->FirstNamed(QName(kChromotingXmlNamespace, 300 child = element->FirstNamed(QName(kChromotingXmlNamespace,
320 kAuthenticationTag)); 301 kAuthenticationTag));
321 if (child) { 302 if (child) {
322 // Parse the certificate. 303 // Parse the certificate.
323 const XmlElement* cert_tag = 304 const XmlElement* cert_tag =
324 child->FirstNamed(QName(kChromotingXmlNamespace, kCertificateTag)); 305 child->FirstNamed(QName(kChromotingXmlNamespace, kCertificateTag));
325 if (cert_tag) { 306 if (cert_tag) {
326 std::string base64_cert = cert_tag->BodyText(); 307 std::string base64_cert = cert_tag->BodyText();
327 if (!base::Base64Decode(base64_cert, &certificate)) { 308 if (!base::Base64Decode(base64_cert, &certificate)) {
328 LOG(ERROR) << "Failed to decode certificate received from the peer."; 309 LOG(ERROR) << "Failed to decode certificate received from the peer.";
329 return NULL; 310 return NULL;
330 } 311 }
331 } 312 }
332 313
333 // Parse master-key.
334 const XmlElement* master_key_tag =
335 child->FirstNamed(QName(kChromotingXmlNamespace, kMasterKeyTag));
336 if (master_key_tag) {
337 if (!base::Base64Decode(master_key_tag->BodyText(), &master_key)) {
338 LOG(ERROR) << "Failed to decode master-key received from the peer.";
339 return NULL;
340 }
341 master_key = master_key_tag->BodyText();
342 }
343
344 // Parse auth-token. 314 // Parse auth-token.
345 const XmlElement* auth_token_tag = 315 const XmlElement* auth_token_tag =
346 child->FirstNamed(QName(kChromotingXmlNamespace, kAuthTokenTag)); 316 child->FirstNamed(QName(kChromotingXmlNamespace, kAuthTokenTag));
347 if (auth_token_tag) { 317 if (auth_token_tag) {
348 auth_token = auth_token_tag->BodyText(); 318 auth_token = auth_token_tag->BodyText();
349 } 319 }
350 } 320 }
351 321
352 return new ContentDescription(config.release(), auth_token, master_key, 322 return new ContentDescription(config.release(), auth_token, certificate);
353 certificate);
354 } 323 }
355 LOG(ERROR) << "Invalid description: " << element->Str(); 324 LOG(ERROR) << "Invalid description: " << element->Str();
356 return NULL; 325 return NULL;
357 } 326 }
358 327
359 } // namespace protocol 328 } // namespace protocol
360 } // namespace remoting 329 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/protocol/content_description.h ('k') | remoting/protocol/jingle_session.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698