blob: 66581dbae48c0e0ddec712033c24822b5086ae9b [file] [log] [blame]
// 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:
virtual ~CookieCryptoDelegate() = default;
// 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.
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.
virtual bool DecryptString(const std::string& ciphertext,
std::string* plaintext) = 0;
};
} // namespace net
#endif // NET_EXTRAS_SQLITE_COOKIE_CRYPTO_DELEGATE_H_