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

Side by Side Diff: base/crypto/symmetric_key_nss.cc

Issue 6683060: Private API for extensions like ssh-client that need access to TCP. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sigh-nedness Created 9 years, 9 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
OLDNEW
1 // Copyright (c) 2010 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 "base/crypto/symmetric_key.h" 5 #include "base/crypto/symmetric_key.h"
6 6
7 #include <nss.h> 7 #include <nss.h>
8 #include <pk11pub.h> 8 #include <pk11pub.h>
9 9
10 #include "base/nss_util.h" 10 #include "base/nss_util.h"
11 #include "base/logging.h" 11 #include "base/logging.h"
12 12
13 namespace base { 13 namespace base {
14 14
15 SymmetricKey::~SymmetricKey() {} 15 SymmetricKey::~SymmetricKey() {}
16 16
17 // static 17 // static
18 bool SymmetricKey::GenerateRandomBytes(size_t num_bytes, uint8* out) {
19 return num_bytes == 0 ||
20 (out == NULL && PK11_GenerateRandom(out, num_bytes) == SECSuccess);
21 }
22
23 // static
18 SymmetricKey* SymmetricKey::GenerateRandomKey(Algorithm algorithm, 24 SymmetricKey* SymmetricKey::GenerateRandomKey(Algorithm algorithm,
19 size_t key_size_in_bits) { 25 size_t key_size_in_bits) {
20 DCHECK_EQ(AES, algorithm); 26 DCHECK_EQ(AES, algorithm);
21 27
22 EnsureNSSInit(); 28 EnsureNSSInit();
23 if (key_size_in_bits == 0) 29 if (key_size_in_bits == 0)
24 return NULL; 30 return NULL;
25 31
26 ScopedPK11Slot slot(PK11_GetBestSlot(CKM_AES_KEY_GEN, NULL)); 32 ScopedPK11Slot slot(PK11_GetBestSlot(CKM_AES_KEY_GEN, NULL));
27 if (!slot.get()) 33 if (!slot.get())
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 124
119 raw_key->assign(reinterpret_cast<char*>(key_item->data), key_item->len); 125 raw_key->assign(reinterpret_cast<char*>(key_item->data), key_item->len);
120 return true; 126 return true;
121 } 127 }
122 128
123 SymmetricKey::SymmetricKey(PK11SymKey* key) : key_(key) { 129 SymmetricKey::SymmetricKey(PK11SymKey* key) : key_(key) {
124 DCHECK(key); 130 DCHECK(key);
125 } 131 }
126 132
127 } // namespace base 133 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698