blob: 3cb48cf7801270c39976b6b1ca8a5e89904e2a51 [file] [log] [blame]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "services/network/public/cpp/integrity_metadata.h"
#include "base/base64.h"
namespace network {
IntegrityMetadata::IntegrityMetadata() = default;
IntegrityMetadata::~IntegrityMetadata() = default;
IntegrityMetadata::IntegrityMetadata(mojom::IntegrityAlgorithm algorithm,
std::vector<uint8_t> value)
: algorithm(algorithm), value(std::move(value)) {}
IntegrityMetadata::IntegrityMetadata(mojom::IntegrityAlgorithm algorithm,
base::span<const uint8_t> value)
: algorithm(algorithm), value(value.begin(), value.end()) {}
IntegrityMetadata::IntegrityMetadata(const IntegrityMetadata&) = default;
IntegrityMetadata& IntegrityMetadata::operator=(const IntegrityMetadata&) =
default;
IntegrityMetadata::IntegrityMetadata(IntegrityMetadata&&) = default;
IntegrityMetadata& IntegrityMetadata::operator=(IntegrityMetadata&&) = default;
// static
std::optional<IntegrityMetadata> IntegrityMetadata::CreateFromBase64(
mojom::IntegrityAlgorithm algorithm,
std::string_view base64_encoded_value) {
std::optional<std::vector<uint8_t>> decoded =
base::Base64Decode(base64_encoded_value);
if (!decoded) {
return std::nullopt;
}
return IntegrityMetadata(algorithm, std::move(*decoded));
}
} // namespace network