Hardwarový bezpečnostní modul i.MX 8ULP EdgeLock Enclave

Logo NXPPolovodiče
RM00284
EdgeLock Enclave Hardware Security Module API
Rev. 1.0 – 15. prosince 2023
Referenční příručka

Informace o dokumentu

Informace Obsah
Klíčová slova i.MX, Linux, LF6.1.55_2.2.0, EdgeLock Enclave, Hardwarový bezpečnostní modul, API
Abstraktní Tento dokument je softwarový referenční popis API poskytovaného řešeními i.MX 8ULP a i.MX 93 Hardware Security Module (HSM) pro platformu EdgeLock Enclave (ELE).

Nadview

Tento dokument je softwarový referenční popis API poskytovaného řešeními i.MX 8ULP a i.MX 93 Hardware Security Module (HSM) pro platformu EdgeLock Enclave (ELE).
Poznámka: Referenční implementace tohoto API je k dispozici na https://github.com/nxp-imx/imx-secure-enclave. Všechny kódy napřamplesy v tomto dokumentu používají tuto implementaci.

Obecné pojmy související s API

NXP Semiconductors i.MX 8ULP EdgeLock Enclave hardwarový bezpečnostní modul – obecné koncepty související s API

2.1 Zasedání
Rozhraní API musí být inicializováno potenciálním žadatelem otevřením relace.
Relace vytvoří cestu (MU, ID domény…) mezi žadatelem a HSM. Když je relace otevřena, HSM vrátí popisovač identifikující relaci žadateli.
2.2 Tok služeb
Pro danou kategorii služeb, které vyžadují popisovač služeb, se očekává, že žadatel otevře tok služeb vyvoláním příslušného HSM API.
Popisovač relace, stejně jako řídicí data potřebná pro tok služeb, jsou poskytovány jako parametry volání.
Po přijetí otevřeného požadavku HSM alokuje kontext, ve kterém jsou uloženy handle relace, stejně jako poskytnuté řídicí parametry, a vrací handle identifikující tok služeb.
Kontext je zachován, dokud uživatel neuzavře tok služeb nebo relaci a použije jej HSM k pokračování v následných operacích požadovaných uživatelem na toku služeb.

2.3 Přample

/* Otevřít relaci: vytvořit trasu mezi uživatelem a HSM */
hsm_open_session(&open_session_args, &session_hdl):
/* Otevřít uživatel úložiště klíčů je ověřen */
hsm_open_key_store_service(session_hdl, argumenty open_svc_key_store,
&key_store_hdl);
/* Otevřená šifrovací služba, která poskytuje přístup k šifrovacím operacím */
hsm_open_cipher_service(key_store_hdl, &open_svc_cipher_args, &cipher_hdl):
/* Proveďte ECB, CCB … */
hsm_cipher_one_go (cipher_hdl, &op_cipher_one_go_args);
/* Proveďte ověřovací a šifrovací algoritmy: např. GCM */
hsm_auth_enc (cipher_hdl, &op_auth_enc_args);
/* Proveďte hašovací operace: např. SHA */
hsm_hash_one_go (hash_hdl, &op_hash_one_go args);
/* Zavřít relaci a všechny související služby */
hsm_close_session (session_hdl);

2.4 Úložiště klíčů
Úložiště klíčů lze vytvořit zadáním příznaku CREATE v rozhraní API hsm_open_key_store_service.
Vytvořené úložiště klíčů není uloženo v NVM, dokud není vygenerován nebo importován klíč s příznakem „PŘÍSNÁ OPERACE“.
Do úložiště klíčů jsou uloženy pouze symetrické a soukromé klíče. Veřejné klíče lze exportovat během operace generování páru klíčů nebo přepočítat pomocí rozhraní API hsm_pub_key_recovery.
Tajné klíče nelze za žádných okolností exportovat, lze je však importovat v zašifrované podobě.

2.4.1 Správa klíčů
Klíče jsou rozděleny do skupin. Klíče patřící do stejné skupiny jsou zapisovány/čteny z NVM jako monolitický blok.
V místní paměti HSM lze zpracovávat až 2 skupiny klíčů (které jsou okamžitě k dispozici pro provádění kryptografických operací), zatímco v externím NVM lze zpracovávat až 100 skupin klíčů a podle potřeby je importovat do místní paměti.
Pokud je místní paměť plná (2 skupiny klíčů se již nacházejí v místní paměti HSM) a příchozí požadavek uživatele potřebuje novou skupinu klíčů, HSM zamění jednu z místních skupin klíčů za skupinu potřebnou pro požadavek uživatele.
Uživatel může řídit, která skupina klíčů má být uchovávána v místní paměti (v mezipaměti) prostřednictvím mechanismu zamykání/odemykání rozhraní manage_key_group API.
Obecným konceptem je, že často používané klíče by měly být pokud možno uchovávány ve stejné skupině klíčů a uzamčeny v místní paměti pro optimalizaci výkonu.

2.4.2 Zápis NVM
Všechna rozhraní API vytvářející úložiště klíčů (API otevřeného úložiště klíčů) nebo upravující jeho obsah (generování klíčů, správa klíčů, funkce odvozování klíčů) poskytují příznak „PŘÍSNÁ OPERACE“. Pokud je příznak nastaven, HSM exportuje příslušné bloky úložiště klíčů do externího NVM. V případě generování/odvození/aktualizace klíče má „PŘÍSNÝ PROVOZ“ vliv pouze na cílovou skupinu klíčů.
Jakákoli aktualizace paměti klíčů musí být považována za účinnou až poté, co HSM potvrdí operaci specifikující příznak „PŘÍSNÁ OPERACE“. Všechny operace, které neurčují příznaky „PŘÍSNÁ OPERACE“, ovlivňují pouze místní paměť HSM a budou ztraceny v případě resetu systému.
Vzhledem k omezené velikosti monotónního počítadla by měl uživatel, pokud je to možné, provést vícenásobnou aktualizaci před nastavením příznaku „PŘÍSNÝ PROVOZ“ (např.ample, klíče, které mají být aktualizovány, by měly být uchovány ve stejné skupině klíčů).
Když je monotónní počítadlo zcela vypuštěno, při každém exportu úložiště klíčů do NVM se vrátí varování, které informuje uživatele, že nové aktualizace nejsou chráněny proti vrácení zpět.

2.5 Specifika implementace
HSM API se společnými funkcemi jsou podporovány na i.MX 8ULP a i.MX 93. Podrobnosti o podporovaných funkcích na čip jsou uvedeny ve specifikacích platformy.

Dokumentace modulu

3.1 Zasedání
Rozhraní API musí být inicializováno potenciálním žadatelem otevřením relace.
Jakmile je relace uzavřena, všechny související toky služeb jsou uzavřeny HSM.

Datové struktury

  • struct hsm_session_hdl_s
  • struct hsm_service_hdl_s
  • struct open_session_args_t

Makra

  • #define HSM_MAX_SESSIONS (8u)
    Maximální podporované relace.
  • #define HSM_MAX_SERVICES (32u)
    Maximální podporované služby.
  • #define HSM_OPEN_SESSION_PRIORITY_LOW (0x00U)
    Nízká priorita. Výchozí nastavení na platformách, které nepodporují priority relací.
  • #define HSM_OPEN_SESSION_PRIORITY_HIGH (0x01U)
    Relace s vysokou prioritou.
  • #define HSM_OPEN_SESSION_FIPS_MODE_MASK (1u << 0)
    V této relaci jsou povoleny pouze operace s certifikací FIPS.
  • #define HSM_OPEN_SESSION_EXCLUSIVE_MASK (1u << 1)
    Ve stejné bezpečnostní enklávě nejsou autorizovány žádné další relace HSM.
  • #define HSM_OPEN_SESSION_LOW_LATENCY_MASK (1u << 3)
    Použijte implementaci HSM s nízkou latencí.
  • #define HSM_OPEN_SESSION_NO_KEY_STORE_MASK (1u << 4)
    K této relaci není připojeno žádné úložiště klíčů. Může poskytovat lepší výkony u některých operací v závislosti na implementaci. Použití relace je omezeno na operace, které nezahrnují tajné klíče (např. hash, ověření podpisu a náhodné generování).
  • #define HSM_OPEN_SESSION_RESERVED_MASK ((1u << 2) | (1u << 5) | (1u << 6) | (1u << 7))
    Bity vyhrazené pro budoucí použití. Mělo by být nastaveno na 0.

Typedefs

  • typedef uint32_t hsm_hdl_t

Funkce

  • hsm_err_thsm_open_session (open_session_args_t *args, hsm_hdl_t *session_hdl)
  • hsm_err_thsm_close_session (hsm_hdl_t session_hdl)
  • struct hsm_session_hdl_s * session_hdl_to_ptr (uint32_t hdl)
  • struct hsm_service_hdl_s * service_hdl_to_ptr (uint32_t hdl)
  • void delete_session (struct hsm_session_hdl_s *s_ptr)
  • void delete_service (struct hsm_service_hdl_s *s_ptr)
  • struct hsm_session_hdl_s * add_session (neplatné)
  • struct hsm_service_hdl_s * add_service (struct hsm_session_hdl_s *session)

3.1.1 Podrobný popis
Rozhraní API musí být inicializováno potenciálním žadatelem otevřením relace.
Když je relace uzavřena, všechny související toky služeb jsou uzavřeny HSM.

3.1.2 Dokumentace datové struktury
3.1.2.1 struct hsm_session_hdl_s
Struktura popisující členy popisovače relace.

Datová pole

struct plat_os_abs_hdl * phdl Ukazatel na uzel zařízení OS.
uint32_t session_hdl Rukojeť relace.
uint32_t mu_type Typ relace MU.

3.1.2.2 struct hsm_service_hdl_s
Struktura popisující členy popisovače služby.
Datová pole

struct hsm_session_hdl_s * zasedání Ukazatel na popisovač relace.
uint32_t service_hdl Servisní rukojeť.

3.1.2.3 struct open_session_args_t
Struktura podrobně popisující argumenty členů operace otevřené relace.

Datová pole

uint32_t session_hdl Rukojeť relace.
uint8_t priorita_relace Priorita operací prováděných v této relaci.
uint8_t pracovní režim Možnosti pro otevření relace (bitové pole).
uint8_t interrupt_idx Číslo přerušení MU používané k označení dostupnosti dat.

3.1.3 Dokumentace Typedef
3.1.3.1 hsm_hdl_t

typedef uint32_t hsm_hdl_t
Definujte typ rukojeti HSM.

3.1.4 Funkční dokumentace
3.1.4.1 hsm_open_session()

hsm_err_t hsm_open_session (
open_session_args_t * args,
hsm_hdl_t * session_hdl)

Parametry

argumenty Ukazatel na strukturu obsahující argumenty funkce.
session_hdl Ukazatel na místo, kde musí být zapsán popisovač relace.

Návraty
Chybový kód.

3.1.4.2 hsm_close_session()

hsm_err_t hsm_close_session (hsm_hdl_t session_hdl)
Ukončete dříve otevřenou relaci. Všechny služby otevřené v rámci této relace jsou rovněž uzavřeny.

Parametry

session_hdl Ukazatel na popisovač identifikující relaci, která má být uzavřena.

Návraty
Chybový kód.

3.1.4.3 session_hdl_to_ptr()

struct hsm_session_hdl_s* session_hdl_to_ptr (uint32_t hdl)
Vrátí ukazatel na popisovač relace.
Parametry

hdl Identifikace popisovače relace.

Návraty
Ukazatel na popisovač relace.

3.1.4.4 service_hdl_to_ptr()
struct hsm_service_hdl_s* service_hdl_to_ptr (uint32_t hdl)
Vrátí ukazatel na popisovač služby.
Parametry

hdl Identifikace popisovače relace.

Návraty
Ukazatel na servisní úchyt.
3.1.4.5 delete_session()

void delete_session (struct hsm_session_hdl_s * s_ptr)
Smazat relaci.
Parametry

s_ptr Ukazatel identifikující relaci.

3.1.4.6 delete_service()
void delete_service (struct hsm_service_hdl_s * s_ptr)
Smazat službu.
Parametry

s_ptr Ukazatel identifikující službu.

3.1.4.7 add_session()
struct hsm_session_hdl_s* add_session (void)
Přidejte relaci.
Návraty
Ukazatel na relaci.
3.1.4.8 add_service()

struct hsm_service_hdl_s* add_service (
struct hsm_session_hdl_s * session)
Přidejte službu.
Návraty
Ukazatel na službu.

3.2 Správa klíčů
Datové struktury

  • struct op_delete_key_args_t
  • struct op_get_key_attr_args_t
  • struct op_import_key_args_t
  • struct kek_enc_key_hdr_t
  • struct op_generate_key_args_t
  • struct open_svc_key_management_args_t
  • struct op_manage_key_group_args_t

Makra

  • #define HSM_OP_DEL_KEY_FLAGS_STRICT_OPERATION ((hsm_op_delete_key_flags_t)(1u << 7))
  • #define HSM_OP_IMPORT_KEY_INPUT_E2GO_TLV ((hsm_op_import_key_flags_t)(1u << 0))
    Bit 0: nastavení 1 znamená, že vstup je E2GO_TLV.
  • #define HSM_OP_IMPORT_KEY_INPUT_SIGNED_MSG ((hsm_op_import_key_flags_t)(0u << 0))
    Bit 0: nastavení 0 znamená, že vstup je podepsaná zpráva.
  • #define HSM_OP_IMPORT_KEY_FLAGS_STRICT_OPERATION ((hsm_op_import_key_flags_t) (1u << 7))
    Bit 7: Strict: Požadavek dokončen – Nový klíč zapsaný do NVM s aktualizovaným MC.
  • #define HSM_KEY_USAGE_ENCRYPT ((hsm_key_usage_t) (1u << 8))
  • #define HSM_KEY_USAGE_DECRYPT ((hsm_key_usage_t) (1u << 9))
  • #define HSM_KEY_USAGE_SIGN_MSG ((hsm_key_usage_t) (1u << 10))
  • #define HSM_KEY_USAGE_VERIFY_MSG ((hsm_key_usage_t) (1u << 11))
  • #define HSM_KEY_USAGE_SIGN_HASH ((hsm_key_usage_t) (1u << 12))
  • #define HSM_KEY_USAGE_VERIFY_HASH ((hsm_key_usage_t) (1u << 13))
  • #define HSM_KEY_USAGE_DERIVE ((hsm_key_usage_t) (1u << 14))
  • #define HSM_KEY_INFO_PERSISTENT ((hsm_key_info_t)(0u << 1))
  • #define HSM_KEY_INFO_PERMANENT ((hsm_key_info_t)(1u << 0))
  • #define HSM_KEY_INFO_TRANSIENT ((hsm_key_info_t)(1u << 1))
  • #define HSM_OP_KEY_GENERATION_FLAGS_STRICT_OPERATION ((hsm_op_key_gen_flags_t)(1u << 7))
  • #define HSM_OP_MANAGE_KEY_GROUP_FLAGS_CACHE_LOCKDOWN ((hsm_op_manage_key_group_flags_t) (1u << 0))
  • #define HSM_OP_MANAGE_KEY_GROUP_FLAGS_CACHE_UNLOCK ((hsm_op_manage_key_group_flags_t) (1u << 1)) Importujte skupinu klíčů.
  • #define HSM_OP_MANAGE_KEY_GROUP_FLAGS_IMPORT ((hsm_op_manage_key_group_flags_t) (1u << 2))
    Exportujte skupinu klíčů.
  • #define HSM_OP_MANAGE_KEY_GROUP_FLAGS_EXPORT ((hsm_op_manage_key_group_flags_t) (1u << 3))
  • #define HSM_OP_MANAGE_KEY_GROUP_FLAGS_MONOTONIC
  • ((hsm_op_manage_key_group_flags_t) (1u << 5))
  • #define HSM_OP_MANAGE_KEY_GROUP_FLAGS_SYNC_KEYSTORE ((hsm_op_manage_key_group_flags_t) (1u << 6))
  • #define HSM_OP_MANAGE_KEY_GROUP_FLAGS_STRICT_OPERATION ((hsm_op_manage_key_group_flags_t) (1u << 7))

Typedefs

  • typedef uint8_t hsm_op_delete_key_flags_t
  • typedef uint8_t hsm_op_import_key_flags_t
  • typedef uint32_t hsm_key_usage_t
  • typedef uint16_t hsm_key_group_t
  • typedef uint16_t hsm_key_info_t
  • typedef uint8_t hsm_op_key_gen_flags_t
    Reserverd bity 0–6.
  • typedef uint8_t hsm_svc_key_management_flags_t
  • typedef uint8_t hsm_op_manage_key_group_flags_t

