/*
 * Copyright (c) 2024, Arm Limited. All rights reserved.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 *
 * This file provide a valid CoT DT file
 *
 */

#if test
#include <example/example.h>
#include <example/example/example.h>
#endif

cot
{
	manifests
	{
		compatible = "arm, cert-descs";
#if defined (test)
		example_cert: example_cert
		{
			root-certificate;
			image-id =<EXAMPLE_ID>;
			antirollback-counter = <&example_ctr>;

			example_hash: example_hash
			{
				oid = EXAMPLE_HASH_ID;
			};

		};
#endif
	};

	images
	{
		compatible = "arm, img-descs";

		example
		{
			image-id = <EXAMPLE_ID>;
			parent = <&example_cert>;
			hash = <&example_hash>;
		};
	};
};

non_volatile_counters: non_volatile_counters
{
	compatible = "arm, non-volatile-counter";

	#address-cells = <1>;
	#size-cells = <0>;

	example_ctr: example_ctr
	{
		id  = <TRUSTED_NV_CTR_ID>;
		oid = CCA_FW_NVCOUNTER_OID;
	};
};

rot_keys
{
	example_pk: example_pk
	{
		oid = EXAMPLE_PK_OID;
	};
};
