15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "components/sync_driver/system_encryptor.h" 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/os_crypt/os_crypt.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace sync_driver { 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kPlaintext[] = "The Magic Words are Squeamish Ossifrage"; 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class SystemEncryptorTest : public testing::Test { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) SystemEncryptor encryptor_; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST_F(SystemEncryptorTest, EncryptDecrypt) { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_MACOSX) 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // SystemEncryptor ends up needing access to the keychain on OS X, 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // so use the mock keychain to prevent prompts. 25a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ::OSCrypt::UseMockKeychain(true); 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string ciphertext; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(encryptor_.EncryptString(kPlaintext, &ciphertext)); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_NE(kPlaintext, ciphertext); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string plaintext; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(encryptor_.DecryptString(ciphertext, &plaintext)); 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(kPlaintext, plaintext); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace sync_driver 38