blob: a559e19005a3d203541297ad029c6727e21503fc [file] [log] [blame]
/*
*
* Copyright 2018-2020 NXP
* SPDX-License-Identifier: Apache-2.0
*/
/**
* @par Description
* Implementation of key association between NXP Secure Element and mbedtls.
* @par History
* 1.0 30-jan-2018 : Initial version
*
*****************************************************************************/
#ifndef AX_MBEDTLS_H
#define AX_MBEDTLS_H
#if defined(SSS_USE_FTR_FILE)
#include "fsl_sss_ftr.h"
#else
#include "fsl_sss_ftr_default.h"
#endif
#if SSS_HAVE_ALT_SSS
#include "sss_mbedtls.h"
#else
#include "ax_mbedtls.h"
#endif
#include <fsl_sss_api.h>
#if SSS_HAVE_A71CH || SSS_HAVE_A71CH_SIM
#include <fsl_sscp_a71ch.h>
#endif
#if SSS_HAVE_MBEDTLS
#include <fsl_sss_mbedtls_apis.h>
#endif
/** @ingroup ax_mbed_tls */
/** @{ */
#include "fsl_sss_api.h"
#include "mbedtls/pk.h"
#include "mbedtls/ssl.h"
/**
* @brief Associate a keypair provisioned in the secure element for
* subsequent operations.
*
* @param[out] pkey Pointer to the mbedtls_pk_context which will be
* associated with data corresponding to the key_index
*
* @param[in] pkeyObject The object that we are going to be use.
*
* @return 0 if successful, or 1 if unsuccessful
*/
int sss_mbedtls_associate_keypair(mbedtls_pk_context *pkey, sss_object_t *pkeyObject);
/**
* @brief Associate a pubkey provisioned in the secure element for
* subsequent operations.
*
* @param[out] pkey Pointer to the mbedtls_pk_context which will be
* associated with data corresponding to the key index
*
* @param[in] pkeyObject The object that we are going to be use.
*
* @return 0 if successful, or 1 if unsuccessful
*/
int sss_mbedtls_associate_pubkey(mbedtls_pk_context *pkey, sss_object_t *pkeyObject);
/**
* @brief Update ECDSA HandShake key with given inded.
*
* @param[in,out] handshake Pointer to the mbedtls_ssl_handshake_params which
* will be associated with data corresponding to the
* key index
*
* @param[in] pkeyObject The object that we are going to be use.
*
* @param[in] hostKs Keystore to host for session key.
*
* @return 0 if successful, or 1 if unsuccessful
*/
int sss_mbedtls_associate_ecdhctx(
mbedtls_ssl_handshake_params *handshake, sss_object_t *pkeyObject, sss_key_store_t *hostKs);
/** @} */
/**
* \brief This function frees the components of a key pair. Original implementation
* \param key The key pair to free.
*/
void mbedtls_ecp_keypair_free_o(mbedtls_ecp_keypair *key);
/**
* same as ``mbedtls_ecp_tls_read_group``
*/
int mbedtls_ecp_tls_read_group_o(mbedtls_ecp_group *grp, const unsigned char **buf, size_t len);
#endif /* AX_MBEDTLS_H */