Index: talk/app/webrtc/webrtcsessiondescriptionfactory.cc |
diff --git a/talk/app/webrtc/webrtcsessiondescriptionfactory.cc b/talk/app/webrtc/webrtcsessiondescriptionfactory.cc |
index aab24cf0654b01054355842d54c22ea470c2c3d7..48eb81fe81fd555e9f7805a8f5516bce1ceafd7c 100644 |
--- a/talk/app/webrtc/webrtcsessiondescriptionfactory.cc |
+++ b/talk/app/webrtc/webrtcsessiondescriptionfactory.cc |
@@ -65,8 +65,7 @@ static bool ValidStreams(const MediaSessionOptions::Streams& streams) { |
enum { |
MSG_CREATE_SESSIONDESCRIPTION_SUCCESS, |
- MSG_CREATE_SESSIONDESCRIPTION_FAILED, |
- MSG_GENERATE_IDENTITY, |
+ MSG_CREATE_SESSIONDESCRIPTION_FAILED |
}; |
struct CreateSessionDescriptionMsg : public rtc::MessageData { |
@@ -128,11 +127,12 @@ WebRtcSessionDescriptionFactory::WebRtcSessionDescriptionFactory( |
rtc::Thread* signaling_thread, |
cricket::ChannelManager* channel_manager, |
MediaStreamSignaling* mediastream_signaling, |
- DTLSIdentityServiceInterface* dtls_identity_service, |
+ DtlsIdentityStoreInterface* dtls_identity_store, |
WebRtcSession* session, |
const std::string& session_id, |
cricket::DataChannelType dct, |
- bool dtls_enabled) |
+ bool dtls_enabled, |
+ rtc::KeyType key_type) |
: signaling_thread_(signaling_thread), |
mediastream_signaling_(mediastream_signaling), |
session_desc_factory_(channel_manager, &transport_desc_factory_), |
@@ -141,21 +141,21 @@ WebRtcSessionDescriptionFactory::WebRtcSessionDescriptionFactory( |
// to just use a random number as session id and start version from |
// |kInitSessionVersion|. |
session_version_(kInitSessionVersion), |
- identity_service_(dtls_identity_service), |
+ identity_store_(dtls_identity_store), |
session_(session), |
session_id_(session_id), |
data_channel_type_(dct), |
- identity_request_state_(IDENTITY_NOT_NEEDED) { |
+ identity_request_state_(IDENTITY_NOT_NEEDED), |
+ key_type_(key_type) { |
transport_desc_factory_.set_protocol(cricket::ICEPROTO_RFC5245); |
session_desc_factory_.set_add_legacy_streams(false); |
// SRTP-SDES is disabled if DTLS is on. |
SetSdesPolicy(dtls_enabled ? cricket::SEC_DISABLED : cricket::SEC_REQUIRED); |
- if (!dtls_enabled) { |
- return; |
- } |
+ // If |dtls_enabled| we must have an |identity_store_|. |
+ DCHECK(!dtls_enabled || identity_store_); |
- if (identity_service_.get()) { |
+ if (dtls_enabled && identity_store_) { |
identity_request_observer_ = |
new rtc::RefCountedObject<WebRtcIdentityRequestObserver>(); |
@@ -164,21 +164,10 @@ WebRtcSessionDescriptionFactory::WebRtcSessionDescriptionFactory( |
identity_request_observer_->SignalIdentityReady.connect( |
this, &WebRtcSessionDescriptionFactory::SetIdentity); |
- if (identity_service_->RequestIdentity( |
- DtlsIdentityStore::kIdentityName, |
- DtlsIdentityStore::kIdentityName, |
- identity_request_observer_)) { |
- LOG(LS_VERBOSE) << "DTLS-SRTP enabled; sent DTLS identity request."; |
- identity_request_state_ = IDENTITY_WAITING; |
- } else { |
- LOG(LS_ERROR) << "Failed to send DTLS identity request."; |
- identity_request_state_ = IDENTITY_FAILED; |
- } |
- } else { |
+ LOG(LS_VERBOSE) << "DTLS-SRTP enabled; sending DTLS identity request."; |
identity_request_state_ = IDENTITY_WAITING; |
- // Do not generate the identity in the constructor since the caller has |
- // not got a chance to connect to SignalIdentityReady. |
- signaling_thread_->Post(this, MSG_GENERATE_IDENTITY, NULL); |
+ identity_store_->RequestIdentity(key_type_, |
+ identity_request_observer_.get()); |
} |
} |
@@ -310,11 +299,6 @@ void WebRtcSessionDescriptionFactory::OnMessage(rtc::Message* msg) { |
delete param; |
break; |
} |
- case MSG_GENERATE_IDENTITY: { |
- LOG(LS_INFO) << "Generating identity."; |
- SetIdentity(rtc::SSLIdentity::Generate(DtlsIdentityStore::kIdentityName)); |
- break; |
- } |
default: |
ASSERT(false); |
break; |