RA Flexible Software Package Documentation  Release v5.3.0

 
RSIP key injection Interface

Detailed Description

Interface for key injection by Renesas Secure IP (RSIP) functions.

Summary

The RSIP key injection interface provides RSIP functionality.

Data Structures

struct  rsip_key_injection_api_t
 

Enumerations

enum  rsip_key_injection_type_t
 

Data Structure Documentation

◆ rsip_key_injection_api_t

struct rsip_key_injection_api_t

Functions implemented at the HAL layer will follow this API.

Data Fields

fsp_err_t(* AES128_InitialKeyWrap )(rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_aes_wrapped_key_t *const p_wrapped_key)
 
fsp_err_t(* AES256_InitialKeyWrap )(rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_aes_wrapped_key_t *const p_wrapped_key)
 
fsp_err_t(* RSA2048_InitialPublicKeyWrap )(rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_rsa2048_public_wrapped_key_t *const p_wrapped_key)
 
fsp_err_t(* RSA2048_InitialPrivateKeyWrap )(rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_rsa2048_private_wrapped_key_t *const p_wrapped_key)
 
fsp_err_t(* RSA3072_InitialPublicKeyWrap )(rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_rsa3072_public_wrapped_key_t *const p_wrapped_key)
 
fsp_err_t(* RSA3072_InitialPrivateKeyWrap )(rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_rsa3072_private_wrapped_key_t *const p_wrapped_key)
 
fsp_err_t(* RSA4096_InitialPublicKeyWrap )(rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_rsa4096_public_wrapped_key_t *const p_wrapped_key)
 
fsp_err_t(* RSA4096_InitialPrivateKeyWrap )(rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_rsa4096_private_wrapped_key_t *const p_wrapped_key)
 
fsp_err_t(* ECC_secp256r1_InitialPublicKeyWrap )(rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_ecc_public_wrapped_key_t *const p_wrapped_key)
 
fsp_err_t(* ECC_secp256r1_InitialPrivateKeyWrap )(rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_ecc_private_wrapped_key_t *const p_wrapped_key)
 
fsp_err_t(* ECC_secp384r1_InitialPublicKeyWrap )(rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_ecc_public_wrapped_key_t *const p_wrapped_key)
 
fsp_err_t(* ECC_secp384r1_InitialPrivateKeyWrap )(rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_ecc_private_wrapped_key_t *const p_wrapped_key)
 
fsp_err_t(* ECC_secp256k1_InitialPublicKeyWrap )(rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_ecc_public_wrapped_key_t *const p_wrapped_key)
 
fsp_err_t(* ECC_secp256k1_InitialPrivateKeyWrap )(rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_ecc_private_wrapped_key_t *const p_wrapped_key)
 
fsp_err_t(* ECC_brainpoolP256r1_InitialPublicKeyWrap )(rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_ecc_public_wrapped_key_t *const p_wrapped_key)
 
fsp_err_t(* ECC_brainpoolP256r1_InitialPrivateKeyWrap )(rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_ecc_private_wrapped_key_t *const p_wrapped_key)
 
fsp_err_t(* ECC_brainpoolP384r1_InitialPublicKeyWrap )(rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_ecc_public_wrapped_key_t *const p_wrapped_key)
 
fsp_err_t(* ECC_brainpoolP384r1_InitialPrivateKeyWrap )(rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_ecc_private_wrapped_key_t *const p_wrapped_key)
 

Field Documentation

◆ AES128_InitialKeyWrap

fsp_err_t(* rsip_key_injection_api_t::AES128_InitialKeyWrap) (rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_aes_wrapped_key_t *const p_wrapped_key)

This API outputs 128-bit AES wrapped key.

Parameters
[in]key_injection_typeSelection key injection type when generating wrapped key
[in]p_wrapped_user_factory_programming_keyWrapped user factory programming key by the Renesas Key Wrap Service. When key injection type is plain, this is not required and any value can be specified.
[in]p_initial_vectorInitialization vector when generating encrypted key. When key injection type is plain, this is not required and any value can be specified.
[in]p_user_keyUser key. If key injection type is not plain, it must be encrypted and have MAC appended.
[out]p_wrapped_key128-bit AES wrapped key

◆ AES256_InitialKeyWrap

fsp_err_t(* rsip_key_injection_api_t::AES256_InitialKeyWrap) (rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_aes_wrapped_key_t *const p_wrapped_key)

This API outputs 256-bit AES wrapped key.

Parameters
[in]key_injection_typeSelection key injection type when generating wrapped key
[in]p_wrapped_user_factory_programming_keyWrapped user factory programming key by the Renesas Key Wrap Service. When key injection type is plain, this is not required and any value can be specified.
[in]p_initial_vectorInitialization vector when generating encrypted key. When key injection type is plain, this is not required and any value can be specified.
[in]p_user_keyUser key. If key injection type is not plain, it must be encrypted and have MAC appended.
[out]p_wrapped_key256-bit AES wrapped key