Výčty

  • enum hsm_storage_loc_t {
    HSM_SE_KEY_STORAGE = 0x00000000 }
  • enum hsm_storage_persist_lvl_t {
    HSM_VOLATILE_STORAGE = 0x0,
    HSM_PERSISTENT_STORAGE = 0x1,
    HSM_PERMANENT_STORAGE = 0xFF }
  • enum hsm_key_lifetime_t {
    HSM_SE_KEY_STORAGE_VOLATILE = HSM_SE_KEY_STORAGE | HSM_VOLATILE_STORAGE,
    HSM_SE_KEY_STORAGE_PERSISTENT = HSM_SE_KEY_STORAGE | HSM_PERSISTENT_STORAGE,
    HSM_SE_KEY_STORAGE_PERS_PERM = HSM_SE_KEY_STORAGE | HSM_PERMANENT_STORAGE }
  • enum hsm_pubkey_type_t {
    HSM_PUBKEY_TYPE_RSA = 0x4001,
    HSM_PUBKEY_TYPE_ECC_BP_R1 = 0x4130,
    HSM_PUBKEY_TYPE_ECC_NIST = 0x4112,
    HSM_PUBKEY_TYPE_ECC_BP_T1 = 0xC180 }
  • enum hsm_key_type_t {
    HSM_KEY_TYPE_HMAC = 0x1100,
    HSM_KEY_TYPE_AES = 0x2400,
    HSM_KEY_TYPE_SM4 = 0x2405,
    HSM_KEY_TYPE_RSA = 0x7001,
    HSM_KEY_TYPE_ECC_BP_R1 = 0x7130,
    HSM_KEY_TYPE_ECC_NIST = 0x7112 }
  • enum hsm_bit_key_sz_t {
    HSM_KEY_SIZE_HMAC_224 = 224,
    HSM_KEY_SIZE_HMAC_256 = 256,
    HSM_KEY_SIZE_HMAC_384 = 384,
    HSM_KEY_SIZE_HMAC_512 = 512,
    HSM_KEY_SIZE_AES_128 = 128,
    HSM_KEY_SIZE_AES_192 = 192,
    HSM_KEY_SIZE_AES_256 = 256,
    HSM_KEY_SIZE_SM4_128 = 128,
    HSM_KEY_SIZE_RSA_2048 = 2048,
    HSM_KEY_SIZE_RSA_3072 = 3072,
    HSM_KEY_SIZE_RSA_4096 = 4096,
    HSM_KEY_SIZE_ECC_BP_R1_224 = 224,
    HSM_KEY_SIZE_ECC_BP_R1_256 = 256,
    HSM_KEY_SIZE_ECC_BP_R1_320 = 320,
    HSM_KEY_SIZE_ECC_BP_R1_384 = 384,
    HSM_KEY_SIZE_ECC_BP_R1_512 = 512,
    HSM_KEY_SIZE_ECC_NIST_224 = 224,
    HSM_KEY_SIZE_ECC_NIST_256 = 256,
    HSM_KEY_SIZE_ECC_NIST_384 = 384,
    HSM_KEY_SIZE_ECC_NIST_521 = 521,
    HSM_KEY_SIZE_ECC_BP_T1_224 = 224,
    HSM_KEY_SIZE_ECC_BP_T1_256 = 256,
    HSM_KEY_SIZE_ECC_BP_T1_320 = 320,
    HSM_KEY_SIZE_ECC_BP_T1_384 = 384 }
  • enum hsm_permitted_algo_t {
    PERMITTED_ALGO_SHA224 = ALGO_HASH_SHA224,
    PERMITTED_ALGO_SHA256 = ALGO_HASH_SHA256,
    PERMITTED_ALGO_SHA384 = ALGO_HASH_SHA384,
    PERMITTED_ALGO_SHA512 = ALGO_HASH_SHA512,
    PERMITTED_ALGO_SM3 = ALGO_HASH_SM3,
    PERMITTED_ALGO_HMAC_SHA256 = ALGO_HMAC_SHA256,
    PERMITTED_ALGO_HMAC_SHA384 = ALGO_HMAC_SHA384,
    PERMITTED_ALGO_CMAC = ALGO_CMAC,
    PERMITTED_ALGO_CTR = ALGO_CIPHER_CTR,
    PERMITTED_ALGO_CFB = ALGO_CIPHER_CFB,
    PERMITTED_ALGO_OFB = ALGO_CIPHER_OFB,
    PERMITTED_ALGO_ECB_NO_PADDING = ALGO_CIPHER_ECB_NO_PAD,
    PERMITTED_ALGO_CBC_NO_PADDING = ALGO_CIPHER_CBC_NO_PAD,
    PERMITTED_ALGO_CCM = ALGO_CCM,
    PERMITTED_ALGO_GCM = ALGO_GCM,
    PERMITTED_ALGO_RSA_PKCS1_V15_SHA224 = ALGO_RSA_PKCS1_V15_SHA224,
    PERMITTED_ALGO_RSA_PKCS1_V15_SHA256 = ALGO_RSA_PKCS1_V15_SHA256,
    PERMITTED_ALGO_RSA_PKCS1_V15_SHA384 = ALGO_RSA_PKCS1_V15_SHA384,
    PERMITTED_ALGO_RSA_PKCS1_V15_SHA512 = ALGO_RSA_PKCS1_V15_SHA512,
    PERMITTED_ALGO_RSA_PKCS1_PSS_MGF1_SHA224 = ALGO_RSA_PKCS1_PSS_MGF1_SHA224,
    PERMITTED_ALGO_RSA_PKCS1_PSS_MGF1_SHA256 = ALGO_RSA_PKCS1_PSS_MGF1_SHA256,
    PERMITTED_ALGO_RSA_PKCS1_PSS_MGF1_SHA384 = ALGO_RSA_PKCS1_PSS_MGF1_SHA384,
    PERMITTED_ALGO_RSA_PKCS1_PSS_MGF1_SHA512 = ALGO_RSA_PKCS1_PSS_MGF1_SHA512,
    PERMITTED_ALGO_ECDSA_SHA224 = ALGO_ECDSA_SHA224,
    PERMITTED_ALGO_ECDSA_SHA256 = ALGO_ECDSA_SHA256,
    PERMITTED_ALGO_ECDSA_SHA384 = ALGO_ECDSA_SHA384,
    PERMITTED_ALGO_ECDSA_SHA512 = ALGO_ECDSA_SHA512,
    PERMITTED_ALGO_HMAC_KDF_SHA256 = ALGO_HMAC_KDF_SHA256,
    PERMITTED_ALGO_ALL_CIPHER = ALGO_CIPHER_ALL,
    PERMITTED_ALGO_ALL_AEAD = ALGO_ALL_AEAD,
    PERMITTED_ALGO_OTH_KEK_CBC = ALGO_CIPHER_KEK_CBC }
  • enum hsm_key_lifecycle_t {
    HSM_KEY_LIFECYCLE_OPEN = 0x1,
    HSM_KEY_LIFECYCLE_CLOSED = 0x2,
    HSM_KEY_LIFECYCLE_CLOSED_LOCKED = 0x4 }

Funkce

  • hsm_err_thsm_delete_key (hsm_hdl_t key_management_hdl, op_delete_key_args_t *args)
  • hsm_err_thsm_get_key_attr (hsm_hdl_t key_management_hdl, op_get_key_attr_args_t *args)
  • hsm_err_thsm_import_key (hsm_hdl_t key_management_hdl, op_import_key_args_t *args)
  • hsm_err_thsm_generate_key (hsm_hdl_t key_management_hdl, op_generate_key_args_t *args)
  • hsm_err_thsm_open_key_management_service (hsm_hdl_t key_store_hdl, open_svc_key_management_args_t *args, hsm_hdl_t *key_management_hdl)
  • hsm_err_thsm_close_key_management_service (hsm_hdl_t key_management_hdl)
  • hsm_err_t hsm_manage_key_group (hsm_hdl_t key_management_hdl, op_manage_key_group_args_t *args)

Celá skupina klíčů je uložena v místní paměti HSM.

3.2.1 Podrobný popis
3.2.2 Dokumentace datové struktury
3.2.2.1 struct op_delete_key_args_t

Struktura podrobně popisující argumenty členů operace odstranění.
Datová pole

uint32_t klíč_identifikátor Identifikátor klíče, který má být použit pro operaci.
hsm_op_delete_key_flags_t vlajky Bitmapa určující vlastnosti operace.

3.2.2.2 struct op_get_key_attr_args_t
Struktura popisující argumenty operace atributu get key.
Datová pole

uint32_t klíč_identifikátor Identifikátor klíče, který má být použit pro operaci.
hsm_key_type_t key_type Označuje, jaký typ klíče musí být vygenerován.
hsm_bit_key_sz_t bit_key_sz Označuje velikost zabezpečení klíče v bitech.
hsm_key_lifetime_t key_lifetime Tento atribut se skládá ze dvou úrovní perzistence indikátorů a umístění, kde je klíč uložen.
hsm_key_usage_t key_usage Označuje kryptografické operace, které může klíč provést.
hsm_permitted_algo_t povolená_algo Označuje klíč povolený algoritmus.
hsm_key_lifecycle_t životního cyklu Označuje životní cyklus zařízení, ve kterém je klíč použitelný.

3.2.2.3 struct op_import_key_args_t
Struktura podrobně popisující argumenty členů operace importu.
Datová pole

uint32_t klíč_identifikátor Identifikátor KEK použitý k zašifrování klíče, který má být importován (Ignorováno, pokud není použit KEK tak, jak je nastaven jako součást pole „flags“).
uint8_t * input_lsb_addr Adresa v prostoru žadatele, kde:
• EdgeLock 2GO TLV lze nalézt.
• Toto pole ignorujte, pokud není E2GO_TLV.
uint32_t vstupní_velikost Velikost v bajtech:
• EdgeLock 2GO TLV lze nalézt.
• Toto pole ignorujte, pokud není E2GO_TLV.
hsm_op_import_key_flags_t vlajky Bitmapa určující vlastnosti operace.

3.2.2.4 struct kek_enc_key_hdr_t
Struktura popisující záhlaví šifrovacího klíče.

Datová pole

uint8_t iv[IV_LENGTH]
uint8_t * klíč
uint32_t tag

3.2.2.5 struct op_generate_key_args_t
Struktura popisující argumenty členů operace generování.
Datová pole

uint32_t * klíč_identifikátor Ukazatel na identifikátor klíče, který má být použit pro operaci. V případě operace vytvoření se nový identifikátor klíče uloží na toto místo.
uint16_t out_size Délka vygenerovaného klíče v bajtech. To musí být 0 v případě symetrických klíčů.
hsm_op_key_gen_flags_t vlajky Bitmapa určující vlastnosti operace.
hsm_key_type_t key_type Označuje, jaký typ klíče musí být vygenerován.
hsm_key_group_t key_group Skupina klíčů vygenerovaného klíče. Musí to být hodnota v rozsahu 0-99. Klíče patřící do stejné skupiny lze uložit do mezipaměti v místní paměti HSM prostřednictvím rozhraní API hsm_manage_key_group.
uint8_t * out_key Ukazatel na výstupní oblast, kam musí být zapsán vygenerovaný veřejný klíč.
uint16_t exp_out_size Očekávaná velikost vyrovnávací paměti výstupního klíče, platná v případě chybového kódu HSM_OUT_TOO_ SMALL (0x1D).
hsm_bit_key_sz_t bit_key_sz Označuje velikost zabezpečení klíče v bitech.
hsm_key_lifecycle_t key_lifecycle Definuje životní cyklus klíče, ve kterém je klíč použitelný. Pokud je nastaveno na 0, použije se aktuální životní cyklus klíče.
hsm_key_lifetime_t key_lifetime Tento atribut se skládá ze dvou úrovní perzistence indikátorů a umístění, kde je klíč uložen.
hsm_key_usage_t key_usage Označuje kryptografické operace, které může klíč provést.
hsm_permitted_algo_t povolená_algo Označuje klíč povolený algoritmus.

3.2.2.6 struct open_svc_key_management_args_t
Struktura podrobně popisující argumenty členů otevřené služby správy klíčů.
Datová pole

hsm_hdl_t key_management_ hdl Zvládněte identifikaci toku služeb správy klíčů.
hsm_svc_key_management_flags_t vlajky Bitmapa určující vlastnosti služeb.

3.2.2.7 struct op_manage_key_group_args_t
Datová pole

hsm_key_group_t key_group Musí to být hodnota v rozsahu 0-99. Klíče patřící do stejné skupiny lze ukládat do mezipaměti v místní paměti HSM prostřednictvím rozhraní API hsm_manage_key_group.
hsm_op_manage_key_group_flags_t vlajky Bitmapa určující vlastnosti operace.
uint8_t Rezervováno

3.2.3 Dokumentace k definici maker
3.2.3.1 HSM_OP_DEL_KEY_FLAGS_STRICT_OPERATION

#define HSM_OP_DEL_KEY_FLAGS_STRICT_OPERATION ((hsm_op_delete_key_flags_t)(1u <<7))
Bitmapa s podrobnostmi o vlastnostech operace odstranění klíče.

  • Bity 0-4: Vyhrazeno.
  • Bit 5: Monotónní přírůstek čítače.
  • Bit 6: Vyhrazeno.
  • Bit 7: Strict: Požadavek dokončen – Nový klíč zapsaný do NVM s aktualizovaným MC.

3.2.3.2 HSM_KEY_USAGE_ENCRYPT
#define HSM_KEY_USAGE_ENCRYPT ((hsm_key_usage_t) (1u << 8))
Bit označující oprávnění zašifrovat zprávu pomocí klíče.
3.2.3.3 HSM_KEY_USAGE_DECRYPT
#define HSM_KEY_USAGE_DECRYPT ((hsm_key_usage_t) (1u << 9))
Bit označující oprávnění k dešifrování zprávy pomocí klíče.
3.2.3.4 HSM_KEY_USAGE_SIGN_MSG
#define HSM_KEY_USAGE_SIGN_MSG ((hsm_key_usage_t) (1u << 10))
Bit označující oprávnění podepsat zprávu pomocí klíče.
3.2.3.5 HSM_KEY_USAGE_VERIFY_MSG
#define HSM_KEY_USAGE_VERIFY_MSG ((hsm_key_usage_t) (1u << 11))
Bit označující oprávnění ověřit podpis zprávy pomocí klíče.
3.2.3.6 HSM_KEY_USAGE_SIGN_HASH
#define HSM_KEY_USAGE_SIGN_HASH ((hsm_key_usage_t) (1u << 12))
Bit označující oprávnění podepsat hashovanou zprávu pomocí klíče.
3.2.3.7 HSM_KEY_USAGE_VERIFY_HASH
#define HSM_KEY_USAGE_VERIFY_HASH ((hsm_key_usage_t) (1u << 13))
Bit označující oprávnění ověřit podpis hashované zprávy pomocí klíče.
3.2.3.8 HSM_KEY_USAGE_DERIVE
#define HSM_KEY_USAGE_DERIVE ((hsm_key_usage_t) (1u << 14))
Bit označující oprávnění k odvození dalších klíčů z tohoto klíče.
3.2.3.9 HSM_KEY_INFO_PERSISTENT
#define HSM_KEY_INFO_PERSISTENT ((hsm_key_info_t) (0u << 1))
Bit označující trvalé klíče, které jsou uloženy v externím NVM. Celá skupina klíčů je zapsána v NVM při další operaci STRICT.
3.2.3.10 HSM_KEY_INFO_PERMANENT
#define HSM_KEY_INFO_PERMANENT ((hsm_key_info_t) (1u << 0))
Bit označující klíč je trvalý. Po nastavení je klíč trvalý (uzamčen zápis). Jakmile je klíč vytvořen, není již možné jej aktualizovat ani smazat. Přechodné klíče jsou vymazány po PoR nebo po uzavření příslušného toku služeb úložiště klíčů. Tento bit nelze nikdy resetovat.
3.2.3.11 HSM_KEY_INFO_TRANSIENT
#define HSM_KEY_INFO_TRANSIENT ((hsm_key_info_t) (1u << 1))
Bit indikující, že klíč je přechodný. Přechodné klíče se vymažou při uzavření příslušného toku služeb úložiště klíčů nebo po PoR. Přechodné klíče nemohou být ve stejné skupině klíčů jako trvalé klíče.
3.2.3.12 HSM_OP_KEY_GENERATION_FLAGS_STRICT_OPERATION
#define HSM_OP_KEY_GENERATION_FLAGS_STRICT_OPERATION ((hsm_op_key_gen_flags_t)
(1u << 7))
Požadavek je dokončen pouze tehdy, když je nový klíč zapsán v NVM. To platí pro trvalé a trvalé klíče.
3.2.3.13 HSM_OP_MANAGE_KEY_GROUP_FLAGS_CACHE_LOCKDOWN #define
HSM_OP_MANAGE_KEY_GROUP_FLAGS_CACHE_LOCKDOWN ((hsm_op_manage_key_group_flags_t) (1u << 0))
Celá skupina klíčů je uložena v místní paměti HSM.

3.2.3.14 HSM_OP_MANAGE_KEY_GROUP_FLAGS_EXPORT
#define HSM_OP_MANAGE_KEY_GROUP_FLAGS_EXPORT ((hsm_op_manage_key_group_flags_t)
(1u << 3))
Exportujte skupinu klíčů.
3.2.3.15 HSM_OP_MANAGE_KEY_GROUP_FLAGS_MONOTONIC
#definovat
HSM_OP_MANAGE_KEY_GROUP_FLAGS_MONOTONIC ((hsm_op_manage_key_group_flags_t) (1u << 5))
Při použití ve spojení se skupinou klíčů SYNC nebo pouze úložištěm a úložištěm klíčů SYNC je požadavek dokončen pouze při aktualizaci monotónního počítadla.
3.2.3.16 HSM_OP_MANAGE_KEY_GROUP_FLAGS_SYNC_KEYSTORE
#definovat
HSM_OP_MANAGE_KEY_GROUP_FLAGS_SYNC_KEYSTORE ((hsm_op_manage_key_group_flags_t) (1u << 6))

Požadavek je dokončen pouze tehdy, když je aktualizace zapsána v NVM. Nelze použít pro uzamčení/odemknutí mezipaměti.
3.2.4 Dokumentace Typedef
3.2.4.1 hsm_op_delete_key_flags_t

typedef uint8_t hsm_op_delete_key_flags_t
Bitmapa popisující vlastnosti operace odstranění klíče.

3.2.4.2 hsm_op_import_key_flags_t
typedef uint8_t hsm_op_import_key_flags_t
Bitmapa určující vlastnosti podporované operací klíče importu.

  • Bit 0: Definuje konfiguraci vstupu.
  • Bity 1-4: Vyhrazeno.
  • Bit 5: Monotónní přírůstek čítače.
  • Bit 6: Vyhrazeno.
  • Bit 7: Přísné.

3.2.4.3 hsm_key_usage_t
typedef uint32_t hsm_key_usage_t
Bitmapa označující kryptografické operace, které může klíč provést.

3.2.4.4 hsm_key_group_t
typedef uint16_t hsm_key_group_t
Bitové pole označující skupinu klíčů.
3.2.4.5 hsm_key_info_t
typedef uint16_t hsm_key_info_t
Bitové pole označující klíčové informace.
3.2.4.6 hsm_op_key_gen_flags_t
typedef uint8_t hsm_op_key_gen_flags_t
Vyhrazené bity 0–6.
Bitmapa určující vlastnosti podporované operací generování klíče.
3.2.4.7 hsm_svc_key_management_flags_t
typedef uint8_t hsm_svc_key_management_flags_t
Bitmapa určující vlastnosti podporované službou správy klíčů.
3.2.5 Dokumentace typu výčtu
3.2.5.1 hsm_storage_loc_t
výčet hsm_storage_loc_t
Enum označující indikátor umístění klíče.
3.2.5.2 hsm_storage_persist_lvl_t
enum hsm_storage_persist_lvl_t
Enum označující klíčový indikátor trvalé úrovně.
3.2.5.3 hsm_key_lifetime_t
výčet hsm_key_lifetime_t
Výčet udávající životnost klíče.
3.2.5.4 hsm_pubkey_type_t
výčet hsm_pubkey_type_t
Výčet udávající typ veřejného klíče.
3.2.5.5 hsm_key_type_t
výčet hsm_key_type_t
Výčet udávající typ klíče.
3.2.5.6 hsm_bit_key_sz_t
výčet hsm_bit_key_sz_t
Výčet udávající velikost zabezpečení klíče v bitech.
3.2.5.7 hsm_permitted_algo_t
výčet hsm_permitted_algo_t
Výčet popisující povolený algoritmus.
Atribut povoleného algoritmu.

  • Podporovány výchozí algoritmy MAC
  • HMAC zkrácené kódování povoleného algoritmu, CMAC zkrácené kódování povoleného algoritmu a podporované šifrovací algoritmy
  • Podporovány jsou algoritmy AEAD
  • Podporovány podpisové algoritmy

Poznámka: Lze nastavit pouze jeden z předchozích algoritmů.
3.2.5.8 hsm_key_lifecycle_t
výčet hsm_key_lifecycle_t
Výčet s podrobnostmi o povoleném životním cyklu klíče.
3.2.6 Funkční dokumentace
3.2.6.1 hsm_delete_key()
hsm_err_t hsm_delete_key (hsm_hdl_t key_management_hdl, op_delete_key_args_t * args)
Tento příkaz je určen k provedení následující operace:

  • Smazat existující klíč.

