// 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 #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_