2019-02-03 16:26:45 +00:00
|
|
|
#ifndef __RSA_H__
|
|
|
|
#define __RSA_H__
|
|
|
|
|
|
|
|
#include <stdint.h>
|
|
|
|
|
|
|
|
// This is the header file for the library librsaencrypt.a
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct public_key_class{
|
|
|
|
long long modulus;
|
|
|
|
long long exponent;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct private_key_class{
|
|
|
|
long long modulus;
|
|
|
|
long long exponent;
|
|
|
|
};
|
|
|
|
|
|
|
|
// This function generates public and private keys, then stores them in the structures you
|
|
|
|
// provide pointers to. The 3rd argument should be the text PRIME_SOURCE_FILE to have it use
|
|
|
|
// the location specified above in this header.
|
2019-02-04 08:31:54 +00:00
|
|
|
void rsa_gen_keys(struct public_key_class *pub, struct private_key_class *priv, string PRIME_SOURCE_FILE);
|
2019-02-03 16:26:45 +00:00
|
|
|
|
|
|
|
// This function will encrypt the data pointed to by message. It returns a pointer to a heap
|
|
|
|
// array containing the encrypted data, or NULL upon failure. This pointer should be freed when
|
|
|
|
// you are finished. The encrypted data will be 8 times as large as the original data.
|
2019-02-11 11:11:04 +00:00
|
|
|
uint64_t *rsa_encrypt(const unsigned char *message, const unsigned long message_size, const struct public_key_class *pub);
|
2019-02-03 16:26:45 +00:00
|
|
|
|
|
|
|
// This function will decrypt the data pointed to by message. It returns a pointer to a heap
|
|
|
|
// array containing the decrypted data, or NULL upon failure. This pointer should be freed when
|
|
|
|
// you are finished. The variable message_size is the size in bytes of the encrypted message.
|
|
|
|
// The decrypted data will be 1/8th the size of the encrypted data.
|
2019-02-11 11:11:04 +00:00
|
|
|
unsigned char *rsa_decrypt(const uint64_t *message, const unsigned long message_size, const struct private_key_class *pub);
|
2019-02-03 16:26:45 +00:00
|
|
|
|
|
|
|
#endif
|