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

Side by Side Diff: crypto/p224_spake_unittest.cc

Issue 787803004: Update from https://crrev.com/307664 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Rebase. Created 6 years 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
« no previous file with comments | « crypto/p224_spake.cc ('k') | gpu/GLES2/gl2chromium_autogen.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "crypto/p224_spake.h"
6
5 #include <string> 7 #include <string>
6 #include <crypto/p224_spake.h>
7 8
8 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/strings/string_number_conversions.h"
9 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
10 12
11 namespace crypto { 13 namespace crypto {
12 14
13 namespace { 15 namespace {
14 16
17 std::string HexEncodeString(const std::string& binary_data) {
18 return base::HexEncode(binary_data.c_str(), binary_data.size());
19 }
20
15 bool RunExchange(P224EncryptedKeyExchange* client, 21 bool RunExchange(P224EncryptedKeyExchange* client,
16 P224EncryptedKeyExchange* server, 22 P224EncryptedKeyExchange* server,
17 bool is_password_same) { 23 bool is_password_same) {
18 for (;;) { 24 for (;;) {
19 std::string client_message, server_message; 25 std::string client_message, server_message;
20 client_message = client->GetMessage(); 26 client_message = client->GetMessage();
21 server_message = server->GetMessage(); 27 server_message = server->GetMessage();
22 28
23 P224EncryptedKeyExchange::Result client_result, server_result; 29 P224EncryptedKeyExchange::Result client_result, server_result;
24 client_result = client->ProcessMessage(server_message); 30 client_result = client->ProcessMessage(server_message);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 P224EncryptedKeyExchange client( 70 P224EncryptedKeyExchange client(
65 P224EncryptedKeyExchange::kPeerTypeClient, 71 P224EncryptedKeyExchange::kPeerTypeClient,
66 kPassword); 72 kPassword);
67 P224EncryptedKeyExchange server( 73 P224EncryptedKeyExchange server(
68 P224EncryptedKeyExchange::kPeerTypeServer, 74 P224EncryptedKeyExchange::kPeerTypeServer,
69 "wrongpassword"); 75 "wrongpassword");
70 76
71 EXPECT_FALSE(RunExchange(&client, &server, false)); 77 EXPECT_FALSE(RunExchange(&client, &server, false));
72 } 78 }
73 79
80 TEST(MutualAuth, ExpectedValues) {
81 P224EncryptedKeyExchange client(P224EncryptedKeyExchange::kPeerTypeClient,
82 kPassword);
83 client.SetXForTesting("Client x");
84 P224EncryptedKeyExchange server(P224EncryptedKeyExchange::kPeerTypeServer,
85 kPassword);
86 server.SetXForTesting("Server x");
87
88 std::string client_message = client.GetMessage();
89 EXPECT_EQ(
90 "3508EF7DECC8AB9F9C439FBB0154288BBECC0A82E8448F4CF29554EB"
91 "BE9D486686226255EAD1D077C635B1A41F46AC91D7F7F32CED9EC3E0",
92 HexEncodeString(client_message));
93
94 std::string server_message = server.GetMessage();
95 EXPECT_EQ(
96 "A3088C18B75D2C2B107105661AEC85424777475EB29F1DDFB8C14AFB"
97 "F1603D0DF38413A00F420ACF2059E7997C935F5A957A193D09A2B584",
98 HexEncodeString(server_message));
99
100 EXPECT_EQ(P224EncryptedKeyExchange::kResultPending,
101 client.ProcessMessage(server_message));
102 EXPECT_EQ(P224EncryptedKeyExchange::kResultPending,
103 server.ProcessMessage(client_message));
104
105 EXPECT_EQ(client.GetUnverifiedKey(), server.GetUnverifiedKey());
106 // Must stay the same. External implementations should be able to pair with.
107 EXPECT_EQ(
108 "CE7CCFC435CDA4F01EC8826788B1F8B82EF7D550A34696B371096E64"
109 "C487D4FE193F7D1A6FF6820BC7F807796BA3889E8F999BBDEFC32FFA",
110 HexEncodeString(server.GetUnverifiedKey()));
111
112 EXPECT_TRUE(RunExchange(&client, &server, true));
113 EXPECT_EQ(client.GetKey(), server.GetKey());
114 }
115
74 TEST(MutualAuth, Fuzz) { 116 TEST(MutualAuth, Fuzz) {
75 static const unsigned kIterations = 40; 117 static const unsigned kIterations = 40;
76 118
77 for (unsigned i = 0; i < kIterations; i++) { 119 for (unsigned i = 0; i < kIterations; i++) {
78 P224EncryptedKeyExchange client( 120 P224EncryptedKeyExchange client(
79 P224EncryptedKeyExchange::kPeerTypeClient, kPassword); 121 P224EncryptedKeyExchange::kPeerTypeClient, kPassword);
80 P224EncryptedKeyExchange server( 122 P224EncryptedKeyExchange server(
81 P224EncryptedKeyExchange::kPeerTypeServer, kPassword); 123 P224EncryptedKeyExchange::kPeerTypeServer, kPassword);
82 124
83 // We'll only be testing small values of i, but we don't want that to bias 125 // We'll only be testing small values of i, but we don't want that to bias
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 165
124 ASSERT_EQ(P224EncryptedKeyExchange::kResultPending, 166 ASSERT_EQ(P224EncryptedKeyExchange::kResultPending,
125 client_result); 167 client_result);
126 ASSERT_EQ(P224EncryptedKeyExchange::kResultPending, 168 ASSERT_EQ(P224EncryptedKeyExchange::kResultPending,
127 server_result); 169 server_result);
128 } 170 }
129 } 171 }
130 } 172 }
131 173
132 } // namespace crypto 174 } // namespace crypto
OLDNEW
« no previous file with comments | « crypto/p224_spake.cc ('k') | gpu/GLES2/gl2chromium_autogen.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698