OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "content/child/webcrypto/platform_crypto.h" | 5 #include "content/child/webcrypto/platform_crypto.h" |
6 | 6 |
7 #include <cryptohi.h> | 7 #include <cryptohi.h> |
8 #include <pk11pub.h> | 8 #include <pk11pub.h> |
9 #include <secerr.h> | 9 #include <secerr.h> |
10 #include <sechash.h> | 10 #include <sechash.h> |
(...skipping 1263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1274 return AesGcmEncryptDecrypt( | 1274 return AesGcmEncryptDecrypt( |
1275 mode, key, data, iv, additional_data, tag_length_bits, buffer); | 1275 mode, key, data, iv, additional_data, tag_length_bits, buffer); |
1276 } | 1276 } |
1277 | 1277 |
1278 // ----------------------------------- | 1278 // ----------------------------------- |
1279 // Key generation | 1279 // Key generation |
1280 // ----------------------------------- | 1280 // ----------------------------------- |
1281 | 1281 |
1282 Status GenerateRsaKeyPair(const blink::WebCryptoAlgorithm& algorithm, | 1282 Status GenerateRsaKeyPair(const blink::WebCryptoAlgorithm& algorithm, |
1283 bool extractable, | 1283 bool extractable, |
1284 blink::WebCryptoKeyUsageMask usage_mask, | 1284 blink::WebCryptoKeyUsageMask public_key_usage_mask, |
| 1285 blink::WebCryptoKeyUsageMask private_key_usage_mask, |
1285 unsigned int modulus_length_bits, | 1286 unsigned int modulus_length_bits, |
1286 const CryptoData& public_exponent, | 1287 const CryptoData& public_exponent, |
1287 const blink::WebCryptoAlgorithm& hash_or_null, | 1288 const blink::WebCryptoAlgorithm& hash_or_null, |
1288 blink::WebCryptoKey* public_key, | 1289 blink::WebCryptoKey* public_key, |
1289 blink::WebCryptoKey* private_key) { | 1290 blink::WebCryptoKey* private_key) { |
1290 crypto::ScopedPK11Slot slot(PK11_GetInternalKeySlot()); | 1291 crypto::ScopedPK11Slot slot(PK11_GetInternalKeySlot()); |
1291 if (!slot) | 1292 if (!slot) |
1292 return Status::OperationError(); | 1293 return Status::OperationError(); |
1293 | 1294 |
1294 unsigned long public_exponent_long; | 1295 unsigned long public_exponent_long; |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1354 scoped_ptr<PrivateKey> private_key_handle; | 1355 scoped_ptr<PrivateKey> private_key_handle; |
1355 status = PrivateKey::Create( | 1356 status = PrivateKey::Create( |
1356 scoped_sec_private_key.Pass(), key_algorithm, &private_key_handle); | 1357 scoped_sec_private_key.Pass(), key_algorithm, &private_key_handle); |
1357 if (status.IsError()) | 1358 if (status.IsError()) |
1358 return status; | 1359 return status; |
1359 | 1360 |
1360 *public_key = blink::WebCryptoKey::create(public_key_handle.release(), | 1361 *public_key = blink::WebCryptoKey::create(public_key_handle.release(), |
1361 blink::WebCryptoKeyTypePublic, | 1362 blink::WebCryptoKeyTypePublic, |
1362 true, | 1363 true, |
1363 key_algorithm, | 1364 key_algorithm, |
1364 usage_mask); | 1365 public_key_usage_mask); |
1365 *private_key = blink::WebCryptoKey::create(private_key_handle.release(), | 1366 *private_key = blink::WebCryptoKey::create(private_key_handle.release(), |
1366 blink::WebCryptoKeyTypePrivate, | 1367 blink::WebCryptoKeyTypePrivate, |
1367 extractable, | 1368 extractable, |
1368 key_algorithm, | 1369 key_algorithm, |
1369 usage_mask); | 1370 private_key_usage_mask); |
1370 | 1371 |
1371 return Status::Success(); | 1372 return Status::Success(); |
1372 } | 1373 } |
1373 | 1374 |
1374 void Init() { | 1375 void Init() { |
1375 crypto::EnsureNSSInit(); | 1376 crypto::EnsureNSSInit(); |
1376 } | 1377 } |
1377 | 1378 |
1378 Status DigestSha(blink::WebCryptoAlgorithmId algorithm, | 1379 Status DigestSha(blink::WebCryptoAlgorithmId algorithm, |
1379 const CryptoData& data, | 1380 const CryptoData& data, |
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1675 key_algorithm, | 1676 key_algorithm, |
1676 usage_mask); | 1677 usage_mask); |
1677 return Status::Success(); | 1678 return Status::Success(); |
1678 } | 1679 } |
1679 | 1680 |
1680 } // namespace platform | 1681 } // namespace platform |
1681 | 1682 |
1682 } // namespace webcrypto | 1683 } // namespace webcrypto |
1683 | 1684 |
1684 } // namespace content | 1685 } // namespace content |
OLD | NEW |