Parametry

key_management_hdl Zvládněte identifikaci toku služeb správy klíčů.
argumenty Ukazatel na strukturu obsahující argumenty funkce.

Návraty
Kód chyby
3.2.6.2 hsm_get_key_attr()

hsm_err_t hsm_get_key_attr(
hsm_hdl_t key_management_hdl,
op_get_key_attr_args_t * args)
Tento příkaz je určen k provedení následující operace:

  • Získejte atributy existujícího klíče.

Parametry

key_management_hdl Zvládněte identifikaci toku služeb správy klíčů.
argumenty Ukazatel na strukturu obsahující argumenty funkce.

Návraty
Kód chyby

3.2.6.3 hsm_import_key()
hsm_err_t hsm_import_key (
hsm_hdl_t key_management_hdl,
op_import_key_args_t * args)

Toto rozhraní API se používá k importu klíče.
Parametry

key_management_hdl Zvládněte identifikaci toku služeb správy klíčů.
argumenty Ukazatel na strukturu obsahující argumenty funkce.

Návraty
Kód chyby

3.2.6.4 hsm_generate_key()
hsm_err_t hsm_generate_key (
hsm_hdl_t key_management_hdl,
op_generate_key_args_t * args)
Vygenerujte klíč nebo pár klíčů. V interní paměti klíčů jsou uloženy pouze důvěrné klíče (symetrické a soukromé klíče), zatímco nedůvěrné klíče (veřejný klíč) jsou exportovány.
Vygenerovaný klíč lze uložit pomocí nového nebo existujícího identifikátoru klíče s omezením, že stávající klíč lze nahradit pouze klíčem stejného typu.

Parametry

key_management_hdl Zvládněte identifikaci toku služeb správy klíčů.
argumenty Ukazatel na strukturu obsahující argumenty funkce.

Návraty
Kód chyby

3.2.6.5 hsm_open_key_management_service()

hsm_err_t hsm_open_key_management_service (
hsm_hdl_t key_store_hdl,
open_svc_key_management_args_t * args,
hsm_hdl_t * key_management_hdl )
Otevřete tok služby správy klíčů.
Uživatelé musí tento tok služeb otevřít, aby mohli provádět operace s klíči úložiště klíčů (generovat, aktualizovat, mazat).
Parametry

key_store_hdl Popisovač identifikující tok služeb úložiště klíčů.
argumenty Ukazatel na strukturu obsahující argumenty funkce.
key_management_hdl Ukazatel na místo, kde musí být zapsán popisovač toku služby správy klíčů.

Návraty
Chybový kód.

3.2.6.6 hsm_close_key_management_service()
hsm_err_t hsm_close_key_management_service (hsm_hdl_t key_management_hdl)
Ukončete dříve otevřený tok služby správy klíčů.
Parametry

key_management_hdl Zvládněte identifikaci toku služeb správy klíčů.

Návraty
Kód chyby
3.2.6.7 hsm_manage_key_group()

hsm_err_t hsm_manage_key_group (
hsm_hdl_t key_management_hdl,
op_manage_key_group_args_t * args)
Celá skupina klíčů je uložena v místní paměti HSM.
Tento příkaz je určen k provádění následujících operací:

  • Zamkněte/odemkněte skupinu klíčů v místní paměti HSM, aby byly klíče dostupné pro HSM bez další latence.
  • Odemkněte skupinu klíčů. HSM může exportovat skupinu klíčů do externího NVM, aby se uvolnila místní paměť podle potřeby.
  • Odstraňte existující skupinu klíčů.

Uživatelé mohou tuto funkci volat pouze po otevření toku služby správy klíčů.

Parametry

key_management_hdl Zvládněte identifikaci toku služeb správy klíčů.
argumenty Ukazatel na strukturu obsahující argumenty funkce.

Návraty
Kód chyby

3.3 Šifrování
Moduly

  • i.MX 8ULP

Datové struktury

  • struct op_auth_enc_args_t
  • struct open_svc_cipher_args_t
  • struct op_cipher_one_go_args_t

Makra

  • #define HSM_AUTH_ENC_FLAGS_DECRYPT ((hsm_op_auth_enc_flags_t)(0u << 0))
  • #define HSM_AUTH_ENC_FLAGS_ENCRYPT ((hsm_op_auth_enc_flags_t)(1u << 0))
  • #define HSM_AUTH_ENC_FLAGS_GENERATE_FULL_IV ((hsm_op_auth_enc_flags_t)(1u << 1))
  • #define HSM_AUTH_ENC_FLAGS_GENERATE_COUNTER_IV ((hsm_op_auth_enc_flags_t)(1u << 2))
  • #define HSM_CIPHER_ONE_GO_FLAGS_DECRYPT ((hsm_op_cipher_one_go_flags_t)(0u << 0))
  • #define HSM_CIPHER_ONE_GO_FLAGS_ENCRYPT ((hsm_op_cipher_one_go_flags_t)(1u << 0))

Typedefs

  • typedef uint8_t hsm_op_auth_enc_flags_t
  • typedef uint8_t hsm_svc_cipher_flags_t
  • typedef uint8_t hsm_op_cipher_one_go_flags_t

Výčty

  • enum hsm_op_auth_enc_algo_t {
    HSM_AEAD_ALGO_CCM = ALGO_CCM,
    HSM_AEAD_ALGO_GCM = ALGO_GCM,
    HSM_AEAD_ALGO_ALL_AEAD = ALGO_ALL_AEAD }
  • enum hsm_op_cipher_one_go_algo_t {
    HSM_CIPHER_ONE_GO_ALGO_CTR = ALGO_CIPHER_CTR,
    HSM_CIPHER_ONE_GO_ALGO_CFB = ALGO_CIPHER_CFB,
    HSM_CIPHER_ONE_GO_ALGO_OFB = ALGO_CIPHER_OFB,
    HSM_CIPHER_ONE_GO_ALGO_ECB = ALGO_CIPHER_ECB_NO_PAD,
    HSM_CIPHER_ONE_GO_ALGO_CBC = ALGO_CIPHER_CBC_NO_PAD }

Funkce

  • hsm_err_thsm_do_cipher (hsm_hdl_t cipher_hdl, op_cipher_one_go_args_t *cipher_one_go)
  • hsm_err_thsm_auth_enc (hsm_hdl_t cipher_hdl, op_auth_enc_args_t *args)
  • hsm_err_thsm_open_cipher_service (hsm_hdl_t key_store_hdl, open_svc_cipher_args_t *args, hsm_hdl_t *cipher_hdl)
  • hsm_err_thsm_cipher_one_go (hsm_hdl_t cipher_hdl, op_cipher_one_go_args_t *args)
  • hsm_err_thsm_close_cipher_service (hsm_hdl_t cipher_hdl)

3.3.1 Podrobný popis
3.3.2 Dokumentace datové struktury
3.3.2.1 struct op_auth_enc_args_t
Struktura popisující argumenty autentizované operace šifrování.

Datová pole

uint32_t klíč_identifikátor Identifikátor klíče, který má být použit pro operaci.
uint8_t * iv Ukazatel na uživatelem dodanou část inicializačního vektoru nebo nonce, pokud je to možné, jinak 0.
uint16_t iv_velikost Velikost pevné části inicializačního vektoru. Pro algoritmus GCM to může být:
0 když je interně generována plná IV (konstrukce založená na RBG, bit 1 pole „Flags“).
4 když je použita volba generování čítače IV (deterministická konstrukce, bit 2 pole „Flags“).
12 když je IV zcela generován uživatelem (Bit 1 a Bit 2 pole „Flags“ musí být nastaveny na 0).
Pro velikost IV algoritmu CCM musí být 12 bajtů.
uint8_t * aad Ukazatel na další ověřovací data.
uint16_t aad_size Délka dodatečných ověřovacích dat v bajtech.
hsm_op_auth_enc_algo_t ae_algo Algoritmus, který má být použit pro operaci.
hsm_op_auth_enc_flags_t vlajky Bitmapa určující atributy operace.
uint8_t * vstup Ukazatel na vstupní oblast.
• Prostý text pro šifrování
• Šifrovaný text + Tag (16 bajtů) pro dešifrování
uint8_t * výstup Ukazatel na výstupní oblast. Šifrovaný text + Tag (16 bytů)
• IV pro šifrování
• Prostý text pro dešifrování, pokud je Tag je ověřeno
uint32_t vstupní_velikost Délka vstupu v bajtech.
uint32_t výstupní_velikost Délka výstupu v bajtech.
uint32_t exp_output_size Očekávaná velikost výstupní vyrovnávací paměti v bajtech, platná v případě chybového kódu HSM_OUT_ TOO_SMALL (0x1D).

3.3.2.2 struct open_svc_cipher_args_t
Struktura popisující členy služby otevřené šifry.

Datová pole

uint32_t cipher_hdl Popisovač identifikující tok šifrovací služby.
uint8_t vlajky Bitmapa určující vlastnosti služeb.
uint8_t rezervováno[3]

3.3.2.3 struct op_cipher_one_go_args_t
Struktura popisující argumenty jednorázové operace šifry.
Datová pole

uint32_t klíč_identifikátor Identifikátor klíče, který má být použit pro operaci.
uint8_t * iv Ukazatel na inicializační vektor.
uint16_t iv_velikost Délka inicializačního vektoru v bajtech. To musí být 0 pro algoritmy nepoužívající inicializační vektor.
uint8_t svc_flags Bitmapa určující vlastnosti služeb.
uint8_t vlajky Bitmapa určující atributy operace.
uint32_t cipher_algo Algoritmus, který má být použit pro operaci.
uint8_t * vstup Ukazatel na vstupní oblast:
• Prostý text pro šifrování
• Šifrovaný text pro dešifrování
uint8_t * výstup Ukazatel na výstupní oblast:
• Šifrovaný text pro šifrování
• Prostý text pro dešifrování
uint32_t vstupní_velikost Délka vstupu v bajtech.
• V případě CBC a ECB by velikost vstupu měla být násobkem velikosti blokové šifry (16 bajtů).
uint32_t výstupní_velikost Délka výstupu v bajtech.
uint32_t exp_output_size Očekávaná velikost výstupní vyrovnávací paměti v bajtech, platná v případě chybového kódu (0x1D).

3.3.3 Dokumentace k definici maker
3.3.3.1 HSM_AUTH_ENC_FLAGS_DECRYPT
#define HSM_AUTH_ENC_FLAGS_DECRYPT ((hsm_op_auth_enc_flags_t)(0u << 0))
Bit označující operaci dešifrování.
3.3.3.2 HSM_AUTH_ENC_FLAGS_ENCRYPT
#define HSM_AUTH_ENC_FLAGS_ENCRYPT ((hsm_op_auth_enc_flags_t)(1u << 0))
Bit označující operaci šifrování.
3.3.3.3 HSM_AUTH_ENC_FLAGS_GENERATE_FULL_IV
#define HSM_AUTH_ENC_FLAGS_GENERATE_FULL_IV ((hsm_op_auth_enc_flags_t) (1u <<1))
Bit indikující, že Full IV je generováno interně (relevantní pouze pro šifrování).
3.3.3.4 HSM_AUTH_ENC_FLAGS_GENERATE_COUNTER_IV
#define HSM_AUTH_ENC_FLAGS_GENERATE_COUNTER_IV ((hsm_op_auth_enc_flags_t)(1u <<2))
Bit označující 4 dodané bajty jiné interně generované bajty (relevantní pouze pro šifrování).
3.3.3.5 HSM_CIPHER_ONE_GO_FLAGS_DECRYPT
#define HSM_CIPHER_ONE_GO_FLAGS_DECRYPT ((hsm_op_cipher_one_go_flags_t) (0u <<0))
Bit označující operaci dešifrování.
3.3.3.6 HSM_CIPHER_ONE_GO_FLAGS_ENCRYPT
#define HSM_CIPHER_ONE_GO_FLAGS_ENCRYPT ((hsm_op_cipher_one_go_flags_t) (1u <<0))
Bit označující operaci šifrování.
3.3.4 Dokumentace Typedef
3.3.4.1 hsm_op_auth_enc_flags_t
typedef uint8_t hsm_op_auth_enc_flags_t
Bitové pole označující ověřené operace šifrování.
3.3.4.2 hsm_svc_cipher_flags_t
typedef uint8_t hsm_svc_cipher_flags_t
Bitové pole popisující operaci požadovanou službou otevřené šifry.
3.3.4.3 hsm_op_cipher_one_go_flags_t
typedef uint8_t hsm_op_cipher_one_go_flags_t
Bitové pole označující požadované operace.
3.3.5 Dokumentace typu výčtu
3.3.5.1 hsm_op_auth_enc_algo_t
výčet hsm_op_auth_enc_algo_t
Bitové pole označující podporovaný algoritmus.

Enumerátor

HSM_AEAD_ALGO_CCM CCM (AES CCM)
HSM_AEAD_ALGO_GCM GCM (AES GCM)
HSM_AEAD_ALGO_ALL_AEAD ALL AEAD (ALL AEAD)

3.3.5.2 hsm_op_cipher_one_go_algo_t
výčet hsm_op_cipher_one_go_algo_t
Enum popisující algoritmus operace jednorázové šifry.
Enumerátor

HSM_CIPHER_ONE_GO_ALGO_CTR CTR (podporováno AES).
HSM_CIPHER_ONE_GO_ALGO_CFB CFB (podporováno AES).
HSM_CIPHER_ONE_GO_ALGO_OFB OFB (podporováno AES).
HSM_CIPHER_ONE_GO_ALGO_ECB ECB bez výplně (podpora AES).
HSM_CIPHER_ONE_GO_ALGO_CBC CBC bez odsazení (podporováno AES).

3.3.6 Funkční dokumentace
3.3.6.1 hsm_do_cipher()
hsm_err_t hsm_do_cipher (
hsm_hdl_t cipher_hdl,
op_cipher_one_go_args_t * cipher_one_go)
Sekundární API pro provádění operace šifrování.
Toto rozhraní API provádí následující operace:

  • Otevře tok služby Cipher.
  • Provede operaci Šifrování.
  • Ukončí dříve otevřený tok služby Cipher.

Uživatelé mohou tuto funkci volat pouze po otevření toku šifrovací služby.

Parametry

cipher_hdl Popisovač identifikující tok šifrovací služby.
cipher_one_go Ukazatel na strukturu obsahující argumenty funkce.

Návraty
Kód chyby
3.3.6.2 hsm_auth_enc()

hsm_err_t hsm_auth_enc (
hsm_hdl_t cipher_hdl,
op_auth_enc_args_t * args)
Proveďte operaci ověřeného šifrování.

Uživatelé mohou tuto funkci volat pouze po otevření toku služby Cipher.
Pro operace dešifrování poskytuje volající plnou IV prostřednictvím parametrů iv a iv_size.
Příznaky HSM_AUTH_ENC_FLAGS_GENERATE_FULL_IV a HSM_AUTH_ENC_FLAGS_GENERATE_COUNTER_IV jsou ignorovány.

Pro operace šifrování je třeba při volání této funkce nastavit buď HSM_AUTH_ENC_FLAGS_GENERATE_FULL_IV nebo HSM_AUTH_ENC_FLAGS_GENERATE_COUNTER_IV:

  • Když je nastaveno HSM_AUTH_ENC_FLAGS_GENERATE_FULL_IV, interně se generuje plná IV, iv a iv_size musí být nastaveny na 0.
  • Když je nastaveno HSM_AUTH_ENC_FLAGS_GENERATE_COUNTER_IV, uživatel dodá 4bajtovou pevnou část IV. Ostatní IV bajty jsou generovány interně.

Parametry

cipher_hdl Popisovač identifikující tok šifrovací služby.
argumenty Ukazatel na strukturu obsahující argumenty funkce.

Návraty
Kód chyby
3.3.6.3 hsm_open_cipher_service()

hsm_err_t hsm_open_cipher_service (hsm_hdl_t key_store_hdl, open_svc_cipher_args_t * args, hsm_hdl_t * cipher_hdl)

  • Otevřete tok služby Cipher.
  • Uživatelé mohou tuto funkci volat pouze po otevření toku služeb úložiště klíčů.
  • Uživatelé musí tuto službu otevřít, aby mohli provést operaci šifrování.

Parametry

key_store_hdl Popisovač identifikující tok služeb úložiště klíčů.
argumenty Ukazatel na strukturu obsahující argumenty funkce.
cipher_hdl Ukazatel na místo, kde musí být zapsán popisovač toku šifrovací služby.

Návraty
Kód chyby
3.3.6.4 hsm_cipher_one_go()

hsm_err_t hsm_cipher_one_go (
hsm_hdl_t cipher_hdl,
op_cipher_one_go_args_t * args)
Proveďte operaci šifrování.
Uživatelé mohou tuto funkci volat pouze po otevření toku šifrovací služby.

Parametry

cipher_hdl Popisovač identifikující tok šifrovací služby.
argumenty Ukazatel na strukturu obsahující argumenty funkce.

Návraty
Kód chyby

3.3.6.5 hsm_close_cipher_service()

hsm_err_t hsm_close_cipher_service (hsm_hdl_t cipher_hdl)
Ukončete dříve otevřený tok služby Cipher.

Parametry

cipher_hdl Ukazatel pro zpracování identifikace toku služby Cipher, který má být uzavřen.

Návraty
Kód chyby

3.4 Generování podpisu
Datové struktury

  • struct open_svc_sign_gen_args_t
  • struct op_generate_sign_args_t
  • struct op_prepare_sign_args_t

Makra

  • #define HSM_OP_GENERATE_SIGN_FLAGS_INPUT_DIGEST ((hsm_op_generate_sign_flags_t) (0u << 0))
  • #define HSM_OP_GENERATE_SIGN_FLAGS_INPUT_MESSAGE ((hsm_op_generate_sign_flags_t)(1u <<0))
  • #define HSM_OP_PREPARE_SIGN_INPUT_DIGEST ((hsm_op_prepare_signature_flags_t)(0u << 0)) Bit označující vstupní výtah.
  • #define HSM_OP_PREPARE_SIGN_INPUT_MESSAGE ((hsm_op_prepare_signature_flags_t) (1u << 0)) Bit indikující vstupní zprávu.
  • #define HSM_OP_PREPARE_SIGN_COMPRESSED_POINT ((hsm_op_prepare_signature_flags_t) (1u << 1))
    Bit označující komprimovaný bod.

Typedefs

  • typedef uint8_t hsm_op_generate_sign_flags_t
  • typedef uint8_t hsm_op_prepare_signature_flags_t

