Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(45)

Side by Side Diff: chromeos/dbus/easy_unlock_client.h

Issue 569813002: Minor cleanup in EasyUnlockClient (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 #ifndef CHROMEOS_DBUS_EASY_UNLOCK_CLIENT_H_ 5 #ifndef CHROMEOS_DBUS_EASY_UNLOCK_CLIENT_H_
6 #define CHROMEOS_DBUS_EASY_UNLOCK_CLIENT_H_ 6 #define CHROMEOS_DBUS_EASY_UNLOCK_CLIENT_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 12 matching lines...) Expand all
23 // Chrome. To work around this, the message processing will be done in ChromeOS, 23 // Chrome. To work around this, the message processing will be done in ChromeOS,
24 // where OpenSSL is already supported. 24 // where OpenSSL is already supported.
25 // TODO(tbarzic): Get rid of this client when Chrome switches from NSS to 25 // TODO(tbarzic): Get rid of this client when Chrome switches from NSS to
26 // OpenSSL (http://crbug.com/338888). 26 // OpenSSL (http://crbug.com/338888).
27 class CHROMEOS_EXPORT EasyUnlockClient : public DBusClient { 27 class CHROMEOS_EXPORT EasyUnlockClient : public DBusClient {
28 public: 28 public:
29 virtual ~EasyUnlockClient(); 29 virtual ~EasyUnlockClient();
30 30
31 typedef base::Callback<void(const std::string& data)> DataCallback; 31 typedef base::Callback<void(const std::string& data)> DataCallback;
32 32
33 // Callback for |GenerateEcP256KeyAgreement|. Carries the generated keys. 33 // Callback for |GenerateEcP256KeyPair|. Carries the generated keys.
34 typedef base::Callback<void(const std::string& public_key, 34 typedef base::Callback<void(const std::string& private_key,
35 const std::string& private_key)> 35 const std::string& public_key)>
36 KeyPairCallback; 36 KeyPairCallback;
37 37
38 // Generates ECDSA key pair using P256 curve. 38 // Generates ECDSA key pair using P256 curve.
39 // The created keys should only be used with this client. 39 // The created keys should only be used with this client.
40 virtual void GenerateEcP256KeyPair(const KeyPairCallback& callback) = 0; 40 virtual void GenerateEcP256KeyPair(const KeyPairCallback& callback) = 0;
41 41
42 // Parameters used to create a secure message.
43 struct CreateSecureMessageOptions {
44 CreateSecureMessageOptions();
45 ~CreateSecureMessageOptions();
46
47 // The key used to sign, and if needed, encrypt the message. If encryption
48 // is required, the key must be symetric.
49 std::string key;
50
51 // Data associated with the message. The data will not actually be added to
52 // the message, but it will be used while signing the message (the receiver
53 // will use the same data to authenticate the signature).
54 std::string associated_data;
55
56 // Metadata added to the message header.
57 std::string public_metadata;
58
59 // The key id added to the message header. Has to be set if the message is
60 // signed with private asymetric key. This value is used by the receiver to
61 // identify the key that should be used to verify the signature.
62 std::string verification_key_id;
63
64 // Key id added to the message header. Used by the message receiver to
65 // identify the key that should be used to decrypt the message.
66 std::string decryption_key_id;
67
68 // The encryption algorithm to use for encrypting the message.
69 std::string encryption_type;
70
71 // The algorithm to use to sign the message.
72 std::string signature_type;
73
74 private:
75 DISALLOW_COPY_AND_ASSIGN(CreateSecureMessageOptions);
76 };
77
78 // Parameters used to unwrap a securemessage.
79 struct UnwrapSecureMessageOptions {
80 UnwrapSecureMessageOptions();
81 ~UnwrapSecureMessageOptions();
82
83 // The key used to authenticate message signature and, if needed, decrypt
84 // the message. If the message is encrypted, only symetric key can be used.
85 std::string key;
86
87 // Data associated with the message. Message authentication will succeed
88 // only if the message was created with the same associated data.
89 std::string associated_data;
90
91 // The encryption algorithm to use for decrypting the message.
92 std::string encryption_type;
93
94 // The algorithm that should be used to verify the message signature.
95 std::string signature_type;
96
97 private:
98 DISALLOW_COPY_AND_ASSIGN(UnwrapSecureMessageOptions);
99 };
100
42 // Given a private and a public key, creates a symetric secret key using 101 // Given a private and a public key, creates a symetric secret key using
43 // EC Diffe-Hellman key exchange. The provided keys come from different 102 // EC Diffe-Hellman key exchange. The provided keys come from different
44 // asymetric key pairs, and are expected to be in the same format as the ones 103 // asymetric key pairs, and are expected to be in the same format as the ones
45 // returned by |GenerateEcP256KeyAgreement|. Reversing key pairs from which 104 // returned by |GenerateEcP256KeyAgreement|. Reversing key pairs from which
46 // private and public key come generates the same secret key. 105 // private and public key come generates the same secret key.
47 virtual void PerformECDHKeyAgreement(const std::string& private_key, 106 virtual void PerformECDHKeyAgreement(const std::string& private_key,
48 const std::string& public_key, 107 const std::string& public_key,
49 const DataCallback& callback) = 0; 108 const DataCallback& callback) = 0;
50 109
51 // Creates signed and, if specified, encrypted message in format used by Easy 110 // Creates signed and, if specified, encrypted message in format used by Easy
52 // Unlock. 111 // Unlock.
53 // |payload|: The cleartext message body. 112 // |payload|: The cleartext message body.
54 // |key|: The key used to sign, and if needed, encrypt the message. If 113 // |options|: The message parameters used for creating the secure message.
55 // encryption is required, the key must be symetric.
56 // |associated_data|: Data associated with the message. The data will not
57 // actually be added to the message, but it will be used while
58 // signing the message (the receiver will use the same data to
59 // authenticate the signature).
60 // |public_metadata|: Metadata added to the message header.
61 // |verification_key_id|: The key id added to the message header. Has to be
62 // set if the message is signed with private asymetric key. This value
63 // is used by the receiver to identify the public key that should be used
64 // to verify the signature.
65 // |decryption_key_id|: Key id added to the message header. Used by the
66 // message receiver to identify the key that should be used to decrypt
67 // the message.
68 // |encryption_type|: The encryption algorithm to use for encrypting the
69 // message. (May be set to none).
70 // |signature_type|: The algorithm to use to sign the message.
71 // |callback|: Called with the created message. On failure, the message will 114 // |callback|: Called with the created message. On failure, the message will
72 // be empty. 115 // be empty.
73 virtual void CreateSecureMessage(const std::string& payload, 116 virtual void CreateSecureMessage(const std::string& payload,
74 const std::string& secret_key, 117 const CreateSecureMessageOptions& options,
75 const std::string& associated_data,
76 const std::string& public_metadata,
77 const std::string& verification_key_id,
78 const std::string& decryption_key_id,
79 const std::string& encryption_type,
80 const std::string& signature_type,
81 const DataCallback& callback) = 0; 118 const DataCallback& callback) = 0;
82 119
83 // Authenticates and, if specified, decrypts a secure message. 120 // Authenticates and, if specified, decrypts a secure message.
84 // |message|: The message to unwrap. It is in the same format as the message 121 // |message|: The message to unwrap. It is in the same format as the message
85 // returned by |CreateSecureMessage|. 122 // returned by |CreateSecureMessage|.
86 // |key|: The key used to authenticate message signature and, if needed, 123 // |options|: The parameters that should be used to unwrap the message.
87 // decrypt the message. If the message is encrypted, only symetric key
88 // can be used.
89 // |associated_data|: Data associated with the message. Message
90 // authentication will succeed only if the message was created with the
91 // associated data.
92 // |encryption_type|: The encryption algorithm to use for decrypting the
93 // message. (May be set to none).
94 // |signature_type|: The algorithm to use to verify the message signature.
95 // |callback|: Called with the cleartext message header and body in a signle 124 // |callback|: Called with the cleartext message header and body in a signle
96 // protobuf. If the message could not be authenticated or decrypted, it 125 // protobuf. If the message could not be authenticated or decrypted, it
97 // will be called with an empty string. 126 // will be called with an empty string.
98 virtual void UnwrapSecureMessage(const std::string& message, 127 virtual void UnwrapSecureMessage(const std::string& message,
99 const std::string& secret_key, 128 const UnwrapSecureMessageOptions& options,
100 const std::string& associated_data,
101 const std::string& encryption_type,
102 const std::string& signature_type,
103 const DataCallback& callback) = 0; 129 const DataCallback& callback) = 0;
104 130
105 // Factory function, creates a new instance and returns ownership. 131 // Factory function, creates a new instance and returns ownership.
106 // For normal usage, access the singleton via DBusThreadManager::Get(). 132 // For normal usage, access the singleton via DBusThreadManager::Get().
107 static EasyUnlockClient* Create(); 133 static EasyUnlockClient* Create();
108 134
109 protected: 135 protected:
110 // Create() should be used instead. 136 // Create() should be used instead.
111 EasyUnlockClient(); 137 EasyUnlockClient();
112 138
113 private: 139 private:
114 DISALLOW_COPY_AND_ASSIGN(EasyUnlockClient); 140 DISALLOW_COPY_AND_ASSIGN(EasyUnlockClient);
115 }; 141 };
116 142
117 } // namespace chromeos 143 } // namespace chromeos
118 144
119 #endif // CHROMEOS_DBUS_EASY_UNLOCK_CLIENT_H_ 145 #endif // CHROMEOS_DBUS_EASY_UNLOCK_CLIENT_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698