OLD | NEW |
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 <limits> | 5 #include <limits> |
6 | 6 |
7 #include "remoting/protocol/jingle_session_manager.h" | 7 #include "remoting/protocol/jingle_session_manager.h" |
8 | 8 |
9 #include "base/base64.h" | 9 #include "base/base64.h" |
10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
(...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
437 child = element->FirstNamed(QName(kChromotingXmlNamespace, | 437 child = element->FirstNamed(QName(kChromotingXmlNamespace, |
438 kAuthenticationTag)); | 438 kAuthenticationTag)); |
439 if (child) | 439 if (child) |
440 child = child->FirstNamed(QName(kChromotingXmlNamespace, | 440 child = child->FirstNamed(QName(kChromotingXmlNamespace, |
441 kCertificateTag)); | 441 kCertificateTag)); |
442 | 442 |
443 if (child) { | 443 if (child) { |
444 std::string base64_cert = child->BodyText(); | 444 std::string base64_cert = child->BodyText(); |
445 std::string der_cert; | 445 std::string der_cert; |
446 bool ret = base::Base64Decode(base64_cert, &der_cert); | 446 bool ret = base::Base64Decode(base64_cert, &der_cert); |
447 DCHECK(ret) << "Failed to decode certificate"; | 447 if (!ret) { |
| 448 LOG(ERROR) << "Failed to decode certificate received from the peer."; |
| 449 return false; |
| 450 } |
448 certificate = net::X509Certificate::CreateFromBytes(der_cert.data(), | 451 certificate = net::X509Certificate::CreateFromBytes(der_cert.data(), |
449 der_cert.length()); | 452 der_cert.length()); |
450 } | 453 } |
451 | 454 |
452 *content = new ContentDescription(config.release(), auth_token, | 455 *content = new ContentDescription(config.release(), auth_token, |
453 certificate); | 456 certificate); |
454 return true; | 457 return true; |
455 } | 458 } |
456 LOG(ERROR) << "Invalid description: " << element->Str(); | 459 LOG(ERROR) << "Invalid description: " << element->Str(); |
457 return false; | 460 return false; |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
537 scoped_refptr<net::X509Certificate> certificate) { | 540 scoped_refptr<net::X509Certificate> certificate) { |
538 cricket::SessionDescription* desc = new cricket::SessionDescription(); | 541 cricket::SessionDescription* desc = new cricket::SessionDescription(); |
539 desc->AddContent(JingleSession::kChromotingContentName, | 542 desc->AddContent(JingleSession::kChromotingContentName, |
540 kChromotingXmlNamespace, | 543 kChromotingXmlNamespace, |
541 new ContentDescription(config, auth_token, certificate)); | 544 new ContentDescription(config, auth_token, certificate)); |
542 return desc; | 545 return desc; |
543 } | 546 } |
544 | 547 |
545 } // namespace protocol | 548 } // namespace protocol |
546 } // namespace remoting | 549 } // namespace remoting |
OLD | NEW |