|  | // Copyright 2013 The Chromium Authors | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef NET_EXTRAS_SQLITE_COOKIE_CRYPTO_DELEGATE_H_ | 
|  | #define NET_EXTRAS_SQLITE_COOKIE_CRYPTO_DELEGATE_H_ | 
|  |  | 
|  | #include <string> | 
|  |  | 
|  | #include "base/component_export.h" | 
|  | #include "base/functional/callback.h" | 
|  |  | 
|  | namespace net { | 
|  |  | 
|  | // Implements encryption and decryption for the persistent cookie store. | 
|  | class COMPONENT_EXPORT(NET_EXTRAS) CookieCryptoDelegate { | 
|  | public: | 
|  | CookieCryptoDelegate() = default; | 
|  |  | 
|  | virtual ~CookieCryptoDelegate() = default; | 
|  |  | 
|  | CookieCryptoDelegate(const CookieCryptoDelegate&) = delete; | 
|  | CookieCryptoDelegate& operator=(const CookieCryptoDelegate&) = delete; | 
|  |  | 
|  | // Called to initialize the delegate. `EncryptString` and `DecryptString` may | 
|  | // only be called once the `callback` has executed. `callback` executes on the | 
|  | // same sequence as the call to `Init` either synchronously or asynchronously. | 
|  | // Note: `Init` may be called multiple times and implementers should handle | 
|  | // that appropriately by servicing every callback either synchronously or | 
|  | // asynchronously. | 
|  | virtual void Init(base::OnceClosure callback) = 0; | 
|  |  | 
|  | // Encrypt `plaintext` string and store the result in `ciphertext`. Returns | 
|  | // true if the encryption succeeded. This must only be called after the | 
|  | // callback from `Init` has run. This method can be called on any sequence. | 
|  | virtual bool EncryptString(const std::string& plaintext, | 
|  | std::string* ciphertext) = 0; | 
|  |  | 
|  | // Decrypt `ciphertext` string and store the result in `plaintext`. Returns | 
|  | // true if the decryption succeeded. This must only be called after the | 
|  | // callback from `Init` has run. This method can be called on any sequence. | 
|  | virtual bool DecryptString(const std::string& ciphertext, | 
|  | std::string* plaintext) = 0; | 
|  | }; | 
|  |  | 
|  | }  // namespace net | 
|  |  | 
|  | #endif  // NET_EXTRAS_SQLITE_COOKIE_CRYPTO_DELEGATE_H_ |