| 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 "chrome/browser/extensions/api/enterprise_platform_keys/enterprise_plat
form_keys_api.h" | 5 #include "chrome/browser/extensions/api/enterprise_platform_keys/enterprise_plat
form_keys_api.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/values.h" | 10 #include "base/values.h" |
| (...skipping 29 matching lines...) Expand all Loading... |
| 40 } | 40 } |
| 41 | 41 |
| 42 } // namespace | 42 } // namespace |
| 43 | 43 |
| 44 EnterprisePlatformKeysInternalGenerateKeyFunction:: | 44 EnterprisePlatformKeysInternalGenerateKeyFunction:: |
| 45 ~EnterprisePlatformKeysInternalGenerateKeyFunction() { | 45 ~EnterprisePlatformKeysInternalGenerateKeyFunction() { |
| 46 } | 46 } |
| 47 | 47 |
| 48 ExtensionFunction::ResponseAction | 48 ExtensionFunction::ResponseAction |
| 49 EnterprisePlatformKeysInternalGenerateKeyFunction::Run() { | 49 EnterprisePlatformKeysInternalGenerateKeyFunction::Run() { |
| 50 scoped_ptr<api_epki::GenerateKey::Params> params( | 50 std::unique_ptr<api_epki::GenerateKey::Params> params( |
| 51 api_epki::GenerateKey::Params::Create(*args_)); | 51 api_epki::GenerateKey::Params::Create(*args_)); |
| 52 // TODO(pneubeck): Add support for unsigned integers to IDL. | 52 // TODO(pneubeck): Add support for unsigned integers to IDL. |
| 53 EXTENSION_FUNCTION_VALIDATE(params && params->modulus_length >= 0); | 53 EXTENSION_FUNCTION_VALIDATE(params && params->modulus_length >= 0); |
| 54 std::string platform_keys_token_id; | 54 std::string platform_keys_token_id; |
| 55 if (!platform_keys::ValidateToken(params->token_id, &platform_keys_token_id)) | 55 if (!platform_keys::ValidateToken(params->token_id, &platform_keys_token_id)) |
| 56 return RespondNow(Error(platform_keys::kErrorInvalidToken)); | 56 return RespondNow(Error(platform_keys::kErrorInvalidToken)); |
| 57 | 57 |
| 58 chromeos::PlatformKeysService* service = | 58 chromeos::PlatformKeysService* service = |
| 59 chromeos::PlatformKeysServiceFactory::GetForBrowserContext( | 59 chromeos::PlatformKeysServiceFactory::GetForBrowserContext( |
| 60 browser_context()); | 60 browser_context()); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 81 Respond(Error(error_message)); | 81 Respond(Error(error_message)); |
| 82 } | 82 } |
| 83 } | 83 } |
| 84 | 84 |
| 85 EnterprisePlatformKeysGetCertificatesFunction:: | 85 EnterprisePlatformKeysGetCertificatesFunction:: |
| 86 ~EnterprisePlatformKeysGetCertificatesFunction() { | 86 ~EnterprisePlatformKeysGetCertificatesFunction() { |
| 87 } | 87 } |
| 88 | 88 |
| 89 ExtensionFunction::ResponseAction | 89 ExtensionFunction::ResponseAction |
| 90 EnterprisePlatformKeysGetCertificatesFunction::Run() { | 90 EnterprisePlatformKeysGetCertificatesFunction::Run() { |
| 91 scoped_ptr<api_epk::GetCertificates::Params> params( | 91 std::unique_ptr<api_epk::GetCertificates::Params> params( |
| 92 api_epk::GetCertificates::Params::Create(*args_)); | 92 api_epk::GetCertificates::Params::Create(*args_)); |
| 93 EXTENSION_FUNCTION_VALIDATE(params); | 93 EXTENSION_FUNCTION_VALIDATE(params); |
| 94 std::string platform_keys_token_id; | 94 std::string platform_keys_token_id; |
| 95 if (!platform_keys::ValidateToken(params->token_id, &platform_keys_token_id)) | 95 if (!platform_keys::ValidateToken(params->token_id, &platform_keys_token_id)) |
| 96 return RespondNow(Error(platform_keys::kErrorInvalidToken)); | 96 return RespondNow(Error(platform_keys::kErrorInvalidToken)); |
| 97 | 97 |
| 98 chromeos::platform_keys::GetCertificates( | 98 chromeos::platform_keys::GetCertificates( |
| 99 platform_keys_token_id, | 99 platform_keys_token_id, |
| 100 base::Bind( | 100 base::Bind( |
| 101 &EnterprisePlatformKeysGetCertificatesFunction::OnGotCertificates, | 101 &EnterprisePlatformKeysGetCertificatesFunction::OnGotCertificates, |
| 102 this), | 102 this), |
| 103 browser_context()); | 103 browser_context()); |
| 104 return RespondLater(); | 104 return RespondLater(); |
| 105 } | 105 } |
| 106 | 106 |
| 107 void EnterprisePlatformKeysGetCertificatesFunction::OnGotCertificates( | 107 void EnterprisePlatformKeysGetCertificatesFunction::OnGotCertificates( |
| 108 scoped_ptr<net::CertificateList> certs, | 108 std::unique_ptr<net::CertificateList> certs, |
| 109 const std::string& error_message) { | 109 const std::string& error_message) { |
| 110 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 110 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 111 if (!error_message.empty()) { | 111 if (!error_message.empty()) { |
| 112 Respond(Error(error_message)); | 112 Respond(Error(error_message)); |
| 113 return; | 113 return; |
| 114 } | 114 } |
| 115 | 115 |
| 116 scoped_ptr<base::ListValue> client_certs(new base::ListValue()); | 116 std::unique_ptr<base::ListValue> client_certs(new base::ListValue()); |
| 117 for (net::CertificateList::const_iterator it = certs->begin(); | 117 for (net::CertificateList::const_iterator it = certs->begin(); |
| 118 it != certs->end(); | 118 it != certs->end(); |
| 119 ++it) { | 119 ++it) { |
| 120 std::string der_encoding; | 120 std::string der_encoding; |
| 121 net::X509Certificate::GetDEREncoded((*it)->os_cert_handle(), &der_encoding); | 121 net::X509Certificate::GetDEREncoded((*it)->os_cert_handle(), &der_encoding); |
| 122 client_certs->Append(base::BinaryValue::CreateWithCopiedBuffer( | 122 client_certs->Append(base::BinaryValue::CreateWithCopiedBuffer( |
| 123 der_encoding.data(), der_encoding.size())); | 123 der_encoding.data(), der_encoding.size())); |
| 124 } | 124 } |
| 125 | 125 |
| 126 scoped_ptr<base::ListValue> results(new base::ListValue()); | 126 std::unique_ptr<base::ListValue> results(new base::ListValue()); |
| 127 results->Append(client_certs.release()); | 127 results->Append(client_certs.release()); |
| 128 Respond(ArgumentList(std::move(results))); | 128 Respond(ArgumentList(std::move(results))); |
| 129 } | 129 } |
| 130 | 130 |
| 131 EnterprisePlatformKeysImportCertificateFunction:: | 131 EnterprisePlatformKeysImportCertificateFunction:: |
| 132 ~EnterprisePlatformKeysImportCertificateFunction() { | 132 ~EnterprisePlatformKeysImportCertificateFunction() { |
| 133 } | 133 } |
| 134 | 134 |
| 135 ExtensionFunction::ResponseAction | 135 ExtensionFunction::ResponseAction |
| 136 EnterprisePlatformKeysImportCertificateFunction::Run() { | 136 EnterprisePlatformKeysImportCertificateFunction::Run() { |
| 137 scoped_ptr<api_epk::ImportCertificate::Params> params( | 137 std::unique_ptr<api_epk::ImportCertificate::Params> params( |
| 138 api_epk::ImportCertificate::Params::Create(*args_)); | 138 api_epk::ImportCertificate::Params::Create(*args_)); |
| 139 EXTENSION_FUNCTION_VALIDATE(params); | 139 EXTENSION_FUNCTION_VALIDATE(params); |
| 140 std::string platform_keys_token_id; | 140 std::string platform_keys_token_id; |
| 141 if (!platform_keys::ValidateToken(params->token_id, &platform_keys_token_id)) | 141 if (!platform_keys::ValidateToken(params->token_id, &platform_keys_token_id)) |
| 142 return RespondNow(Error(platform_keys::kErrorInvalidToken)); | 142 return RespondNow(Error(platform_keys::kErrorInvalidToken)); |
| 143 | 143 |
| 144 const std::vector<char>& cert_der = params->certificate; | 144 const std::vector<char>& cert_der = params->certificate; |
| 145 scoped_refptr<net::X509Certificate> cert_x509 = | 145 scoped_refptr<net::X509Certificate> cert_x509 = |
| 146 net::X509Certificate::CreateFromBytes(cert_der.data(), cert_der.size()); | 146 net::X509Certificate::CreateFromBytes(cert_der.data(), cert_der.size()); |
| 147 if (!cert_x509.get()) | 147 if (!cert_x509.get()) |
| (...skipping 17 matching lines...) Expand all Loading... |
| 165 else | 165 else |
| 166 Respond(Error(error_message)); | 166 Respond(Error(error_message)); |
| 167 } | 167 } |
| 168 | 168 |
| 169 EnterprisePlatformKeysRemoveCertificateFunction:: | 169 EnterprisePlatformKeysRemoveCertificateFunction:: |
| 170 ~EnterprisePlatformKeysRemoveCertificateFunction() { | 170 ~EnterprisePlatformKeysRemoveCertificateFunction() { |
| 171 } | 171 } |
| 172 | 172 |
| 173 ExtensionFunction::ResponseAction | 173 ExtensionFunction::ResponseAction |
| 174 EnterprisePlatformKeysRemoveCertificateFunction::Run() { | 174 EnterprisePlatformKeysRemoveCertificateFunction::Run() { |
| 175 scoped_ptr<api_epk::RemoveCertificate::Params> params( | 175 std::unique_ptr<api_epk::RemoveCertificate::Params> params( |
| 176 api_epk::RemoveCertificate::Params::Create(*args_)); | 176 api_epk::RemoveCertificate::Params::Create(*args_)); |
| 177 EXTENSION_FUNCTION_VALIDATE(params); | 177 EXTENSION_FUNCTION_VALIDATE(params); |
| 178 std::string platform_keys_token_id; | 178 std::string platform_keys_token_id; |
| 179 if (!platform_keys::ValidateToken(params->token_id, &platform_keys_token_id)) | 179 if (!platform_keys::ValidateToken(params->token_id, &platform_keys_token_id)) |
| 180 return RespondNow(Error(platform_keys::kErrorInvalidToken)); | 180 return RespondNow(Error(platform_keys::kErrorInvalidToken)); |
| 181 | 181 |
| 182 const std::vector<char>& cert_der = params->certificate; | 182 const std::vector<char>& cert_der = params->certificate; |
| 183 scoped_refptr<net::X509Certificate> cert_x509 = | 183 scoped_refptr<net::X509Certificate> cert_x509 = |
| 184 net::X509Certificate::CreateFromBytes(cert_der.data(), cert_der.size()); | 184 net::X509Certificate::CreateFromBytes(cert_der.data(), cert_der.size()); |
| 185 if (!cert_x509.get()) | 185 if (!cert_x509.get()) |
| (...skipping 27 matching lines...) Expand all Loading... |
| 213 EXTENSION_FUNCTION_VALIDATE(args_->empty()); | 213 EXTENSION_FUNCTION_VALIDATE(args_->empty()); |
| 214 | 214 |
| 215 chromeos::platform_keys::GetTokens( | 215 chromeos::platform_keys::GetTokens( |
| 216 base::Bind(&EnterprisePlatformKeysInternalGetTokensFunction::OnGotTokens, | 216 base::Bind(&EnterprisePlatformKeysInternalGetTokensFunction::OnGotTokens, |
| 217 this), | 217 this), |
| 218 browser_context()); | 218 browser_context()); |
| 219 return RespondLater(); | 219 return RespondLater(); |
| 220 } | 220 } |
| 221 | 221 |
| 222 void EnterprisePlatformKeysInternalGetTokensFunction::OnGotTokens( | 222 void EnterprisePlatformKeysInternalGetTokensFunction::OnGotTokens( |
| 223 scoped_ptr<std::vector<std::string> > platform_keys_token_ids, | 223 std::unique_ptr<std::vector<std::string>> platform_keys_token_ids, |
| 224 const std::string& error_message) { | 224 const std::string& error_message) { |
| 225 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 225 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 226 if (!error_message.empty()) { | 226 if (!error_message.empty()) { |
| 227 Respond(Error(error_message)); | 227 Respond(Error(error_message)); |
| 228 return; | 228 return; |
| 229 } | 229 } |
| 230 | 230 |
| 231 std::vector<std::string> token_ids; | 231 std::vector<std::string> token_ids; |
| 232 for (std::vector<std::string>::const_iterator it = | 232 for (std::vector<std::string>::const_iterator it = |
| 233 platform_keys_token_ids->begin(); | 233 platform_keys_token_ids->begin(); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 251 EnterprisePlatformKeysChallengeMachineKeyFunction:: | 251 EnterprisePlatformKeysChallengeMachineKeyFunction:: |
| 252 EnterprisePlatformKeysChallengeMachineKeyFunction( | 252 EnterprisePlatformKeysChallengeMachineKeyFunction( |
| 253 EPKPChallengeMachineKey* impl_for_testing) | 253 EPKPChallengeMachineKey* impl_for_testing) |
| 254 : impl_(impl_for_testing) {} | 254 : impl_(impl_for_testing) {} |
| 255 | 255 |
| 256 EnterprisePlatformKeysChallengeMachineKeyFunction:: | 256 EnterprisePlatformKeysChallengeMachineKeyFunction:: |
| 257 ~EnterprisePlatformKeysChallengeMachineKeyFunction() = default; | 257 ~EnterprisePlatformKeysChallengeMachineKeyFunction() = default; |
| 258 | 258 |
| 259 ExtensionFunction::ResponseAction | 259 ExtensionFunction::ResponseAction |
| 260 EnterprisePlatformKeysChallengeMachineKeyFunction::Run() { | 260 EnterprisePlatformKeysChallengeMachineKeyFunction::Run() { |
| 261 scoped_ptr<api_epk::ChallengeMachineKey::Params> params( | 261 std::unique_ptr<api_epk::ChallengeMachineKey::Params> params( |
| 262 api_epk::ChallengeMachineKey::Params::Create(*args_)); | 262 api_epk::ChallengeMachineKey::Params::Create(*args_)); |
| 263 EXTENSION_FUNCTION_VALIDATE(params); | 263 EXTENSION_FUNCTION_VALIDATE(params); |
| 264 ChallengeKeyCallback callback = base::Bind( | 264 ChallengeKeyCallback callback = base::Bind( |
| 265 &EnterprisePlatformKeysChallengeMachineKeyFunction::OnChallengedKey, | 265 &EnterprisePlatformKeysChallengeMachineKeyFunction::OnChallengedKey, |
| 266 this); | 266 this); |
| 267 // base::Unretained is safe on impl_ since its life-cycle matches |this| and | 267 // base::Unretained is safe on impl_ since its life-cycle matches |this| and |
| 268 // |callback| holds a reference to |this|. | 268 // |callback| holds a reference to |this|. |
| 269 base::Closure task = base::Bind( | 269 base::Closure task = base::Bind( |
| 270 &EPKPChallengeMachineKey::Run, base::Unretained(impl_), | 270 &EPKPChallengeMachineKey::Run, base::Unretained(impl_), |
| 271 scoped_refptr<UIThreadExtensionFunction>(AsUIThreadExtensionFunction()), | 271 scoped_refptr<UIThreadExtensionFunction>(AsUIThreadExtensionFunction()), |
| (...skipping 20 matching lines...) Expand all Loading... |
| 292 EnterprisePlatformKeysChallengeUserKeyFunction:: | 292 EnterprisePlatformKeysChallengeUserKeyFunction:: |
| 293 EnterprisePlatformKeysChallengeUserKeyFunction( | 293 EnterprisePlatformKeysChallengeUserKeyFunction( |
| 294 EPKPChallengeUserKey* impl_for_testing) | 294 EPKPChallengeUserKey* impl_for_testing) |
| 295 : impl_(impl_for_testing) {} | 295 : impl_(impl_for_testing) {} |
| 296 | 296 |
| 297 EnterprisePlatformKeysChallengeUserKeyFunction:: | 297 EnterprisePlatformKeysChallengeUserKeyFunction:: |
| 298 ~EnterprisePlatformKeysChallengeUserKeyFunction() = default; | 298 ~EnterprisePlatformKeysChallengeUserKeyFunction() = default; |
| 299 | 299 |
| 300 ExtensionFunction::ResponseAction | 300 ExtensionFunction::ResponseAction |
| 301 EnterprisePlatformKeysChallengeUserKeyFunction::Run() { | 301 EnterprisePlatformKeysChallengeUserKeyFunction::Run() { |
| 302 scoped_ptr<api_epk::ChallengeUserKey::Params> params( | 302 std::unique_ptr<api_epk::ChallengeUserKey::Params> params( |
| 303 api_epk::ChallengeUserKey::Params::Create(*args_)); | 303 api_epk::ChallengeUserKey::Params::Create(*args_)); |
| 304 EXTENSION_FUNCTION_VALIDATE(params); | 304 EXTENSION_FUNCTION_VALIDATE(params); |
| 305 ChallengeKeyCallback callback = base::Bind( | 305 ChallengeKeyCallback callback = base::Bind( |
| 306 &EnterprisePlatformKeysChallengeUserKeyFunction::OnChallengedKey, this); | 306 &EnterprisePlatformKeysChallengeUserKeyFunction::OnChallengedKey, this); |
| 307 // base::Unretained is safe on impl_ since its life-cycle matches |this| and | 307 // base::Unretained is safe on impl_ since its life-cycle matches |this| and |
| 308 // |callback| holds a reference to |this|. | 308 // |callback| holds a reference to |this|. |
| 309 base::Closure task = base::Bind( | 309 base::Closure task = base::Bind( |
| 310 &EPKPChallengeUserKey::Run, base::Unretained(impl_), | 310 &EPKPChallengeUserKey::Run, base::Unretained(impl_), |
| 311 scoped_refptr<UIThreadExtensionFunction>(AsUIThreadExtensionFunction()), | 311 scoped_refptr<UIThreadExtensionFunction>(AsUIThreadExtensionFunction()), |
| 312 callback, StringFromVector(params->challenge), params->register_key); | 312 callback, StringFromVector(params->challenge), params->register_key); |
| 313 content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE, task); | 313 content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE, task); |
| 314 return RespondLater(); | 314 return RespondLater(); |
| 315 } | 315 } |
| 316 | 316 |
| 317 void EnterprisePlatformKeysChallengeUserKeyFunction::OnChallengedKey( | 317 void EnterprisePlatformKeysChallengeUserKeyFunction::OnChallengedKey( |
| 318 bool success, | 318 bool success, |
| 319 const std::string& data) { | 319 const std::string& data) { |
| 320 if (success) { | 320 if (success) { |
| 321 Respond(ArgumentList( | 321 Respond(ArgumentList( |
| 322 api_epk::ChallengeUserKey::Results::Create(VectorFromString(data)))); | 322 api_epk::ChallengeUserKey::Results::Create(VectorFromString(data)))); |
| 323 } else { | 323 } else { |
| 324 Respond(Error(data)); | 324 Respond(Error(data)); |
| 325 } | 325 } |
| 326 } | 326 } |
| 327 | 327 |
| 328 } // namespace extensions | 328 } // namespace extensions |
| OLD | NEW |