Výčty

  • enum hsm_signature_scheme_id_t { HSM_SIGNATURE_SCHEME_RSA_PKCS1_V15_SHA224 = 0x06000208,
    HSM_SIGNATURE_SCHEME_RSA_PKCS1_V15_SHA256 = 0x06000209,
    HSM_SIGNATURE_SCHEME_RSA_PKCS1_V15_SHA384 = 0x0600020A,
    HSM_SIGNATURE_SCHEME_RSA_PKCS1_V15_SHA512 = 0x0600020B,
    HSM_SIGNATURE_SCHEME_RSA_PKCS1_V15_ANY_HASH = 0x060002FF,
    HSM_SIGNATURE_SCHEME_RSA_PKCS1_PSS_MGF1_SHA224 = 0x06000308,
    HSM_SIGNATURE_SCHEME_RSA_PKCS1_PSS_MGF1_SHA256 = 0x06000309,
    HSM_SIGNATURE_SCHEME_RSA_PKCS1_PSS_MGF1_SHA384 = 0x0600030A,
    HSM_SIGNATURE_SCHEME_RSA_PKCS1_PSS_MGF1_SHA512 = 0x0600030B,
    HSM_SIGNATURE_SCHEME_RSA_PKCS1_PSS_MGF1_ANY_HASH = 0x060003FF,
    HSM_SIGNATURE_SCHEME_ECDSA_ANY = 0x06000600,
    HSM_SIGNATURE_SCHEME_ECDSA_SHA224 = 0x06000608,
    HSM_SIGNATURE_SCHEME_ECDSA_SHA256 = 0x06000609,
    HSM_SIGNATURE_SCHEME_ECDSA_SHA384 = 0x0600060A,
    HSM_SIGNATURE_SCHEME_ECDSA_SHA512 = 0x0600060B }

Funkce

  • hsm_err_thsm_do_sign (hsm_hdl_t key_store_hdl, op_generate_sign_args_t *args)
  • hsm_err_thsm_open_signature_generation_service (hsm_hdl_t key_store_hdl, open_svc_sign_gen_args_t
    *args, hsm_hdl_t *signature_gen_hdl)
  • hsm_err_thsm_close_signature_generation_service (hsm_hdl_t signature_gen_hdl)
  • hsm_err_thsm_generate_signature (hsm_hdl_t signature_gen_hdl, op_generate_sign_args_t *args)
  • hsm_err_thsm_prepare_signature (hsm_hdl_t signature_gen_hdl, op_prepare_sign_args_t *args)

3.4.1 Podrobný popis
3.4.2 Dokumentace datové struktury
3.4.2.1 struct open_svc_sign_gen_args_t

Struktura reprezentující argumenty generování znaku otevřené služby.

Datová pole

hsm_hdl_t signature_gen_hdl

3.4.2.2 struct op_generate_sign_args_t
Struktura reprezentující argumenty operace generování znaku.
Datová pole

uint32_t klíč_identifikátor Identifikátor klíče, který má být použit pro operaci.
uint8_t * zpráva Ukazatel na vstup (zprávu nebo výtah), který má být podepsán.
uint8_t * podpis Ukazatel na výstupní oblast, kde musí být uložen podpis. Podpis S=(r,s) je uložen ve formátu r||s||Ry, kde:
• Ry je další bajt obsahující lsb y. Ry je považováno za platné, pouze pokud je nastaven HSM_OP_GENERATE_SIGN_FLAGS_ COMPRESSED_POINT.
uint16_t podpis_velikost Délka výstupu v bajtech. Po operaci generování podpisu toto pole obsahuje očekávanou velikost vyrovnávací paměti pro podpis, pokud operace selže kvůli příliš krátké velikosti poskytnuté výstupní vyrovnávací paměti.
uint32_t message_size Délka vstupu v bajtech.
hsm_signature_scheme_id_t schéma_id Identifikátor schématu digitálního podpisu, které se má pro operaci použít.
uint16_t sůl_len Délka soli v bajtech.
uint16_t exp_signature_size Očekávaná velikost vyrovnávací paměti podpisu pro výstup, vrácená FW v případě, že zadaná velikost vstupního podpisu je menší než požadovaná velikost.
hsm_op_generate_sign_flags_t vlajky Bitmapa určující atributy operace.

3.4.2.3 struct op_prepare_sign_args_t
Struktura podrobně popisující argumenty členů operace přípravy podpisu.
Datová pole

hsm_signature_scheme_id_t schéma_id Identifikátor schématu digitálního podpisu, které se má pro operaci použít.
hsm_op_prepare_signature_ flags_t vlajky Bitmapa určující atributy operace.

3.4.3 Dokumentace k definici maker
3.4.3.1 HSM_OP_GENERATE_SIGN_FLAGS_INPUT_DIGEST

#define HSM_OP_GENERATE_SIGN_FLAGS_INPUT_DIGEST ((hsm_op_generate_sign_flags_t) (0u << 0))
Bitové pole označující vstup je souhrn zprávy.

3.4.3.2 HSM_OP_GENERATE_SIGN_FLAGS_INPUT_MESSAGE
#define HSM_OP_GENERATE_SIGN_FLAGS_INPUT_MESSAGE ((hsm_op_generate_sign_flags_t)
(1u << 0))
Bitové pole označující vstup je skutečnou zprávou.
3.4.4 Dokumentace Typedef
3.4.4.1 hsm_op_generate_sign_flags_t
typedef uint8_t hsm_op_generate_sign_flags_t
Bitové pole označující požadovanou operaci.
3.4.4.2 hsm_op_prepare_signature_flags_t
typedef uint8_t hsm_op_prepare_signature_flags_t
Bitmapa určující podporované atributy operace přípravy podpisu.
3.4.5 Dokumentace typu výčtu
3.4.5.1 hsm_signature_scheme_id_t
výčet hsm_signature_scheme_id_t
Bitové pole označující požadované operace v souladu s PSA:
Bity 2-7: Vyhrazeno.

3.4.6 Funkční dokumentace
3.4.6.1 hsm_do_sign()

hsm_err_t hsm_do_sign (
hsm_hdl_t key_store_hdl,
op_generate_sign_args_t * args)
Sekundární API pro generování podpisu na dané zprávě.
Toto API dělá následující:

  • Otevřete tok služby pro generování podpisu.
  • Na základě příznaku k identifikaci typu zprávy: Digest nebo aktuální zpráva, vygenerujte podpis pomocí klíče odpovídajícího ID klíče.
  • Po provedení operace ukončete dříve otevřený tok služeb generování podpisu.

Uživatelé mohou tuto funkci volat pouze po otevření úložiště klíčů.
Parametry

Návraty
Kód chyby

3.4.6.2 hsm_open_signature_generation_service()
hsm_err_t hsm_open_signature_generation_service (
hsm_hdl_t key_store_hdl,
open_svc_sign_gen_args_t * args,
hsm_hdl_t * signature_gen_hdl)

  • Otevřete tok služby generování podpisu.
  • Uživatelé mohou tuto funkci volat pouze po otevření toku služeb úložiště klíčů.
  • Uživatelé musí tuto službu otevřít, aby mohli provádět operace generování podpisu.

Parametry

key_store_hdl Popisovač identifikující tok služeb úložiště klíčů.
argumenty Ukazatel na strukturu obsahující argumenty funkce.
signature_gen_hdl Ukazatel na místo, kde musí být zapsán popisovač toku služby generování podpisu.

Návraty
Kód chyby
3.4.6.3 hsm_close_signature_generation_service()

hsm_err_t hsm_close_signature_generation_service (hsm_hdl_t signature_gen_hdl)

Ukončete dříve otevřený tok služby generování podpisu.
Parametry

signature_gen_hdl Popisovač identifikující tok služeb generování podpisu, který má být uzavřen.

Návraty
Kód chyby

3.4.6.4 hsm_generate_signature()

hsm_err_t hsm_generate_signature (
hsm_hdl_t signature_gen_hdl,
op_generate_sign_args_t * args)
Vygenerujte digitální podpis podle podpisového schématu.
Uživatelé mohou tuto funkci volat pouze po otevření toku služby generování podpisu.
Podpis S=(r,s) je uložen ve formátu r||s||Ry, kde:

  • Ry je další bajt obsahující lsb y. Ry musí být považováno za platné, pouze pokud je nastaven HSM_OP_GENERATE_SIGN_FLAGS_COMPRESSED_POINT.

Parametry

signature_gen_hdl Popisovač identifikující tok služby generování podpisu.
argumenty Ukazatel na strukturu obsahující argumenty funkce.

Návraty
Kód chyby

3.4.6.5 hsm_prepare_signature()
hsm_err_t hsm_prepare_signature (
hsm_hdl_t signature_gen_hdl,
op_prepare_sign_args_t * args)

Připravte vytvoření podpisu předběžným výpočtem operací, které nezávisí na vstupní zprávě.
Předem vypočítaná hodnota je uložena interně a použita po zavolání hsm_generate_signature. Až do 20
lze uložit předem vypočítané hodnoty a dodatečné operace přípravy nemají žádný vliv.
Uživatelé mohou tuto funkci volat pouze po otevření toku služby generování podpisu.
Podpis S=(r,s) je uložen ve formátu r||s||Ry, kde:

  • Ry je další bajt obsahující lsb y. Ry musí být považováno za platné, pouze pokud je nastaven HSM_OP_PREPARE_ SIGN_COMPRESSED_POINT.

Parametry

signature_gen_hdl Popisovač identifikující tok služby generování podpisu.
argumenty Ukazatel na strukturu obsahující argumenty funkce.

Návraty

3.5 Ověření podpisu
Datové struktury

  • struct open_svc_sign_ver_args_t
  • struct op_verify_sign_args_t

Makra

  • #define HSM_OP_VERIFY_SIGN_FLAGS_INPUT_DIGEST ((hsm_op_verify_sign_flags_t)(0u << 0))
  • #define HSM_OP_VERIFY_SIGN_FLAGS_INPUT_MESSAGE ((hsm_op_verify_sign_flags_t) (1u << 0))
  • #define HSM_OP_VERIFY_SIGN_FLAGS_COMPRESSED_POINT ((hsm_op_verify_sign_flags_t) (1u << 1))
  • #define HSM_OP_VERIFY_SIGN_FLAGS_KEY_INTERNAL ((hsm_op_verify_sign_flags_t) (1u << 2))
  • #define HSM_VERIFICATION_STATUS_SUCCESS ((hsm_verification_status_t) (0x5A3CC3A5u))
  • #define HSM_VERIFICATION_STATUS_FAILURE ((hsm_verification_status_t) (0x2B4DD4B2u))

Typedefs

  • typedef uint32_t hsm_verification_status_t
  • typedef uint8_t hsm_op_verify_sign_flags_t

Funkce

  • hsm_err_thsm_verify_sign (hsm_hdl_t session_hdl, op_verify_sign_args_t *args, hsm_verification_status_t *verification_status)
  • hsm_err_thsm_open_signature_verification_service (hsm_hdl_t session_hdl, open_svc_sign_ver_args_t *args, hsm_hdl_t *signature_ver_hdl)
  • hsm_err_thsm_close_signature_verification_service (hsm_hdl_t signature_ver_hdl)
  • hsm_err_thsm_verify_signature (hsm_hdl_t signature_ver_hdl, op_verify_sign_args_t *args, hsm_verification_status_t *status)

3.5.1 Podrobný popis
3.5.2 Dokumentace datové struktury
3.5.2.1 struct open_svc_sign_ver_args_t

Struktura, která bude reprezentovat argumenty ověření znaménka otevřené služby.

Datová pole

hsm_hdl_t sig_ver_hdl

3.5.2.2 struct op_verify_sign_args_t
Struktura reprezentující argumenty operace ověření podpisu.
Datová pole

uint8_t * klíč Ukazatel na veřejný klíč, který se má použít pro ověření. Pokud je nastaveno HSM_OP_VERIFY_SIGN_FLAGS_KEY_INTERNAL, musí odkazovat na klíč vrácený rozhraním API hsm_import_public_key.
uint8_t * zpráva Ukazatel na vstup (zprávu nebo výtah).
uint8_t * podpis Ukazatel na vstupní podpis. Očekává se, že podpis S=(r,s) bude ve formátu r||s||Ry, kde Ry je další bajt obsahující lsb z y. Ry je považováno za platné, pouze pokud je nastaven HSM_OP_VERIFY_SIGN_FLAGS_COMPRESSED_POINT.
uint16_t velikost_klíče Délka vstupního klíče v bajtech.
uint16_t podpis_velikost Délka výstupu v bajtech. Musí obsahovat jeden další bajt, kam se má uložit Ry.
uint32_t message_size Délka vstupní zprávy v bajtech.
hsm_verification_status_t stav_ověření Stav ověření.
hsm_signature_scheme_id_t schéma_id Identifikátor schématu digitálního podpisu, které se má pro operaci použít.
uint16_t sůl_len Délka soli v bajtech.
hsm_bit_key_sz_t key_sz Označuje velikost zabezpečení klíče v bitech.
hsm_pubkey_type_t pkey_type Označuje typ veřejného klíče.
hsm_op_verify_sign_flags_t vlajky Bitmapa určující atributy operace.

3.5.3 Dokumentace k definici maker
3.5.3.1 HSM_OP_VERIFY_SIGN_FLAGS_INPUT_DIGEST
#define HSM_OP_VERIFY_SIGN_FLAGS_INPUT_DIGEST ((hsm_op_verify_sign_flags_t) (0u<< 0))
Ověřte bit podpisu indikující vstup je výtah zprávy.
3.5.3.2 HSM_OP_VERIFY_SIGN_FLAGS_INPUT_MESSAGE
#define HSM_OP_VERIFY_SIGN_FLAGS_INPUT_MESSAGE ((hsm_op_verify_sign_flags_t) (1u<< 0))
Ověřte bit podpisu indikující, že vstup je skutečná zpráva.
3.5.3.3 HSM_OP_VERIFY_SIGN_FLAGS_COMPRESSED_POINT
#define HSM_OP_VERIFY_SIGN_FLAGS_COMPRESSED_POINT ((hsm_op_verify_sign_flags_t) (1u << 1))
Ověřte bit podpisu indikující vstup na základě formátu podpisu.
3.5.3.4 HSM_OP_VERIFY_SIGN_FLAGS_KEY_INTERNAL
#define HSM_OP_VERIFY_SIGN_FLAGS_KEY_INTERNAL ((hsm_op_verify_sign_flags_t) (1u<< 2))
Ověřte bit podpisu označující vstup jako klíčový argument.

3.5.3.5 HSM_VERIFICATION_STATUS_SUCCESS
#define HSM_VERIFICATION_STATUS_SUCCESS ((hsm_verification_status_t)
(0x5A3CC3A5u))
Ověřte stav úspěšné odpovědi na podpis.
3.5.3.6 HSM_VERIFICATION_STATUS_FAILURE
#define HSM_VERIFICATION_STATUS_FAILURE ((hsm_verification_status_t)
(0x2B4DD4B2u))
Ověřte stav selhání odpovědi na podpis.
3.5.4 Dokumentace Typedef
3.5.4.1 hsm_verification_status_t
typedef uint32_t hsm_verification_status_t
Bit označující stav ověření odpovědi.
3.5.4.2 hsm_op_verify_sign_flags_t
typedef uint8_t hsm_op_verify_sign_flags_t
Bit označující požadované operace.
3.5.5 Funkční dokumentace
3.5.5.1 hsm_verify_sign()
hsm_err_t hsm_verify_sign (
hsm_hdl_t session_hdl,
op_verify_sign_args_t * args,
hsm_verification_status_t * status_verification)
Sekundární API pro ověření podpisu zprávy.
Toto API dělá následující:

  • Otevřete tok pro ověření podpisu.
  • Na základě příznaku k identifikaci typu zprávy: Digest nebo aktuální zpráva se ověření podpisu provádí pomocí veřejného klíče.
  • Po provedení operace ukončete dříve otevřený tok služby ověřování podpisu.

Uživatelé mohou tuto funkci volat pouze po otevření relace.
Parametry

session_hdl Popisovač identifikující aktuální úložiště klíčů.
argumenty Ukazatel na strukturu obsahující argumenty funkce.
stav_ověření Ukazatel pro uložení stavu ověření.

Návraty
Kód chyby
3.5.5.2 hsm_open_signature_verification_service()

hsm_err_t hsm_open_signature_verification_service(
hsm_hdl_t session_hdl,
open_svc_sign_ver_args_t * args,
hsm_hdl_t * signature_ver_hdl)

Uživatelé musí tuto službu otevřít, aby mohli provádět operace ověřování podpisů. Uživatelé mohou tuto funkci volat pouze po otevření relace.

Parametry

session_hdl Rukojeť identifikující aktuální relaci.
argumenty Ukazatel na strukturu obsahující argumenty funkce.
signature_ver_hdl Ukazatel na místo, kde musí být zapsán popisovač toku služby ověřování podpisu.

Návraty
Kód chyby
3.5.5.3 hsm_close_signature_verification_service()

hsm_err_t hsm_close_signature_verification_service (hsm_hdl_t signature_ver_hdl)
Ukončete dříve otevřený tok služby ověřování podpisu.
Parametry

signature_ver_hdl Rukojeť identifikující tok služby ověřování podpisu, který má být uzavřen.

Návraty
Kód chyby
3.5.5.4 hsm_verify_signature()

hsm_err_t hsm_verify_signature (
hsm_hdl_t signature_ver_hdl,
op_verify_sign_args_t * args,
hsm_verification_status_t * stav)
Ověřte digitální podpis podle podpisového schématu. Uživatelé mohou tuto funkci volat pouze po otevření toku služby ověřování podpisu.
Předpokládá se, že podpis S=(r,s) bude ve formátu r||s||Ry, kde:

  • Ry je další bajt obsahující lsb y. Ry je považováno za platné, pouze pokud je nastaven HSM_OP_VERIFY_SIGN_FLAGS_COMPRESSED_POINT.

Tímto příkazem lze použít pouze nekomprimované klávesy (x,y). Komprimované klíče lze dekomprimovat pomocí vyhrazeného API.

Parametry

signature_ver_hdl Popisovač identifikující tok služby ověřování podpisu.
argumenty Ukazatel na strukturu obsahující argumenty funkce.
postavení Ukazatel na místo, kde musí být uložen stav ověření. Pokud ověření proběhne úspěšně, hodnota
HSM_VERIFICATION_STATUS_SUCCESS je vráceno.

Návraty
Kód chyby

3.6 Generování náhodných čísel
Datové struktury

  • struct op_get_random_args_t

Funkce

  • hsm_err_thsm_do_rng (hsm_hdl_t session_hdl, op_get_random_args_t *args)
  • hsm_err_thsm_get_random (hsm_hdl_t rng_hdl, op_get_random_args_t *args)

3.6.1 Podrobný popis
3.6.2 Dokumentace datové struktury
3.6.2.1 struct op_get_random_args_t

Struktura podrobně popisující argumenty členů operace získat náhodné číslo.

Datová pole

uint8_t * výstup Ukazatel na výstupní oblast, kam musí být zapsáno náhodné číslo.
uint32_t náhodná_velikost Délka poskytnutého náhodného čísla v bajtech.

3.6.3 Funkční dokumentace
3.6.3.1 hsm_do_rng()
hsm_err_t hsm_do_rng (
hsm_hdl_t session_hdl,
op_get_random_args_t * args)
Sekundární API pro načtení náhodného čísla.
Toto API dělá následující:
Získejte čerstvě vygenerované náhodné číslo.

Parametry

session_hdl Rukojeť identifikující aktuální relaci.
argumenty Ukazatel na strukturu obsahující argumenty funkce.

