#ifndef __SB_HSM_TYPE_H
#define __SB_HSM_TYPE_H

/** Return status of HSM commands.
 **/
enum sb_hsm_err_e
{
  SB_OK = 0,   //< Command succeeded
  SB_ALREADY,  //< No operation
  SB_ERROR,    //< Error
  SB_NDRV,     //< Driver uninitialized
  SB_EADDR,    //< Invalid address
  SB_NINIT,    //< HSM uninitialized
};

typedef enum sb_hsm_err_e sb_hsm_err_t;

/** Page sizes
 **/
enum sb_page_size_e
{
  sb_p_size_16m, //< 16 MB
  sb_p_size_1m,  //< 1 MB
  sb_p_size_64k, //< 64 kB
  sb_p_size_4k,  //< 4 kB
};

/** Confidentiality modes
 **/
enum sb_confidentiality_mode_e
{
  sb_sp_c_none = 0, //< No confidentiality
  sb_sp_c_otp = 1,  //< One-time-pad
  sb_sp_c_cbc = 2,  //< Cipher block chaining
};

/** Integrity modes
 **/
enum sb_integrity_mode_e
{
  sb_sp_i_none = 0, //< No integrity
  sb_sp_i_mac = 1,  //< MAC set
  sb_sp_i_mact = 2, //< MAC tree
};

#endif
