chromium/components/web_package/signed_web_bundles/ed25519_public_key.h

// Copyright 2022 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_WEB_PACKAGE_SIGNED_WEB_BUNDLES_ED25519_PUBLIC_KEY_H_
#define COMPONENTS_WEB_PACKAGE_SIGNED_WEB_BUNDLES_ED25519_PUBLIC_KEY_H_

#include <array>
#include <cstdint>
#include <optional>
#include <string>
#include <vector>

#include "base/containers/span.h"
#include "base/gtest_prod_util.h"
#include "base/types/expected.h"
#include "mojo/public/cpp/bindings/default_construct_tag.h"

namespace web_package {

// This class wraps an Ed25519 public key. New instances must be created via the
// static `Create` function, which will validate the length of the key before
// creating a new instance. This guarantees that an instance of this class
// always contains a public key of the correct length. This makes the key safe
// to use with functions like BoringSSL's `ED25519_sign`. Note that the public
// key might still be invalid, even though it has the correct length. This will
// be checked and caught by BoringSSL when trying to use the key.
class Ed25519PublicKey {};

}  // namespace web_package

#endif  // COMPONENTS_WEB_PACKAGE_SIGNED_WEB_BUNDLES_ED25519_PUBLIC_KEY_H_