Návraty
Kód chyby

3.6.3.2 hsm_get_random()
hsm_err_t hsm_get_random (
hsm_hdl_t rng_hdl,
op_get_random_args_t * args)
Získejte čerstvě vygenerované náhodné číslo.
Uživatelé mohou tuto funkci volat pouze po otevření toku služeb RNG.

Parametry

rng_hdl Rukojeť identifikující tok služby rng.
argumenty Ukazatel na strukturu obsahující argumenty funkce.

Návraty
Kód chyby

3.7 Hašování
Datové struktury

  • struct op_hash_one_go_args_t

Makra

  • #define HSM_HASH_FLAG_ALLOWED

Výčty

  • enum hsm_hash_algo_t {
    HSM_HASH_ALGO_SHA_224 = 0x02000008,
    HSM_HASH_ALGO_SHA_256 = 0x02000009,
    HSM_HASH_ALGO_SHA_384 = 0x0200000A,
    HSM_HASH_ALGO_SHA_512 = 0x0200000B }
  • enum hsm_hash_svc_flags_t {
    HSM_HASH_FLAG_ONE_SHOT = 0x1,
    HSM_HASH_FLAG_INIT = 0x2,
    HSM_HASH_FLAG_UPDATE = 0x4,
    HSM_HASH_FLAG_FINAL = 0x8,
    HSM_HASH_FLAG_GET_CONTEXT = 0x80 }

Funkce

  • hsm_err_thsm_do_hash (hsm_hdl_t session_hdl, op_hash_one_go_args_t *args)
  • hsm_err_thsm_hash_one_go (hsm_hdl_t hash_hdl, op_hash_one_go_args_t *args)

3.7.1 Podrobný popis
3.7.2 Dokumentace datové struktury
3.7.2.1 struct op_hash_one_go_args_t

Struktura popisující argumenty jednorázové operace hash.
Datová pole

uint8_t * msb Musí být ukazatel na MSB adresy v prostoru žadatele, kde lze nalézt vyrovnávací paměti 0 dokud nebude podporováno.
uint8_t * ctx Ukazatel na kontext.
uint8_t * vstup Ukazatel na vstupní data, která mají být hašována.
uint8_t * výstup Ukazatel na výstupní oblast, kde musí být zapsán výsledný výtah.
uint32_t vstupní_velikost Délka vstupu v bajtech.
uint32_t výstupní_velikost Délka výstupu v bajtech.
hsm_hash_algo_t algo Hash algoritmus, který má být použit pro operaci.
hsm_hash_svc_flags_t svc_flags Příznaky identifikující operaci init() update(), final() nebo operaci one shot.
uint16_t ctx_size Velikost kontextové vyrovnávací paměti v bajtech, ignorována v případě jednorázové operace.
uint32_t exp_output_size Očekávaná velikost výstupního digestu, vrácená FW v případě, že zadaná výstupní velikost je nesprávná.
uint16_t kontext_velikost Očekávaná velikost kontextu k přidělení v bajtech, pokud je nastaven příznak Získat velikost kontextu nebo je-li zadaná velikost kontextu nesprávná.

3.7.3 Dokumentace k definici maker
3.7.3.1 HSM_HASH_FLAG_ALLOWED

#define HSM_HASH_FLAG_ALLOWED

Hodnota: (HSM_HASH_FLAG_ONE_SHOT | HSM_HASH_FLAG_INIT \
| HSM_HASH_FLAG_UPDATE | HSM_HASH_FLAG_FINAL \
| HSM_HASH_FLAG_GET_CONTEXT)

Bitmapa označující povolené operace hashovací služby.
3.7.4 Dokumentace typu výčtu
3.7.4.1 hsm_hash_algo_t

výčet hsm_hash_algo_t
Bitmapa označující podporovaný hašovací algoritmus.

3.7.4.2 hsm_hash_svc_flags_t
výčet hsm_hash_svc_flags_t
Bitové pole označující operace hashovací služby.

3.7.5 Funkční dokumentace
3.7.5.1 hsm_do_hash()

hsm_err_t hsm_do_hash (
hsm_hdl_t session_hdl,
op_hash_one_go_args_t * args)
Sekundární rozhraní API pro zpracování zprávy.
Toto API provádí hash.

Parametry

session_hdl Rukojeť identifikující aktuální relaci.
argumenty Ukazatel na strukturu obsahující argumenty funkce.

Návraty
Kód chyby
3.7.5.2 hsm_hash_one_go()
hsm_err_t hsm_hash_one_go (
hsm_hdl_t hash_hdl,
op_hash_one_go_args_t * args)
Proveďte hashovací operaci na daném vstupu.
Uživatelé mohou tuto funkci volat pouze po otevření toku hashovací služby.

Parametry

hash_hdl Popisovač identifikující tok hashovací služby.
argumenty Ukazatel na strukturu obsahující argumenty funkce.

Návraty
Kód chyby

3.8 Ukládání dat
Datové struktury

  • struct open_svc_data_storage_args_t
  • struct op_data_storage_args_t
  • struct op_enc_data_storage_args_t

Makra

  • #define HSM_OP_DATA_STORAGE_FLAGS_EL2GO ((hsm_op_data_storage_flags_t) (1u << 0))
  • #define HSM_OP_DATA_STORAGE_FLAGS_DEFAULT ((hsm_op_data_storage_flags_t) (0u << 0)) Ukládat data.
  • #define HSM_OP_DATA_STORAGE_FLAGS_STORE ((hsm_op_data_storage_flags_t) (1u << 1)) Načtení dat.
  • #define HSM_OP_DATA_STORAGE_FLAGS_RETRIEVE ((hsm_op_data_storage_flags_t) (0u << 1))
  • #define ENC_DATA_TLV_DEV_UUID_TAG 0x41u
  • #define ENC_DATA_TLV_IV_TAG 0x45u
  • #define ENC_DATA_TLV_ENC_DATA_TAG 0x46u
  • #define ENC_DATA_TLV_SIGN_TAG 0x5Eu
  • #define ENC_DATA_TLV_DEV_UUID_TAG_LEN 0x01u
  • #define ENC_DATA_TLV_IV_TAG_LEN 0x01u
  • #define ENC_DATA_TLV_ENC_DATA_TAG_LEN 0x01u
  • #define ENC_DATA_TLV_SIGN_TAG_LEN 0x01u
  • #define HSM_OP_ENC_DATA_STORAGE_FLAGS_RANDOM_IV ((hsm_op_enc_data_storage_flags_t) (1u << 0))
    Interně vygenerujte náhodné IV, pokud je to nutné pro provoz.
  • #define HSM_OP_ENC_DATA_STORAGE_FLAGS_READ_ONCE ((hsm_op_enc_data_storage_flags_t) (1u << 1))
    Přečíst jednou a po načtení smazat data z NVM.

Typedefs

  • typedef uint8_t hsm_svc_data_storage_flags_t
  • typedef uint8_t hsm_op_data_storage_flags_t
  • typedef uint16_t hsm_op_enc_data_storage_flags_t

Funkce

  • hsm_err_thsm_data_ops (hsm_hdl_t key_store_hdl, op_data_storage_args_t *args)
  • hsm_err_thsm_enc_data_ops (hsm_hdl_t key_store_hdl, op_enc_data_storage_args_t *args)
  • hsm_err_thsm_open_data_storage_service (hsm_hdl_t key_store_hdl, open_svc_data_storage_args_t *args, hsm_hdl_t *data_storage_hdl)
  • hsm_err_thsm_data_storage (hsm_hdl_t data_storage_hdl, op_data_storage_args_t *args)
  • hsm_err_thsm_enc_data_storage (hsm_hdl_t data_storage_hdl, op_enc_data_storage_args_t *args)
  • uint8_t decode_enc_data_tlv (op_data_storage_args_t *args)
  • hsm_err_thsm_close_data_storage_service (hsm_hdl_t data_storage_hdl)

3.8.1 Podrobný popis
3.8.2 Dokumentace datové struktury
3.8.2.1 struct open_svc_data_storage_args_t
Struktura určující argumenty člena otevřené služby datového úložiště.
Datová pole

hsm_hdl_t popisovač_úložišť dat Rukojeť úložiště dat.
hsm_svc_data_storage_flags_t vlajky Bitmapa určující vlastnosti služeb.
uint8_t rezervováno[3]

3.8.2.2 struct op_data_storage_args_t
Struktura podrobně popisující argumenty členů operace ukládání dat.

Datová pole

uint8_t * data Ukazatel na data. V případě požadavku na uložení jsou to vstupní data k uložení. V případě načítání je to ukazatel, kam načíst data.
uint32_t data_size Délka dat v bajtech.
uint32_t data_id ID dat.
hsm_op_data_storage_flags_t vlajky Označuje bitmapu určující atributy operace.
hsm_svc_data_storage_flags_t svc_flags Bitmapa určující vlastnosti služeb.
uint16_t uuid_len Délka UUID zařízení v bajtech. V případě načtení, pokud jsou načtená data ve formátu TLV, který byl uložen pomocí Encrypted Data Storage API, jsou data formátu TLV dekódována tak, aby vyplnila následující pole. Paměť pro ukládání uuid/iv/ciphertext/payload/signature je přidělena knihovnou HSM. Volající funkce decode_enc_data_tlv(), potřebuje zajistit uvolnění paměti.
uint8_t * uuid UUID zařízení.
uint16_t iv_len IV délka v bajtech, pokud je potřeba, jinak 0.
uint8_t * iv IV pufr, je-li potřeba.
uint32_t ciphertext_len Délka šifrovaného textu v bajtech.
uint8_t * šifrovaný text Vyrovnávací paměť šifrovaného textu.
uint32_t payload_len Délka užitečného zatížení v bajtech.
uint8_t * užitečné zatížení Vyrovnávací paměť dat pro ověření podpisu.
uint16_t podpis_len Délka podpisu v bajtech.
uint8_t * podpis Vyrovnávací paměť pro podpis.
uint32_t exp_output_size Očekávaná velikost výstupní vyrovnávací paměti v bajtech, platná v případě chybového kódu HSM_OUT_ TOO_SMALL (0x1D).

3.8.2.3 struct op_enc_data_storage_args_t
Datová pole

uint32_t data_id ID dat.
uint8_t * data Ukazatel na data, která mají být zašifrována a podepsána.
uint32_t data_size Délka dat v bajtech.
uint32_t enc_algo Šifrovací algoritmus, který má být použit pro šifrování dat.
uint32_t enc_key_id Identifikátor klíče, který má být použit pro šifrování.
uint32_t sign_algo Podpisový algoritmus, který má být použit pro podepisování dat.
uint32_t sign_key_id Identifikátor klíče, který má být použit pro podepisování.
uint8_t * iv Ukazatel na IV buffer.
uint16_t iv_velikost IV velikost v bajtech.
hsm_op_enc_data_storage_ flags_t vlajky Bitmapa určující atributy operace.
hsm_svc_data_storage_flags_t svc_flags Bitmapa určující atributy služby.
uint16_t životního cyklu Bitová maska ​​životního cyklu zařízení, ve které lze načíst data.
uint32_t out_data_size Velikost (bajty) podepsaného TLV uloženého, ​​přijatého s API resp.

3.8.3 Dokumentace k definici maker
3.8.3.1 ENC_DATA_TLV_DEV_UUID_TAG
#define ENC_DATA_TLV_DEV_UUID_TAG 0x41u
Šifrovaná data TLV Tags.
3.8.3.2 ENC_DATA_TLV_DEV_UUID_TAG_LEN
#define ENC_DATA_TLV_DEV_UUID_TAG_LEN 0x01u
Šifrovaná data TLV Tags délky.
3.8.4 Dokumentace Typedef
3.8.4.1 hsm_svc_data_storage_flags_t
typedef uint8_t hsm_svc_data_storage_flags_t
Bitmapa určující vlastnosti podporované službou otevřeného úložiště dat.
3.8.4.2 hsm_op_data_storage_flags_t
typedef uint8_t hsm_op_data_storage_flags_t
Bitmapa určující atributy podporované operací ukládání dat.
3.8.4.3 hsm_op_enc_data_storage_flags_t
typedef uint16_t hsm_op_enc_data_storage_flags_t
Bitmapa určující atributy podporované operací ukládání šifrovaných dat.
3.8.5 Funkční dokumentace
3.8.5.1 hsm_data_ops()
hsm_err_t hsm_data_ops (
hsm_hdl_t key_store_hdl,
op_data_storage_args_t * args)

Sekundární API pro ukládání a načítání dat z Linuxu filesystém spravovaný EdgeLock Enclave Firmware.
Toto API dělá následující:

  • Otevřete službu úložiště dat Flow.
  • Na základě příznaku pro operaci atribut: Store nebo Retrieve
    – Uložte data.
    – Načtěte data z energeticky nezávislého úložiště.
  • Po provedení operace ukončete dříve otevřený tok služeb úložiště dat.

Uživatelé mohou tuto funkci volat pouze po otevření úložiště klíčů.

Parametry

key_store_hdl Popisovač identifikující aktuální úložiště klíčů.
argumenty Ukazatel na strukturu obsahující argumenty funkce.

Návraty
Kód chyby
3.8.5.3 hsm_open_data_storage_service()
hsm_err_t hsm_open_data_storage_service(
hsm_hdl_t key_store_hdl,
open_svc_data_storage_args_t * args,
hsm_hdl_t * data_storage_hdl)
Otevřete tok služby úložiště dat.
Uživatelé musí otevřít tento tok služeb, aby mohli uložit/načíst obecná data v/z HSM.

Parametry

key_store_hdl Popisovač identifikující tok služeb úložiště klíčů.
argumenty Ukazatel na strukturu obsahující argumenty funkce.
data_storage_hdl Ukazatel na místo, kde musí být zapsán popisovač toku služby úložiště dat.

Návraty
Chybový kód.
3.8.5.4 hsm_data_storage()

hsm_err_t hsm_data_storage (
hsm_hdl_t data_storage_hdl,
op_data_storage_args_t * args)
Uložte nebo načtěte obecná data identifikovaná pomocí data_id.
Parametry

data_storage_hdl Rukojeť identifikující tok služeb úložiště dat.
argumenty Ukazatel na strukturu obsahující argumenty funkce.

Návraty
Kód chyby
3.8.5.5 hsm_enc_data_storage()
hsm_err_t hsm_enc_data_storage (
hsm_hdl_t data_storage_hdl,
op_enc_data_storage_args_t * args)
Ukládejte šifrovaná a podepsaná data v NVM.
Parametry

data_storage_hdl Rukojeť identifikující tok služeb úložiště dat.
argumenty Ukazatel na strukturu obsahující argumenty funkce.

Návraty
Kód chyby
3.8.5.6 decode_enc_data_tlv()
uint8_t decode_enc_data_tlv (op_data_storage_args_t * args)
Dekódujte a naplňte operační parametry úložiště dat pro pole TLV šifrovaných dat.
Parametry

argumenty Ukazatel na strukturu obsahující vyrovnávací paměť TLV pro načtená šifrovaná data, která má být naplněna dekódovanými daty z TLV.

Návraty
Kód chyby 0 pro úspěch
3.8.5.7 hsm_close_data_storage_service()
hsm_err_t hsm_close_data_storage_service(
hsm_hdl_t data_storage_hdl)
Ukončete dříve otevřený tok služeb úložiště dat
Parametry

data_storage_hdl Rukojeť identifikující tok služeb úložiště dat.

Návraty
Kód chyby

3.9 Ověřené šifrování
Funkce

  • hsm_err_thsm_do_auth_enc (hsm_hdl_t key_store_hdl, op_auth_enc_args_t *auth_enc_args)

3.9.1 Podrobný popis
3.9.2 Funkční dokumentace
3.9.2.1 hsm_do_auth_enc()

hsm_err_t hsm_do_auth_enc (
hsm_hdl_t key_store_hdl,
op_auth_enc_args_t * auth_enc_args)
Sekundární API pro provádění ověřeného šifrování.
Toto API dělá následující:

  • Otevře tok služby Cipher.
  • Proveďte operaci ověřeného šifrování.
  • Ukončí dříve otevřený tok služby Cipher.

Uživatelé mohou tuto funkci volat pouze po otevření toku služeb úložiště klíčů.
Parametry

key_store_hdl Popisovač identifikující tok služeb úložiště klíčů.
auth_enc_args Ukazatel na strukturu obsahující argumenty funkce.

Návraty
Kód chyby
3.10 MAC
Datové struktury

  • struct open_svc_mac_args_t
  • struct op_mac_one_go_args_t

Makra

  • #define HSM_OP_MAC_ONE_GO_FLAGS_MAC_VERIFICATION ((hsm_op_mac_one_go_flags_t) (0u <<0))
  • #define HSM_OP_MAC_ONE_GO_FLAGS_MAC_GENERATION ((hsm_op_mac_one_go_flags_t)(1u << 0))
  • #define HSM_MAC_VERIFICATION_STATUS_SUCCESS ((hsm_mac_verification_status_t) (0x6C1AA1C6u))

Typedefs

  • typedef uint8_t hsm_op_mac_one_go_flags_t
  • typedef uint32_t hsm_mac_verification_status_t
  • typedef hsm_permitted_algo_thsm_op_mac_one_go_algo_t

Funkce

  • hsm_err_thsm_do_mac (hsm_hdl_t key_store_hdl, op_mac_one_go_args_t *mac_one_go)
  • hsm_err_thsm_open_mac_service (hsm_hdl_t key_store_hdl, open_svc_mac_args_t *args, hsm_hdl_t*mac_hdl)
  • hsm_err_thsm_mac_one_go (hsm_hdl_t mac_hdl, op_mac_one_go_args_t *args, hsm_mac_verification_status_t *stav)
  • hsm_err_thsm_close_mac_service (hsm_hdl_t mac_hdl)

3.10.1 Podrobný popis
3.10.2 Dokumentace datové struktury
3.10.2.1 struct open_svc_mac_args_t

Struktura popisující argumenty členů otevřené služby MAC.

Datová pole

hsm_hdl_t mac_serv_hdl Označuje popisovač MAC.

3.10.2.2 struct op_mac_one_go_args_t
Struktura popisující argumenty členů jednorázové operace MAC.
Datová pole

uint32_t klíč_identifikátor Identifikátor klíče, který má být použit pro operaci.
hsm_op_mac_one_go_algo_t algoritmus Algoritmus, který má být použit pro operaci.
hsm_op_mac_one_go_flags_t vlajky Bitmapa určující atributy operace.
uint8_t * užitečné zatížení Ukazatel na oblast užitečného zatížení.
uint8_t * mac Ukazatel na tag plocha.
uint32_t užitečná_velikost Délka užitečného zatížení v bajtech.
uint16_t mac_size Délka tag.
• Zadáno v bajtech, pokud je HSM_OP_MAC_ONE_GO_FLAGS_MAC_LENGTH_IN_BITS prázdné.
• Určeno v bitech, když je nastaveno HSM_OP_MAC_ONE_GO_FLAGS_MAC_LENGTH_IN_BITS.
– Při zadání v bajtech nemůže být velikost MAC menší než 4 bajty.
– Při zadání v bitech nemůže být velikost MAC menší než:
– Nastavení min_mac_len specifické pro klíč, pokud je pro tento klíč při generování/injektování zadáno.
– Hodnota min_mac_length, pokud je zadána při zajišťování úložiště klíčů. (Pokud při generování/vkládání klíče není specifikováno nastavení specifické pro klíč).
– Výchozí hodnota (32 bitů), pokud není zadaná minimální hodnota pomocí jedné ze 2 výše uvedených metod.
hsm_mac_verification_status_t stav_ověření Stav ověření MAC.
uint16_t exp_mac_size Očekávaná velikost MAC pro výstup, vrácená FW v případě, že poskytnutá velikost MAC je menší než očekávaná velikost MAC vypočítaná z algoritmu MAC.

