| Index: net/base/keygen_handler_win.cc
|
| diff --git a/net/base/keygen_handler_win.cc b/net/base/keygen_handler_win.cc
|
| index f97ada76423ea10191f4236110377f2db4f29d14..d2e1fd3d6841cab5034d54dd35e568dd77d57253 100644
|
| --- a/net/base/keygen_handler_win.cc
|
| +++ b/net/base/keygen_handler_win.cc
|
| @@ -23,7 +23,6 @@
|
| #include "crypto/capi_util.h"
|
| #include "crypto/scoped_capi_types.h"
|
|
|
| -
|
| namespace net {
|
|
|
| // Assigns the contents of a CERT_PUBLIC_KEY_INFO structure for the signing
|
| @@ -35,9 +34,14 @@ bool GetSubjectPublicKeyInfo(HCRYPTPROV prov, std::vector<BYTE>* output) {
|
| // From the private key stored in HCRYPTPROV, obtain the public key, stored
|
| // as a CERT_PUBLIC_KEY_INFO structure. Currently, only RSA public keys are
|
| // supported.
|
| - ok = CryptExportPublicKeyInfoEx(prov, AT_KEYEXCHANGE, X509_ASN_ENCODING,
|
| - const_cast<char*>(szOID_RSA_RSA), 0, NULL,
|
| - NULL, &size);
|
| + ok = CryptExportPublicKeyInfoEx(prov,
|
| + AT_KEYEXCHANGE,
|
| + X509_ASN_ENCODING,
|
| + const_cast<char*>(szOID_RSA_RSA),
|
| + 0,
|
| + NULL,
|
| + NULL,
|
| + &size);
|
| DCHECK(ok);
|
| if (!ok)
|
| return false;
|
| @@ -46,9 +50,14 @@ bool GetSubjectPublicKeyInfo(HCRYPTPROV prov, std::vector<BYTE>* output) {
|
|
|
| PCERT_PUBLIC_KEY_INFO public_key_casted =
|
| reinterpret_cast<PCERT_PUBLIC_KEY_INFO>(&(*output)[0]);
|
| - ok = CryptExportPublicKeyInfoEx(prov, AT_KEYEXCHANGE, X509_ASN_ENCODING,
|
| - const_cast<char*>(szOID_RSA_RSA), 0, NULL,
|
| - public_key_casted, &size);
|
| + ok = CryptExportPublicKeyInfoEx(prov,
|
| + AT_KEYEXCHANGE,
|
| + X509_ASN_ENCODING,
|
| + const_cast<char*>(szOID_RSA_RSA),
|
| + 0,
|
| + NULL,
|
| + public_key_casted,
|
| + &size);
|
| DCHECK(ok);
|
| if (!ok)
|
| return false;
|
| @@ -88,19 +97,29 @@ bool GetSignedPublicKeyAndChallenge(HCRYPTPROV prov,
|
| BOOL ok;
|
| DWORD size = 0;
|
| std::vector<BYTE> signed_pkac;
|
| - ok = CryptSignAndEncodeCertificate(prov, AT_KEYEXCHANGE, X509_ASN_ENCODING,
|
| + ok = CryptSignAndEncodeCertificate(prov,
|
| + AT_KEYEXCHANGE,
|
| + X509_ASN_ENCODING,
|
| X509_KEYGEN_REQUEST_TO_BE_SIGNED,
|
| - &pkac, &sig_alg, NULL,
|
| - NULL, &size);
|
| + &pkac,
|
| + &sig_alg,
|
| + NULL,
|
| + NULL,
|
| + &size);
|
| DCHECK(ok);
|
| if (!ok)
|
| return false;
|
|
|
| signed_pkac.resize(size);
|
| - ok = CryptSignAndEncodeCertificate(prov, AT_KEYEXCHANGE, X509_ASN_ENCODING,
|
| + ok = CryptSignAndEncodeCertificate(prov,
|
| + AT_KEYEXCHANGE,
|
| + X509_ASN_ENCODING,
|
| X509_KEYGEN_REQUEST_TO_BE_SIGNED,
|
| - &pkac, &sig_alg, NULL,
|
| - &signed_pkac[0], &size);
|
| + &pkac,
|
| + &sig_alg,
|
| + NULL,
|
| + &signed_pkac[0],
|
| + &size);
|
| DCHECK(ok);
|
| if (!ok)
|
| return false;
|
| @@ -115,7 +134,7 @@ std::wstring GetNewKeyContainerId() {
|
| RPC_STATUS status = RPC_S_OK;
|
| std::wstring result;
|
|
|
| - UUID id = { 0 };
|
| + UUID id = {0};
|
| status = UuidCreateSequential(&id);
|
| if (status != RPC_S_OK && status != RPC_S_UUID_LOCAL_ONLY)
|
| return result;
|
| @@ -137,16 +156,18 @@ std::wstring GetNewKeyContainerId() {
|
| // the associated provider.
|
| struct KeyContainer {
|
| public:
|
| - explicit KeyContainer(bool delete_keyset)
|
| - : delete_keyset_(delete_keyset) {}
|
| + explicit KeyContainer(bool delete_keyset) : delete_keyset_(delete_keyset) {}
|
|
|
| ~KeyContainer() {
|
| if (provider_) {
|
| provider_.reset();
|
| if (delete_keyset_ && !key_id_.empty()) {
|
| HCRYPTPROV provider;
|
| - crypto::CryptAcquireContextLocked(&provider, key_id_.c_str(), NULL,
|
| - PROV_RSA_FULL, CRYPT_SILENT | CRYPT_DELETEKEYSET);
|
| + crypto::CryptAcquireContextLocked(&provider,
|
| + key_id_.c_str(),
|
| + NULL,
|
| + PROV_RSA_FULL,
|
| + CRYPT_SILENT | CRYPT_DELETEKEYSET);
|
| }
|
| }
|
| }
|
| @@ -179,8 +200,10 @@ std::string KeygenHandler::GenKeyAndSignChallenge() {
|
| // Only create new key containers, so that existing key containers are not
|
| // overwritten.
|
| if (crypto::CryptAcquireContextLocked(key_container.provider_.receive(),
|
| - key_container.key_id_.c_str(), NULL, PROV_RSA_FULL,
|
| - CRYPT_SILENT | CRYPT_NEWKEYSET))
|
| + key_container.key_id_.c_str(),
|
| + NULL,
|
| + PROV_RSA_FULL,
|
| + CRYPT_SILENT | CRYPT_NEWKEYSET))
|
| break;
|
|
|
| if (GetLastError() != NTE_BAD_KEYSET) {
|
| @@ -197,15 +220,17 @@ std::string KeygenHandler::GenKeyAndSignChallenge() {
|
|
|
| {
|
| crypto::ScopedHCRYPTKEY key;
|
| - if (!CryptGenKey(key_container.provider_, CALG_RSA_KEYX,
|
| - (key_size_in_bits_ << 16) | CRYPT_EXPORTABLE, key.receive())) {
|
| + if (!CryptGenKey(key_container.provider_,
|
| + CALG_RSA_KEYX,
|
| + (key_size_in_bits_ << 16) | CRYPT_EXPORTABLE,
|
| + key.receive())) {
|
| LOG(ERROR) << "Keygen failed: Couldn't generate an RSA key";
|
| return std::string();
|
| }
|
|
|
| std::string spkac;
|
| - if (!GetSignedPublicKeyAndChallenge(key_container.provider_, challenge_,
|
| - &spkac)) {
|
| + if (!GetSignedPublicKeyAndChallenge(
|
| + key_container.provider_, challenge_, &spkac)) {
|
| LOG(ERROR) << "Keygen failed: Couldn't generate the signed public key "
|
| "and challenge";
|
| return std::string();
|
|
|