| 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 "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/stl_util.h" |
| 8 #include "base/values.h" | 9 #include "base/values.h" |
| 9 #include "chrome/browser/chromeos/platform_keys/platform_keys.h" | 10 #include "chrome/browser/chromeos/platform_keys/platform_keys.h" |
| 10 #include "chrome/browser/chromeos/platform_keys/platform_keys_service.h" | 11 #include "chrome/browser/chromeos/platform_keys/platform_keys_service.h" |
| 11 #include "chrome/browser/chromeos/platform_keys/platform_keys_service_factory.h" | 12 #include "chrome/browser/chromeos/platform_keys/platform_keys_service_factory.h" |
| 12 #include "chrome/common/extensions/api/enterprise_platform_keys.h" | 13 #include "chrome/common/extensions/api/enterprise_platform_keys.h" |
| 13 #include "chrome/common/extensions/api/enterprise_platform_keys_internal.h" | 14 #include "chrome/common/extensions/api/enterprise_platform_keys_internal.h" |
| 14 #include "content/public/browser/browser_thread.h" | 15 #include "content/public/browser/browser_thread.h" |
| 15 #include "net/cert/x509_certificate.h" | 16 #include "net/cert/x509_certificate.h" |
| 16 | 17 |
| 17 namespace extensions { | 18 namespace extensions { |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 86 &EnterprisePlatformKeysInternalGenerateKeyFunction::OnGeneratedKey, | 87 &EnterprisePlatformKeysInternalGenerateKeyFunction::OnGeneratedKey, |
| 87 this)); | 88 this)); |
| 88 return RespondLater(); | 89 return RespondLater(); |
| 89 } | 90 } |
| 90 | 91 |
| 91 void EnterprisePlatformKeysInternalGenerateKeyFunction::OnGeneratedKey( | 92 void EnterprisePlatformKeysInternalGenerateKeyFunction::OnGeneratedKey( |
| 92 const std::string& public_key_der, | 93 const std::string& public_key_der, |
| 93 const std::string& error_message) { | 94 const std::string& error_message) { |
| 94 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 95 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| 95 if (error_message.empty()) { | 96 if (error_message.empty()) { |
| 96 Respond( | 97 Respond(ArgumentList(api_epki::GenerateKey::Results::Create( |
| 97 ArgumentList(api_epki::GenerateKey::Results::Create(public_key_der))); | 98 std::vector<char>(public_key_der.begin(), public_key_der.end())))); |
| 98 } else { | 99 } else { |
| 99 Respond(Error(error_message)); | 100 Respond(Error(error_message)); |
| 100 } | 101 } |
| 101 } | 102 } |
| 102 | 103 |
| 103 EnterprisePlatformKeysInternalSignFunction:: | 104 EnterprisePlatformKeysInternalSignFunction:: |
| 104 ~EnterprisePlatformKeysInternalSignFunction() { | 105 ~EnterprisePlatformKeysInternalSignFunction() { |
| 105 } | 106 } |
| 106 | 107 |
| 107 ExtensionFunction::ResponseAction | 108 ExtensionFunction::ResponseAction |
| (...skipping 17 matching lines...) Expand all Loading... |
| 125 else | 126 else |
| 126 return RespondNow(Error(kErrorAlgorithmNotSupported)); | 127 return RespondNow(Error(kErrorAlgorithmNotSupported)); |
| 127 | 128 |
| 128 chromeos::PlatformKeysService* service = | 129 chromeos::PlatformKeysService* service = |
| 129 chromeos::PlatformKeysServiceFactory::GetForBrowserContext( | 130 chromeos::PlatformKeysServiceFactory::GetForBrowserContext( |
| 130 browser_context()); | 131 browser_context()); |
| 131 DCHECK(service); | 132 DCHECK(service); |
| 132 | 133 |
| 133 service->Sign( | 134 service->Sign( |
| 134 platform_keys_token_id, | 135 platform_keys_token_id, |
| 135 params->public_key, | 136 std::string(params->public_key.begin(), params->public_key.end()), |
| 136 hash_algorithm, | 137 hash_algorithm, std::string(params->data.begin(), params->data.end()), |
| 137 params->data, | |
| 138 extension_id(), | 138 extension_id(), |
| 139 base::Bind(&EnterprisePlatformKeysInternalSignFunction::OnSigned, this)); | 139 base::Bind(&EnterprisePlatformKeysInternalSignFunction::OnSigned, this)); |
| 140 return RespondLater(); | 140 return RespondLater(); |
| 141 } | 141 } |
| 142 | 142 |
| 143 void EnterprisePlatformKeysInternalSignFunction::OnSigned( | 143 void EnterprisePlatformKeysInternalSignFunction::OnSigned( |
| 144 const std::string& signature, | 144 const std::string& signature, |
| 145 const std::string& error_message) { | 145 const std::string& error_message) { |
| 146 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 146 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| 147 if (error_message.empty()) | 147 if (error_message.empty()) { |
| 148 Respond(ArgumentList(api_epki::Sign::Results::Create(signature))); | 148 Respond(ArgumentList(api_epki::Sign::Results::Create( |
| 149 else | 149 std::vector<char>(signature.begin(), signature.end())))); |
| 150 } else { |
| 150 Respond(Error(error_message)); | 151 Respond(Error(error_message)); |
| 152 } |
| 151 } | 153 } |
| 152 | 154 |
| 153 EnterprisePlatformKeysGetCertificatesFunction:: | 155 EnterprisePlatformKeysGetCertificatesFunction:: |
| 154 ~EnterprisePlatformKeysGetCertificatesFunction() { | 156 ~EnterprisePlatformKeysGetCertificatesFunction() { |
| 155 } | 157 } |
| 156 | 158 |
| 157 ExtensionFunction::ResponseAction | 159 ExtensionFunction::ResponseAction |
| 158 EnterprisePlatformKeysGetCertificatesFunction::Run() { | 160 EnterprisePlatformKeysGetCertificatesFunction::Run() { |
| 159 scoped_ptr<api_epk::GetCertificates::Params> params( | 161 scoped_ptr<api_epk::GetCertificates::Params> params( |
| 160 api_epk::GetCertificates::Params::Create(*args_)); | 162 api_epk::GetCertificates::Params::Create(*args_)); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 202 | 204 |
| 203 ExtensionFunction::ResponseAction | 205 ExtensionFunction::ResponseAction |
| 204 EnterprisePlatformKeysImportCertificateFunction::Run() { | 206 EnterprisePlatformKeysImportCertificateFunction::Run() { |
| 205 scoped_ptr<api_epk::ImportCertificate::Params> params( | 207 scoped_ptr<api_epk::ImportCertificate::Params> params( |
| 206 api_epk::ImportCertificate::Params::Create(*args_)); | 208 api_epk::ImportCertificate::Params::Create(*args_)); |
| 207 EXTENSION_FUNCTION_VALIDATE(params); | 209 EXTENSION_FUNCTION_VALIDATE(params); |
| 208 std::string platform_keys_token_id; | 210 std::string platform_keys_token_id; |
| 209 if (!ValidateToken(params->token_id, &platform_keys_token_id)) | 211 if (!ValidateToken(params->token_id, &platform_keys_token_id)) |
| 210 return RespondNow(Error(kErrorInvalidToken)); | 212 return RespondNow(Error(kErrorInvalidToken)); |
| 211 | 213 |
| 212 const std::string& cert_der = params->certificate; | 214 const std::vector<char>& cert_der = params->certificate; |
| 213 scoped_refptr<net::X509Certificate> cert_x509 = | 215 scoped_refptr<net::X509Certificate> cert_x509 = |
| 214 net::X509Certificate::CreateFromBytes(cert_der.data(), cert_der.size()); | 216 net::X509Certificate::CreateFromBytes(vector_as_array(&cert_der), |
| 217 cert_der.size()); |
| 215 if (!cert_x509.get()) | 218 if (!cert_x509.get()) |
| 216 return RespondNow(Error(kErrorInvalidX509Cert)); | 219 return RespondNow(Error(kErrorInvalidX509Cert)); |
| 217 | 220 |
| 218 chromeos::platform_keys::ImportCertificate( | 221 chromeos::platform_keys::ImportCertificate( |
| 219 platform_keys_token_id, | 222 platform_keys_token_id, |
| 220 cert_x509, | 223 cert_x509, |
| 221 base::Bind(&EnterprisePlatformKeysImportCertificateFunction:: | 224 base::Bind(&EnterprisePlatformKeysImportCertificateFunction:: |
| 222 OnImportedCertificate, | 225 OnImportedCertificate, |
| 223 this), | 226 this), |
| 224 browser_context()); | 227 browser_context()); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 240 | 243 |
| 241 ExtensionFunction::ResponseAction | 244 ExtensionFunction::ResponseAction |
| 242 EnterprisePlatformKeysRemoveCertificateFunction::Run() { | 245 EnterprisePlatformKeysRemoveCertificateFunction::Run() { |
| 243 scoped_ptr<api_epk::RemoveCertificate::Params> params( | 246 scoped_ptr<api_epk::RemoveCertificate::Params> params( |
| 244 api_epk::RemoveCertificate::Params::Create(*args_)); | 247 api_epk::RemoveCertificate::Params::Create(*args_)); |
| 245 EXTENSION_FUNCTION_VALIDATE(params); | 248 EXTENSION_FUNCTION_VALIDATE(params); |
| 246 std::string platform_keys_token_id; | 249 std::string platform_keys_token_id; |
| 247 if (!ValidateToken(params->token_id, &platform_keys_token_id)) | 250 if (!ValidateToken(params->token_id, &platform_keys_token_id)) |
| 248 return RespondNow(Error(kErrorInvalidToken)); | 251 return RespondNow(Error(kErrorInvalidToken)); |
| 249 | 252 |
| 250 const std::string& cert_der = params->certificate; | 253 const std::vector<char>& cert_der = params->certificate; |
| 251 scoped_refptr<net::X509Certificate> cert_x509 = | 254 scoped_refptr<net::X509Certificate> cert_x509 = |
| 252 net::X509Certificate::CreateFromBytes(cert_der.data(), cert_der.size()); | 255 net::X509Certificate::CreateFromBytes(vector_as_array(&cert_der), |
| 256 cert_der.size()); |
| 253 if (!cert_x509.get()) | 257 if (!cert_x509.get()) |
| 254 return RespondNow(Error(kErrorInvalidX509Cert)); | 258 return RespondNow(Error(kErrorInvalidX509Cert)); |
| 255 | 259 |
| 256 chromeos::platform_keys::RemoveCertificate( | 260 chromeos::platform_keys::RemoveCertificate( |
| 257 platform_keys_token_id, | 261 platform_keys_token_id, |
| 258 cert_x509, | 262 cert_x509, |
| 259 base::Bind(&EnterprisePlatformKeysRemoveCertificateFunction:: | 263 base::Bind(&EnterprisePlatformKeysRemoveCertificateFunction:: |
| 260 OnRemovedCertificate, | 264 OnRemovedCertificate, |
| 261 this), | 265 this), |
| 262 browser_context()); | 266 browser_context()); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 306 Respond(Error(kErrorInternal)); | 310 Respond(Error(kErrorInternal)); |
| 307 return; | 311 return; |
| 308 } | 312 } |
| 309 token_ids.push_back(token_id); | 313 token_ids.push_back(token_id); |
| 310 } | 314 } |
| 311 | 315 |
| 312 Respond(ArgumentList(api_epki::GetTokens::Results::Create(token_ids))); | 316 Respond(ArgumentList(api_epki::GetTokens::Results::Create(token_ids))); |
| 313 } | 317 } |
| 314 | 318 |
| 315 } // namespace extensions | 319 } // namespace extensions |
| OLD | NEW |