SharkSSL™ Embedded SSL/TLS Stack
RSA encrypt/decrypt functions

Detailed Description

Typedefs

typedef U8 * SharkSslRSAKey
 SharkSslRSAKey is an alias for the SharkSslCert type and is a private/public key converted by sharkssl_PEM_to_RSAKey or the command line tool SharkSslParseKey.
 

Functions

SHARKSSL_API SharkSslRSAKey sharkssl_PEM_to_RSAKey (const char *PEMKey, const char *passphrase)
 Convert an RSA private or public key in PEM format to the SharkSslRSAKey format. More...
 
SHARKSSL_API SharkSslKey sharkssl_PEM_extractPublicKey (const char *certPEM)
 Extract the public key form a certificate in PEM format. More...
 
SHARKSSL_API void SharkSslRSAKey_free (SharkSslRSAKey key)
 Release a SharkSslRSAKey allocated by functions sharkssl_PEM_to_RSAKey and sharkssl_PEM_extractPublicKey.
 
SHARKSSL_API sharkssl_RSA_RetVal sharkssl_RSA_public_encrypt (U16 len, U8 *in, U8 *out, SharkSslRSAKey key, U8 padding)
 Encrypt data using the public key or private key. More...
 
SHARKSSL_API sharkssl_RSA_RetVal sharkssl_RSA_private_decrypt (U16 len, U8 *in, U8 *out, SharkSslRSAKey privkey, U8 padding)
 Decrypt ciphertext using the private key. More...
 
SHARKSSL_API sharkssl_RSA_RetVal sharkssl_RSA_private_encrypt (U16 len, U8 *in, U8 *out, SharkSslRSAKey privkey, U8 padding)
 Sign a message digest using the private key. More...
 
SHARKSSL_API sharkssl_RSA_RetVal sharkssl_RSA_public_decrypt (U16 len, U8 *in, U8 *out, SharkSslRSAKey key, U8 padding)
 Bring back a message digest using the public key or private key. More...
 

Function Documentation

◆ sharkssl_PEM_extractPublicKey()

SHARKSSL_API SharkSslKey sharkssl_PEM_extractPublicKey ( const char *  certPEM)

Extract the public key form a certificate in PEM format.

Note: the converted value must be released by calling SharkSslKey_free, when no longer needed.

example:

{
SharkSslKey SslKey;
...
if (SslKey)
{
...
void SharkSslKey_free(SslKey);
}
}
SHARKSSL_API SharkSslKey sharkssl_PEM_extractPublicKey(const char *certPEM)
Extract the public key form a certificate in PEM format.
U8 * SharkSslKey
The SharkSslKey type.
Definition: SharkSSL.h:309
Returns
the certificate's public key in SharkSslKey (RSA or ECC) format or NULL if the conversion fails.

◆ sharkssl_PEM_to_RSAKey()

SHARKSSL_API SharkSslRSAKey sharkssl_PEM_to_RSAKey ( const char *  PEMKey,
const char *  passphrase 
)

Convert an RSA private or public key in PEM format to the SharkSslRSAKey format.

Note: the converted value must be released by calling SharkSslRSAKey_free, when no longer needed.

example:

{
SharkSslRSAKey RSAKey;
...
RSAKey = sharksslPEM_to_RSAKey(key, pass);
if (RSAKey)
{
...
void SharkSslRSAKey_free(RSAKey);
}
}
SHARKSSL_API void SharkSslRSAKey_free(SharkSslRSAKey key)
Release a SharkSslRSAKey allocated by functions sharkssl_PEM_to_RSAKey and sharkssl_PEM_extractPublic...
U8 * SharkSslRSAKey
SharkSslRSAKey is an alias for the SharkSslCert type and is a private/public key converted by sharkss...
Definition: SharkSSL.h:1902
Returns
the private/public key in SharkSslRSAKey format or NULL if the conversion fails.

◆ sharkssl_RSA_private_decrypt()

SHARKSSL_API sharkssl_RSA_RetVal sharkssl_RSA_private_decrypt ( U16  len,
U8 *  in,
U8 *  out,
SharkSslRSAKey  privkey,
U8  padding 
)

Decrypt ciphertext using the private key.

Parameters
lenis the length/size of parameter 'in'. This length must be exactly SharkSslRSAKey_size (key).
inthe ciphertext
outthe decrypted ciphertext is copied to this buffer. The size of this buffer must be no less than SharkSslRSAKey_size (key)
privkeyis the private key in SharkSslRSAKey format.
paddingis one of SHARKSSL_RSA_PKCS1_PADDING or SHARKSSL_RSA_NO_PADDING
Returns
the size of the decrypted ciphertext, or -1 if any error occurs

◆ sharkssl_RSA_private_encrypt()

SHARKSSL_API sharkssl_RSA_RetVal sharkssl_RSA_private_encrypt ( U16  len,
U8 *  in,
U8 *  out,
SharkSslRSAKey  privkey,
U8  padding 
)

Sign a message digest using the private key.

Parameters
incommonly, an algorithm identifier followed by a message digest
lenis the length/size of parameter 'in'. This length must be exactly SharkSslRSAKey_size (key) when selecting SHARKSSL_RSA_NO_PADDING or a value between 1 and (SharkSslRSAKey_size (key) - 11) when selecting SHARKSSL_RSA_PKCS1_PADDING.
outthe signature is copied to this buffer. The size of this buffer must be no less than SharkSslRSAKey_size (key)
privkeyis the private key in SharkSslRSAKey format.
paddingis one of SHARKSSL_RSA_PKCS1_PADDING or SHARKSSL_RSA_NO_PADDING
Returns
the size of the signature, or -1 if any error occurs

◆ sharkssl_RSA_public_decrypt()

SHARKSSL_API sharkssl_RSA_RetVal sharkssl_RSA_public_decrypt ( U16  len,
U8 *  in,
U8 *  out,
SharkSslRSAKey  key,
U8  padding 
)

Bring back a message digest using the public key or private key.

The private key includes the public key an can for this reason be used for this operation.

Parameters
inthe RSA signature. Please notice that the RSA signature is modified by this function and must for this reason be in RAM.
lenis the length/size of parameter 'in'. This length must be exactly SharkSslRSAKey_size (key).
outthe message digest is copied to this buffer. The size of this buffer must be no less than SharkSslRSAKey_size (key)
keyis the public key in SharkSslRSAKey format.
paddingis one of SHARKSSL_RSA_PKCS1_PADDING or SHARKSSL_RSA_NO_PADDING
Returns
the size of the obtained message digest, or -1 if any error occurs

◆ sharkssl_RSA_public_encrypt()

SHARKSSL_API sharkssl_RSA_RetVal sharkssl_RSA_public_encrypt ( U16  len,
U8 *  in,
U8 *  out,
SharkSslRSAKey  key,
U8  padding 
)

Encrypt data using the public key or private key.

The private key includes the public key an can for this reason be used for encrypting the data.

Parameters
inthe plaintext
lenis the length/size of parameter 'in'. This length must be exactly SharkSslRSAKey_size (key) when selecting SHARKSSL_RSA_NO_PADDING or a value between 1 and (SharkSslRSAKey_size (key) - 11) when selecting SHARKSSL_RSA_PKCS1_PADDING.
outthe encrypted ciphertext is copied to this buffer. The size of this buffer must be no less than SharkSslRSAKey_size (key)
keyis the public key in SharkSslRSAKey format.
paddingis one of SHARKSSL_RSA_PKCS1_PADDING or SHARKSSL_RSA_NO_PADDING
Returns
the size of the encrypted ciphertext, or -1 if any error occurs