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

Side by Side Diff: talk/app/webrtc/webrtcsessiondescriptionfactory.cc

Issue 1312643004: Replaces SSLIdentity* with scoped_refptr<RTCCertificate> in cricket::Transport layer. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: certificate_for_testing() Created 5 years, 3 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
OLDNEW
1 /* 1 /*
2 * libjingle 2 * libjingle
3 * Copyright 2013 Google Inc. 3 * Copyright 2013 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright notice, 8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 void WebRtcIdentityRequestObserver::OnSuccess( 91 void WebRtcIdentityRequestObserver::OnSuccess(
92 const std::string& der_cert, const std::string& der_private_key) { 92 const std::string& der_cert, const std::string& der_private_key) {
93 std::string pem_cert = rtc::SSLIdentity::DerToPem( 93 std::string pem_cert = rtc::SSLIdentity::DerToPem(
94 rtc::kPemTypeCertificate, 94 rtc::kPemTypeCertificate,
95 reinterpret_cast<const unsigned char*>(der_cert.data()), 95 reinterpret_cast<const unsigned char*>(der_cert.data()),
96 der_cert.length()); 96 der_cert.length());
97 std::string pem_key = rtc::SSLIdentity::DerToPem( 97 std::string pem_key = rtc::SSLIdentity::DerToPem(
98 rtc::kPemTypeRsaPrivateKey, 98 rtc::kPemTypeRsaPrivateKey,
99 reinterpret_cast<const unsigned char*>(der_private_key.data()), 99 reinterpret_cast<const unsigned char*>(der_private_key.data()),
100 der_private_key.length()); 100 der_private_key.length());
101 rtc::SSLIdentity* identity = 101 rtc::scoped_ptr<rtc::SSLIdentity> identity(
102 rtc::SSLIdentity::FromPEMStrings(pem_key, pem_cert); 102 rtc::SSLIdentity::FromPEMStrings(pem_key, pem_cert));
103 SignalIdentityReady(identity); 103 SignalCertificateReady(rtc::RTCCertificate::Create(identity.Pass()));
104 } 104 }
105 105
106 void WebRtcIdentityRequestObserver::OnSuccess( 106 void WebRtcIdentityRequestObserver::OnSuccess(
107 rtc::scoped_ptr<rtc::SSLIdentity> identity) { 107 rtc::scoped_ptr<rtc::SSLIdentity> identity) {
108 SignalIdentityReady(identity.release()); 108 SignalCertificateReady(rtc::RTCCertificate::Create(identity.Pass()));
109 } 109 }
110 110
111 // static 111 // static
112 void WebRtcSessionDescriptionFactory::CopyCandidatesFromSessionDescription( 112 void WebRtcSessionDescriptionFactory::CopyCandidatesFromSessionDescription(
113 const SessionDescriptionInterface* source_desc, 113 const SessionDescriptionInterface* source_desc,
114 SessionDescriptionInterface* dest_desc) { 114 SessionDescriptionInterface* dest_desc) {
115 if (!source_desc) 115 if (!source_desc)
116 return; 116 return;
117 for (size_t m = 0; m < source_desc->number_of_mediasections() && 117 for (size_t m = 0; m < source_desc->number_of_mediasections() &&
118 m < dest_desc->number_of_mediasections(); ++m) { 118 m < dest_desc->number_of_mediasections(); ++m) {
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 session, 188 session,
189 session_id, 189 session_id,
190 dct, 190 dct,
191 true) { 191 true) {
192 DCHECK(dtls_identity_store_); 192 DCHECK(dtls_identity_store_);
193 193
194 certificate_request_state_ = CERTIFICATE_WAITING; 194 certificate_request_state_ = CERTIFICATE_WAITING;
195 195
196 identity_request_observer_->SignalRequestFailed.connect( 196 identity_request_observer_->SignalRequestFailed.connect(
197 this, &WebRtcSessionDescriptionFactory::OnIdentityRequestFailed); 197 this, &WebRtcSessionDescriptionFactory::OnIdentityRequestFailed);
198 identity_request_observer_->SignalIdentityReady.connect( 198 identity_request_observer_->SignalCertificateReady.connect(
199 this, &WebRtcSessionDescriptionFactory::SetIdentity); 199 this, &WebRtcSessionDescriptionFactory::SetCertificate);
200 200
201 rtc::KeyType key_type = rtc::KT_DEFAULT; 201 rtc::KeyType key_type = rtc::KT_DEFAULT;
202 LOG(LS_VERBOSE) << "DTLS-SRTP enabled; sending DTLS identity request (key " 202 LOG(LS_VERBOSE) << "DTLS-SRTP enabled; sending DTLS identity request (key "
203 << "type: " << key_type << ")."; 203 << "type: " << key_type << ").";
204 204
205 // Request identity. This happens asynchronously, so the caller will have a 205 // Request identity. This happens asynchronously, so the caller will have a
206 // chance to connect to SignalIdentityReady. 206 // chance to connect to SignalIdentityReady.
207 dtls_identity_store_->RequestIdentity(key_type, identity_request_observer_); 207 dtls_identity_store_->RequestIdentity(key_type, identity_request_observer_);
208 } 208 }
209 209
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 static_cast<CreateSessionDescriptionMsg*>(msg->pdata); 380 static_cast<CreateSessionDescriptionMsg*>(msg->pdata);
381 param->observer->OnFailure(param->error); 381 param->observer->OnFailure(param->error);
382 delete param; 382 delete param;
383 break; 383 break;
384 } 384 }
385 case MSG_USE_CONSTRUCTOR_CERTIFICATE: { 385 case MSG_USE_CONSTRUCTOR_CERTIFICATE: {
386 rtc::ScopedRefMessageData<rtc::RTCCertificate>* param = 386 rtc::ScopedRefMessageData<rtc::RTCCertificate>* param =
387 static_cast<rtc::ScopedRefMessageData<rtc::RTCCertificate>*>( 387 static_cast<rtc::ScopedRefMessageData<rtc::RTCCertificate>*>(
388 msg->pdata); 388 msg->pdata);
389 LOG(LS_INFO) << "Using certificate supplied to the constructor."; 389 LOG(LS_INFO) << "Using certificate supplied to the constructor.";
390 // TODO(hbos): Pass around scoped_refptr<RTCCertificate> instead of 390 SetCertificate(param->data());
391 // SSLIdentity* (then there will be no need to do GetReference here).
392 SetIdentity(param->data()->identity()->GetReference());
393 delete param; 391 delete param;
394 break; 392 break;
395 } 393 }
396 default: 394 default:
397 ASSERT(false); 395 ASSERT(false);
398 break; 396 break;
399 } 397 }
400 } 398 }
401 399
402 void WebRtcSessionDescriptionFactory::InternalCreateOffer( 400 void WebRtcSessionDescriptionFactory::InternalCreateOffer(
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
509 507
510 void WebRtcSessionDescriptionFactory::OnIdentityRequestFailed(int error) { 508 void WebRtcSessionDescriptionFactory::OnIdentityRequestFailed(int error) {
511 ASSERT(signaling_thread_->IsCurrent()); 509 ASSERT(signaling_thread_->IsCurrent());
512 510
513 LOG(LS_ERROR) << "Async identity request failed: error = " << error; 511 LOG(LS_ERROR) << "Async identity request failed: error = " << error;
514 certificate_request_state_ = CERTIFICATE_FAILED; 512 certificate_request_state_ = CERTIFICATE_FAILED;
515 513
516 FailPendingRequests(kFailedDueToIdentityFailed); 514 FailPendingRequests(kFailedDueToIdentityFailed);
517 } 515 }
518 516
519 void WebRtcSessionDescriptionFactory::SetIdentity( 517 void WebRtcSessionDescriptionFactory::SetCertificate(
520 rtc::SSLIdentity* identity) { 518 const rtc::scoped_refptr<rtc::RTCCertificate>& certificate) {
521 LOG(LS_VERBOSE) << "Setting new identity"; 519 DCHECK(certificate);
520 LOG(LS_VERBOSE) << "Setting new certificate";
522 521
523 certificate_request_state_ = CERTIFICATE_SUCCEEDED; 522 certificate_request_state_ = CERTIFICATE_SUCCEEDED;
524 SignalIdentityReady(identity); 523 SignalCertificateReady(certificate);
525 524
526 transport_desc_factory_.set_identity(identity); 525 // TODO(hbos): set_certificate
526 transport_desc_factory_.set_identity(certificate->identity());
527 transport_desc_factory_.set_secure(cricket::SEC_ENABLED); 527 transport_desc_factory_.set_secure(cricket::SEC_ENABLED);
528 528
529 while (!create_session_description_requests_.empty()) { 529 while (!create_session_description_requests_.empty()) {
530 if (create_session_description_requests_.front().type == 530 if (create_session_description_requests_.front().type ==
531 CreateSessionDescriptionRequest::kOffer) { 531 CreateSessionDescriptionRequest::kOffer) {
532 InternalCreateOffer(create_session_description_requests_.front()); 532 InternalCreateOffer(create_session_description_requests_.front());
533 } else { 533 } else {
534 InternalCreateAnswer(create_session_description_requests_.front()); 534 InternalCreateAnswer(create_session_description_requests_.front());
535 } 535 }
536 create_session_description_requests_.pop(); 536 create_session_description_requests_.pop();
537 } 537 }
538 } 538 }
539 } // namespace webrtc 539 } // namespace webrtc
OLDNEW
« no previous file with comments | « talk/app/webrtc/webrtcsessiondescriptionfactory.h ('k') | talk/session/media/channel_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698