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
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_EXTENSIONS_API_ENTERPRISE_PLATFORM_KEYS_ENTERPRISE_PLATFORM_KEYS_API_H_
6#define CHROME_BROWSER_EXTENSIONS_API_ENTERPRISE_PLATFORM_KEYS_ENTERPRISE_PLATFORM_KEYS_API_H_
7
8#include <string>
9#include <vector>
10
11#include "base/compiler_specific.h"
12#include "base/memory/ref_counted.h"
13#include "base/memory/scoped_ptr.h"
14#include "chrome/browser/extensions/chrome_extension_function.h"
15
16namespace net {
17class X509Certificate;
18typedef std::vector<scoped_refptr<X509Certificate> > CertificateList;
19}
20
21namespace extensions {
22
23class EnterprisePlatformKeysInternalGenerateKeyFunction
24    : public ChromeUIThreadExtensionFunction {
25 private:
26  virtual ~EnterprisePlatformKeysInternalGenerateKeyFunction();
27  virtual ResponseAction Run() OVERRIDE;
28
29  // Called when the key was generated. If an error occurred, |public_key_der|
30  // will be empty and instead |error_message| be set.
31  void OnGeneratedKey(const std::string& public_key_der,
32                      const std::string& error_message);
33
34  DECLARE_EXTENSION_FUNCTION("enterprise.platformKeysInternal.generateKey",
35                             ENTERPRISE_PLATFORMKEYSINTERNAL_GENERATEKEY);
36};
37
38class EnterprisePlatformKeysInternalSignFunction
39    : public ChromeUIThreadExtensionFunction {
40 private:
41  virtual ~EnterprisePlatformKeysInternalSignFunction();
42  virtual ResponseAction Run() OVERRIDE;
43
44  // Called when the signature was generated. If an error occurred,
45  // |signature| will be empty and instead |error_message| be set.
46  void OnSigned(const std::string& signature, const std::string& error_message);
47
48  DECLARE_EXTENSION_FUNCTION("enterprise.platformKeysInternal.sign",
49                             ENTERPRISE_PLATFORMKEYSINTERNAL_SIGN);
50};
51
52class EnterprisePlatformKeysGetCertificatesFunction
53    : public ChromeUIThreadExtensionFunction {
54 private:
55  virtual ~EnterprisePlatformKeysGetCertificatesFunction();
56  virtual ResponseAction Run() OVERRIDE;
57
58  // Called when the list of certificates was determined. If an error occurred,
59  // |certs| will be NULL and instead |error_message| be set.
60  void OnGotCertificates(scoped_ptr<net::CertificateList> certs,
61                         const std::string& error_message);
62
63  DECLARE_EXTENSION_FUNCTION("enterprise.platformKeys.getCertificates",
64                             ENTERPRISE_PLATFORMKEYS_GETCERTIFICATES);
65};
66
67class EnterprisePlatformKeysImportCertificateFunction
68    : public ChromeUIThreadExtensionFunction {
69 private:
70  virtual ~EnterprisePlatformKeysImportCertificateFunction();
71  virtual ResponseAction Run() OVERRIDE;
72
73  // Called when the certificate was imported. Only if an error occurred,
74  // |error_message| will be set.
75  void OnImportedCertificate(const std::string& error_message);
76
77  DECLARE_EXTENSION_FUNCTION("enterprise.platformKeys.importCertificate",
78                             ENTERPRISE_PLATFORMKEYS_IMPORTCERTIFICATE);
79};
80
81class EnterprisePlatformKeysRemoveCertificateFunction
82    : public ChromeUIThreadExtensionFunction {
83 private:
84  virtual ~EnterprisePlatformKeysRemoveCertificateFunction();
85  virtual ResponseAction Run() OVERRIDE;
86
87  // Called when the certificate was removed. Only if an error occurred,
88  // |error_message| will be set.
89  void OnRemovedCertificate(const std::string& error_message);
90
91  DECLARE_EXTENSION_FUNCTION("enterprise.platformKeys.removeCertificate",
92                             ENTERPRISE_PLATFORMKEYS_REMOVECERTIFICATE);
93};
94
95class EnterprisePlatformKeysInternalGetTokensFunction
96    : public ChromeUIThreadExtensionFunction {
97 private:
98  virtual ~EnterprisePlatformKeysInternalGetTokensFunction();
99  virtual ResponseAction Run() OVERRIDE;
100
101  // Called when the list of tokens was determined. If an error occurred,
102  // |token_ids| will be NULL and instead |error_message| be set.
103  void OnGotTokens(scoped_ptr<std::vector<std::string> > token_ids,
104                   const std::string& error_message);
105
106  DECLARE_EXTENSION_FUNCTION("enterprise.platformKeysInternal.getTokens",
107                             ENTERPRISE_PLATFORMKEYSINTERNAL_GETTOKENS);
108};
109
110}  // namespace extensions
111
112#endif  // CHROME_BROWSER_EXTENSIONS_API_ENTERPRISE_PLATFORM_KEYS_ENTERPRISE_PLATFORM_KEYS_API_H_
113