OLD | NEW |
1 // Copyright (c) 2011 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 "crypto/rsa_private_key.h" | 5 #include "crypto/rsa_private_key.h" |
6 | 6 |
7 #include <cryptohi.h> | 7 #include <cryptohi.h> |
8 #include <keyhi.h> | 8 #include <keyhi.h> |
9 #include <pk11pub.h> | 9 #include <pk11pub.h> |
10 #include <secmod.h> | 10 #include <secmod.h> |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 EnsureNSSInit(); | 97 EnsureNSSInit(); |
98 | 98 |
99 ScopedPK11Slot slot(PK11_GetInternalSlot()); | 99 ScopedPK11Slot slot(PK11_GetInternalSlot()); |
100 return CreateFromPrivateKeyInfoWithParams( | 100 return CreateFromPrivateKeyInfoWithParams( |
101 slot.get(), | 101 slot.get(), |
102 input, | 102 input, |
103 false /* not permanent */, | 103 false /* not permanent */, |
104 false /* not sensitive */); | 104 false /* not sensitive */); |
105 } | 105 } |
106 | 106 |
| 107 // static |
| 108 RSAPrivateKey* RSAPrivateKey::CreateFromKey(SECKEYPrivateKey* key) { |
| 109 DCHECK(key); |
| 110 if (SECKEY_GetPrivateKeyType(key) != rsaKey) |
| 111 return NULL; |
| 112 RSAPrivateKey* copy = new RSAPrivateKey(); |
| 113 copy->key_ = SECKEY_CopyPrivateKey(key); |
| 114 copy->public_key_ = SECKEY_ConvertToPublicKey(key); |
| 115 if (!copy->key_ || !copy->public_key_) { |
| 116 NOTREACHED(); |
| 117 delete copy; |
| 118 return NULL; |
| 119 } |
| 120 return copy; |
| 121 } |
| 122 |
107 #if defined(USE_NSS_CERTS) | 123 #if defined(USE_NSS_CERTS) |
108 // static | 124 // static |
109 RSAPrivateKey* RSAPrivateKey::CreateSensitive(PK11SlotInfo* slot, | 125 RSAPrivateKey* RSAPrivateKey::CreateSensitive(PK11SlotInfo* slot, |
110 uint16 num_bits) { | 126 uint16 num_bits) { |
111 return CreateWithParams(slot, | 127 return CreateWithParams(slot, |
112 num_bits, | 128 num_bits, |
113 true /* permanent */, | 129 true /* permanent */, |
114 true /* sensitive */); | 130 true /* sensitive */); |
115 } | 131 } |
116 | 132 |
117 // static | 133 // static |
118 RSAPrivateKey* RSAPrivateKey::CreateSensitiveFromPrivateKeyInfo( | 134 RSAPrivateKey* RSAPrivateKey::CreateSensitiveFromPrivateKeyInfo( |
119 PK11SlotInfo* slot, | 135 PK11SlotInfo* slot, |
120 const std::vector<uint8>& input) { | 136 const std::vector<uint8>& input) { |
121 return CreateFromPrivateKeyInfoWithParams(slot, | 137 return CreateFromPrivateKeyInfoWithParams(slot, |
122 input, | 138 input, |
123 true /* permanent */, | 139 true /* permanent */, |
124 true /* sensitive */); | 140 true /* sensitive */); |
125 } | 141 } |
126 | 142 |
127 // static | 143 // static |
128 RSAPrivateKey* RSAPrivateKey::CreateFromKey(SECKEYPrivateKey* key) { | |
129 DCHECK(key); | |
130 if (SECKEY_GetPrivateKeyType(key) != rsaKey) | |
131 return NULL; | |
132 RSAPrivateKey* copy = new RSAPrivateKey(); | |
133 copy->key_ = SECKEY_CopyPrivateKey(key); | |
134 copy->public_key_ = SECKEY_ConvertToPublicKey(key); | |
135 if (!copy->key_ || !copy->public_key_) { | |
136 NOTREACHED(); | |
137 delete copy; | |
138 return NULL; | |
139 } | |
140 return copy; | |
141 } | |
142 | |
143 // static | |
144 RSAPrivateKey* RSAPrivateKey::FindFromPublicKeyInfo( | 144 RSAPrivateKey* RSAPrivateKey::FindFromPublicKeyInfo( |
145 const std::vector<uint8>& input) { | 145 const std::vector<uint8>& input) { |
146 scoped_ptr<RSAPrivateKey> result(InitPublicPart(input)); | 146 scoped_ptr<RSAPrivateKey> result(InitPublicPart(input)); |
147 if (!result) | 147 if (!result) |
148 return NULL; | 148 return NULL; |
149 | 149 |
150 ScopedSECItem ck_id( | 150 ScopedSECItem ck_id( |
151 PK11_MakeIDFromPubKey(&(result->public_key_->u.rsa.modulus))); | 151 PK11_MakeIDFromPubKey(&(result->public_key_->u.rsa.modulus))); |
152 if (!ck_id.get()) { | 152 if (!ck_id.get()) { |
153 NOTREACHED(); | 153 NOTREACHED(); |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
323 if (!result->public_key_) { | 323 if (!result->public_key_) { |
324 NOTREACHED(); | 324 NOTREACHED(); |
325 return NULL; | 325 return NULL; |
326 } | 326 } |
327 | 327 |
328 return result.release(); | 328 return result.release(); |
329 } | 329 } |
330 #endif // defined(USE_NSS_CERTS) | 330 #endif // defined(USE_NSS_CERTS) |
331 | 331 |
332 } // namespace crypto | 332 } // namespace crypto |
OLD | NEW |