nRF5 SDK v17.1.0
Functions
CryptoCell RSA Utility APIs

Functions

CRYSError_t CRYS_RSA_Build_PubKey (CRYS_RSAUserPubKey_t *UserPubKey_ptr, uint8_t *Exponent_ptr, uint16_t ExponentSize, uint8_t *Modulus_ptr, uint16_t ModulusSize)
 Builds a CRYSRSAPubKey_t public key structure with the provided modulus and exponent. More...
 
CRYSError_t CRYS_RSA_Build_PrivKey (CRYS_RSAUserPrivKey_t *UserPrivKey_ptr, uint8_t *PrivExponent_ptr, uint16_t PrivExponentSize, uint8_t *PubExponent_ptr, uint16_t PubExponentSize, uint8_t *Modulus_ptr, uint16_t ModulusSize)
 Builds a CRYSRSAPrivKey_t private key structure with the provided modulus and exponent, marking the key as a non-CRT key. More...
 
CRYSError_t CRYS_RSA_Build_PrivKeyCRT (CRYS_RSAUserPrivKey_t *UserPrivKey_ptr, uint8_t *P_ptr, uint16_t PSize, uint8_t *Q_ptr, uint16_t QSize, uint8_t *dP_ptr, uint16_t dPSize, uint8_t *dQ_ptr, uint16_t dQSize, uint8_t *qInv_ptr, uint16_t qInvSize)
 Builds a CRYSRSAPrivKey_t private key structure with the provided parameters, marking the key as a CRT key. More...
 
CRYSError_t CRYS_RSA_Get_PubKey (CRYS_RSAUserPubKey_t *UserPubKey_ptr, uint8_t *Exponent_ptr, uint16_t *ExponentSize_ptr, uint8_t *Modulus_ptr, uint16_t *ModulusSize_ptr)
 The function gets the e,n public key parameters from the input CRYS_RSAUserPubKey_t structure. The function can also be used to retrieve the modulus and exponent sizes only (Exponent_ptr AND Modulus_ptr must be set to NULL). More...
 

Detailed Description

Function Documentation

CRYSError_t CRYS_RSA_Build_PrivKey ( CRYS_RSAUserPrivKey_t UserPrivKey_ptr,
uint8_t *  PrivExponent_ptr,
uint16_t  PrivExponentSize,
uint8_t *  PubExponent_ptr,
uint16_t  PubExponentSize,
uint8_t *  Modulus_ptr,
uint16_t  ModulusSize 
)

Builds a CRYSRSAPrivKey_t private key structure with the provided modulus and exponent, marking the key as a non-CRT key.

Returns
CRYS_OK on success.
A non-zero value from crys_rsa_error.h on failure.
Parameters
[out]UserPrivKey_ptrPointer to the public key structure.
[in]PrivExponent_ptrPointer to the private exponent stream of bytes (Big-Endian format).
[in]PrivExponentSizeThe size of the private exponent (in bytes).
[in]PubExponent_ptrPointer to the public exponent stream of bytes (Big-Endian format).
[in]PubExponentSizeThe size of the public exponent (in bytes).
[in]Modulus_ptrPointer to the modulus stream of bytes (Big-Endian format). The most significant bit must be set to '1'.
[in]ModulusSizeThe modulus size in bytes. Supported sizes are 64, 128, 256, 384 and 512.
CRYSError_t CRYS_RSA_Build_PrivKeyCRT ( CRYS_RSAUserPrivKey_t UserPrivKey_ptr,
uint8_t *  P_ptr,
uint16_t  PSize,
uint8_t *  Q_ptr,
uint16_t  QSize,
uint8_t *  dP_ptr,
uint16_t  dPSize,
uint8_t *  dQ_ptr,
uint16_t  dQSize,
uint8_t *  qInv_ptr,
uint16_t  qInvSize 
)

Builds a CRYSRSAPrivKey_t private key structure with the provided parameters, marking the key as a CRT key.

Returns
CRYS_OK on success.
A non-zero value from crys_rsa_error.h on failure.
Parameters
[out]UserPrivKey_ptrPointer to the public key structure.
[in]P_ptrPointer to the first factor stream of bytes (Big-Endian format).
[in]PSizeThe size of the first factor (in bytes).
[in]Q_ptrPointer to the second factor stream of bytes (Big-Endian format).
[in]QSizeThe size of the second factor (in bytes).
[in]dP_ptrPointer to the first factor's CRT exponent stream of bytes (Big-Endian format).
[in]dPSizeThe size of the first factor's CRT exponent (in bytes).
[in]dQ_ptrPointer to the second factor's CRT exponent stream of bytes (Big-Endian format).
[in]dQSizeThe size of the second factor's CRT exponent (in bytes).
[in]qInv_ptrPointer to the first CRT coefficient stream of bytes (Big-Endian format).
[in]qInvSizeThe size of the first CRT coefficient (in bytes).
CRYSError_t CRYS_RSA_Build_PubKey ( CRYS_RSAUserPubKey_t UserPubKey_ptr,
uint8_t *  Exponent_ptr,
uint16_t  ExponentSize,
uint8_t *  Modulus_ptr,
uint16_t  ModulusSize 
)

Builds a CRYSRSAPubKey_t public key structure with the provided modulus and exponent.

Returns
CRYS_OK on success.
A non-zero value from crys_rsa_error.h on failure.
Parameters
[out]UserPubKey_ptrPointer to the public key structure.
[in]Exponent_ptrPointer to the exponent stream of bytes (Big-Endian format).
[in]ExponentSizeThe size of the exponent (in bytes).
[in]Modulus_ptrPointer to the modulus stream of bytes (Big-Endian format). The most significant bit (MSB) must be set to '1'.
[in]ModulusSizeThe modulus size in bytes. Supported sizes are 64, 128, 256, 384 and 512.
CRYSError_t CRYS_RSA_Get_PubKey ( CRYS_RSAUserPubKey_t UserPubKey_ptr,
uint8_t *  Exponent_ptr,
uint16_t *  ExponentSize_ptr,
uint8_t *  Modulus_ptr,
uint16_t *  ModulusSize_ptr 
)

The function gets the e,n public key parameters from the input CRYS_RSAUserPubKey_t structure. The function can also be used to retrieve the modulus and exponent sizes only (Exponent_ptr AND Modulus_ptr must be set to NULL).

Note
All members of input UserPubKey_ptr structure must be initialized.
Returns
CRYS_OK on success.
A non-zero value from crys_rsa_error.h on failure.
Parameters
[in]UserPubKey_ptrA pointer to the public key structure.
[out]Exponent_ptrA pointer to the exponent stream of bytes (Big-Endian format).
[in,out]ExponentSize_ptrthe size of the exponent buffer in bytes, it is updated to the actual size of the exponent, in bytes.
[out]Modulus_ptrA pointer to the modulus stream of bytes (Big-Endian format). The MS (most significant) bit must be set to '1'.
[in,out]ModulusSize_ptrthe size of the modulus buffer in bytes, it is updated to the actual size of the modulus, in bytes.

Documentation feedback | Developer Zone | Subscribe | Updated