3.10.3 Dokumentace k definici maker
3.10.3.1 HSM_OP_MAC_ONE_GO_FLAGS_MAC_VERIFICATION
#define HSM_OP_MAC_ONE_GO_FLAGS_MAC_VERIFICATION ((hsm_op_mac_one_go_flags_t)
(0u << 0))
Bit indikující operaci jednorázového ověření MAC.
3.10.3.2 HSM_OP_MAC_ONE_GO_FLAGS_MAC_GENERATION
#define HSM_OP_MAC_ONE_GO_FLAGS_MAC_GENERATION ((hsm_op_mac_one_go_flags_t)(1u
<< 0))
Bit indikující operaci jednorázového generování MAC.
3.10.3.3 HSM_MAC_VERIFICATION_STATUS_SUCCESS
#define HSM_MAC_VERIFICATION_STATUS_SUCCESS ((hsm_mac_verification_status_t)
(0x6C1AA1C6u))
Bit indikující stav úspěšného ověření MAC.
3.10.4 Dokumentace Typedef
3.10.4.1 hsm_op_mac_one_go_flags_t
typedef uint8_t hsm_op_mac_one_go_flags_t
Bitmapa popisující operaci MAC one go.

3.10.4.2 hsm_mac_verification_status_t
typedef uint32_t hsm_mac_verification_status_t
Bitmapa popisující stav ověření MAC.
3.10.4.3 hsm_op_mac_one_go_algo_t
typedef hsm_permitted_algo_t hsm_op_mac_one_go_algo_t
Bitmapa popisující povolený algoritmus operace MAC one go.
Jsou povoleny následující tři povolené alga:

  • PERMITTED_ALGO_HMAC_SHA256 = 0x03800009
  • PERMITTED_ALGO_HMAC_SHA384 = 0x0380000A
  • PERMITTED_ALGO_CMAC = 0x03C00200

3.10.5 Funkční dokumentace
3.10.5.1 hsm_do_mac()
hsm_err_t hsm_do_mac (
hsm_hdl_t key_store_hdl,
op_mac_one_go_args_t * mac_one_go)
Sekundární API pro provádění operací MAC.
Toto API dělá následující:

  • Otevřete tok služeb MAC.
  • Proveďte operaci MAC.
  • Ukončete dříve otevřený tok služeb MAC.

Uživatelé mohou tuto funkci volat pouze po otevření toku služeb úložiště klíčů.

Parametry

key_store_hdl Popisovač identifikující tok služeb úložiště klíčů.
mac_one_go Ukazatel na strukturu obsahující argumenty funkce.

Návraty
Kód chyby
3.10.5.2 hsm_open_mac_service()

hsm_err_t hsm_open_mac_service (
hsm_hdl_t key_store_hdl,
open_svc_mac_args_t * args,
hsm_hdl_t * mac_hdl)
Otevřete tok služby MAC.
Uživatelé mohou tuto funkci volat pouze po otevření toku služeb úložiště klíčů.
Uživatelé musí tuto službu otevřít, aby mohli provádět operace MAC.

Parametry

key_store_hdl Popisovač identifikující tok služeb úložiště klíčů.
argumenty Ukazatel na strukturu obsahující argumenty funkce.
mac_hdl Ukazatel na místo, kde musí být zapsán popisovač toku služby MAC.

Návraty
Kód chyby
3.10.5.3 hsm_mac_one_go()

hsm_err_t hsm_mac_one_go (
hsm_hdl_t mac_hdl,
op_mac_one_go_args_t * args,
hsm_mac_verification_status_t * stav)
Proveďte operaci MAC.
Uživatelé mohou tuto funkci volat pouze po otevření toku služeb MAC.
Pro algoritmus CMAC je nutné použít klíč typu HSM_KEY_TYPE_AES_XXX.
Pro algoritmus HMAC je nutné použít klíč typu HSM_KEY_TYPE_HMAC_XXX.
Pro operace ověřování MAC lze délku ověřené MAC specifikovat v:

  • Bitů nastavením příznaku HSM_OP_MAC_ONE_GO_FLAGS_MAC_LENGTH_IN_BITS.
  • Pokud je tento příznak prázdný, mac_length je uvedena v bajtech.

Pro operace generování MAC:

  • Délka MAC musí být nastavena v bajtech.
  • Příznak HSM_OP_MAC_ONE_GO_FLAGS_MAC_LENGTH_IN_BITS musí být 0.

Parametry

mac_hdl Rukojeť identifikující tok služeb MAC.
argumenty Ukazatel na strukturu obsahující argumenty funkce.
postavení Ukazatel pro uložení stavu ověření.

Návraty
Kód chyby

3.10.5.4 hsm_close_mac_service()
hsm_err_t hsm_close_mac_service (hsm_hdl_t mac_hdl)
Ukončete dříve otevřený tok služeb MAC.

Parametry

mac_hdl Ukazatel pro identifikaci toku služeb MAC, který má být uzavřen.

Návraty
Kód chyby

3.11 Vypsat protokol firmwaru
Datové struktury

  • struct op_debug_dump_args_t

Funkce

  • hsm_err_tdump_firmware_log (hsm_hdl_t session_hdl)

3.11.1 Podrobný popis
3.11.2 Dokumentace datové struktury
3.11.2.1 struct op_debug_dump_args_t

Struktura podrobně popisující argumenty členů operace výpisu ladění.

Datová pole

bool is_dump_pending
uint32_t dump_buf_len
uint32_t dump_buf[MAC_BUFF_LEN]

3.11.3 Funkční dokumentace
3.11.3.1 dump_firmware_log()

hsm_err_t dump_firmware_log (hsm_hdl_t session_hdl)

Tento příkaz je určen k výpisu protokolů firmwaru.
Parametry

session_hdl Popisovač identifikující popisovač relace.

Návraty
Kód chyby

3.12 Atest pro vývojáře
Datové struktury

  • struct op_dev_attest_args_t

Makra

  • #define DEV_ATTEST_NOUNCE_SIZE_V1 (4)
  • #define DEV_ATTEST_NOUNCE_SIZE_V2 (16)

Funkce

  • hsm_err_thsm_dev_attest (hsm_hdl_t sess_hdl, op_dev_attest_args_t *args)

3.12.1 Podrobný popis
3.12.2 Dokumentace datové struktury
3.12.2.1 struct op_dev_attest_args_t

Struktura popisující argumenty členů operace atestace zařízení. Paměť pro uložení uid/sha_rom_patch/sha_fw/signature je přidělena knihovnou HSM. Volající funkce hsm_dev_attest() potřebuje zajistit uvolnění paměti.

Datová pole

uint16_t soc_id SoC ID.
uint16_t soc_rev Revize SoC.
uint16_t lmda_val Hodnota životního cyklu Lmda.
uint8_t ssm_state Stav podsystému zabezpečení Stav stroje.
uint8_t uid_sz Velikost vyrovnávací paměti v bajtech pro jedinečný identifikátor čipu.
uint8_t * uid Ukazatel na vyrovnávací paměť jedinečného identifikátoru čipu.
uint16_t rom_patch_sha_sz Velikost vyrovnávací paměti v bajtech pro SHA256 záplatových pojistek Sentinel ROM.
uint16_t sha_fw_sz Velikost vyrovnávací paměti v bajtech pro prvních 256 bitů nainstalovaného FW SHA.
uint8_t * sha_rom_patch Ukazatel na vyrovnávací paměť obsahující SHA256 opravných pojistek Sentinel ROM.
uint8_t * sha_fw Ukazatel na vyrovnávací paměť obsahující prvních 256 bitů nainstalovaného FW SHA.
uint16_t nounce_sz Velikost vyrovnávací paměti v bajtech pro hodnotu nounce požadavku.
uint8_t * podstatné jméno Ukazatel na vstupní/požadavek na vyrovnávací paměť hodnot.
uint16_t rsp_nounce_sz Velikost v bajtech pro FW nounce buffer, vrácená s FW resp.
uint8_t * rsp_nounce Ukazatel na FW nounce buffer, vrácený s FW resp.
uint16_t oem_srkh_sz Velikost vyrovnávací paměti v bajtech pro OEM SRKH (verze 2).
uint8_t * oem_srkh Ukazatel na vyrovnávací paměť OEM SRKH (verze 2).
uint8_t imem_state Stav IMEM (verze 2).
uint8_t csal_state Stav CSAL (verze 2).
uint8_t trng_state Stav TRNG (verze 2).
uint16_t info_buf_sz Velikost v bajtech pro informační vyrovnávací paměť.
uint8_t * info_buf Ukazatel na informační vyrovnávací paměť pro ověření podpisu.
uint8_t výsledek_testu Otestujte výsledek. 0 znamená projít. 1 znamená selhání.
uint16_t sign_sz Velikost vyrovnávací paměti v bajtech pro podpis.
uint8_t * podpis Ukazatel na vyrovnávací paměť podpisu.

3.12.3 Dokumentace k definici maker
3.12.3.1 DEV_ATTEST_NOUNCE_SIZE_V1

#define DEV_ATTEST_NOUNCE_SIZE_V1 (4)
Velikosti Atestace zařízení Nounce.

3.12.4 Funkční dokumentace
3.12.4.1 hsm_dev_attest()

hsm_err_t hsm_dev_attest (
hsm_hdl_t sess_hdl,
op_dev_attest_args_t * args)

Proveďte atestaci zařízení.
Uživatelé mohou tuto funkci volat pouze po otevření relace.

Parametry

sess_hdl Rukojeť identifikující aktivní relaci.
argumenty Ukazatel na strukturu obsahující argumenty funkce.

Návraty
Kód chyby

3.13 Informace pro vývojáře
Datové struktury

  • struct op_dev_getinfo_args_t

Funkce

  • hsm_err_thsm_dev_getinfo (hsm_hdl_t sess_hdl, op_dev_getinfo_args_t *args)

3.13.1 Podrobný popis
3.13.2 Dokumentace datové struktury
3.13.2.1 struct op_dev_getinfo_args_t

Struktura podrobně popisující argumenty členů operace getinfo zařízení. Paměť pro uložení uid/sha_rom_patch/sha_fw/signature je přidělena knihovnou HSM. Volající funkce hsm_dev_getinfo() potřebuje zajistit uvolnění paměti.

Datová pole

uint16_t soc_id SoC ID.
uint16_t soc_rev Číslo revize SoC.
uint16_t lmda_val Označuje hodnotu životního cyklu lmda.
uint8_t ssm_state Stavový stroj bezpečnostního subsystému.
uint8_t uid_sz Velikost jedinečného identifikátoru čipu.
uint8_t * uid Ukazatel na jedinečný identifikátor čipu.
uint16_t rom_patch_sha_sz Označuje velikost SHA256 záplatovacích pojistek sentinelové ROM.
uint16_t sha_fw_sz Označuje velikost prvních 256 bitů nainstalovaného FW SHA.
uint8_t * sha_rom_patch Ukazatel na SHA256 kontrolních ROM patch pojistek digest.
uint8_t * sha_fw Ukazatel na prvních 256 bitů nainstalovaného přehledu FW SHA.
uint16_t oem_srkh_sz Označuje velikost FW OEM SRKH.
uint8_t * oem_srkh Ukazatel na FW OEM SRKH.
uint8_t imem_state Označuje stav IMEM.
uint8_t csal_state Stav inicializace náhodného kontextu Crypto Lib.
uint8_t trng_state Označuje stav TRNG.

3.13.3 Funkční dokumentace
3.13.3.1 hsm_dev_getinfo()
hsm_err_t hsm_dev_getinfo (
hsm_hdl_t sess_hdl,
op_dev_getinfo_args_t * args)
Proveďte operaci atestace zařízení.
Uživatelé mohou tuto funkci volat pouze po otevření relace.
Parametry

sess_hdl Rukojeť identifikující aktivní relaci.
argumenty Ukazatel na strukturu obsahující argumenty funkce.

Návraty
Kód chyby

3.14 Generic Crypto: Asymetric Crypto
Datové struktury

  • struct op_gc_acrypto_args_t

Makra

  • #define HSM_OP_GC_ACRYPTO_FLAGS_INPUT_MESSAGE ((hsm_op_gc_acrypto_flags_t) (1u << 0))
  • #define HSM_GC_ACRYPTO_VERIFICATION_SUCCESS ((hsm_gc_acrypto_verification_status_t) (0x5A3CC3A5u))
  • #define HSM_GC_ACRYPTO_VERIFICATION_FAILURE ((hsm_gc_acrypto_verification_status_t) (0x2B4DD4B2u))

Typedefs

  • typedef uint8_t hsm_op_gc_acrypto_flags_t
  • typedef uint32_t hsm_gc_acrypto_verification_status_t

Výčty

  • enum hsm_op_gc_acrypto_algo_t {
    HSM_GC_ACRYPTO_ALGO_ECDSA_SHA224 = ALGO_ECDSA_SHA224,
    HSM_GC_ACRYPTO_ALGO_ECDSA_SHA256 = ALGO_ECDSA_SHA256,
    HSM_GC_ACRYPTO_ALGO_ECDSA_SHA384 = ALGO_ECDSA_SHA384,
    HSM_GC_ACRYPTO_ALGO_ECDSA_SHA512 = ALGO_ECDSA_SHA512,
    HSM_GC_ACRYPTO_ALGO_RSA_PKCS1_V15_SHA224 = ALGO_RSA_PKCS1_V15_SHA224,
    HSM_GC_ACRYPTO_ALGO_RSA_PKCS1_V15_SHA256 = ALGO_RSA_PKCS1_V15_SHA256,
    HSM_GC_ACRYPTO_ALGO_RSA_PKCS1_V15_SHA384 = ALGO_RSA_PKCS1_V15_SHA384,
    HSM_GC_ACRYPTO_ALGO_RSA_PKCS1_V15_SHA512 = ALGO_RSA_PKCS1_V15_SHA512,
    HSM_GC_ACRYPTO_ALGO_RSA_PKCS1_PSS_MGF1_SHA224 =
    ALGO_RSA_PKCS1_PSS_MGF1_SHA224,
    HSM_GC_ACRYPTO_ALGO_RSA_PKCS1_PSS_MGF1_SHA256 =
    ALGO_RSA_PKCS1_PSS_MGF1_SHA256,
    HSM_GC_ACRYPTO_ALGO_RSA_PKCS1_PSS_MGF1_SHA384 =
    ALGO_RSA_PKCS1_PSS_MGF1_SHA384,
    HSM_GC_ACRYPTO_ALGO_RSA_PKCS1_PSS_MGF1_SHA512 =
    ALGO_RSA_PKCS1_PSS_MGF1_SHA512,
    HSM_GC_ACRYPTO_ALGO_RSA_PKCS1_V15_CRYPT = ALGO_RSA_PKCS1_V15_CRYPT,
    HSM_GC_ACRYPTO_ALGO_RSA_PKCS1_OAEP_SHA1 = ALGO_RSA_PKCS1_OAEP_SHA1,
    HSM_GC_ACRYPTO_ALGO_RSA_PKCS1_OAEP_SHA224 = ALGO_RSA_PKCS1_OAEP_SHA224,
    HSM_GC_ACRYPTO_ALGO_RSA_PKCS1_OAEP_SHA256 = ALGO_RSA_PKCS1_OAEP_SHA256,
    HSM_GC_ACRYPTO_ALGO_RSA_PKCS1_OAEP_SHA384 = ALGO_RSA_PKCS1_OAEP_SHA384,
    HSM_GC_ACRYPTO_ALGO_RSA_PKCS1_OAEP_SHA512 = ALGO_RSA_PKCS1_OAEP_SHA512 }
  • enum hsm_gc_acrypto_op_mode_t {
    HSM_GC_ACRYPTO_OP_MODE_ENCRYPT = 0x01,
    HSM_GC_ACRYPTO_OP_MODE_DECRYPT = 0x02,
    HSM_GC_ACRYPTO_OP_MODE_SIGN_GEN = 0x03,
    HSM_GC_ACRYPTO_OP_MODE_SIGN_VER = 0x04 }

Funkce

  • hsm_err_thsm_gc_acrypto (hsm_hdl_t session_hdl, op_gc_acrypto_args_t *args)

3.14.1 Podrobný popis
3.14.2 Dokumentace datové struktury
3.14.2.1 struct op_gc_acrypto_args_t

Struktura popisující generické asymetrické argumenty členů kryptoměny.
Datová pole

hsm_op_gc_acrypto_algo_t algoritmus Algoritmus, který se má pro operaci použít.
hsm_gc_acrypto_op_mode_t op_mode Označuje provozní režim.
hsm_op_gc_acrypto_flags_t vlajky Označuje příznaky operace.
hsm_bit_key_sz_t bit_key_sz Velikost klíče v bitech.
uint8_t * data_buff1 Ukazatel na datovou vyrovnávací paměť 1:
• Prostý text v případě operace šifrování/dešifrování.
• Digest nebo zpráva v případě operace generování/ověření podpisu.
uint8_t * data_buff2 Ukazatel na datovou vyrovnávací paměť 2:
• Šifrovaný text v případě operace šifrování/dešifrování.
• Podpis v případě operace generování/ověřování podpisu.
uint32_t data_buff1_size Velikost datové vyrovnávací paměti v bajtech 1.
uint32_t data_buff2_size Velikost datové vyrovnávací paměti v bajtech 2.
uint8_t * key_buff1 Ukazatel na vyrovnávací paměť modulu klíče.
uint8_t * key_buff2 Ukažte na exponent klíče, soukromý nebo veřejný.
• Režim šifrování, veřejný exponent
• Režim dešifrování, soukromý exponent
• Režim generování podpisu, soukromý exponent
• Režim ověřování podpisu, veřejný exponent
uint16_t key_buff1_size Velikost vyrovnávací paměti klíče v bajtech 1.
uint16_t key_buff2_size Velikost vyrovnávací paměti klíče v bajtech 2.
uint8_t * rsa_label Adresa štítku RSA. Používá se pouze pro operační režim šifrování/dešifrování OAEP a volitelně.
uint16_t rsa_label_size Velikost štítku RSA v bajtech. Používá se pouze pro provozní režim šifrování/dešifrování OAEP.
uint16_t rsa_salt_len Délka soli RSA v bajtech. Používá se pouze pro schéma podpisového algoritmu PSS.
uint32_t exp_plaintext_len Očekávaná délka otevřeného textu v bajtech, vrácená FW v případě provozního režimu DECRYPT.
hsm_gc_acrypto_verification_status_t stav_ověření Stav ověření podpisu.

