OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_OWNER_KEY_UTILS_H_ | 5 #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_OWNER_KEY_UTILS_H_ |
6 #define CHROME_BROWSER_CHROMEOS_LOGIN_OWNER_KEY_UTILS_H_ | 6 #define CHROME_BROWSER_CHROMEOS_LOGIN_OWNER_KEY_UTILS_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 | 10 |
11 // Forward declarations of NSS data structures. | 11 // Forward declarations of NSS data structures. |
12 struct SECKEYPrivateKeyStr; | 12 struct SECKEYPrivateKeyStr; |
13 struct SECKEYPublicKeyStr; | 13 struct SECKEYPublicKeyStr; |
14 struct SECItemStr; | 14 struct SECItemStr; |
15 | 15 |
16 typedef struct SECKEYPrivateKeyStr SECKEYPrivateKey; | 16 typedef struct SECKEYPrivateKeyStr SECKEYPrivateKey; |
17 typedef struct SECKEYPublicKeyStr SECKEYPublicKey; | 17 typedef struct SECKEYPublicKeyStr SECKEYPublicKey; |
18 typedef struct SECItemStr SECItem; | 18 typedef struct SECItemStr SECItem; |
19 | 19 |
20 class FilePath; | 20 class FilePath; |
21 | 21 |
| 22 namespace chromeos { |
| 23 |
22 class OwnerKeyUtils { | 24 class OwnerKeyUtils { |
23 public: | 25 public: |
24 class Factory { | 26 class Factory { |
25 public: | 27 public: |
26 virtual OwnerKeyUtils* CreateOwnerKeyUtils() = 0; | 28 virtual OwnerKeyUtils* CreateOwnerKeyUtils() = 0; |
27 }; | 29 }; |
28 | 30 |
29 OwnerKeyUtils(); | 31 OwnerKeyUtils(); |
30 virtual ~OwnerKeyUtils(); | 32 virtual ~OwnerKeyUtils(); |
31 | 33 |
(...skipping 14 matching lines...) Expand all Loading... |
46 // | 48 // |
47 // Returns false on error. | 49 // Returns false on error. |
48 // | 50 // |
49 // The caller takes ownership of both objects, which are allocated by libnss. | 51 // The caller takes ownership of both objects, which are allocated by libnss. |
50 // To free them, call | 52 // To free them, call |
51 // SECKEY_DestroyPrivateKey(*private_key_out); | 53 // SECKEY_DestroyPrivateKey(*private_key_out); |
52 // SECKEY_DestroyPublicKey(*public_key_out); | 54 // SECKEY_DestroyPublicKey(*public_key_out); |
53 virtual bool GenerateKeyPair(SECKEYPrivateKey** private_key_out, | 55 virtual bool GenerateKeyPair(SECKEYPrivateKey** private_key_out, |
54 SECKEYPublicKey** public_key_out) = 0; | 56 SECKEYPublicKey** public_key_out) = 0; |
55 | 57 |
| 58 // DER encodes |key| and exports it via DBus. |
| 59 // The data sent is a DER-encoded X509 SubjectPublicKeyInfo object. |
| 60 // Returns false on error. |
| 61 virtual bool ExportPublicKeyViaDbus(SECKEYPublicKey* key) = 0; |
| 62 |
56 // DER encodes |key| and writes it out to |key_file|. | 63 // DER encodes |key| and writes it out to |key_file|. |
57 // The blob on disk is a DER-encoded X509 SubjectPublicKeyInfo object. | 64 // The blob on disk is a DER-encoded X509 SubjectPublicKeyInfo object. |
58 // Returns false on error. | 65 // Returns false on error. |
59 virtual bool ExportPublicKey(SECKEYPublicKey* key, | 66 virtual bool ExportPublicKeyToFile(SECKEYPublicKey* key, |
60 const FilePath& key_file) = 0; | 67 const FilePath& key_file) = 0; |
61 | 68 |
62 // Assumes that the file at |key_file| exists. | 69 // Assumes that the file at |key_file| exists. |
63 // Caller takes ownership of returned object; returns NULL on error. | 70 // Caller takes ownership of returned object; returns NULL on error. |
64 // To free, call SECKEY_DestroyPublicKey. | 71 // To free, call SECKEY_DestroyPublicKey. |
65 virtual SECKEYPublicKey* ImportPublicKey(const FilePath& key_file) = 0; | 72 virtual SECKEYPublicKey* ImportPublicKey(const FilePath& key_file) = 0; |
66 | 73 |
| 74 |
| 75 // Looks for the private key associated with |key| in the default slot, |
| 76 // and returns it if it can be found. Returns NULL otherwise. |
| 77 // To free, call SECKEY_DestroyPrivateKey. |
| 78 virtual SECKEYPrivateKey* FindPrivateKey(SECKEYPublicKey* key) = 0; |
| 79 |
| 80 // If something's gone wrong with key generation or key exporting, the |
| 81 // caller may wish to nuke some keys. This will destroy key objects in |
| 82 // memory and ALSO remove them from the NSS database. |
| 83 virtual void DestroyKeys(SECKEYPrivateKey* private_key, |
| 84 SECKEYPublicKey* public_key) = 0; |
| 85 |
| 86 virtual FilePath GetOwnerKeyFilePath() = 0; |
| 87 |
67 private: | 88 private: |
68 static Factory* factory_; | 89 static Factory* factory_; |
69 }; | 90 }; |
70 | 91 |
| 92 } // namespace chromeos |
| 93 |
71 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_OWNER_KEY_UTILS_H_ | 94 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_OWNER_KEY_UTILS_H_ |
OLD | NEW |