◆ RSA2048_InitialPublicKeyWrap

fsp_err_t(* rsip_key_injection_api_t::RSA2048_InitialPublicKeyWrap) (rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_rsa2048_public_wrapped_key_t *const p_wrapped_key)

This API outputs 2048-bit RSA wrapped public key.

Parameters
[in]key_injection_typeSelection key injection type when generating wrapped key
[in]p_wrapped_user_factory_programming_keyWrapped user factory programming key by the Renesas Key Wrap Service. When key injection type is plain, this is not required and any value can be specified.
[in]p_initial_vectorInitialization vector when generating encrypted key. When key injection type is plain, this is not required and any value can be specified.
[in]p_user_keyUser key. If key injection type is not plain, it must be encrypted and have MAC appended.
[out]p_wrapped_key2048-bit RSA wrapped public key

◆ RSA2048_InitialPrivateKeyWrap

fsp_err_t(* rsip_key_injection_api_t::RSA2048_InitialPrivateKeyWrap) (rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_rsa2048_private_wrapped_key_t *const p_wrapped_key)

This API outputs 2048-bit RSA wrapped private key.

Parameters
[in]key_injection_typeSelection key injection type when generating wrapped key
[in]p_wrapped_user_factory_programming_keyWrapped user factory programming key by the Renesas Key Wrap Service. When key injection type is plain, this is not required and any value can be specified.
[in]p_initial_vectorInitialization vector when generating encrypted key. When key injection type is plain, this is not required and any value can be specified.
[in]p_user_keyUser key. If key injection type is not plain, it must be encrypted and have MAC appended.
[out]p_wrapped_key2048-bit RSA wrapped private key

◆ RSA3072_InitialPublicKeyWrap

fsp_err_t(* rsip_key_injection_api_t::RSA3072_InitialPublicKeyWrap) (rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_rsa3072_public_wrapped_key_t *const p_wrapped_key)

This API outputs 3072-bit RSA wrapped public key.

Parameters
[in]key_injection_typeSelection key injection type when generating wrapped key
[in]p_wrapped_user_factory_programming_keyWrapped user factory programming key by the Renesas Key Wrap Service. When key injection type is plain, this is not required and any value can be specified.
[in]p_initial_vectorInitialization vector when generating encrypted key. When key injection type is plain, this is not required and any value can be specified.
[in]p_user_keyUser key. If key injection type is not plain, it must be encrypted and have MAC appended.
[out]p_wrapped_key3072-bit RSA wrapped public key

◆ RSA3072_InitialPrivateKeyWrap

fsp_err_t(* rsip_key_injection_api_t::RSA3072_InitialPrivateKeyWrap) (rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_rsa3072_private_wrapped_key_t *const p_wrapped_key)

This API outputs 3072-bit RSA wrapped private key.

Parameters
[in]key_injection_typeSelection key injection type when generating wrapped key
[in]p_wrapped_user_factory_programming_keyWrapped user factory programming key by the Renesas Key Wrap Service. When key injection type is plain, this is not required and any value can be specified.
[in]p_initial_vectorInitialization vector when generating encrypted key. When key injection type is plain, this is not required and any value can be specified.
[in]p_user_keyUser key. If key injection type is not plain, it must be encrypted and have MAC appended.
[out]p_wrapped_key3072-bit RSA wrapped private key

◆ RSA4096_InitialPublicKeyWrap

fsp_err_t(* rsip_key_injection_api_t::RSA4096_InitialPublicKeyWrap) (rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_rsa4096_public_wrapped_key_t *const p_wrapped_key)

This API outputs 4096-bit RSA wrapped public key.

Parameters
[in]key_injection_typeSelection key injection type when generating wrapped key
[in]p_wrapped_user_factory_programming_keyWrapped user factory programming key by the Renesas Key Wrap Service. When key injection type is plain, this is not required and any value can be specified.
[in]p_initial_vectorInitialization vector when generating encrypted key. When key injection type is plain, this is not required and any value can be specified.
[in]p_user_keyUser key. If key injection type is not plain, it must be encrypted and have MAC appended.
[out]p_wrapped_key4096-bit RSA wrapped public key

◆ RSA4096_InitialPrivateKeyWrap

fsp_err_t(* rsip_key_injection_api_t::RSA4096_InitialPrivateKeyWrap) (rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_rsa4096_private_wrapped_key_t *const p_wrapped_key)

This API outputs 4096-bit RSA wrapped private key.