3.14.3 Dokumentace k definici maker
3.14.3.1 HSM_OP_GC_ACRYPTO_FLAGS_INPUT_MESSAGE
#define HSM_OP_GC_ACRYPTO_FLAGS_INPUT_MESSAGE ((hsm_op_gc_acrypto_flags_t) (1u << 0))
Bit indikující operaci generické asymetrické kryptografické vstupní zprávy.
3.14.3.2 HSM_GC_ACRYPTO_VERIFICATION_SUCCESS
#define HSM_GC_ACRYPTO_VERIFICATION_SUCCESS
((hsm_gc_acrypto_verification_status_t) (0x5A3CC3A5u))
Bit označující obecný stav ověření úspěšnosti asymetrického šifrování.
3.14.3.3 HSM_GC_ACRYPTO_VERIFICATION_FAILURE
#define HSM_GC_ACRYPTO_VERIFICATION_FAILURE
((hsm_gc_acrypto_verification_status_t) (0x2B4DD4B2u))
Bit indikující stav ověření generického asymetrického selhání kryptoměny.

3.14.4 Dokumentace Typedef
3.14.4.1 hsm_op_gc_acrypto_flags_t
typedef uint8_t hsm_op_gc_acrypto_flags_t
Bitmapa popisující generickou asymetrickou krypto podporovanou operaci.
3.14.4.2 hsm_gc_acrypto_verification_status_t
typedef uint32_t hsm_gc_acrypto_verification_status_t
Bitmapa popisující stav obecného asymetrického ověření kryptoměny.
3.14.5 Dokumentace typu výčtu
3.14.5.1 hsm_op_gc_acrypto_algo_t
výčet hsm_op_gc_acrypto_algo_t
Výčet podrobně popisující algoritmy podporované generickými asymetrickými kryptoměnami.
3.14.5.2 hsm_gc_acrypto_op_mode_t
výčet hsm_gc_acrypto_op_mode_t
Výčet popisující generické asymetrické krypto podporované provozní režimy.
3.14.6 Funkční dokumentace
3.14.6.1 hsm_gc_acrypto()
hsm_err_t hsm_gc_acrypto (
hsm_hdl_t session_hdl,
op_gc_acrypto_args_t * args)
Tento příkaz je určen k provádění následujících operací:

  • Asymetrické kryptoměny
  • Šifrování/dešifrování
  • Generování/ověření podpisu

Parametry

session_hdl Rukojeť identifikující aktuální relaci.
argumenty Ukazatel na strukturu obsahující argumenty funkce.

3.15 Generic Crypto Asymetric Key Generation
Datové struktury

  • struct op_gc_akey_gen_args_t

Funkce

  • hsm_err_thsm_gc_akey_gen (hsm_hdl_t session_hdl, op_gc_akey_gen_args_t *args)

3.15.1 Podrobný popis
3.15.2 Dokumentace datové struktury
3.15.2.1 struct op_gc_akey_gen_args_t
Struktura podrobně popisující členy operace generování obecného krypto asymetrického klíče.
Tabulka 1. Datová pole

uint8_t * modul Ukazatel na výstupní vyrovnávací paměť modulu klíče.
uint8_t * priv_buff Ukazatel na výstupní vyrovnávací paměť soukromého exponentu klíče.
uint8_t * pub_buff Ukazatel na vstupní vyrovnávací paměť obsahující klíčový veřejný exponent.
uint16_t velikost_modulu Velikost vyrovnávací paměti modulu v bajtech.
uint16_t priv_buff_size Velikost vyrovnávací paměti soukromých exponentů v bajtech.
uint16_t pub_buff_size Velikost vyrovnávací paměti veřejného exponentu v bajtech.
hsm_key_type_t key_type Označuje, jaký typ klíče musí být vygenerován.
hsm_bit_key_sz_t bit_key_sz Velikost v bitech páru klíčů, který se má vygenerovat.

3.15.3 Funkční dokumentace
3.15.3.1 hsm_gc_akey_gen()

hsm_err_t hsm_gc_akey_gen (
hsm_hdl_t session_hdl,
op_gc_akey_gen_args_t * args)
Tento příkaz je určen k provedení následující operace:
Generujte asymetrické klíče bez použití úložiště klíčů FW.

Parametry

session_hdl Rukojeť identifikující aktuální relaci.
argumenty Ukazatel na strukturu obsahující argumenty funkce.

Návraty
Kód chyby
3.16 Získejte informace
Datové struktury

  • struct op_get_info_args_t

Funkce

  • hsm_err_thsm_get_info (hsm_hdl_t sess_hdl, op_get_info_args_t *args)

3.16.1 Podrobný popis
3.16.2 Dokumentace datové struktury
3.16.2.1 struct op_get_info_args_t

Struktura popisující argumenty členů operace get info.
Datová pole

uint32_t user_sab_id Ukládá identifikátor uživatele (32 bitů).
uint8_t * chip_unique_id Ukládá jedinečný identifikátor čipu.
uint16_t chip_unq_id_sz Velikost jedinečného identifikátoru čipu v bajtech.
uint16_t chip_monoton_ counter Ukládá hodnotu monotónního čítače čipu (16 bitů).
uint16_t chip_life_cycle Ukládá bitové pole aktuálního životního cyklu čipu (16 bitů).
uint32_t verze Ukládá verzi modulu (32 bitů).
uint32_t verze_ext Ukládá rozšířenou verzi modulu (32 bitů).
uint8_t fips_mode Ukládá bitové pole režimu FIPS (8 bitů). Definice bitové masky:
bit0: Provozní režim FIPS:
• Hodnota 0: součást běží v neschváleném režimu FIPS.
• Hodnota 1: součást běží v režimu schváleném FIPS.
• Bit 1: Část s certifikací FIPS:
• Hodnota 0: díl nemá certifikaci FIPS.
• Hodnota 1: díl má certifikaci FIPS.
• Bit 2-7: vyhrazeno
• Hodnota 0.

3.16.3 Funkční dokumentace
3.16.3.1 hsm_get_info()
hsm_err_t hsm_get_info (
hsm_hdl_t sess_hdl,
op_get_info_args_t * args)
Proveďte atestaci zařízení.
Uživatelé mohou tuto funkci volat pouze po otevření relace.
Parametry

sess_hdl Rukojeť identifikující aktivní relaci.
argumenty Ukazatel na strukturu obsahující argumenty funkce.

Návraty
Kód chyby

3.17 Obnova veřejného klíče
Obnova veřejného klíče je také známá jako export veřejného klíče v rozhraních API kompatibilních s PSA. Zdejší pojmenování zůstalo nezměněno kvůli zpětné kompatibilitě a API, která nejsou kompatibilní s PSA.

Datové struktury

  • struct op_pub_key_recovery_args_t

Funkce

  • hsm_err_thsm_pub_key_recovery (hsm_hdl_t key_store_hdl, op_pub_key_recovery_args_t *args)

3.17.1 Podrobný popis
Obnova veřejného klíče je nyní v rozhraních API kompatibilních s PSA známá jako export veřejného klíče. Zdejší pojmenování zůstalo nezměněno kvůli zpětné kompatibilitě a API, která nejsou kompatibilní s PSA.

3.17.2 Dokumentace datové struktury
3.17.2.1 struct op_pub_key_recovery_args_t
Struktura podrobně popisující argumenty členů operace obnovy veřejného klíče.

Datová pole

uint32_t klíč_identifikátor Ukazatel na identifikátor klíče, který má být použit pro operaci.
uint8_t * out_key Ukazatel na výstupní oblast, kam musí být zapsán vygenerovaný veřejný klíč.
uint16_t out_key_size Délka výstupního klíče v bajtech.
uint16_t exp_out_key_size Očekávaná velikost vyrovnávací paměti výstupního klíče, platná v případě kódu HSM_OUT_TOO_SMALL (0x1D).

3.17.3 Funkční dokumentace
3.17.3.1 hsm_pub_key_recovery()
hsm_err_t hsm_pub_key_recovery (
hsm_hdl_t key_store_hdl,
op_pub_key_recovery_args_t * args)
Obnovte veřejný klíč ze soukromého klíče v úložišti klíčů.
Uživatelé mohou tuto funkci volat pouze po otevření úložiště klíčů.
Parametry

key_store_hdl Popisovač identifikující aktuální úložiště klíčů.
argumenty Ukazatel na strukturu obsahující argumenty funkce.

Návraty
Kód chyby

3.18 Úložiště klíčů
Uživatel musí otevřít tok služeb úložiště klíčů, aby mohl provést následující operace.

Datové struktury

  • struct open_svc_key_store_args_t

Makra

  • #define HSM_SVC_KEY_STORE_FLAGS_LOAD ((hsm_svc_key_store_flags_t)(0u << 0))
    Musí být specifikováno pro načtení dříve vytvořeného úložiště klíčů.
  • #define HSM_SVC_KEY_STORE_FLAGS_CREATE ((hsm_svc_key_store_flags_t)(1u << 0))
  • #define HSM_SVC_KEY_STORE_FLAGS_SET_MAC_LEN ((hsm_svc_key_store_flags_t)(1u << 3))
  • #define HSM_SVC_KEY_STORE_FLAGS_STRICT_OPERATION ((hsm_svc_key_store_flags_t)(1u << 7))

Typedefs

  • typedef uint8_t hsm_svc_key_store_flags_t

Funkce

  • hsm_err_thsm_open_key_store_service (hsm_hdl_t session_hdl, open_svc_key_store_args_t *args, hsm_hdl_t *key_store_hdl)
  • hsm_err_thsm_close_key_store_service (hsm_hdl_t key_store_hdl)

3.18.1 Podrobný popis
Uživatelé musí otevřít tok služeb úložiště klíčů, aby mohli provádět následující operace:

  • Vytvořte nové úložiště klíčů.
  • Provádění operací s klíči uloženými v úložišti klíčů (šifrování, generování podpisu…)
  • Perform a key store reprovisioning using a signed message. A key store re-provisioning results in erasing all the key stores handled by the HSM.

Udělte přístup do úložiště klíčů. Volající je ověřen pomocí ID domény (DID) a jednotky pro zasílání zpráv, které byly použity při vytváření úložiště klíčů. Navíc může být poskytnuta autentizační nonce.

3.18.2 Dokumentace datové struktury
3.18.2.1 struct open_svc_key_store_args_t

Struktura určující argumenty člena služby úložiště klíčů.

Datová pole

uint32_t key_store_hdl Popisovač identifikující tok služeb úložiště klíčů.
uint32_t key_store_identifier Uživatelem definované ID identifikující úložiště klíčů. Na daném identifikátoru úložiště klíčů lze otevřít pouze jednu službu úložiště klíčů.
uint32_t autentizace_nonce Uživatelem definovaný nepoužitý jako důkaz ověření pro přístup k úložišti klíčů.
uint8_t vlajky Bitmapa určující vlastnosti služeb.
uint8_t * podepsaná_zpráva Ukazatel na podepsanou_zprávu bude odeslán pouze v případě opětovného zřízení úložiště klíčů.
uint16_t sign_msg_size Velikost podepsané_zprávy, která se má odeslat pouze v případě opětovného zřízení úložiště klíčů.

3.18.3 Dokumentace k definici maker
3.18.3.1 HSM_SVC_KEY_STORE_FLAGS_CREATE
#define HSM_SVC_KEY_STORE_FLAGS_CREATE ((hsm_svc_key_store_flags_t)(1u << 0))
Musí být specifikováno pro vytvoření nového úložiště klíčů. Úložiště klíčů je uloženo v NVM pouze v případě, že je přísné
Je nastaven příznak PROVOZ.
3.18.3.2 HSM_SVC_KEY_STORE_FLAGS_SET_MAC_LEN
#define HSM_SVC_KEY_STORE_FLAGS_SET_MAC_LEN ((hsm_svc_key_store_flags_t) (1u <<3))
Pokud je nastavena, minimální délka MAC zadaná v poli min_mac_length se uloží do úložiště klíčů při vytváření úložiště klíčů. Musí být nastaven pouze při vytváření úložiště klíčů.
3.18.3.3 HSM_SVC_KEY_STORE_FLAGS_STRICT_OPERATION
#define HSM_SVC_KEY_STORE_FLAGS_STRICT_OPERATION ((hsm_svc_key_store_flags_t)
(1u << 7))
Požadavek je dokončen pouze tehdy, když je nové úložiště klíčů zapsáno v NVM. To platí pouze pro operace CREATE.
3.18.4 Dokumentace Typedef
3.18.4.1 hsm_svc_key_store_flags_t
typedef uint8_t hsm_svc_key_store_flags_t
Bitmapa určující atributy podporované službou úložiště klíčů.
3.18.5 Funkční dokumentace
3.18.5.1 hsm_open_key_store_service()
hsm_err_t hsm_open_key_store_service (
hsm_hdl_t session_hdl,
open_svc_key_store_args_t * args,
hsm_hdl_t * key_store_hdl)
Otevřete tok služeb v zadaném úložišti klíčů. V daném úložišti klíčů lze otevřít pouze jednu službu úložiště klíčů.
Parametry

session_hdl Ukazatel na popisovač identifikující aktuální relaci.
argumenty Ukazatel na strukturu obsahující argumenty funkce.
key_store_hdl Ukazatel na místo, kde musí být zapsán popisovač toku služby úložiště klíčů.

Návraty
Chybový kód.
3.18.5.2 hsm_close_key_store_service()

hsm_err_t hsm_close_key_store_service (hsm_hdl_t key_store_hdl)
Zavřete dříve otevřený tok služby úložiště klíčů. Úložiště klíčů je odstraněno z místní paměti HSM. Jakákoli aktualizace nezapsaná v NVM bude ztracena.

Parametry

key_store_hdl Rukojeť identifikující tok služeb úložiště klíčů, který má být uzavřen.

Návraty
Chybový kód.
3.19 Aktualizace životního cyklu
Datové struktury

  • struct op_lc_update_msg_args_t

Výčty

  • enum hsm_lc_new_state_t {
    HSM_NXP_PROVISIONED_STATE = (1u << 0),
    HSM_OEM_OPEN_STATE = (1u << 1),
    HSM_OEM_CLOSE_STATE = (1u << 3),
    HSM_OEM_FIELD_RET_STATE = (1u << 4),
    HSM_NXP_FIELD_RET_STATE = (1u << 5),
    HSM_OEM_LOCKED_STATE = (1u << 7) }

Funkce

  • hsm_err_thsm_lc_update (hsm_hdl_t session_hdl, op_lc_update_msg_args_t *args)

3.19.1 Podrobný popis
3.19.2 Dokumentace datové struktury
3.19.2.1 struct op_lc_update_msg_args_t
Struktura specifikující argumenty zprávy aktualizace životního cyklu.
Datová pole

hsm_lc_new_state_t new_lc_state

3.19.3 Dokumentace typu výčtu
3.19.3.1 hsm_lc_new_state_t

výčet hsm_lc_new_state_t
Výčet určující stav životního cyklu.

3.19.4 Funkční dokumentace
3.19.4.1 hsm_lc_update()
hsm_err_t hsm_lc_update (
hsm_hdl_t session_hdl,
op_lc_update_msg_args_t * args)

Toto rozhraní API provádí aktualizaci životního cyklu.
Parametry

session_hdl Popisovač identifikující popisovač relace.
argumenty Ukazatel na strukturu obsahující argumenty funkce.

Návraty
Kód chyby

3.20 Globální informace
Datové struktury

  • struct global_info_s

Funkce

  • void populate_global_info (hsm_hdl_t hsm_session_hdl)
  • void show_global_info (void)
  • uint8_t hsm_get_dev_attest_api_ver (neplatné)
  • const char * get_soc_id_str (uint16_t soc_id)
  • const char * get_soc_rev_str (uint16_t soc_rev)
  • const char * get_soc_lf_str (životní cyklus uint16_t)

Proměnné

  • struct global_info_sglobal_info

3.20.1 Podrobný popis
3.20.2 Dokumentace datové struktury
3.20.2.1 struct global_info_s

Globální informační struktura obsahuje informace o SoC a knihovně. Používá se globálně k přijímání rozhodnutí specifických pro platformu.

Datová pole

bool je_obsazeno Aby bylo zajištěno, že globální informace budou vyplněny jednou.
uint8_t ver Podporovaná verze HSM API.
uint16_t soc_id SoC ID.
uint16_t soc_rev Revize SoC.
uint16_t životního cyklu Životní cyklus zařízení.
uint32_t lib_newness_ver Verze Secure Enclave Library Newness.
uint32_t lib_major_ver Hlavní verze Secure Enclave Library.
uint32_t lib_minor_ver Menší verze Secure Enclave Library.
uint32_t nvm_newness_ver Verze novinek knihovny NVM.
uint32_t nvm_major_ver Hlavní verze knihovny NVM.
uint32_t nvm_minor_ver Vedlejší verze knihovny NVM.
char se_commit_id[GINFO_COMMIT_ID_SZ] Secure Enclave Build Commit ID.

3.20.3 Funkční dokumentace
3.20.3.1 populate_global_info()

void populate_global_info (hsm_hdl_t hsm_session_hdl)
Tato funkce se volá k naplnění struktury globálních informací.

Parametry

hsm_session_hdl Identifikace aktivní relace.

3.20.3.2 show_global_info()
void show_global_info (void )
Tato funkce vytiskne globální informace o knihovně.
3.20.3.3 hsm_get_dev_attest_api_ver()
uint8_t hsm_get_dev_attest_api_ver (neplatné)
Tato funkce vrátí verzi podporovanou pro atestaci zařízení.
3.20.3.4 get_soc_id_str()
const char* get_soc_id_str (uint16_t soc_id)
Tato funkce vrací řetězec představující SoC ID.
Parametry

soc_id SoC ID načtené z globálních informací.

Návraty
Řetězcová reprezentace SoC ID.
3.20.3.5 get_soc_rev_str()

const char* get_soc_rev_str (uint16_t soc_rev)
Tato funkce vrací řetězec představující revizi SoC.
Tabulka 2. Parametry

soc_rev Revize SoC načtená z Global Information.

Návraty
Řetězcová reprezentace revize SoC.

3.20.3.6 get_soc_lf_str()
const char* get_soc_lf_str (životní cyklus uint16_t)
Tato funkce vrací řetězec představující životní cyklus.

Tabulka 3. Parametry

životního cyklu Hodnota načtená z globálních informací.

Návraty
Řetězcová reprezentace životního cyklu
3.20.4 Variabilní dokumentace
3.20.4.1 global_info

struct global_info_s global_info
Instance struktury globálních informací, která se naplní a poté se použije k získání podrobností o požadované platformě nebo knihovně.

