1 // Copyright (c) 2010 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 #ifndef COMPONENTS_WEBDATA_ENCRYPTOR_ENCRYPTOR_H_ 6 #define COMPONENTS_WEBDATA_ENCRYPTOR_ENCRYPTOR_H_ 7 8 #include <string> 9 10 #include "base/strings/string16.h" 11 12 // The Encryptor class gives access to simple encryption and decryption of 13 // strings. Note that on Mac, access to the system Keychain is required and 14 // these calls can block the current thread to collect user input. 15 class Encryptor { 16 public: 17 // Encrypt a string16. The output (second argument) is 18 // really an array of bytes, but we're passing it back 19 // as a std::string 20 static bool EncryptString16(const base::string16& plaintext, 21 std::string* ciphertext); 22 23 // Decrypt an array of bytes obtained with EncryptString16 24 // back into a string16. Note that the input (first argument) 25 // is a std::string, so you need to first get your (binary) 26 // data into a string. 27 static bool DecryptString16(const std::string& ciphertext, 28 base::string16* plaintext); 29 30 // Encrypt a string. 31 static bool EncryptString(const std::string& plaintext, 32 std::string* ciphertext); 33 34 // Decrypt an array of bytes obtained with EnctryptString 35 // back into a string. Note that the input (first argument) 36 // is a std::string, so you need to first get your (binary) 37 // data into a string. 38 static bool DecryptString(const std::string& ciphertext, 39 std::string* plaintext); 40 41 #if defined(OS_MACOSX) 42 // For unit testing purposes we instruct the Encryptor to use a mock Keychain 43 // on the Mac. The default is to use the real Keychain. 44 static void UseMockKeychain(bool use_mock); 45 #endif 46 47 private: 48 DISALLOW_IMPLICIT_CONSTRUCTORS(Encryptor); 49 }; 50 51 #endif // COMPONENTS_WEBDATA_ENCRYPTOR_ENCRYPTOR_H_ 52