Nagashi890
04-09-2014, 18:30
Ciao a tutti..
devo usare le librerie OpenSSL in C per proteggere la comunicazione tra un client e un server
utilizzando l'algoritmo RSA, ma il programma non funziona e non so più dove sbattere la testa..
questo è il codice del client che cripta una stringa con la funzione encryptString()
#include <openssl/rsa.h>
#include <openssl/rand.h>
#include <openssl/pem.h>
#include <openssl/evp.h>
int encryptString(char* string, char* dataout, char* filename, RSA* rsa) {
int size;
char file_pem_pub[36];
strcpy(file_pem_pub, filename);
FILE* fp;
fp = fopen(file_pem_pub, "r"); //file che contiene la chiave creata in precedenza
rsa = PEM_read_RSAPublicKey(fp, &rsa, NULL, NULL);
RSA_public_encrypt(strlen(string), string, dataout, rsa, RSA_PKCS1_PADDING);
size = strlen(dataout);
fclose(fp);
return size;
}
int main() {
int rsa_size;
int ret;
char* dataout; //buffer che deve contenere il messaggio criptato
//char* message = <stringa da criptare>
OpenSSL_add_all_algorithms();
RSA* rsa = RSA_new();
rsa_size = RSA_size(rsa);
dataout = malloc(rsa_size);
memset(dataout, 0, sizeof(dataout));
ret = encryptString(message, dataout, "spub.pem", rsa);
RSA_free(rsa);
}
Il programma dà errore di segmentazione quando esegue la funzione RSA_size()
non so più che correzioni fare.. spero che qualcuno mi possa aiutare.
Grazie!
devo usare le librerie OpenSSL in C per proteggere la comunicazione tra un client e un server
utilizzando l'algoritmo RSA, ma il programma non funziona e non so più dove sbattere la testa..
questo è il codice del client che cripta una stringa con la funzione encryptString()
#include <openssl/rsa.h>
#include <openssl/rand.h>
#include <openssl/pem.h>
#include <openssl/evp.h>
int encryptString(char* string, char* dataout, char* filename, RSA* rsa) {
int size;
char file_pem_pub[36];
strcpy(file_pem_pub, filename);
FILE* fp;
fp = fopen(file_pem_pub, "r"); //file che contiene la chiave creata in precedenza
rsa = PEM_read_RSAPublicKey(fp, &rsa, NULL, NULL);
RSA_public_encrypt(strlen(string), string, dataout, rsa, RSA_PKCS1_PADDING);
size = strlen(dataout);
fclose(fp);
return size;
}
int main() {
int rsa_size;
int ret;
char* dataout; //buffer che deve contenere il messaggio criptato
//char* message = <stringa da criptare>
OpenSSL_add_all_algorithms();
RSA* rsa = RSA_new();
rsa_size = RSA_size(rsa);
dataout = malloc(rsa_size);
memset(dataout, 0, sizeof(dataout));
ret = encryptString(message, dataout, "spub.pem", rsa);
RSA_free(rsa);
}
Il programma dà errore di segmentazione quando esegue la funzione RSA_size()
non so più che correzioni fare.. spero che qualcuno mi possa aiutare.
Grazie!