LPC5506 RSA

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

LPC5506 RSA

Jump to solution
1,515 Views
thinkking1985
Contributor III

Hi NXP Friend

Does lpc5506 support RSA?

Can you provide demo code?

Thank you for  your support.

0 Kudos
1 Solution
1,473 Views
xiangjun_rong
NXP TechSupport
NXP TechSupport

Hi,

The LPC5506 supports RSA exactly, we have ported the mBedTLS, all the code are executed by Cortex-M33 core, so The LPC5506 supports RSA encryption and decryption.

The LPC55S06 has casper co-processor, while the LPC5506 dose NOT has casper co-processor, but the mBedTLS code does NOT use the casper to compute anything, so mBedTLS code can be executed by both LPC55S06 and LPC5506.

I attached the rsa.h

Hope it can help you

BR

XiangJun Rong

/**
* \brief This function performs a PKCS#1 v2.1 OAEP encryption
* operation (RSAES-OAEP-ENCRYPT).
*
* \note The output buffer must be as large as the size
* of ctx->N. For example, 128 Bytes if RSA-1024 is used.
*
* \deprecated It is deprecated and discouraged to call this function
* in #MBEDTLS_RSA_PRIVATE mode. Future versions of the library
* are likely to remove the \p mode argument and have it
* implicitly set to #MBEDTLS_RSA_PUBLIC.
*
* \note Alternative implementations of RSA need not support
* mode being set to #MBEDTLS_RSA_PRIVATE and might instead
* return #MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED.
*
* \param ctx The initnialized RSA context to use.
* \param f_rng The RNG function to use. This is needed for padding
* generation and must be provided.
* \param p_rng The RNG context to be passed to \p f_rng. This may
* be \c NULL if \p f_rng doesn't need a context argument.
* \param mode The mode of operation. This must be either
* #MBEDTLS_RSA_PUBLIC or #MBEDTLS_RSA_PRIVATE (deprecated).
* \param label The buffer holding the custom label to use.
* This must be a readable buffer of length \p label_len
* Bytes. It may be \c NULL if \p label_len is \c 0.
* \param label_len The length of the label in Bytes.
* \param ilen The length of the plaintext buffer \p input in Bytes.
* \param input The input data to encrypt. This must be a readable
* buffer of size \p ilen Bytes. It may be \c NULL if
* `ilen == 0`.
* \param output The output buffer. This must be a writable buffer
* of length \c ctx->len Bytes. For example, \c 256 Bytes
* for an 2048-bit RSA modulus.
*
* \return \c 0 on success.
* \return An \c MBEDTLS_ERR_RSA_XXX error code on failure.
*/
int mbedtls_rsa_rsaes_oaep_encrypt( mbedtls_rsa_context *ctx,
int (*f_rng)(void *, unsigned char *, size_t),
void *p_rng,
int mode,
const unsigned char *label, size_t label_len,
size_t ilen,
const unsigned char *input,
unsigned char *output );

View solution in original post

4 Replies
1,494 Views
xiangjun_rong
NXP TechSupport
NXP TechSupport

Hi,

Pls download SDK package from the link for LPC55S06:

https://www.nxp.com/design/software/development-software/mcuxpresso-software-and-tools-/mcuxpresso-s...

 

Especially, you have select the mbedTLs and the mBed crypto items before you downloading, then the RSA function will be included. the code use pure firmware to compute RSA, it can get the E,D,N parameters and compute the RSA encryption and decryption.

Hope it can help you

BR

XiangJun Rong

xiangjun_rong_0-1633914656361.png

 

0 Kudos
1,486 Views
thinkking1985
Contributor III

Hi NXP Firend

 Thank you for your reply.

My understanding is that lpc5506 can implement RSA encryption ,but l Since there is no CASPER accelerator, it is difficult to implement. Is that right?

Thank you for your support.

 

 

0 Kudos
1,474 Views
xiangjun_rong
NXP TechSupport
NXP TechSupport

Hi,

The LPC5506 supports RSA exactly, we have ported the mBedTLS, all the code are executed by Cortex-M33 core, so The LPC5506 supports RSA encryption and decryption.

The LPC55S06 has casper co-processor, while the LPC5506 dose NOT has casper co-processor, but the mBedTLS code does NOT use the casper to compute anything, so mBedTLS code can be executed by both LPC55S06 and LPC5506.

I attached the rsa.h

Hope it can help you

BR

XiangJun Rong

/**
* \brief This function performs a PKCS#1 v2.1 OAEP encryption
* operation (RSAES-OAEP-ENCRYPT).
*
* \note The output buffer must be as large as the size
* of ctx->N. For example, 128 Bytes if RSA-1024 is used.
*
* \deprecated It is deprecated and discouraged to call this function
* in #MBEDTLS_RSA_PRIVATE mode. Future versions of the library
* are likely to remove the \p mode argument and have it
* implicitly set to #MBEDTLS_RSA_PUBLIC.
*
* \note Alternative implementations of RSA need not support
* mode being set to #MBEDTLS_RSA_PRIVATE and might instead
* return #MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED.
*
* \param ctx The initnialized RSA context to use.
* \param f_rng The RNG function to use. This is needed for padding
* generation and must be provided.
* \param p_rng The RNG context to be passed to \p f_rng. This may
* be \c NULL if \p f_rng doesn't need a context argument.
* \param mode The mode of operation. This must be either
* #MBEDTLS_RSA_PUBLIC or #MBEDTLS_RSA_PRIVATE (deprecated).
* \param label The buffer holding the custom label to use.
* This must be a readable buffer of length \p label_len
* Bytes. It may be \c NULL if \p label_len is \c 0.
* \param label_len The length of the label in Bytes.
* \param ilen The length of the plaintext buffer \p input in Bytes.
* \param input The input data to encrypt. This must be a readable
* buffer of size \p ilen Bytes. It may be \c NULL if
* `ilen == 0`.
* \param output The output buffer. This must be a writable buffer
* of length \c ctx->len Bytes. For example, \c 256 Bytes
* for an 2048-bit RSA modulus.
*
* \return \c 0 on success.
* \return An \c MBEDTLS_ERR_RSA_XXX error code on failure.
*/
int mbedtls_rsa_rsaes_oaep_encrypt( mbedtls_rsa_context *ctx,
int (*f_rng)(void *, unsigned char *, size_t),
void *p_rng,
int mode,
const unsigned char *label, size_t label_len,
size_t ilen,
const unsigned char *input,
unsigned char *output );

1,461 Views
thinkking1985
Contributor III

Hi XiangJun

Noted and tks a lot for your support.

 

0 Kudos