Synergy Software Package User's Manual

RTOS-integrated Crypto Signature Framework Module. More...

Data Structures

struct  sf_crypto_signature_context_t
 
struct  sf_crypto_signature_instance_ctrl_t
 

Macros

#define SF_CRYPTO_SIGNATURE_CODE_VERSION_MAJOR   (2U)
 

Enumerations

enum  sf_crypto_signature_state_t { SF_CRYPTO_SIGNATURE_CLOSED, SF_CRYPTO_SIGNATURE_OPENED }
 
enum  sf_crypto_signature_operation_state_t {
  SF_CRYPTO_SIGNATURE_OPERATION_STATE_OPEN, SF_CRYPTO_SIGNATURE_OPERATION_STATE_SIGN_INITIALIZED, SF_CRYPTO_SIGNATURE_OPERATION_STATE_SIGN_UPDATED, SF_CRYPTO_SIGNATURE_OPERATION_STATE_SIGN_FINALIZED,
  SF_CRYPTO_SIGNATURE_OPERATION_STATE_VERIFY_INITIALIZED, SF_CRYPTO_SIGNATURE_OPERATION_STATE_VERIFY_UPDATED, SF_CRYPTO_SIGNATURE_OPERATION_STATE_VERIFY_FINALIZED
}
 

Functions

ssp_err_t sf_crypto_signature_key_size_config_rsa (sf_crypto_signature_cfg_t const *const p_cfg)
 Function for Crypto Signature Framework to check configuration params - Key size. This function is called by sf_crypto_signature_validate_config(). More...
 
ssp_err_t sf_crypto_signature_open_rsa (sf_crypto_signature_instance_ctrl_t *const p_ctrl, sf_crypto_signature_cfg_t const *const p_cfg)
 Function for Crypto Signature Framework to open the RSA HAL driver. This function is called by sf_crypto_signature_hal_open(). More...
 
ssp_err_t sf_crypto_signature_close_rsa (sf_crypto_signature_instance_ctrl_t *p_ctrl)
 Function for Crypto Signature Framework to close the RSA HAL driver. This function is called by sf_crypto_signature_hal_close(). More...
 
ssp_err_t sf_crypto_signature_context_init_rsa (sf_crypto_signature_instance_ctrl_t *const p_ctrl, sf_crypto_signature_mode_t operation_mode, sf_crypto_signature_algorithm_init_params_t *const p_algorithm_specific_params, sf_crypto_key_t const *const p_key)
 Function for Crypto Signature Framework to initialize the Signature framework module context. This function is called by sf_crypto_signature_hal_context_init(). More...
 
ssp_err_t sf_crypto_signature_sign_update_rsa (sf_crypto_signature_instance_ctrl_t *const p_ctrl, sf_crypto_data_handle_t const *const p_message)
 Function for Crypto Signature Framework to perform sign update operation. This function is called by sf_crypto_signature_hal_sign_update(). More...
 
ssp_err_t sf_crypto_signature_verify_update_rsa (sf_crypto_signature_instance_ctrl_t *const p_ctrl, sf_crypto_data_handle_t const *const p_message)
 Function for Crypto Signature Framework to perform verify update operation. This function is called by sf_crypto_signature_hal_verify_update(). More...
 
ssp_err_t sf_crypto_signature_sign_final_rsa (sf_crypto_signature_instance_ctrl_t *const p_ctrl, sf_crypto_data_handle_t const *const p_message, sf_crypto_data_handle_t *const p_dest)
 Function for Crypto Signature Framework to perform sign final operation. This function is called by sf_crypto_signature_hal_sign_final(). More...
 
ssp_err_t sf_crypto_signature_verify_final_rsa (sf_crypto_signature_instance_ctrl_t *const p_ctrl, sf_crypto_data_handle_t const *const p_signature, sf_crypto_data_handle_t const *const p_message)
 Function for Crypto Signature Framework to perform verify final operation. This function is called by sf_crypto_signature_hal_verify_final(). More...
 
ssp_err_t SF_CRYPTO_SIGNATURE_Open (sf_crypto_signature_ctrl_t *const p_api_ctrl, sf_crypto_signature_cfg_t const *const p_cfg)
 SSP Crypto Signature Framework Open operation. More...
 
