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

Side by Side Diff: webrtc/p2p/base/transportdescriptionfactory.cc

Issue 1311903004: Replacing SSLIdentity* with scoped_refptr<RTCCertificate> in TransportDescriptionFactory layer (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: 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 * Copyright 2012 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2012 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #include "webrtc/p2p/base/transportdescriptionfactory.h" 11 #include "webrtc/p2p/base/transportdescriptionfactory.h"
12 12
13 #include "webrtc/p2p/base/transportdescription.h" 13 #include "webrtc/p2p/base/transportdescription.h"
14 #include "webrtc/base/helpers.h" 14 #include "webrtc/base/helpers.h"
15 #include "webrtc/base/logging.h" 15 #include "webrtc/base/logging.h"
16 #include "webrtc/base/messagedigest.h" 16 #include "webrtc/base/messagedigest.h"
17 #include "webrtc/base/scoped_ptr.h" 17 #include "webrtc/base/scoped_ptr.h"
18 #include "webrtc/base/sslfingerprint.h" 18 #include "webrtc/base/sslfingerprint.h"
19 19
20 namespace cricket { 20 namespace cricket {
21 21
22 TransportDescriptionFactory::TransportDescriptionFactory() 22 TransportDescriptionFactory::TransportDescriptionFactory()
23 : secure_(SEC_DISABLED), 23 : secure_(SEC_DISABLED) {
24 identity_(NULL) {
25 } 24 }
26 25
27 TransportDescription* TransportDescriptionFactory::CreateOffer( 26 TransportDescription* TransportDescriptionFactory::CreateOffer(
28 const TransportOptions& options, 27 const TransportOptions& options,
29 const TransportDescription* current_description) const { 28 const TransportDescription* current_description) const {
30 rtc::scoped_ptr<TransportDescription> desc(new TransportDescription()); 29 rtc::scoped_ptr<TransportDescription> desc(new TransportDescription());
31 30
32 // Generate the ICE credentials if we don't already have them. 31 // Generate the ICE credentials if we don't already have them.
33 if (!current_description || options.ice_restart) { 32 if (!current_description || options.ice_restart) {
34 desc->ice_ufrag = rtc::CreateRandomString(ICE_UFRAG_LENGTH); 33 desc->ice_ufrag = rtc::CreateRandomString(ICE_UFRAG_LENGTH);
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 LOG(LS_WARNING) << "Failed to create TransportDescription answer " 89 LOG(LS_WARNING) << "Failed to create TransportDescription answer "
91 "because of incompatible security settings"; 90 "because of incompatible security settings";
92 return NULL; 91 return NULL;
93 } 92 }
94 93
95 return desc.release(); 94 return desc.release();
96 } 95 }
97 96
98 bool TransportDescriptionFactory::SetSecurityInfo( 97 bool TransportDescriptionFactory::SetSecurityInfo(
99 TransportDescription* desc, ConnectionRole role) const { 98 TransportDescription* desc, ConnectionRole role) const {
100 if (!identity_) { 99 if (!certificate_) {
101 LOG(LS_ERROR) << "Cannot create identity digest with no identity"; 100 LOG(LS_ERROR) << "Cannot create identity digest with no certificate";
102 return false; 101 return false;
103 } 102 }
104 103
105 // This digest algorithm is used to produce the a=fingerprint lines in SDP. 104 // This digest algorithm is used to produce the a=fingerprint lines in SDP.
106 // RFC 4572 Section 5 requires that those lines use the same hash function as 105 // RFC 4572 Section 5 requires that those lines use the same hash function as
107 // the certificate's signature. 106 // the certificate's signature.
108 std::string digest_alg; 107 std::string digest_alg;
109 if (!identity_->certificate().GetSignatureDigestAlgorithm(&digest_alg)) { 108 if (!certificate_->ssl_certificate().GetSignatureDigestAlgorithm(
109 &digest_alg)) {
110 LOG(LS_ERROR) << "Failed to retrieve the certificate's digest algorithm"; 110 LOG(LS_ERROR) << "Failed to retrieve the certificate's digest algorithm";
111 return false; 111 return false;
112 } 112 }
113 113
114 desc->identity_fingerprint.reset( 114 desc->identity_fingerprint.reset(
115 rtc::SSLFingerprint::Create(digest_alg, identity_)); 115 rtc::SSLFingerprint::Create(digest_alg, certificate_->identity()));
116 if (!desc->identity_fingerprint.get()) { 116 if (!desc->identity_fingerprint.get()) {
117 LOG(LS_ERROR) << "Failed to create identity fingerprint, alg=" 117 LOG(LS_ERROR) << "Failed to create identity fingerprint, alg="
118 << digest_alg; 118 << digest_alg;
119 return false; 119 return false;
120 } 120 }
121 121
122 // Assign security role. 122 // Assign security role.
123 desc->connection_role = role; 123 desc->connection_role = role;
124 return true; 124 return true;
125 } 125 }
126 126
127 } // namespace cricket 127 } // namespace cricket
OLDNEW
« no previous file with comments | « webrtc/p2p/base/transportdescriptionfactory.h ('k') | webrtc/p2p/base/transportdescriptionfactory_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698