Parameters
[in]key_injection_typeSelection key injection type when generating wrapped key
[in]p_wrapped_user_factory_programming_keyWrapped user factory programming key by the Renesas Key Wrap Service. When key injection type is plain, this is not required and any value can be specified.
[in]p_initial_vectorInitialization vector when generating encrypted key. When key injection type is plain, this is not required and any value can be specified.
[in]p_user_keyUser key. If key injection type is not plain, it must be encrypted and have MAC appended.
[out]p_wrapped_key4096-bit RSA wrapped private key

◆ ECC_secp256r1_InitialPublicKeyWrap

fsp_err_t(* rsip_key_injection_api_t::ECC_secp256r1_InitialPublicKeyWrap) (rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_ecc_public_wrapped_key_t *const p_wrapped_key)

This API outputs 256-bit ECC wrapped public key.

Parameters
[in]key_injection_typeSelection key injection type when generating wrapped key
[in]p_wrapped_user_factory_programming_keyWrapped user factory programming key by the Renesas Key Wrap Service. When key injection type is plain, this is not required and any value can be specified.
[in]p_initial_vectorInitialization vector when generating encrypted key. When key injection type is plain, this is not required and any value can be specified.
[in]p_user_keyUser key. If key injection type is not plain, it must be encrypted and have MAC appended.
[out]p_wrapped_key256-bit ECC wrapped public key

◆ ECC_secp256r1_InitialPrivateKeyWrap

fsp_err_t(* rsip_key_injection_api_t::ECC_secp256r1_InitialPrivateKeyWrap) (rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_ecc_private_wrapped_key_t *const p_wrapped_key)

This API outputs 256-bit ECC wrapped private key.

Parameters
[in]key_injection_typeSelection key injection type when generating wrapped key
[in]p_wrapped_user_factory_programming_keyWrapped user factory programming key by the Renesas Key Wrap Service. When key injection type is plain, this is not required and any value can be specified.
[in]p_initial_vectorInitialization vector when generating encrypted key. When key injection type is plain, this is not required and any value can be specified.
[in]p_user_keyUser key. If key injection type is not plain, it must be encrypted and have MAC appended.
[out]p_wrapped_key256-bit ECC wrapped private key

◆ ECC_secp384r1_InitialPublicKeyWrap

fsp_err_t(* rsip_key_injection_api_t::ECC_secp384r1_InitialPublicKeyWrap) (rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_ecc_public_wrapped_key_t *const p_wrapped_key)

This API outputs 384-bit ECC wrapped public key.

Parameters
[in]key_injection_typeSelection key injection type when generating wrapped key
[in]p_wrapped_user_factory_programming_keyWrapped user factory programming key by the Renesas Key Wrap Service. When key injection type is plain, this is not required and any value can be specified.
[in]p_initial_vectorInitialization vector when generating encrypted key. When key injection type is plain, this is not required and any value can be specified.
[in]p_user_keyUser key. If key injection type is not plain, it must be encrypted and have MAC appended.
[out]p_wrapped_key384-bit ECC wrapped public key

◆ ECC_secp384r1_InitialPrivateKeyWrap

fsp_err_t(* rsip_key_injection_api_t::ECC_secp384r1_InitialPrivateKeyWrap) (rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_ecc_private_wrapped_key_t *const p_wrapped_key)

This API outputs 384-bit ECC wrapped private key.

Parameters
[in]key_injection_typeSelection key injection type when generating wrapped key
[in]p_wrapped_user_factory_programming_keyWrapped user factory programming key by the Renesas Key Wrap Service. When key injection type is plain, this is not required and any value can be specified.
[in]p_initial_vectorInitialization vector when generating encrypted key. When key injection type is plain, this is not required and any value can be specified.
[in]p_user_keyUser key. If key injection type is not plain, it must be encrypted and have MAC appended.
[out]p_wrapped_key384-bit ECC wrapped private key

◆ ECC_secp256k1_InitialPublicKeyWrap

fsp_err_t(* rsip_key_injection_api_t::ECC_secp256k1_InitialPublicKeyWrap) (rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_ecc_public_wrapped_key_t *const p_wrapped_key)

This API outputs 256-bit ECC wrapped public key.

Parameters
[in]key_injection_typeSelection key injection type when generating wrapped key
[in]p_wrapped_user_factory_programming_keyWrapped user factory programming key by the Renesas Key Wrap Service. When key injection type is plain, this is not required and any value can be specified.
[in]p_initial_vectorInitialization vector when generating encrypted key. When key injection type is plain, this is not required and any value can be specified.
[in]p_user_keyUser key. If key injection type is not plain, it must be encrypted and have MAC appended.
[out]p_wrapped_key256-bit ECC wrapped public key

◆ ECC_secp256k1_InitialPrivateKeyWrap

