13 nov 12.30 pm

Dependencies:   mbed-rtos mbed wolfSSL

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 
00003 #include <iostream>
00004 #include <string.h>
00005 #include <wolfssl/openssl/rsa.h>
00006 #include <wolfssl/openssl/pem.h>
00007 #include <wolfssl/openssl/err.h>
00008 
00009 #include "openssl_rsa.h"
00010 
00011 
00012 using namespace std;
00013 
00014 
00015 int main() {
00016     
00017     LOG("OpenSSL_RSA has been started.");
00018     
00019     RSA *private_key;
00020     RSA *public_key;
00021 
00022     char message[KEY_LENGTH / 8] = "Batuhan AVLAYAN - OpenSSL_RSA demo";
00023     char *encrypt = NULL;
00024     char *decrypt = NULL;
00025 
00026     char private_key_pem[12] = "private_key";
00027     char public_key_pem[11]  = "public_key";
00028 
00029     LOG(KEY_LENGTH);
00030     LOG(PUBLIC_EXPONENT);
00031     
00032     RSA *keypair = RSA_generate_key(KEY_LENGTH, PUBLIC_EXPONENT, NULL, NULL);
00033     LOG("Generate key has been created.");
00034 
00035     private_key = create_RSA(keypair, PRIVATE_KEY_PEM, private_key_pem);
00036     LOG("Private key pem file has been created.");
00037 
00038     public_key  = create_RSA(keypair, PUBLIC_KEY_PEM, public_key_pem);
00039     LOG("Public key pem file has been created.");;
00040 
00041     encrypt = (char*)malloc(RSA_size(public_key));
00042     int encrypt_length = public_encrypt(strlen(message) + 1, (unsigned char*)message, (unsigned char*)encrypt, public_key, RSA_PKCS1_OAEP_PADDING);
00043     if(encrypt_length == -1) {
00044         LOG("An error occurred in public_encrypt() method");
00045     }
00046     LOG("Data has been encrypted.");
00047 
00048     create_encrypted_file(encrypt, public_key);
00049     LOG("Encrypted file has been created.");
00050 
00051     decrypt = (char *)malloc(encrypt_length);
00052     int decrypt_length = private_decrypt(encrypt_length, (unsigned char*)encrypt, (unsigned char*)decrypt, private_key, RSA_PKCS1_OAEP_PADDING);
00053     if(decrypt_length == -1) {
00054         LOG("An error occurred in private_decrypt() method");
00055     }
00056     LOG("Data has been decrypted.");
00057 
00058     FILE *decrypted_file = fopen("decrypted_file.txt", "w");
00059     fwrite(decrypt, sizeof(*decrypt), decrypt_length - 1, decrypted_file);
00060     fclose(decrypted_file);
00061     LOG("Decrypted file has been created.");
00062     
00063     RSA_free(keypair);
00064     free(private_key);
00065     free(public_key);
00066     free(encrypt);
00067     free(decrypt);
00068     LOG("OpenSSL_RSA has been finished.");
00069 
00070     return 0;
00071 }