blob: 68ecd961d8a8abc95172ceb4f4bf535398ce3f40 [file] [log] [blame]
// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.tpm;
using zx;
/// Defines the ownership status of the TPM.
type OwnershipStatus = flexible enum : uint8 {
/// The TPM does not have an owner.
UNOWNED = 1;
/// The TPM is owned by Fuchsia.
OWNED = 2;
/// The TPM is owned by a non-Fuchsia operating system.
PRE_OWNED = 3;
};
/// The fuchsia.tpm.Provision interface is intended to check if the TPM has
/// an owner and to take ownership of the TPM if it isn't owned.
@discoverable
closed protocol Provision {
/// Returns the OwnershipStatus of the TPM.
strict IsOwned() -> (struct {
ownership OwnershipStatus;
}) error zx.Status;
/// TakeOwnership is a one time setup call that is required on operating
/// system install or after a factory reset.
strict TakeOwnership(table {}) -> () error zx.Status;
};