blob: 4e902efe81ce7a44e5307b47d1acc2f404416797 [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
#ifndef OPENTITAN_SW_DEVICE_LIB_BASE_HARDENED_H_
#define OPENTITAN_SW_DEVICE_LIB_BASE_HARDENED_H_
/**
* @file
* @brief Data Types for use in Hardened Code.
*/
/**
* This is a boolean type for use in hardened contexts.
*
* The intention is that this is used instead of `<stdbool.h>`'s #bool, where a
* higher hamming distance is required between the truthy and the falsey value.
*
* The values below were chosen at random, with some specific restrictions. They
* have a Hamming Distance of 8, and they are 11-bit values so they can be
* materialized with a single instruction on RISC-V. They are also specifically
* not the complement of each other.
*/
typedef enum hardened_bool {
/**
* The truthy value, expected to be used like #true.
*/
kHardenedBoolTrue = 0x739u,
/**
* The falsey value, expected to be used like #false.
*/
kHardenedBoolFalse = 0x1d4u,
} hardened_bool_t;
#endif // OPENTITAN_SW_DEVICE_LIB_BASE_HARDENED_H_