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

Side by Side Diff: chrome/browser/extensions/api/cast_channel/cast_auth_util_nss.cc

Issue 287733003: Avoid invoking copy constructor at chrome startup (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "chrome/browser/extensions/api/cast_channel/cast_auth_util.h" 5 #include "chrome/browser/extensions/api/cast_channel/cast_auth_util.h"
6 6
7 #include <cert.h> 7 #include <cert.h>
8 #include <cryptohi.h> 8 #include <cryptohi.h>
9 #include <pk11pub.h> 9 #include <pk11pub.h>
10 #include <seccomon.h> 10 #include <seccomon.h>
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 0x26,0x4C,0xD4,0xD3,0xFD,0x50,0xE1,0x34,0xE9,0x4C,0x81,0x58, 136 0x26,0x4C,0xD4,0xD3,0xFD,0x50,0xE1,0x34,0xE9,0x4C,0x81,0x58,
137 0x30,0xB2,0xC7,0x7A,0xDD,0x81,0x89,0xA6,0xD4,0x3A,0x38,0x84, 137 0x30,0xB2,0xC7,0x7A,0xDD,0x81,0x89,0xA6,0xD4,0x3A,0x38,0x84,
138 0x03,0xB7,0x34,0x9E,0x77,0x3F,0xFF,0x78,0x07,0x5B,0x99,0xC1, 138 0x03,0xB7,0x34,0x9E,0x77,0x3F,0xFF,0x78,0x07,0x5B,0x99,0xC1,
139 0xB2,0x1F,0x35,0x56,0x6E,0x3A,0x3C,0x0C,0x25,0xE1,0x57,0xF6, 139 0xB2,0x1F,0x35,0x56,0x6E,0x3A,0x3C,0x0C,0x25,0xE1,0x57,0xF6,
140 0x8A,0x7E,0x49,0xC0,0xCC,0x83,0x11,0x35,0xE7,0x91,0x6D,0x2E, 140 0x8A,0x7E,0x49,0xC0,0xCC,0x83,0x11,0x35,0xE7,0x91,0x6D,0x2E,
141 0x65,0x02,0x03,0x01,0x00,0x01 141 0x65,0x02,0x03,0x01,0x00,0x01
142 }; 142 };
143 143
144 // Info for trusted ICA certs. 144 // Info for trusted ICA certs.
145 struct ICACertInfo { 145 struct ICACertInfo {
146 net::SHA1HashValue fingerprint; 146 const net::SHA1HashValue* fingerprint;
147 SECItem public_key; 147 SECItem public_key;
148 }; 148 };
149 149
150 // List of allowed / trusted ICAs. 150 // List of allowed / trusted ICAs.
151 static const ICACertInfo kAllowedICAs[] = { 151 static const ICACertInfo kAllowedICAs[] = {
152 { kFingerprintICA1, 152 { &kFingerprintICA1,
153 { siDERCertBuffer, 153 { siDERCertBuffer,
154 const_cast<unsigned char*>(kPublicKeyICA1), 154 const_cast<unsigned char*>(kPublicKeyICA1),
155 sizeof(kPublicKeyICA1) } }, 155 sizeof(kPublicKeyICA1) } },
156 { kFingerprintICA2, 156 { &kFingerprintICA2,
157 { siDERCertBuffer, 157 { siDERCertBuffer,
158 const_cast<unsigned char*>(kPublicKeyICA2), 158 const_cast<unsigned char*>(kPublicKeyICA2),
159 sizeof(kPublicKeyICA2) } }, 159 sizeof(kPublicKeyICA2) } },
160 { kFingerprintICA3, 160 { &kFingerprintICA3,
161 { siDERCertBuffer, 161 { siDERCertBuffer,
162 const_cast<unsigned char*>(kPublicKeyICA3), 162 const_cast<unsigned char*>(kPublicKeyICA3),
163 sizeof(kPublicKeyICA3) } }, 163 sizeof(kPublicKeyICA3) } },
164 { kFingerprintICA4, 164 { &kFingerprintICA4,
165 { siDERCertBuffer, 165 { siDERCertBuffer,
166 const_cast<unsigned char*>(kPublicKeyICA4), 166 const_cast<unsigned char*>(kPublicKeyICA4),
167 sizeof(kPublicKeyICA4) } }, 167 sizeof(kPublicKeyICA4) } },
168 }; 168 };
169 169
170 typedef scoped_ptr< 170 typedef scoped_ptr<
171 CERTCertificate, 171 CERTCertificate,
172 crypto::NSSDestroyer<CERTCertificate, CERT_DestroyCertificate> > 172 crypto::NSSDestroyer<CERTCertificate, CERT_DestroyCertificate> >
173 ScopedCERTCertificate; 173 ScopedCERTCertificate;
174 174
175 // Returns the index of the ICA whose fingerprint matches |fingerprint|. 175 // Returns the index of the ICA whose fingerprint matches |fingerprint|.
176 // Returns -1, if no such ICA is found. 176 // Returns -1, if no such ICA is found.
177 static int GetICAWithFingerprint(const net::SHA1HashValue& fingerprint) { 177 static int GetICAWithFingerprint(const net::SHA1HashValue& fingerprint) {
178 for (size_t i = 0; i < arraysize(kAllowedICAs); ++i) { 178 for (size_t i = 0; i < arraysize(kAllowedICAs); ++i) {
179 if (fingerprint.Equals(kAllowedICAs[i].fingerprint)) 179 if (kAllowedICAs[i].fingerprint->Equals(fingerprint))
180 return static_cast<int>(i); 180 return static_cast<int>(i);
181 } 181 }
182 return -1; 182 return -1;
183 } 183 }
184 184
185 // Parses out DeviceAuthMessage from CastMessage 185 // Parses out DeviceAuthMessage from CastMessage
186 static bool ParseAuthMessage( 186 static bool ParseAuthMessage(
187 const extensions::api::cast_channel::CastMessage& challenge_reply, 187 const extensions::api::cast_channel::CastMessage& challenge_reply,
188 extensions::api::cast_channel::DeviceAuthMessage* auth_message) { 188 extensions::api::cast_channel::DeviceAuthMessage* auth_message) {
189 if (challenge_reply.payload_type() != 189 if (challenge_reply.payload_type() !=
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 if (!ParseAuthMessage(challenge_reply, &auth_message)) 316 if (!ParseAuthMessage(challenge_reply, &auth_message))
317 return false; 317 return false;
318 318
319 const AuthResponse& response = auth_message.response(); 319 const AuthResponse& response = auth_message.response();
320 return VerifyCredentials(response, peer_cert); 320 return VerifyCredentials(response, peer_cert);
321 } 321 }
322 322
323 } // namespace cast_channel 323 } // namespace cast_channel
324 } // namespace api 324 } // namespace api
325 } // namespace extensions 325 } // namespace extensions
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698