#ifndef NET_DEVICE_BOUND_SESSIONS_SESSION_BINDING_UTILS_H_
#define NET_DEVICE_BOUND_SESSIONS_SESSION_BINDING_UTILS_H_
#include <optional>
#include <string>
#include <string_view>
#include "base/containers/span.h"
#include "crypto/signature_verifier.h"
#include "net/base/net_export.h"
class GURL;
namespace base {
class Time;
}
namespace net::device_bound_sessions {
std::optional<std::string> NET_EXPORT CreateKeyRegistrationHeaderAndPayload(
std::string_view challenge,
crypto::SignatureVerifier::SignatureAlgorithm algorithm,
base::span<const uint8_t> pubkey_spki,
std::optional<std::string> authorization);
std::optional<std::string> NET_EXPORT CreateKeyRefreshHeaderAndPayload(
std::string_view challenge,
crypto::SignatureVerifier::SignatureAlgorithm algorithm);
std::optional<std::string> NET_EXPORT AppendSignatureToHeaderAndPayload(
std::string_view header_and_payload,
crypto::SignatureVerifier::SignatureAlgorithm algorithm,
base::span<const uint8_t> pubkey_spki,
base::span<const uint8_t> signature);
bool NET_EXPORT IsSecure(const GURL& url);
}
#endif