ssp_err_t SF_CRYPTO_SIGNATURE_Close (sf_crypto_signature_ctrl_t *const p_api_ctrl)
 SSP Crypto Signature Framework Close operation. More...
 
ssp_err_t SF_CRYPTO_SIGNATURE_ContextInit (sf_crypto_signature_ctrl_t *const p_api_ctrl, sf_crypto_signature_mode_t operation_mode, sf_crypto_signature_algorithm_init_params_t *const p_algorithm_specific_params, sf_crypto_key_t const *const p_key)
 SSP Crypto Signature Framework Context Initialization operation. More...
 
ssp_err_t SF_CRYPTO_SIGNATURE_SignUpdate (sf_crypto_signature_ctrl_t *const p_api_ctrl, sf_crypto_data_handle_t const *const p_message)
 SSP Crypto Signature Framework Signature Update operation. More...
 
ssp_err_t SF_CRYPTO_SIGNATURE_VerifyUpdate (sf_crypto_signature_ctrl_t *const p_api_ctrl, sf_crypto_data_handle_t const *const p_message)
 SSP Crypto Signature Framework Signature-Verification Update operation. More...
 
ssp_err_t SF_CRYPTO_SIGNATURE_SignFinal (sf_crypto_signature_ctrl_t *const p_api_ctrl, sf_crypto_data_handle_t const *const p_message, sf_crypto_data_handle_t *const p_dest)
 SSP Crypto Signature Framework Signature Final operation. More...
 
ssp_err_t SF_CRYPTO_SIGNATURE_VerifyFinal (sf_crypto_signature_ctrl_t *const p_api_ctrl, sf_crypto_data_handle_t const *const p_signature, sf_crypto_data_handle_t const *const p_message)
 SSP Crypto Signature Framework Signature-Verification Update operation. More...
 
ssp_err_t SF_CRYPTO_SIGNATURE_VersionGet (ssp_version_t *const p_version)
 Gets driver version based on compile time macros. More...
 
ssp_err_t sf_crypto_signature_validate_sign_operation_state_transition (sf_crypto_signature_instance_ctrl_t *p_ctrl, sf_crypto_signature_operation_state_t next_state)
 SSP Crypto Signature Framework State transition validation for sign operation. More...
 
ssp_err_t sf_crypto_signature_validate_verify_operation_state_transition (sf_crypto_signature_instance_ctrl_t *p_ctrl, sf_crypto_signature_operation_state_t next_state)
 SSP Crypto Signature Framework State transition validation for verify operation. More...
 

Detailed Description

RTOS-integrated Crypto Signature Framework Module.

Macro Definition Documentation

◆ SF_CRYPTO_SIGNATURE_CODE_VERSION_MAJOR

#define SF_CRYPTO_SIGNATURE_CODE_VERSION_MAJOR   (2U)

The API version of SSP Crypto Signature Framework

Enumeration Type Documentation

◆ sf_crypto_signature_operation_state_t

Internal state codes for the SSP Crypto Signature framework module.

Enumerator
SF_CRYPTO_SIGNATURE_OPERATION_STATE_OPEN 

Module opened to perform sign/verify operation.

SF_CRYPTO_SIGNATURE_OPERATION_STATE_SIGN_INITIALIZED 

Context is initialized for Sign Operation.

SF_CRYPTO_SIGNATURE_OPERATION_STATE_SIGN_UPDATED 

Sign operation is in progress.

SF_CRYPTO_SIGNATURE_OPERATION_STATE_SIGN_FINALIZED 

Sign operation has been completed.

SF_CRYPTO_SIGNATURE_OPERATION_STATE_VERIFY_INITIALIZED 

Context is initialized for Verify Operation.

SF_CRYPTO_SIGNATURE_OPERATION_STATE_VERIFY_UPDATED 

Verify operation is in progress.

SF_CRYPTO_SIGNATURE_OPERATION_STATE_VERIFY_FINALIZED 

Verify operation has been completed.

◆ sf_crypto_signature_state_t

State codes for the SSP Crypto Signature framework module. Once the module is opened successfully, then the state is transition to OPENED state. After sign/verify operations, the Signature framework module must be closed with CLOSED state.

