blob: 3bec69f40f3582c67e936c1f4c3b847f83556afc [file] [log] [blame]
#ifndef RSA_SUPPORT_H
#define RSA_SUPPORT_H
#include "amcl.h"
namespace amcl {
#define MAX_RSA_BYTES 512 // Maximum of 4096
/** @brief RSA Key Pair Generator
*
@param R is a pointer to a cryptographically secure random number generator
@param e the encryption exponent
@param PRIV the output RSA private key
@param PUB the output RSA public key
@param P Input prime number. Used when R is equal to NULL for testing
@param Q Inpuy prime number. Used when R is equal to NULL for testing
*/
/** @brief PKCS V1.5 padding of a message prior to RSA signature
*
@param h is the hash type
@param M is the input message
@param W is the output encoding, ready for RSA signature
@return 1 if OK, else 0
*/
extern int PKCS15(int h,octet *M,octet *W);
/** @brief OAEP padding of a message prior to RSA encryption
*
@param h is the hash type
@param M is the input message
@param R is a pointer to a cryptographically secure random number generator
@param P are input encoding parameter string (could be NULL)
@param F is the output encoding, ready for RSA encryption
@return 1 if OK, else 0
*/
extern int OAEP_ENCODE(int h,octet *M,csprng *R,octet *P,octet *F);
/** @brief OAEP unpadding of a message after RSA decryption
*
Unpadding is done in-place
@param h is the hash type
@param P are input encoding parameter string (could be NULL)
@param F is input padded message, unpadded on output
@return 1 if OK, else 0
*/
extern int OAEP_DECODE(int h,octet *P,octet *F);
}
#endif