// 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_SIGVERIFY_RSA_MOD_EXP_IBEX_EN",
                    // 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_SIGVERIFY_RSA_KEY_EN",
                    // 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: true,
                },
                {
                    name:  "EN_ENTROPY_SRC_FW_READ",
                    value: true,
                },
            ],
        }
        {
            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"
        }
    ]
}