Enumerator
SF_CRYPTO_SIGNATURE_CLOSED 

The Signature module is closed.

SF_CRYPTO_SIGNATURE_OPENED 

The Signature module is opened.

Function Documentation

◆ SF_CRYPTO_SIGNATURE_Close()

ssp_err_t SF_CRYPTO_SIGNATURE_Close ( sf_crypto_signature_ctrl_t *const  p_api_ctrl)

SSP Crypto Signature Framework Close operation.

Return values
SSP_SUCCESSThe module was successfully closed.
SSP_ERR_ASSERTIONNULL is passed through the argument.
SSP_ERR_INTERNALCritical internal error.
SSP_ERR_NOT_OPENThe module has yet been opened. Call Open API first.
Returns
See Common Error Codes for other possible return codes.

Check if the Crypto Framework has been opened. If not yet opened, return an error.

Close Crypto HAL module.

Decrement Open counter to indicate a (this) module is closed.

◆ sf_crypto_signature_close_rsa()

ssp_err_t sf_crypto_signature_close_rsa ( sf_crypto_signature_instance_ctrl_t p_ctrl)

Function for Crypto Signature Framework to close the RSA HAL driver. This function is called by sf_crypto_signature_hal_close().

Parameters
[in,out]p_ctrlPointer to Crypto Signature Framework instance control block structure.
Return values
SSP_SUCCESSThe module was successfully closed.
SSP_ERR_INTERNALCritical internal error.
Returns
See Common Error Codes for other possible return codes.

◆ sf_crypto_signature_context_init_rsa()

ssp_err_t sf_crypto_signature_context_init_rsa ( sf_crypto_signature_instance_ctrl_t *const  p_ctrl,
sf_crypto_signature_mode_t  operation_mode,
sf_crypto_signature_algorithm_init_params_t *const  p_algorithm_specific_params,
sf_crypto_key_t const *const  p_key 
)

Function for Crypto Signature Framework to initialize the Signature framework module context. This function is called by sf_crypto_signature_hal_context_init().

Parameters
[in,out]p_ctrlPointer to Crypto Signature Framework instance control block structure.
[in]operation_modePerform Sign Or Verify operation.
[in]p_algorithm_specific_paramsAlgorithm specific params.
[in]p_keyPrivate key if sign operation is to be performed. Public key if verify operation is to be performed.
Return values
SSP_SUCCESSThe module context was successfully initialized.
SSP_ERR_INTERNALCritical internal error.
SSP_ERR_INVALID_CALLInvalid call to this API.
SSP_ERR_UNSUPPORTEDInvalid Hash module request.
SSP_ERR_CRYPTO_INVALID_OPERATION_MODEInvalid operation mode requested.
Returns
See Common Error Codes for other possible return codes.

◆ SF_CRYPTO_SIGNATURE_ContextInit()

ssp_err_t SF_CRYPTO_SIGNATURE_ContextInit ( sf_crypto_signature_ctrl_t *const  p_api_ctrl,
sf_crypto_signature_mode_t  operation_mode,
sf_crypto_signature_algorithm_init_params_t *const  p_algorithm_specific_params,
sf_crypto_key_t const *const  p_key 
)

SSP Crypto Signature Framework Context Initialization operation.

Return values
SSP_SUCCESSThe module context was successfully initialized.
SSP_ERR_ASSERTIONNULL is passed through the argument.
SSP_ERR_INTERNALCritical internal error.
SSP_ERR_INVALID_CALLInvalid call to this API.
SSP_ERR_UNSUPPORTEDInvalid Hash module request.
SSP_ERR_CRYPTO_INVALID_OPERATION_MODEInvalid operation mode requested.
Returns
See Common Error Codes for other possible return codes.

Check if the Crypto Framework has been opened. If not yet opened, return an error.

Setup Context for HAL.

◆ sf_crypto_signature_key_size_config_rsa()

ssp_err_t sf_crypto_signature_key_size_config_rsa ( sf_crypto_signature_cfg_t const *const  p_cfg)

Function for Crypto Signature Framework to check configuration params - Key size. This function is called by sf_crypto_signature_validate_config().

Parameters
[in]p_cfgPointer to sf_crypto_signature_cfg_t configuration structure.
Return values
SSP_SUCCESSValid RSA Key size.
SSP_ERR_INVALID_ARGUMENTInvalid RSA Key size.

