chromium/chromeos/ash/components/quick_start/quick_start_requests.h

// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROMEOS_ASH_COMPONENTS_QUICK_START_QUICK_START_REQUESTS_H_
#define CHROMEOS_ASH_COMPONENTS_QUICK_START_QUICK_START_REQUESTS_H_

#include <array>
#include <string>

#include "components/cbor/values.h"
#include "crypto/sha2.h"
#include "quick_start_message.h"

namespace ash::quick_start::requests {

std::unique_ptr<QuickStartMessage> BuildBootstrapOptionsRequest();

std::unique_ptr<QuickStartMessage> BuildAssertionRequestMessage(
    std::array<uint8_t, crypto::kSHA256Length> client_data_hash);

std::unique_ptr<QuickStartMessage> BuildGetInfoRequestMessage();

std::unique_ptr<QuickStartMessage> BuildRequestWifiCredentialsMessage(
    uint64_t session_id,
    std::string& shared_secret);

std::vector<uint8_t> CBOREncodeGetAssertionRequest(const cbor::Value& request);

cbor::Value GenerateGetAssertionRequest(
    std::array<uint8_t, crypto::kSHA256Length> client_data_hash);

std::unique_ptr<QuickStartMessage> BuildNotifySourceOfUpdateMessage(
    uint64_t session_id,
    const base::span<uint8_t, 32> shared_secret);

std::unique_ptr<QuickStartMessage> BuildBootstrapStateCancelMessage();

std::unique_ptr<QuickStartMessage> BuildBootstrapStateCompleteMessage();

}  // namespace ash::quick_start::requests

#endif  // CHROMEOS_ASH_COMPONENTS_QUICK_START_QUICK_START_REQUESTS_H_