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

Side by Side Diff: chrome/browser/sync/util/nigori_unittest.cc

Issue 9699057: [Sync] Move 'sync' target to sync/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address Tim's comments Created 8 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/sync/util/nigori.cc ('k') | chrome/browser/sync/util/protobuf_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2012 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 #include "chrome/browser/sync/util/nigori.h"
6
7 #include <string>
8
9 #include "base/memory/scoped_ptr.h"
10 #include "base/string_util.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12
13 namespace browser_sync {
14 namespace {
15
16 TEST(SyncNigoriTest, Permute) {
17 Nigori nigori;
18 EXPECT_TRUE(nigori.InitByDerivation("example.com", "username", "password"));
19
20 std::string permuted;
21 EXPECT_TRUE(nigori.Permute(Nigori::Password, "test name",
22 &permuted));
23
24 std::string expected =
25 "prewwdJj2PrGDczvmsHJEE5ndcCyVze8sY9kD5hjY/Tm"
26 "c5kOjXFK7zB3Ss4LlHjEDirMu+vh85JwHOnGrMVe+g==";
27 EXPECT_EQ(expected, permuted);
28 }
29
30 TEST(SyncNigoriTest, PermuteIsConstant) {
31 Nigori nigori1;
32 EXPECT_TRUE(nigori1.InitByDerivation("example.com", "username", "password"));
33
34 std::string permuted1;
35 EXPECT_TRUE(nigori1.Permute(Nigori::Password,
36 "name",
37 &permuted1));
38
39 Nigori nigori2;
40 EXPECT_TRUE(nigori2.InitByDerivation("example.com", "username", "password"));
41
42 std::string permuted2;
43 EXPECT_TRUE(nigori2.Permute(Nigori::Password,
44 "name",
45 &permuted2));
46
47 EXPECT_LT(0U, permuted1.size());
48 EXPECT_EQ(permuted1, permuted2);
49 }
50
51 TEST(SyncNigoriTest, EncryptDifferentIv) {
52 Nigori nigori;
53 EXPECT_TRUE(nigori.InitByDerivation("example.com", "username", "password"));
54
55 std::string plaintext("value");
56
57 std::string encrypted1;
58 EXPECT_TRUE(nigori.Encrypt(plaintext, &encrypted1));
59
60 std::string encrypted2;
61 EXPECT_TRUE(nigori.Encrypt(plaintext, &encrypted2));
62
63 EXPECT_NE(encrypted1, encrypted2);
64 }
65
66 TEST(SyncNigoriTest, Decrypt) {
67 Nigori nigori;
68 EXPECT_TRUE(nigori.InitByDerivation("example.com", "username", "password"));
69
70 std::string encrypted =
71 "e7+JyS6ibj6F5qqvpseukNRTZ+oBpu5iuv2VYjOfrH1dNiFLNf7Ov0"
72 "kx/zicKFn0lJcbG1UmkNWqIuR4x+quDNVuLaZGbrJPhrJuj7cokCM=";
73
74 std::string plaintext;
75 EXPECT_TRUE(nigori.Decrypt(encrypted, &plaintext));
76
77 std::string expected("test, test, 1, 2, 3");
78 EXPECT_EQ(expected, plaintext);
79 }
80
81 TEST(SyncNigoriTest, EncryptDecrypt) {
82 Nigori nigori;
83 EXPECT_TRUE(nigori.InitByDerivation("example.com", "username", "password"));
84
85 std::string plaintext("value");
86
87 std::string encrypted;
88 EXPECT_TRUE(nigori.Encrypt(plaintext, &encrypted));
89
90 std::string decrypted;
91 EXPECT_TRUE(nigori.Decrypt(encrypted, &decrypted));
92
93 EXPECT_EQ(plaintext, decrypted);
94 }
95
96 TEST(SyncNigoriTest, CorruptedIv) {
97 Nigori nigori;
98 EXPECT_TRUE(nigori.InitByDerivation("example.com", "username", "password"));
99
100 std::string plaintext("test");
101
102 std::string encrypted;
103 EXPECT_TRUE(nigori.Encrypt(plaintext, &encrypted));
104
105 // Corrupt the IV by changing one of its byte.
106 encrypted[0] = (encrypted[0] == 'a' ? 'b' : 'a');
107
108 std::string decrypted;
109 EXPECT_TRUE(nigori.Decrypt(encrypted, &decrypted));
110
111 EXPECT_NE(plaintext, decrypted);
112 }
113
114 TEST(SyncNigoriTest, CorruptedCiphertext) {
115 Nigori nigori;
116 EXPECT_TRUE(nigori.InitByDerivation("example.com", "username", "password"));
117
118 std::string plaintext("test");
119
120 std::string encrypted;
121 EXPECT_TRUE(nigori.Encrypt(plaintext, &encrypted));
122
123 // Corrput the ciphertext by changing one of its bytes.
124 encrypted[Nigori::kIvSize + 10] =
125 (encrypted[Nigori::kIvSize + 10] == 'a' ? 'b' : 'a');
126
127 std::string decrypted;
128 EXPECT_FALSE(nigori.Decrypt(encrypted, &decrypted));
129
130 EXPECT_NE(plaintext, decrypted);
131 }
132
133 // Crashes, Bug 55180.
134 #if defined(OS_WIN)
135 #define MAYBE_ExportImport DISABLED_ExportImport
136 #else
137 #define MAYBE_ExportImport ExportImport
138 #endif
139 TEST(SyncNigoriTest, MAYBE_ExportImport) {
140 Nigori nigori1;
141 EXPECT_TRUE(nigori1.InitByDerivation("example.com", "username", "password"));
142
143 std::string user_key;
144 std::string encryption_key;
145 std::string mac_key;
146 EXPECT_TRUE(nigori1.ExportKeys(&user_key, &encryption_key, &mac_key));
147
148 Nigori nigori2;
149 EXPECT_TRUE(nigori2.InitByImport(user_key, encryption_key, mac_key));
150
151 std::string original("test");
152 std::string plaintext;
153 std::string ciphertext;
154
155 EXPECT_TRUE(nigori1.Encrypt(original, &ciphertext));
156 EXPECT_TRUE(nigori2.Decrypt(ciphertext, &plaintext));
157 EXPECT_EQ(original, plaintext);
158
159 EXPECT_TRUE(nigori2.Encrypt(original, &ciphertext));
160 EXPECT_TRUE(nigori1.Decrypt(ciphertext, &plaintext));
161 EXPECT_EQ(original, plaintext);
162
163 std::string permuted1, permuted2;
164 EXPECT_TRUE(nigori1.Permute(Nigori::Password, original, &permuted1));
165 EXPECT_TRUE(nigori2.Permute(Nigori::Password, original, &permuted2));
166 EXPECT_EQ(permuted1, permuted2);
167 }
168
169 } // anonymous namespace
170 } // namespace browser_sync
OLDNEW
« no previous file with comments | « chrome/browser/sync/util/nigori.cc ('k') | chrome/browser/sync/util/protobuf_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698