◆ SF_CRYPTO_SIGNATURE_Open()

ssp_err_t SF_CRYPTO_SIGNATURE_Open ( sf_crypto_signature_ctrl_t *const  p_api_ctrl,
sf_crypto_signature_cfg_t const *const  p_cfg 
)

SSP Crypto Signature Framework Open operation.

Return values
SSP_SUCCESSThe module was successfully opened.
SSP_ERR_ASSERTIONNULL is passed through an argument.
SSP_ERR_INTERNALCritical internal error.
SSP_ERR_CRYPTO_COMMON_NOT_OPENEDCrypto Framework Common Module has yet been opened.
SSP_ERR_ALREADY_OPENThe module has been already opened.
SSP_ERR_UNSUPPORTEDThe module does not support the key type specified by user.
Returns
See Common Error Codes for other possible return codes.

Setup control block with common framework module (instance control and API).

Setup control block with Hash framework module (instance).

Check if Crypto Common module is opened before calling this API.

Check if SF Crypto Signature is already opened.

Validate configuration parameters.

Copy configuration parameters to control block.

Open Crypto HAL module.

Set Signature Framework module internal operation state to Open.

Set Signature Framework module status to Open.

Increment Open counter to indicate a (this) module is open.

◆ sf_crypto_signature_open_rsa()

ssp_err_t sf_crypto_signature_open_rsa ( sf_crypto_signature_instance_ctrl_t *const  p_ctrl,
sf_crypto_signature_cfg_t const *const  p_cfg 
)

Function for Crypto Signature Framework to open the RSA HAL driver. This function is called by sf_crypto_signature_hal_open().

Parameters
[in,out]p_ctrlPointer to Crypto Signature Framework instance control block structure.
[in]p_cfgPointer to sf_crypto_signature_cfg_t configuration structure.
Return values
SSP_SUCCESSThe module was successfully opened.
SSP_ERR_INTERNALCritical internal error.
Returns
See Common Error Codes for other possible return codes.

◆ sf_crypto_signature_sign_final_rsa()

ssp_err_t sf_crypto_signature_sign_final_rsa ( sf_crypto_signature_instance_ctrl_t *const  p_ctrl,
sf_crypto_data_handle_t const *const  p_message,
sf_crypto_data_handle_t *const  p_dest 
)

Function for Crypto Signature Framework to perform sign final operation. This function is called by sf_crypto_signature_hal_sign_final().

Parameters
[in,out]p_ctrlPointer to Crypto Signature Framework instance control block structure.
[in]p_messagePointer to data handle containing last block of data and its length. If there is no more data to be passed this param can be set to NULL.
[in,out]p_destPointer to data handle containing pointer to a buffer for storing signature. The data_length of this handle must be populated with the buffer length. Upon successful return this data_length will be updated with the number of bytes written to this buffer.
Return values
SSP_SUCCESSSign Final operation was performed successfully.
SSP_ERR_INTERNALCritical internal error.
SSP_ERR_CRYPTO_INVALID_SIZENot enough space to store signature.
SSP_ERR_UNSUPPORTEDInvalid Hash module request.
SSP_ERR_CRYPTO_BUF_OVERFLOWUpdate data exceeded the block size.
Returns
See Common Error Codes for other possible return codes.

◆ sf_crypto_signature_sign_update_rsa()

ssp_err_t sf_crypto_signature_sign_update_rsa ( sf_crypto_signature_instance_ctrl_t *const  p_ctrl,
sf_crypto_data_handle_t const *const  p_message 
)

Function for Crypto Signature Framework to perform sign update operation. This function is called by sf_crypto_signature_hal_sign_update().

Parameters
[in,out]p_ctrlPointer to Crypto Signature Framework instance control block structure.
[in]p_messagePointer to data handle containing update data and its length.
Return values
SSP_SUCCESSSign update was performed successfully.
SSP_ERR_ASSERTIONCritical internal error.
SSP_ERR_UNSUPPORTEDInvalid Hash module request.
SSP_ERR_CRYPTO_BUF_OVERFLOWUpdate data exceeded the block size.
SSP_ERR_CRYPTO_INVALID_OPERATION_MODEInvalid operation mode requested.
Returns
See Common Error Codes for other possible return codes.

