holyfather
06-05-2011, 19:04
Salve ho questo problema, ipotizziamo che sul server crei una struttura DH *a; e abbiamo quindi disponibili i vari parametri caratteristici di un oggetto di tipo DIFFIEHELMAN in particolare p e g.
Allora io voglio spedire dal server al client questi parametri per poter calcolare la chiave di sessione condivisa.
Dal server mando ad esempio p che è un BIGNUM così :
SSL_write(ssl,a->p,sizeof( BIGNUM ));
Sul client per ricevere faccio così:
char buffer[1024];
SSL_read(ssl,buffer,1024);
BIGNUM *p= (BIGNUM *) x;
Accade però che quando tento di creare sul client una struttura DH e di mettere p nella nuova struttura;
b=DH_new();
if(b == NULL)
{
printf("errore");
return 1;
}
b -> p = BN_dup(p);
Mi da segfault !! Ho appunto messo in un buffer il BIGNUM , così da poter stampare sia sul client che sul server i valori in esadecimale di p, ed effettivamente sia sul client che sul server ho la stessa stringa. Quindi il valore arriva al client corretto !
Che sbagli a inizializzare il BIGNUM ? non so proprio che fare T_T
Allora io voglio spedire dal server al client questi parametri per poter calcolare la chiave di sessione condivisa.
Dal server mando ad esempio p che è un BIGNUM così :
SSL_write(ssl,a->p,sizeof( BIGNUM ));
Sul client per ricevere faccio così:
char buffer[1024];
SSL_read(ssl,buffer,1024);
BIGNUM *p= (BIGNUM *) x;
Accade però che quando tento di creare sul client una struttura DH e di mettere p nella nuova struttura;
b=DH_new();
if(b == NULL)
{
printf("errore");
return 1;
}
b -> p = BN_dup(p);
Mi da segfault !! Ho appunto messo in un buffer il BIGNUM , così da poter stampare sia sul client che sul server i valori in esadecimale di p, ed effettivamente sia sul client che sul server ho la stessa stringa. Quindi il valore arriva al client corretto !
Che sbagli a inizializzare il BIGNUM ? non so proprio che fare T_T