1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_PAYMENTS_CONTENT_BROWSER_BINDING_FAKE_BROWSER_BOUND_KEY_H_
#define COMPONENTS_PAYMENTS_CONTENT_BROWSER_BINDING_FAKE_BROWSER_BOUND_KEY_H_
#include <cstdint>
#include <vector>
#include "components/payments/content/browser_binding/browser_bound_key.h"
namespace payments {
// A fake used in tests to provide instances of BrowserBoundKey.
class FakeBrowserBoundKey : public BrowserBoundKey {
public:
// Constructs a fake browser bound key that returns `identifier`,
// `public_key_as_cose_key`, and `signature` from the respective calls.
// `algorithm_identifier` is the COSE Algorithm identifier that
// `FakeBrowserBoundKeyStore::GetOrCreateBrowserBoundKeyForCredentialId()`
// will match. `Sign()` will compare its input, against
// `expected_client_data`, returning an empty signature when these do not
// match.
// Set `is_new` to false when the key is expected to be retrieved even when
// its algorithm is not listed.
FakeBrowserBoundKey(std::vector<uint8_t> identifier,
std::vector<uint8_t> public_key_as_cose_key,
std::vector<uint8_t> signature,
int32_t algorithm_identifier,
std::vector<uint8_t> expected_client_data,
bool is_new = true);
FakeBrowserBoundKey(const FakeBrowserBoundKey& other);
FakeBrowserBoundKey& operator=(const FakeBrowserBoundKey& other);
~FakeBrowserBoundKey() override;
std::vector<uint8_t> GetIdentifier() const override;
std::vector<uint8_t> Sign(const std::vector<uint8_t>& client_data) override;
std::vector<uint8_t> GetPublicKeyAsCoseKey() const override;
int32_t algorithm_identifier() const { return algorithm_identifier_; }
bool is_new() const { return is_new_; }
private:
std::vector<uint8_t> identifier_;
std::vector<uint8_t> public_key_as_cose_key_;
std::vector<uint8_t> signature_;
int32_t algorithm_identifier_;
std::vector<uint8_t> expected_client_data_;
bool is_new_;
};
} // namespace payments
#endif // COMPONENTS_PAYMENTS_CONTENT_BROWSER_BINDING_FAKE_BROWSER_BOUND_KEY_H_
|