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 "components/proximity_auth/cryptauth/fake_secure_message_delegate.h" | 5 #include "components/cryptauth/fake_secure_message_delegate.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/macros.h" | 8 #include "base/macros.h" |
9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
10 | 10 |
11 namespace proximity_auth { | 11 namespace cryptauth { |
12 | 12 |
13 namespace { | 13 namespace { |
14 | 14 |
15 const char kTestPublicKey[] = "the private key is in another castle"; | 15 const char kTestPublicKey[] = "the private key is in another castle"; |
16 const char kPayload[] = "500 tons of uranium"; | 16 const char kPayload[] = "500 tons of uranium"; |
17 const char kSymmetricKey[] = "hunter2"; | 17 const char kSymmetricKey[] = "hunter2"; |
18 const char kPublicMetadata[] = "brought to you by our sponsors"; | 18 const char kPublicMetadata[] = "brought to you by our sponsors"; |
19 const char kAssociatedData[] = "save 20% bytes on your nonce insurance"; | 19 const char kAssociatedData[] = "save 20% bytes on your nonce insurance"; |
20 const char kVerificationKeyId[] = "the one with the red stripes"; | 20 const char kVerificationKeyId[] = "the one with the red stripes"; |
21 const char kDecryptionKeyId[] = "it's in your pocket somewhere"; | 21 const char kDecryptionKeyId[] = "it's in your pocket somewhere"; |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
82 const securemessage::Header& header = header_and_body.header(); | 82 const securemessage::Header& header = header_and_body.header(); |
83 EXPECT_EQ(create_options.signature_scheme, header.signature_scheme()); | 83 EXPECT_EQ(create_options.signature_scheme, header.signature_scheme()); |
84 EXPECT_EQ(create_options.encryption_scheme, header.encryption_scheme()); | 84 EXPECT_EQ(create_options.encryption_scheme, header.encryption_scheme()); |
85 EXPECT_EQ(create_options.verification_key_id, header.verification_key_id()); | 85 EXPECT_EQ(create_options.verification_key_id, header.verification_key_id()); |
86 EXPECT_EQ(create_options.decryption_key_id, header.decryption_key_id()); | 86 EXPECT_EQ(create_options.decryption_key_id, header.decryption_key_id()); |
87 EXPECT_EQ(create_options.public_metadata, header.public_metadata()); | 87 EXPECT_EQ(create_options.public_metadata, header.public_metadata()); |
88 } | 88 } |
89 | 89 |
90 } // namespace | 90 } // namespace |
91 | 91 |
92 class ProximityAuthFakeSecureMessageDelegateTest : public testing::Test { | 92 class CryptAuthFakeSecureMessageDelegateTest : public testing::Test { |
93 protected: | 93 protected: |
94 ProximityAuthFakeSecureMessageDelegateTest() {} | 94 CryptAuthFakeSecureMessageDelegateTest() {} |
95 | 95 |
96 FakeSecureMessageDelegate delegate_; | 96 FakeSecureMessageDelegate delegate_; |
97 | 97 |
98 DISALLOW_COPY_AND_ASSIGN(ProximityAuthFakeSecureMessageDelegateTest); | 98 DISALLOW_COPY_AND_ASSIGN(CryptAuthFakeSecureMessageDelegateTest); |
99 }; | 99 }; |
100 | 100 |
101 TEST_F(ProximityAuthFakeSecureMessageDelegateTest, GenerateKeyPair) { | 101 TEST_F(CryptAuthFakeSecureMessageDelegateTest, GenerateKeyPair) { |
102 std::string public_key1, private_key1; | 102 std::string public_key1, private_key1; |
103 delegate_.GenerateKeyPair( | 103 delegate_.GenerateKeyPair( |
104 base::Bind(&SaveKeyPair, &public_key1, &private_key1)); | 104 base::Bind(&SaveKeyPair, &public_key1, &private_key1)); |
105 EXPECT_NE(private_key1, public_key1); | 105 EXPECT_NE(private_key1, public_key1); |
106 | 106 |
107 std::string public_key2, private_key2; | 107 std::string public_key2, private_key2; |
108 delegate_.GenerateKeyPair( | 108 delegate_.GenerateKeyPair( |
109 base::Bind(&SaveKeyPair, &public_key2, &private_key2)); | 109 base::Bind(&SaveKeyPair, &public_key2, &private_key2)); |
110 EXPECT_NE(private_key2, public_key2); | 110 EXPECT_NE(private_key2, public_key2); |
111 | 111 |
112 EXPECT_NE(public_key1, public_key2); | 112 EXPECT_NE(public_key1, public_key2); |
113 EXPECT_NE(private_key1, private_key2); | 113 EXPECT_NE(private_key1, private_key2); |
114 | 114 |
115 delegate_.set_next_public_key(kTestPublicKey); | 115 delegate_.set_next_public_key(kTestPublicKey); |
116 std::string public_key3, private_key3; | 116 std::string public_key3, private_key3; |
117 delegate_.GenerateKeyPair( | 117 delegate_.GenerateKeyPair( |
118 base::Bind(&SaveKeyPair, &public_key3, &private_key3)); | 118 base::Bind(&SaveKeyPair, &public_key3, &private_key3)); |
119 EXPECT_EQ(kTestPublicKey, public_key3); | 119 EXPECT_EQ(kTestPublicKey, public_key3); |
120 EXPECT_NE(private_key3, public_key3); | 120 EXPECT_NE(private_key3, public_key3); |
121 | 121 |
122 EXPECT_NE(public_key1, public_key3); | 122 EXPECT_NE(public_key1, public_key3); |
123 EXPECT_NE(private_key1, private_key3); | 123 EXPECT_NE(private_key1, private_key3); |
124 } | 124 } |
125 | 125 |
126 TEST_F(ProximityAuthFakeSecureMessageDelegateTest, DeriveKey) { | 126 TEST_F(CryptAuthFakeSecureMessageDelegateTest, DeriveKey) { |
127 delegate_.set_next_public_key("key_pair_1"); | 127 delegate_.set_next_public_key("key_pair_1"); |
128 std::string public_key1, private_key1; | 128 std::string public_key1, private_key1; |
129 delegate_.GenerateKeyPair( | 129 delegate_.GenerateKeyPair( |
130 base::Bind(&SaveKeyPair, &public_key1, &private_key1)); | 130 base::Bind(&SaveKeyPair, &public_key1, &private_key1)); |
131 | 131 |
132 delegate_.set_next_public_key("key_pair_2"); | 132 delegate_.set_next_public_key("key_pair_2"); |
133 std::string public_key2, private_key2; | 133 std::string public_key2, private_key2; |
134 delegate_.GenerateKeyPair( | 134 delegate_.GenerateKeyPair( |
135 base::Bind(&SaveKeyPair, &public_key2, &private_key2)); | 135 base::Bind(&SaveKeyPair, &public_key2, &private_key2)); |
136 | 136 |
137 std::string symmetric_key1, symmetric_key2; | 137 std::string symmetric_key1, symmetric_key2; |
138 delegate_.DeriveKey(private_key1, public_key2, | 138 delegate_.DeriveKey(private_key1, public_key2, |
139 base::Bind(&SaveString, &symmetric_key1)); | 139 base::Bind(&SaveString, &symmetric_key1)); |
140 delegate_.DeriveKey(private_key2, public_key1, | 140 delegate_.DeriveKey(private_key2, public_key1, |
141 base::Bind(&SaveString, &symmetric_key2)); | 141 base::Bind(&SaveString, &symmetric_key2)); |
142 | 142 |
143 EXPECT_EQ(symmetric_key1, symmetric_key2); | 143 EXPECT_EQ(symmetric_key1, symmetric_key2); |
144 } | 144 } |
145 | 145 |
146 TEST_F(ProximityAuthFakeSecureMessageDelegateTest, | 146 TEST_F(CryptAuthFakeSecureMessageDelegateTest, |
147 CreateAndUnwrapWithSymmetricKey) { | 147 CreateAndUnwrapWithSymmetricKey) { |
148 // Create SecureMessage using symmetric key. | 148 // Create SecureMessage using symmetric key. |
149 SecureMessageDelegate::CreateOptions create_options = | 149 SecureMessageDelegate::CreateOptions create_options = |
150 GetCreateOptions(securemessage::AES_256_CBC, securemessage::HMAC_SHA256); | 150 GetCreateOptions(securemessage::AES_256_CBC, securemessage::HMAC_SHA256); |
151 std::string serialized_message; | 151 std::string serialized_message; |
152 delegate_.CreateSecureMessage(kPayload, kSymmetricKey, create_options, | 152 delegate_.CreateSecureMessage(kPayload, kSymmetricKey, create_options, |
153 base::Bind(&SaveString, &serialized_message)); | 153 base::Bind(&SaveString, &serialized_message)); |
154 | 154 |
155 CheckSerializedSecureMessage(serialized_message, create_options); | 155 CheckSerializedSecureMessage(serialized_message, create_options); |
156 | 156 |
157 // Unwrap SecureMessage using symmetric key. | 157 // Unwrap SecureMessage using symmetric key. |
158 SecureMessageDelegate::UnwrapOptions unwrap_options = | 158 SecureMessageDelegate::UnwrapOptions unwrap_options = |
159 GetUnwrapOptions(securemessage::AES_256_CBC, securemessage::HMAC_SHA256); | 159 GetUnwrapOptions(securemessage::AES_256_CBC, securemessage::HMAC_SHA256); |
160 std::string payload; | 160 std::string payload; |
161 securemessage::Header header; | 161 securemessage::Header header; |
162 delegate_.UnwrapSecureMessage( | 162 delegate_.UnwrapSecureMessage( |
163 serialized_message, kSymmetricKey, unwrap_options, | 163 serialized_message, kSymmetricKey, unwrap_options, |
164 base::Bind(&SaveUnwrapResults, &payload, &header)); | 164 base::Bind(&SaveUnwrapResults, &payload, &header)); |
165 | 165 |
166 EXPECT_EQ(kPayload, payload); | 166 EXPECT_EQ(kPayload, payload); |
167 } | 167 } |
168 | 168 |
169 TEST_F(ProximityAuthFakeSecureMessageDelegateTest, | 169 TEST_F(CryptAuthFakeSecureMessageDelegateTest, |
170 CreateAndUnwrapWithAsymmetricKey) { | 170 CreateAndUnwrapWithAsymmetricKey) { |
171 delegate_.set_next_public_key(kTestPublicKey); | 171 delegate_.set_next_public_key(kTestPublicKey); |
172 std::string public_key, private_key; | 172 std::string public_key, private_key; |
173 delegate_.GenerateKeyPair( | 173 delegate_.GenerateKeyPair( |
174 base::Bind(&SaveKeyPair, &public_key, &private_key)); | 174 base::Bind(&SaveKeyPair, &public_key, &private_key)); |
175 | 175 |
176 // Create SecureMessage using asymmetric key. | 176 // Create SecureMessage using asymmetric key. |
177 SecureMessageDelegate::CreateOptions create_options = | 177 SecureMessageDelegate::CreateOptions create_options = |
178 GetCreateOptions(securemessage::NONE, securemessage::ECDSA_P256_SHA256); | 178 GetCreateOptions(securemessage::NONE, securemessage::ECDSA_P256_SHA256); |
179 std::string serialized_message; | 179 std::string serialized_message; |
180 delegate_.CreateSecureMessage(kPayload, private_key, create_options, | 180 delegate_.CreateSecureMessage(kPayload, private_key, create_options, |
181 base::Bind(&SaveString, &serialized_message)); | 181 base::Bind(&SaveString, &serialized_message)); |
182 | 182 |
183 CheckSerializedSecureMessage(serialized_message, create_options); | 183 CheckSerializedSecureMessage(serialized_message, create_options); |
184 | 184 |
185 // Unwrap SecureMessage using symmetric key. | 185 // Unwrap SecureMessage using symmetric key. |
186 SecureMessageDelegate::UnwrapOptions unwrap_options = | 186 SecureMessageDelegate::UnwrapOptions unwrap_options = |
187 GetUnwrapOptions(securemessage::NONE, securemessage::ECDSA_P256_SHA256); | 187 GetUnwrapOptions(securemessage::NONE, securemessage::ECDSA_P256_SHA256); |
188 std::string payload; | 188 std::string payload; |
189 securemessage::Header header; | 189 securemessage::Header header; |
190 delegate_.UnwrapSecureMessage( | 190 delegate_.UnwrapSecureMessage( |
191 serialized_message, public_key, unwrap_options, | 191 serialized_message, public_key, unwrap_options, |
192 base::Bind(&SaveUnwrapResults, &payload, &header)); | 192 base::Bind(&SaveUnwrapResults, &payload, &header)); |
193 | 193 |
194 EXPECT_EQ(kPayload, payload); | 194 EXPECT_EQ(kPayload, payload); |
195 } | 195 } |
196 | 196 |
197 TEST_F(ProximityAuthFakeSecureMessageDelegateTest, GetPrivateKeyForPublicKey) { | 197 TEST_F(CryptAuthFakeSecureMessageDelegateTest, GetPrivateKeyForPublicKey) { |
198 delegate_.set_next_public_key(kTestPublicKey); | 198 delegate_.set_next_public_key(kTestPublicKey); |
199 std::string public_key, private_key; | 199 std::string public_key, private_key; |
200 delegate_.GenerateKeyPair( | 200 delegate_.GenerateKeyPair( |
201 base::Bind(&SaveKeyPair, &public_key, &private_key)); | 201 base::Bind(&SaveKeyPair, &public_key, &private_key)); |
202 EXPECT_EQ(kTestPublicKey, public_key); | 202 EXPECT_EQ(kTestPublicKey, public_key); |
203 EXPECT_EQ(private_key, delegate_.GetPrivateKeyForPublicKey(kTestPublicKey)); | 203 EXPECT_EQ(private_key, delegate_.GetPrivateKeyForPublicKey(kTestPublicKey)); |
204 } | 204 } |
205 | 205 |
206 } // proximity_auth | 206 } // proximity_auth |
OLD | NEW |