◆ SF_CRYPTO_SIGNATURE_SignFinal()

ssp_err_t SF_CRYPTO_SIGNATURE_SignFinal ( sf_crypto_signature_ctrl_t *const  p_api_ctrl,
sf_crypto_data_handle_t const *const  p_message,
sf_crypto_data_handle_t *const  p_dest 
)

SSP Crypto Signature Framework Signature Final operation.

Return values
SSP_SUCCESSSign Final operation was performed successfully.
SSP_ERR_ASSERTIONNULL is passed through the argument.
SSP_ERR_INTERNALCritical internal error.
SSP_ERR_INVALID_CALLInvalid call to this API.
SSP_ERR_CRYPTO_INVALID_SIZENot enough space to store signature.
SSP_ERR_UNSUPPORTEDInvalid Hash module request.
SSP_ERR_CRYPTO_BUF_OVERFLOWUpdate data exceeded the block size.
Returns
See Common Error Codes for other possible return codes.

Check if the Crypto Framework has been opened. If not yet opened, return an error.

Validate state transition.

Lock the module to access to Crypto HAL module.

Perform Sign Final.

Set Signature Framework internal state.

Unlock the module.

◆ SF_CRYPTO_SIGNATURE_SignUpdate()

ssp_err_t SF_CRYPTO_SIGNATURE_SignUpdate ( sf_crypto_signature_ctrl_t *const  p_api_ctrl,
sf_crypto_data_handle_t const *const  p_message 
)

SSP Crypto Signature Framework Signature Update operation.

Return values
SSP_SUCCESSSign update was performed successfully.
SSP_ERR_ASSERTIONNULL is passed through the argument.
SSP_ERR_INTERNALCritical internal error.
SSP_ERR_INVALID_CALLInvalid call to this API.
SSP_ERR_UNSUPPORTEDInvalid Hash module request.
SSP_ERR_CRYPTO_BUF_OVERFLOWUpdate data exceeded the block size.
SSP_ERR_CRYPTO_INVALID_OPERATION_MODEInvalid operation mode requested.
Returns
See Common Error Codes for other possible return codes.

Check if the Crypto Framework has been opened. If not yet opened, return an error.

Validate state transition.

Lock the module to access to Crypto HAL module.

Perform Sign Update.

Set Signature Framework internal state.

Unlock the module.

◆ sf_crypto_signature_validate_sign_operation_state_transition()

ssp_err_t sf_crypto_signature_validate_sign_operation_state_transition ( sf_crypto_signature_instance_ctrl_t p_ctrl,
sf_crypto_signature_operation_state_t  next_state 
)

SSP Crypto Signature Framework State transition validation for sign operation.

Parameters
[in]p_ctrlPointer to Crypto Signature Framework instance control block structure.
[in]next_stateRequested next state.
Return values
SSP_SUCCESSValid call to the calling API.
SSP_ERR_INVALID_CALLInvalid call to the calling API.

◆ sf_crypto_signature_validate_verify_operation_state_transition()

ssp_err_t sf_crypto_signature_validate_verify_operation_state_transition ( sf_crypto_signature_instance_ctrl_t p_ctrl,
sf_crypto_signature_operation_state_t  next_state 
)

SSP Crypto Signature Framework State transition validation for verify operation.

Parameters
[in]p_ctrlPointer to Crypto Signature Framework instance control block structure.
[in]next_stateRequested next state.
Return values
SSP_SUCCESSValid call to the calling API.
SSP_ERR_INVALID_CALLInvalid call to the calling API.

◆ sf_crypto_signature_verify_final_rsa()

ssp_err_t sf_crypto_signature_verify_final_rsa ( sf_crypto_signature_instance_ctrl_t *const  p_ctrl,
sf_crypto_data_handle_t const *const  p_signature,
sf_crypto_data_handle_t const *const  p_message 
)

Function for Crypto Signature Framework to perform verify final operation. This function is called by sf_crypto_signature_hal_verify_final().