fsp_err_t(* rsip_key_injection_api_t::ECC_secp256k1_InitialPrivateKeyWrap) (rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_ecc_private_wrapped_key_t *const p_wrapped_key)

This API outputs 256-bit ECC wrapped private key.

Parameters
[in]key_injection_typeSelection key injection type when generating wrapped key
[in]p_wrapped_user_factory_programming_keyWrapped user factory programming key by the Renesas Key Wrap Service. When key injection type is plain, this is not required and any value can be specified.
[in]p_initial_vectorInitialization vector when generating encrypted key. When key injection type is plain, this is not required and any value can be specified.
[in]p_user_keyUser key. If key injection type is not plain, it must be encrypted and have MAC appended.
[out]p_wrapped_key256-bit ECC wrapped private key

◆ ECC_brainpoolP256r1_InitialPublicKeyWrap

fsp_err_t(* rsip_key_injection_api_t::ECC_brainpoolP256r1_InitialPublicKeyWrap) (rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_ecc_public_wrapped_key_t *const p_wrapped_key)

This API outputs 256-bit brainpool ECC wrapped public key.

Parameters
[in]key_injection_typeSelection key injection type when generating wrapped key
[in]p_wrapped_user_factory_programming_keyWrapped user factory programming key by the Renesas Key Wrap Service. When key injection type is plain, this is not required and any value can be specified.
[in]p_initial_vectorInitialization vector when generating encrypted key. When key injection type is plain, this is not required and any value can be specified.
[in]p_user_keyUser key. If key injection type is not plain, it must be encrypted and have MAC appended.
[out]p_wrapped_key256-bit ECC wrapped public key

◆ ECC_brainpoolP256r1_InitialPrivateKeyWrap

fsp_err_t(* rsip_key_injection_api_t::ECC_brainpoolP256r1_InitialPrivateKeyWrap) (rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_ecc_private_wrapped_key_t *const p_wrapped_key)

This API outputs 256-bit brainpool ECC wrapped private key.

Parameters
[in]key_injection_typeSelection key injection type when generating wrapped key
[in]p_wrapped_user_factory_programming_keyWrapped user factory programming key by the Renesas Key Wrap Service. When key injection type is plain, this is not required and any value can be specified.
[in]p_initial_vectorInitialization vector when generating encrypted key. When key injection type is plain, this is not required and any value can be specified.
[in]p_user_keyUser key. If key injection type is not plain, it must be encrypted and have MAC appended.
[out]p_wrapped_key256-bit ECC wrapped private key

◆ ECC_brainpoolP384r1_InitialPublicKeyWrap

fsp_err_t(* rsip_key_injection_api_t::ECC_brainpoolP384r1_InitialPublicKeyWrap) (rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_ecc_public_wrapped_key_t *const p_wrapped_key)

This API outputs 384-bit brainpool ECC wrapped public key.

Parameters
[in]key_injection_typeSelection key injection type when generating wrapped key
[in]p_wrapped_user_factory_programming_keyWrapped user factory programming key by the Renesas Key Wrap Service. When key injection type is plain, this is not required and any value can be specified.
[in]p_initial_vectorInitialization vector when generating encrypted key. When key injection type is plain, this is not required and any value can be specified.
[in]p_user_keyUser key. If key injection type is not plain, it must be encrypted and have MAC appended.
[out]p_wrapped_key384-bit ECC wrapped public key

◆ ECC_brainpoolP384r1_InitialPrivateKeyWrap

fsp_err_t(* rsip_key_injection_api_t::ECC_brainpoolP384r1_InitialPrivateKeyWrap) (rsip_key_injection_type_t const key_injection_type, uint8_t const *const p_wrapped_user_factory_programming_key, uint8_t const *const p_initial_vector, uint8_t const *const p_user_key, rsip_ecc_private_wrapped_key_t *const p_wrapped_key)

This API outputs 384-bit brainpool ECC wrapped private key.

Parameters
[in]key_injection_typeSelection key injection type when generating wrapped key
[in]p_wrapped_user_factory_programming_keyWrapped user factory programming key by the Renesas Key Wrap Service. When key injection type is plain, this is not required and any value can be specified.
[in]p_initial_vectorInitialization vector when generating encrypted key. When key injection type is plain, this is not required and any value can be specified.
[in]p_user_keyUser key. If key injection type is not plain, it must be encrypted and have MAC appended.
[out]p_wrapped_key384-bit ECC wrapped private key

Enumeration Type Documentation

◆ rsip_key_injection_type_t

Key injection type.

Enumerator
RSIP_KEY_INJECTION_TYPE_ENCRYPTED 

Input encrypted user key.

RSIP_KEY_INJECTION_TYPE_PLAIN 

Input plain user key.