3.21 Kódy chyb
Výčty

  • enum hsm_err_t {
    HSM_NO_ERROR = 0x0,
    HSM_INVALID_MESSAGE = 0x1,
    HSM_INVALID_ADDRESS = 0x2,
    HSM_UNKNOWN_ID = 0x3,
    HSM_INVALID_PARAM = 0x4,
    HSM_NVM_ERROR = 0x5,
    HSM_OUT_OF_MEMORY = 0x6,
    HSM_UNKNOWN_HANDLE = 0x7,
    HSM_UNKNOWN_KEY_STORE = 0x8,
    HSM_KEY_STORE_AUTH = 0x9,
    HSM_KEY_STORE_ERROR = 0xA,
    HSM_ID_CONFLICT = 0xB,
    HSM_RNG_NOT_STARTED = 0xC,
    HSM_CMD_NOT_SUPPORTED = 0xD,
    HSM_INVALID_LIFECYCLE = 0xE,
    HSM_KEY_STORE_CONFLICT = 0xF,
    HSM_KEY_STORE_COUNTER = 0x10,
    HSM_FEATURE_NOT_SUPPORTED = 0x11,
    HSM_SELF_TEST_FAILURE = 0x12,
    HSM_NOT_READY_RATING = 0x13,
    HSM_FEATURE_DISABLED = 0x14,
    HSM_KEY_GROUP_FULL = 0x19,
    HSM_CANNOT_RETRIEVE_KEY_GROUP = 0x1A,
    HSM_KEY_NOT_SUPPORTED = 0x1B,
    HSM_CANNOT_DELETE_PERMANENT_KEY = 0x1C,
    HSM_OUT_TOO_SMALL = 0x1D,
    HSM_DATA_ALREADY_RETRIEVED = 0x1F,
    HSM_CRC_CHECK_ERR = 0xB9,
    HSM_OEM_CLOSED_LC_SIGNED_MSG_VERIFICATION_FAIL = 0xF0,
    HSM_OEM_OPEN_LC_SIGNED_MSG_VERIFICATION_FAIL = 0xF0,
    HSM_FATAL_FAILURE = 0x29,
    HSM_SERVICES_DISABLED = 0xF4,
    HSM_UNKNOWN_WARNING = 0xFC,
    HSM_SIGNATURE_INVALID = 0xFD,
    HSM_UNKNOWN_ERROR = 0xFE,
    HSM_GENERAL_ERROR = 0xFF }

3.21.1 Podrobný popis
3.21.2 Dokumentace typu výčtu
3.21.2.1 hsm_err_t výčet hsm_err_t

Chybové kódy vrácené funkcemi HSM.
Enumerátor

HSM_NO_ERROR Úspěch.
HSM_INVALID_MESSAGE Přijatá zpráva je neplatná nebo neznámá.
HSM_INVALID_ADDRESS Zadaná adresa je neplatná nebo nesplňuje požadavky API.
HSM_UNKNOWN_ID Zadaný identifikátor není znám.
HSM_INVALID_PARAM Jeden z parametrů uvedených v příkazu je neplatný.
HSM_NVM_ERROR Obecný problém NVM.
HSM_OUT_OF_MEMORY Není dostatek paměti ke zpracování požadované operace.
HSM_UNKNOWN_HANDLE Neznámý popisovač relace/služby.
HSM_UNKNOWN_KEY_STORE Úložiště klíčů identifikované zadaným „ID úložiště klíčů“ neexistuje a příznak „vytvořit“ není nastaven.
HSM_KEY_STORE_AUTH Ověření úložiště klíčů se nezdařilo.
HSM_KEY_STORE_ERROR V interním zpracování úložiště klíčů došlo k chybě.
HSM_ID_CONFLICT Prvek (úložiště klíčů, klíč…) se zadaným ID již existuje.
HSM_RNG_NOT_STARTED Interní RNG není spuštěno.
HSM_CMD_NOT_SUPPORTED Funkce není podporována pro aktuální konfiguraci relace/služby/úložiště klíčů.
HSM_INVALID_LIFECYCLE Neplatný životní cyklus požadované operace.
HSM_KEY_STORE_CONFLICT Úložiště klíčů se stejnými atributy již existuje.
HSM_KEY_STORE_COUNTER Aktuální úložiště klíčů dosáhne maximálního počtu monotónních aktualizací čítače. Aktualizace jsou stále povoleny, ale monotónní počítadlo nebude vyhozeno.
HSM_FEATURE_NOT_SUPPORTED Požadovaná funkce není podporována firmwarem.
HSM_SELF_TEST_FAILURE Autotesty hlásí problém.
HSM_NOT_READY_RATING HSM není připraven zpracovat aktuální požadavek.
HSM_FEATURE_DISABLED Požadovaná služba/operace je deaktivována.
HSM_KEY_GROUP_FULL Nedostatek místa pro uložení klíče ve skupině klíčů.
HSM_CANNOT_RETRIEVE_KEY_GROUP Nelze načíst skupinu klíčů.
HSM_KEY_NOT_SUPPORTED Klíč není podporován.
HSM_CANNOT_DELETE_PERMANENT_KEY Pokus o smazání trvalého klíče.
HSM_OUT_TOO_SMALL Velikost výstupní vyrovnávací paměti je příliš malá.
HSM_DATA_ALREADY_RETRIEVED Data jsou přečtena jednou a již byla načtena.
HSM_CRC_CHECK_ERR Chyba kontroly příkazu CRC.
HSM_OEM_CLOSED_LC_SIGNED_MSG_VERIFICATION_ FAIL V uzavřeném životním cyklu OEM selhalo ověření podpisu podepsané zprávy.
HSM_OEM_OPEN_LC_SIGNED_MSG_VERIFICATION_ FAIL V otevřených životních cyklech OEM selhání ověření podpisu podepsané zprávy.
HSM_FATAL_FAILURE Dojde k fatálnímu selhání. HSM přejde do stavu neopravitelné chyby a neodpovídá na další požadavky.
HSM_SERVICES_DISABLED Zpráva není zpracována ROM ani FW.
HSM_UNKNOWN_WARNING Neznámá varování.
HSM_SIGNATURE_INVALID Selhání v ověření stavu operací, jako je ověření MAC, ověření podpisu.
HSM_UNKNOWN_ERROR Neznámá chyba.
HSM_GENERAL_ERROR Chyba v případě přijetí obecné chyby.

3.22 i.MX 8ULP
Šifrování

  • HSM_CIPHER_ONE_GO_ALGO_OFB není podporováno.
  • HSM_AEAD_ALGO_GCM není podporováno.
  • HSM_AEAD_ALGO_ALL_AEAD není podporováno.
  • ALGO_RSA_PKCS1_V15_SHA224 není podporováno.
  • ALGO_RSA_PKCS1_V15_SHA256 není podporováno.
  • ALGO_RSA_PKCS1_V15_SHA384 není podporováno.
  • ALGO_RSA_PKCS1_V15_SHA512 není podporováno.
  • ALGO_RSA_PKCS1_PSS_MGF1 _SHA224 není podporováno.
  • ALGO_RSA_PKCS1 _PSS_MGF1_SHA256 není podporováno.
  • ALGO_RSA_PKCS1_PSS_MGF1_SHA384 není podporováno.
  • ALGO_RSA_PKCS1_PSS_MGF1_SHA512 není podporováno.

Poznámka o zdrojovém kódu v dokumentu

ExampKód zobrazený v tomto dokumentu má následující autorská práva a licenci BSD-3-Clause:
Copyright 2023 NXP Redistribuce a použití ve zdrojové a binární formě, s úpravami nebo bez nich, jsou povoleny za předpokladu, že jsou splněny následující podmínky:

  1. Redistribuce zdrojového kódu musí obsahovat výše uvedené upozornění na autorská práva, tento seznam podmínek a následující prohlášení o vyloučení odpovědnosti.
  2. Redistribuce v binární formě musí reprodukovat výše uvedenou poznámku o autorských právech, tento seznam podmínek a následující prohlášení o vyloučení odpovědnosti v dokumentaci a/nebo jiných materiálech dodávaných s distribucí.
  3.  Jméno držitele autorských práv ani jména jeho přispěvatelů nelze použít k podpoře nebo propagaci produktů odvozených od tohoto softwaru bez zvláštního předchozího písemného souhlasu.

TENTO SOFTWARE POSKYTUJÍ DRŽITELÉ AUTORSKÝCH PRÁV A PŘISPĚVATELÉ „TAK, JAK JE“, A JAKÉKOLI VÝSLOVNÉ NEBO PŘEDPOKLÁDANÉ ZÁRUKY, VČETNĚ, ALE NE OMEZENÉ, PŘEDPOKLÁDANÝCH ZÁRUK OBCHODOVATELNOSTI A VHODNOSTI PRO KONKRÉTNÍ NÁKUP. V ŽÁDNÉM PŘÍPADĚ NEBUDE DRŽITEL AUTORSKÝCH PRÁV NEBO PŘISPĚVATELÉ ODPOVĚDNÍ ZA JAKÉKOLI PŘÍMÉ, NEPŘÍMÉ, NÁHODNÉ, ZVLÁŠTNÍ, EXEMPLÁRNÍ NEBO NÁSLEDNÉ ŠKODY (VČETNĚ, ALE NE VÝHRADNĚ, ZAJIŠTĚNÍ NÁHRADNÍCH SLUŽEB, NÁHRADNÍHO ZBOŽÍ; ZISKY NEBO PŘERUŠENÍ OBCHODNÍ ČINNOSTI) JAK JSOU ZPŮSOBENÉ A NA JAKÉKOLI TEorii ODPOVĚDNOSTI, AŤ VE SMLOUVĚ, PŘÍSNÉ ODPOVĚDNOSTI NEBO PŘEČINU (VČETNĚ NEDBALOSTI ČI JINAK), VZNIKLÝM JAKÝKOLIV ZPŮSOBEM Z POUŽITÍ TOHOTO POUŽITÍ. POŠKOZENÍ.

Historie revizí

Tato tabulka poskytuje historii revizí.
Historie revizí

ID dokumentu Datum vydání Popis
RM00284 v1.0 prosince 15 Počáteční vydání.

Právní informace

Definice
Koncept — Stav konceptu na dokumentu označuje, že obsah je stále pod interní revizíview a podléhá formálnímu schválení, které může vést k úpravám nebo doplnění. NXP Semiconductors neposkytuje žádná prohlášení ani záruky ohledně přesnosti nebo úplnosti informací obsažených v pracovní verzi dokumentu a nenese žádnou odpovědnost za důsledky použití takových informací.

Vyloučení odpovědnosti
Omezená záruka a odpovědnost — Informace v tomto dokumentu jsou považovány za přesné a spolehlivé. Společnost NXP Semiconductors však neposkytuje žádná prohlášení ani záruky, vyjádřené nebo předpokládané, pokud jde o přesnost nebo úplnost takových informací, a nenese žádnou odpovědnost za důsledky použití takových informací. NXP Semiconductors nenese žádnou odpovědnost za obsah tohoto dokumentu, pokud je poskytnut informačním zdrojem mimo NXP Semiconductors.
Společnost NXP Semiconductors v žádném případě nenese odpovědnost za jakékoli nepřímé, náhodné, trestné, zvláštní nebo následné škody (včetně – bez omezení ušlého zisku, ušlých úspor, přerušení provozu, nákladů souvisejících s odstraněním nebo výměnou jakýchkoli produktů nebo nákladů na přepracování), ať už tyto škody nejsou založeny na protiprávním jednání (včetně nedbalosti), záruce, porušení smlouvy nebo jiné právní teorii.
Bez ohledu na jakékoli škody, které by mohly zákazníkovi z jakéhokoli důvodu vzniknout, bude souhrnná a kumulativní odpovědnost NXP Semiconductors vůči zákazníkovi za produkty popsané v tomto dokumentu omezena v souladu s podmínkami komerčního prodeje NXP Semiconductors.
Právo provádět změny — Společnost NXP Semiconductors si vyhrazuje právo kdykoli a bez upozornění provádět změny informací zveřejněných v tomto dokumentu, včetně, bez omezení, specifikací a popisů produktů. Tento dokument nahrazuje a nahrazuje všechny informace poskytnuté před jeho zveřejněním.
Vhodnost použití — Produkty NXP Semiconductors nejsou navrženy, autorizovány nebo zaručeny tak, aby byly vhodné pro použití v systémech nebo zařízeních pro podporu života, život kritických nebo kritických systémech nebo zařízeních, ani v aplikacích, kde lze důvodně očekávat selhání nebo nesprávnou funkci produktu NXP Semiconductors. zranění osob, smrt nebo vážné poškození majetku nebo životního prostředí. Společnost NXP Semiconductors a její dodavatelé nepřijímají žádnou odpovědnost za zahrnutí a/nebo použití produktů NXP Semiconductors v takovém zařízení nebo aplikacích, a proto je takové zahrnutí a/nebo použití na vlastní riziko zákazníka.

Aplikace — Zde popsané aplikace pro kterýkoli z těchto produktů slouží pouze pro ilustrativní účely. NXP Semiconductors neposkytuje žádné prohlášení ani záruku, že takové aplikace budou vhodné pro specifikované použití bez dalšího testování nebo úprav.
Zákazníci jsou zodpovědní za návrh a provoz svých aplikací a produktů využívajících produkty NXP Semiconductors a NXP Semiconductors nepřijímá žádnou odpovědnost za jakoukoli pomoc s aplikacemi nebo návrhem zákaznických produktů. Je výhradní odpovědností zákazníka určit, zda je produkt NXP Semiconductors vhodný a vhodný pro zákazníkovy aplikace a plánované produkty, jakož i pro plánovanou aplikaci a použití zákazníkem (zákazníků) jako třetí strana. Zákazníci by měli poskytnout vhodné konstrukční a provozní záruky, aby minimalizovali rizika spojená s jejich aplikacemi a produkty.
NXP Semiconductors nepřijímá žádnou odpovědnost související s jakýmkoli selháním, poškozením, náklady nebo problémem, který je založen na jakékoli slabosti nebo selhání v aplikacích nebo produktech zákazníka nebo v aplikaci nebo použití zákazníkem (zákazníky třetí strany) zákazníka. Zákazník je odpovědný za provedení všech nezbytných testů pro aplikace a produkty zákazníka využívající produkty NXP Semiconductors, aby se zabránilo selhání aplikací a produktů nebo aplikace nebo použití zákazníkem (zákazníky třetí strany) zákazníka. NXP nenese v tomto ohledu žádnou odpovědnost.
Podmínky komerčního prodeje — Produkty NXP Semiconductors se prodávají v souladu se všeobecnými podmínkami komerčního prodeje, jak jsou zveřejněny na https://www.nxp.com/profile/podmínkách, není-li v platné písemné individuální smlouvě dohodnuto jinak. V případě uzavření individuální smlouvy platí pouze podmínky příslušné smlouvy. Společnost NXP Semiconductors tímto výslovně nesouhlasí s uplatňováním všeobecných obchodních podmínek zákazníka s ohledem na nákup produktů NXP Semiconductors zákazníkem.

Kontrola exportu — Tento dokument, stejně jako položky zde popsané, mohou podléhat předpisům o kontrole vývozu. Vývoz může vyžadovat předchozí povolení od příslušných orgánů.
Vhodnost pro použití ve výrobcích nekvalifikovaných pro automobilový průmysl — Pokud tento dokument výslovně neuvádí, že tento konkrétní produkt NXP Semiconductors je způsobilý pro automobilový průmysl, není tento produkt vhodný pro použití v automobilech. Není kvalifikován ani testován v souladu s automobilovým testováním nebo aplikačními požadavky. Společnost NXP Semiconductors nenese žádnou odpovědnost za zahrnutí a/nebo použití jiných než automobilových kvalifikovaných produktů v automobilovém vybavení nebo aplikacích.
V případě, že zákazník použije produkt pro návrh a použití v automobilových aplikacích podle automobilových specifikací a norem, zákazník (a) použije produkt bez záruky NXP Semiconductors na produkt pro takové automobilové aplikace, použití a specifikace a ( b) kdykoli zákazník použije produkt pro automobilové aplikace nad rámec specifikací NXP Semiconductors, takové použití bude výhradně na vlastní riziko zákazníka a (c) zákazník plně odškodní společnost NXP Semiconductors za jakoukoli odpovědnost, škody nebo neúspěšné nároky na produkt vyplývající z návrhu a použití zákazníka. produkt pro automobilové aplikace nad rámec standardní záruky NXP Semiconductors a specifikace produktu NXP Semiconductors.
Překlady — Neanglická (přeložená) verze dokumentu, včetně právních informací v tomto dokumentu, je pouze orientační. V případě jakéhokoli rozporu mezi přeloženou a anglickou verzí má přednost anglická verze.
Zabezpečení — Zákazník chápe, že všechny produkty NXP mohou být předmětem neidentifikovaných zranitelností nebo mohou podporovat zavedené bezpečnostní standardy nebo specifikace se známými omezeními. Zákazník je odpovědný za návrh a provoz svých aplikací a produktů po celou dobu jejich životního cyklu, aby se snížil účinek těchto zranitelností na aplikace a produkty zákazníka. Odpovědnost zákazníka se vztahuje také na další otevřené a/nebo proprietární technologie podporované produkty NXP pro použití v aplikacích zákazníka. NXP nenese žádnou odpovědnost za jakoukoli zranitelnost. Zákazník by měl pravidelně kontrolovat aktualizace zabezpečení z NXP a patřičně je sledovat.
Zákazník si musí vybrat produkty s bezpečnostními prvky, které nejlépe splňují pravidla, předpisy a normy zamýšlené aplikace a učinit konečná rozhodnutí o designu týkající se svých produktů a je výhradně odpovědný za shodu se všemi právními, regulačními a bezpečnostními požadavky týkajícími se jeho produktů, bez ohledu na jakékoli informace nebo podporu, kterou může NXP poskytnout.
NXP má tým pro reakci na bezpečnostní incidenty produktu (PSIRT) (dostupný na adrese PSIRT@nxp.com), která spravuje vyšetřování, hlášení a uvolňování řešení bezpečnostních zranitelností produktů NXP.

NXP BV — NXP BV není provozní společností a nedistribuuje ani neprodává produkty.

ochranné známky
Oznámení: Všechny odkazované značky, názvy produktů, názvy služeb a ochranné známky jsou majetkem příslušných vlastníků.
NXP — slovo a logo jsou ochranné známky společnosti NXP BV

Uvědomte si prosím, že důležitá upozornění týkající se tohoto dokumentu a zde popsaných produktů byla zahrnuta v části „Právní informace“.

© 2023 NXP BV
Další informace naleznete na adrese: https://www.nxp.com
Všechna práva vyhrazena.
Datum vydání: 15. prosince 2023
Identifikátor dokumentu: RM00284

Dokumenty / zdroje

Hardwarový bezpečnostní modul NXP Semiconductors i.MX 8ULP EdgeLock Enclave [pdfUživatelská příručka
i.MX 8ULP EdgeLock Enclave hardwarový bezpečnostní modul, i.MX 8ULP, EdgeLock Enclave hardwarový bezpečnostní modul, Enclave hardwarový bezpečnostní modul, hardwarový bezpečnostní modul, bezpečnostní modul

Reference

Zanechte komentář

Vaše emailová adresa nebude zveřejněna. Povinná pole jsou označena *