// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
//
// Use the gen-otp-img.py script to convert this configuration into
// a hex file for preloading the OTP in FPGA synthesis or simulation.
//

{
    // Seed to be used for generation of partition randomized values.
    // Can be overridden on the command line with the --seed switch.
    seed: 01931961561863975174

    // The partition and item names must correspond with the OTP memory map.
    partitions: [
        {
            name:  "CREATOR_SW_CFG",
            items: [
                {
                    name:  "CREATOR_SW_CFG_DIGEST",
                    value: "0x0",
                },
                {
                    name: "CREATOR_SW_CFG_USE_SW_RSA_VERIFY",
                    // Use software mod_exp implementation for signature
                    // verification. See the definition of `hardened_bool_t` in
                    // sw/device/lib/base/hardened.h.
                    value: "0x739",
                },
                {
                    name: "CREATOR_SW_CFG_KEY_IS_VALID",
                    // Mark the first two keys as valid and remaining as
                    // invalid since we have currently only two keys. See the
                    // definition of `hardened_byte_bool_t` in
                    // sw/device/lib/base/hardened.h.
                    value: "0x4b4b4b4b4b4ba5a5",
                }
            ],
        }
        {
            name:  "OWNER_SW_CFG",
            items: [
                {
                    name:  "OWNER_SW_CFG_DIGEST",
                    value: "0x0",
                }
            ],
        }
        {
            name:  "HW_CFG",
            // If set to true, this computes the HW digest value
            // and locks the partition.
            lock:  "True",
            items: [
                {
                    name:  "DEVICE_ID",
                    value: "0xBF5EA92044DAC540CFD1A00105568DFA97D9C35EA0407D71320B5E0434DB637F",
                },
                {
                    name:  "EN_CSRNG_SW_APP_READ",
                    value: "0xA5",
                },
                {
                    name:  "EN_ENTROPY_SRC_FW_READ",
                    value: "0xA5",
                },
            ],
        }
        {
            name:  "SECRET0",
            lock:  "True",
            items: [
                {
                    name:  "TEST_UNLOCK_TOKEN",
                    value: "0x79DEF38F41A9B895F6BDF341BEADA9B6",
                }
                {
                    name:  "TEST_EXIT_TOKEN",
                    value: "0x000102030405060708090A0B0C0D0E0F",
                }
            ],
        }
        {
            name:  "SECRET1",
            lock:  "True",
            items: [
                {
                    name:  "FLASH_ADDR_KEY_SEED",
                    value: "<random>",
                }
                {
                    name:  "FLASH_DATA_KEY_SEED",
                    value: "<random>",
                }
                {
                    name:  "SRAM_DATA_KEY_SEED",
                    value: "<random>",
                }
            ],
        }
        {
            name:  "SECRET2",
            lock:  "False",
            items: [
                {
                    name:  "RMA_TOKEN",
                    value: "0x4D89B62D287CB957C2500042306DFD57",
                }
                {
                    name:  "CREATOR_ROOT_KEY_SHARE0",
                    value: "<random>",
                }
                {
                    name:  "CREATOR_ROOT_KEY_SHARE1",
                    value: "<random>",
                }
            ],
        }
        {
            name:  "LIFE_CYCLE",
            // Can be one of the following strings:
            // RAW, TEST_UNLOCKED0-3, TEST_LOCKED0-2, DEV, PROD, PROD_END, RMA, SCRAP
            state: "TEST_UNLOCKED2",
            // Can range from 0 to 16.
            // Note that a value of 0 is only permissible in RAW state.
            count: "7"
        }
    ]
}