Parameters
[in,out]p_ctrlPointer to Crypto Signature Framework instance control block structure.
[in]p_signaturePointer to data handle containing signature and its length.
[in]p_messagePointer to data handle containing message in appropriate format and its length.
Return values
SSP_SUCCESSVerify Final operation was performed successfully.
SSP_ERR_INTERNALCritical internal error.
SSP_ERR_CRYPTO_INVALID_SIZEInvalid signature length.
SSP_ERR_UNSUPPORTEDInvalid Hash module request.
SSP_ERR_CRYPTO_BUF_OVERFLOWUpdate data exceeded the block size.
Returns
See Common Error Codes for other possible return codes.

◆ sf_crypto_signature_verify_update_rsa()

ssp_err_t sf_crypto_signature_verify_update_rsa ( sf_crypto_signature_instance_ctrl_t *const  p_ctrl,
sf_crypto_data_handle_t const *const  p_message 
)

Function for Crypto Signature Framework to perform verify update operation. This function is called by sf_crypto_signature_hal_verify_update().

Parameters
[in,out]p_ctrlPointer to Crypto Signature Framework instance control block structure.
[in]p_messagePointer to data handle containing message in appropriate format and its length.
Return values
SSP_SUCCESSVerify update operation was performed successfully.
SSP_ERR_ASSERTIONCritical internal error.
SSP_ERR_UNSUPPORTEDInvalid Hash module request.
SSP_ERR_CRYPTO_BUF_OVERFLOWUpdate data exceeded the block size.
SSP_ERR_CRYPTO_INVALID_OPERATION_MODEInvalid operation mode requested.
Returns
See Common Error Codes for other possible return codes.

◆ SF_CRYPTO_SIGNATURE_VerifyFinal()

ssp_err_t SF_CRYPTO_SIGNATURE_VerifyFinal ( sf_crypto_signature_ctrl_t *const  p_api_ctrl,
sf_crypto_data_handle_t const *const  p_signature,
sf_crypto_data_handle_t const *const  p_message 
)

SSP Crypto Signature Framework Signature-Verification Update operation.

Return values
SSP_SUCCESSVerify final operation is performed successfully.
SSP_ERR_ASSERTIONNULL is passed through the argument.
SSP_ERR_INTERNALCritical internal error.
SSP_ERR_INVALID_CALLInvalid call to this API.
SSP_ERR_CRYPTO_INVALID_SIZEInvalid signature length.
SSP_ERR_UNSUPPORTEDInvalid Hash module request.
SSP_ERR_CRYPTO_BUF_OVERFLOWUpdate data exceeded the block size.
Returns
See Common Error Codes for other possible return codes.

Check if the Crypto Framework has been opened. If not yet opened, return an error.

Validate state transition.

Lock the module to access to Crypto HAL module.

Perform Verify Final.

Set Signature Framework internal state.

Unlock the module.

◆ SF_CRYPTO_SIGNATURE_VerifyUpdate()

ssp_err_t SF_CRYPTO_SIGNATURE_VerifyUpdate ( sf_crypto_signature_ctrl_t *const  p_api_ctrl,
sf_crypto_data_handle_t const *const  p_message 
)

SSP Crypto Signature Framework Signature-Verification Update operation.

Return values
SSP_SUCCESSVerify update operation was performed successfully.
SSP_ERR_ASSERTIONNULL is passed through the argument.
SSP_ERR_INTERNALCritical internal error.
SSP_ERR_INVALID_CALLInvalid call to this API.
SSP_ERR_UNSUPPORTEDInvalid Hash module request.
SSP_ERR_CRYPTO_BUF_OVERFLOWUpdate data exceeded the block size.
SSP_ERR_CRYPTO_INVALID_OPERATION_MODEInvalid operation mode requested.
Returns
See Common Error Codes for other possible return codes.

Check if the Crypto Framework has been opened. If not yet opened, return an error.

Validate state transition.

Lock the module to access to Crypto HAL module.

Perform Verify Update.

Set Signature Framework internal state.

Unlock the module.

◆ SF_CRYPTO_SIGNATURE_VersionGet()

ssp_err_t SF_CRYPTO_SIGNATURE_VersionGet ( ssp_version_t *const  p_version)

Gets driver version based on compile time macros.

Return values
SSP_SUCCESSFunction returned successfully.
SSP_ERR_ASSERTIONThe parameter p_version is NULL.