[Progetto] programmazione distribuita C con l'uso di openssl
[Progetto] programmazione distribuita C con l'uso di openssl
salve, volevo chiedervi se qualcuno mi sa dire come mai questa semplicissima applicazione non va: ovvero in fase di decifratura non riottengo il msg in chiaro originale. Anche se il testo cifrato è lo stesso, la chiave pure e il contesto è coerente.
client:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define SA struct sockaddr
#define SRV_PORT 1024
#define SRV_ADDRESS "127.0.0.1"
int main(int argc, char *argv[])
{
int sk, i;
struct sockaddr_in srv_addr;
char *ciphertext, *plaintext;
char * k = "chia";
sk = socket(AF_INET, SOCK_STREAM, 0);
if(sk == -1)
{
printf("CLIENT: Errore nella creazione del socket.\n");
exit(1);
}
memset(&srv_addr, 0, sizeof(srv_addr));
srv_addr.sin_family = AF_INET;
srv_addr.sin_port = htons(SRV_PORT);
if(inet_pton(AF_INET, SRV_ADDRESS, &srv_addr.sin_addr) Connessione stabilita con il server %s sulla porta %d.
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define SA struct sockaddr
#define SRV_PORT 1024
#define BACKLOG_SIZE 5
void handler(int cl_sk)
{
char *msg = "Resisto a tutto fuorche' alle tentazioni";
char *plaintext, *ciphertext;
char * k = "chia";
int nc, /* numero di byte [de]crittati ad ogni passo*/
nctot, /* numero totale di byte crittati */
i, /* indice */
ct_len, /* lunghezza del buffer */
ct_ptr, msg_ptr, /* puntatore alla prima posizione libera del buffer */
msg_len, /* lunghezza del messaggio */
n; /* numero di byte che si cifra di volta in volta*/
/* allocazione del contesto */
EVP_CIPHER_CTX *ctx = (EVP_CIPHER_CTX *)malloc(sizeof(EVP_CIPHER_CTX));
/* inizializzazione del contesto */
EVP_CIPHER_CTX_init(ctx);
/* setup del contesto per la cifratura */
EVP_EncryptInit(ctx, EVP_des_ecb(), NULL, NULL);
EVP_EncryptInit(ctx, NULL, k, NULL);
/* allocazione del buffer per ciphertext */
msg_len = strlen(msg)+1;
ct_len = msg_len + EVP_CIPHER_CTX_block_size(ctx);
ciphertext = (char *)malloc(ct_len);
n = 10;
nc = 0;
nctot = 0;
ct_ptr = 0;
msg_ptr =0;
for (i = 0; i < msg_len / n; i++) {
EVP_EncryptUpdate(ctx, &ciphertext[ct_ptr], &nc, &msg[msg_ptr], n);
ct_ptr += nc;
msg_ptr += n;
nctot += nc;
}
if ( msg_len % n ) {
EVP_EncryptUpdate(ctx, &ciphertext[ct_ptr], &nc, &msg[msg_ptr], msg_len % n);
ct_ptr += nc;
msg_ptr += msg_len % n;
nctot += nc;
}
EVP_EncryptFinal(ctx, &ciphertext[ct_ptr], &nc);
nctot += nc;
//Invio del messaggio M2 al client
if(send(cl_sk, &ct_len, sizeof(ct_len), 0) < sizeof(ct_len))
{
exit(1);
}
if(send(cl_sk, ciphertext, ct_len, 0) < ct_len)
{
exit(1);
}
printf("plaintext:\t%s\n", msg);
printf("ciphertext:\t%s\n", ciphertext);
//Decifratura del ciphertext nel plaintext
EVP_CIPHER_CTX_init(ctx);
nc = 0; ct_ptr = 0;
plaintext = (char *)malloc(ct_len);
bzero(plaintext, ct_len);
EVP_DecryptInit(ctx, EVP_des_ecb(), k, NULL);
EVP_DecryptUpdate(ctx, &plaintext[ct_ptr], &nc, &ciphertext[ct_ptr], ct_len);
EVP_DecryptFinal(ctx, &plaintext[ct_ptr], &nc);
printf("Testo:\t%s\nct_len = %i\nchiave=%s\n", plaintext, ct_len, k);
}
int main(int argc, char *argv[])
{
int sk, cl_sk, len, pid;
struct sockaddr_in my_addr, cl_addr;
char cl_paddr[INET_ADDRSTRLEN];
uint16_t cl_port;
sk = socket(AF_INET, SOCK_STREAM, 0);
if(sk == -1)
{
printf("SERVER: Impossibile creare un nuovo socket.\n");
exit(1);
}
memset(&my_addr, 0, sizeof(my_addr));
my_addr.sin_family = AF_INET;
my_addr.sin_addr.s_addr = htonl(INADDR_ANY);
my_addr.sin_port = htons(SRV_PORT);
if(bind(sk, (SA *) &my_addr, sizeof(my_addr)) == -1)
{
printf("SERVER: Errore nella bind.\n");
exit(1);
}
if(listen(sk, BACKLOG_SIZE) == -1)
{
printf("SERVER: Impossibile creare un coda di backlog lunga %d\n", BACKLOG_SIZE);
exit(1);
}
for(;;)
{
//Ciclo con cui il server accetta le richieste dei client
len = sizeof(cl_addr);
cl_sk = accept(sk, (SA *) &cl_addr, &len);
if(cl_sk == -1)
{
printf("SERVER: Errore nll'accept\n");
exit(1);
}
//per ogni nuova richiesta il server crea un nuovo processo per servirla
pid = fork();
if(pid == -1)
{
printf("SERVER: Errore nella creazione di un nuovo processo\n");
close(cl_sk);
close(sk);
exit(1);
}
else if(pid != 0) //Codice processo padre
{
close(cl_sk);
continue;
}
else //Codice processo figlio
{
inet_ntop(AF_INET, &cl_addr.sin_addr, cl_paddr, sizeof(cl_paddr));
cl_port = ntohs(cl_addr.sin_port);
printf("SERVER: Connessione stabilita con il client %s sulla porta %u\n", cl_paddr, cl_port);
close(sk);
//Chiamata al gestore di richieste
handler(cl_sk);
exit(0);
}
}
close(sk);
exit(0);
}
grazie per l'eventuale aiuto...
client:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define SA struct sockaddr
#define SRV_PORT 1024
#define SRV_ADDRESS "127.0.0.1"
int main(int argc, char *argv[])
{
int sk, i;
struct sockaddr_in srv_addr;
char *ciphertext, *plaintext;
char * k = "chia";
sk = socket(AF_INET, SOCK_STREAM, 0);
if(sk == -1)
{
printf("CLIENT: Errore nella creazione del socket.\n");
exit(1);
}
memset(&srv_addr, 0, sizeof(srv_addr));
srv_addr.sin_family = AF_INET;
srv_addr.sin_port = htons(SRV_PORT);
if(inet_pton(AF_INET, SRV_ADDRESS, &srv_addr.sin_addr) Connessione stabilita con il server %s sulla porta %d.
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define SA struct sockaddr
#define SRV_PORT 1024
#define BACKLOG_SIZE 5
void handler(int cl_sk)
{
char *msg = "Resisto a tutto fuorche' alle tentazioni";
char *plaintext, *ciphertext;
char * k = "chia";
int nc, /* numero di byte [de]crittati ad ogni passo*/
nctot, /* numero totale di byte crittati */
i, /* indice */
ct_len, /* lunghezza del buffer */
ct_ptr, msg_ptr, /* puntatore alla prima posizione libera del buffer */
msg_len, /* lunghezza del messaggio */
n; /* numero di byte che si cifra di volta in volta*/
/* allocazione del contesto */
EVP_CIPHER_CTX *ctx = (EVP_CIPHER_CTX *)malloc(sizeof(EVP_CIPHER_CTX));
/* inizializzazione del contesto */
EVP_CIPHER_CTX_init(ctx);
/* setup del contesto per la cifratura */
EVP_EncryptInit(ctx, EVP_des_ecb(), NULL, NULL);
EVP_EncryptInit(ctx, NULL, k, NULL);
/* allocazione del buffer per ciphertext */
msg_len = strlen(msg)+1;
ct_len = msg_len + EVP_CIPHER_CTX_block_size(ctx);
ciphertext = (char *)malloc(ct_len);
n = 10;
nc = 0;
nctot = 0;
ct_ptr = 0;
msg_ptr =0;
for (i = 0; i < msg_len / n; i++) {
EVP_EncryptUpdate(ctx, &ciphertext[ct_ptr], &nc, &msg[msg_ptr], n);
ct_ptr += nc;
msg_ptr += n;
nctot += nc;
}
if ( msg_len % n ) {
EVP_EncryptUpdate(ctx, &ciphertext[ct_ptr], &nc, &msg[msg_ptr], msg_len % n);
ct_ptr += nc;
msg_ptr += msg_len % n;
nctot += nc;
}
EVP_EncryptFinal(ctx, &ciphertext[ct_ptr], &nc);
nctot += nc;
//Invio del messaggio M2 al client
if(send(cl_sk, &ct_len, sizeof(ct_len), 0) < sizeof(ct_len))
{
exit(1);
}
if(send(cl_sk, ciphertext, ct_len, 0) < ct_len)
{
exit(1);
}
printf("plaintext:\t%s\n", msg);
printf("ciphertext:\t%s\n", ciphertext);
//Decifratura del ciphertext nel plaintext
EVP_CIPHER_CTX_init(ctx);
nc = 0; ct_ptr = 0;
plaintext = (char *)malloc(ct_len);
bzero(plaintext, ct_len);
EVP_DecryptInit(ctx, EVP_des_ecb(), k, NULL);
EVP_DecryptUpdate(ctx, &plaintext[ct_ptr], &nc, &ciphertext[ct_ptr], ct_len);
EVP_DecryptFinal(ctx, &plaintext[ct_ptr], &nc);
printf("Testo:\t%s\nct_len = %i\nchiave=%s\n", plaintext, ct_len, k);
}
int main(int argc, char *argv[])
{
int sk, cl_sk, len, pid;
struct sockaddr_in my_addr, cl_addr;
char cl_paddr[INET_ADDRSTRLEN];
uint16_t cl_port;
sk = socket(AF_INET, SOCK_STREAM, 0);
if(sk == -1)
{
printf("SERVER: Impossibile creare un nuovo socket.\n");
exit(1);
}
memset(&my_addr, 0, sizeof(my_addr));
my_addr.sin_family = AF_INET;
my_addr.sin_addr.s_addr = htonl(INADDR_ANY);
my_addr.sin_port = htons(SRV_PORT);
if(bind(sk, (SA *) &my_addr, sizeof(my_addr)) == -1)
{
printf("SERVER: Errore nella bind.\n");
exit(1);
}
if(listen(sk, BACKLOG_SIZE) == -1)
{
printf("SERVER: Impossibile creare un coda di backlog lunga %d\n", BACKLOG_SIZE);
exit(1);
}
for(;;)
{
//Ciclo con cui il server accetta le richieste dei client
len = sizeof(cl_addr);
cl_sk = accept(sk, (SA *) &cl_addr, &len);
if(cl_sk == -1)
{
printf("SERVER: Errore nll'accept\n");
exit(1);
}
//per ogni nuova richiesta il server crea un nuovo processo per servirla
pid = fork();
if(pid == -1)
{
printf("SERVER: Errore nella creazione di un nuovo processo\n");
close(cl_sk);
close(sk);
exit(1);
}
else if(pid != 0) //Codice processo padre
{
close(cl_sk);
continue;
}
else //Codice processo figlio
{
inet_ntop(AF_INET, &cl_addr.sin_addr, cl_paddr, sizeof(cl_paddr));
cl_port = ntohs(cl_addr.sin_port);
printf("SERVER: Connessione stabilita con il client %s sulla porta %u\n", cl_paddr, cl_port);
close(sk);
//Chiamata al gestore di richieste
handler(cl_sk);
exit(0);
}
}
close(sk);
exit(0);
}
grazie per l'eventuale aiuto...
- difesaparcosempione
- Rampante Reduce

- Messaggi: 6031
- Iscrizione: giovedì 27 luglio 2006, 19:06
- Località: Torino
- Contatti:
Re: [Progetto] programmazione distribuita C con l'uso di openssl
per favore potresti postare il codice C con gli opportuni tag ?
Cosi semplichi la vita a chi potrebbe aiutarti !
ciao
(z)
Cosi semplichi la vita a chi potrebbe aiutarti !
ciao
(z)
Re: [Progetto] programmazione distribuita C con l'uso di openssl
Scusate, ma non sono per niente pratica di forum...spero che così vada meglio
CLIENT:
SERVER:
CLIENT:
Codice: Seleziona tutto
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <openssl/evp.h>
#include <openssl/rand.h>
#define SA struct sockaddr
#define SRV_PORT 1024
#define SRV_ADDRESS "127.0.0.1"
int main(int argc, char *argv[])
{
int sk, i;
struct sockaddr_in srv_addr;
char *ciphertext, *plaintext;
char * k = "chia";
sk = socket(AF_INET, SOCK_STREAM, 0);
if(sk == -1)
{
printf("CLIENT: Errore nella creazione del socket.\n");
exit(1);
}
memset(&srv_addr, 0, sizeof(srv_addr));
srv_addr.sin_family = AF_INET;
srv_addr.sin_port = htons(SRV_PORT);
if(inet_pton(AF_INET, SRV_ADDRESS, &srv_addr.sin_addr) <=0)
{
printf("CLIENT: Indirizzo del server errato\n");
exit(1);
}
//Stabilimento della connessione
if(connect(sk, (SA *) &srv_addr, sizeof(srv_addr)) == -1)
{
printf("CLIENT: Impossibile connettersi al server\n");
exit(1);
}
printf("\n---->Connessione stabilita con il server %s sulla porta %d.<----\n", SRV_ADDRESS, SRV_PORT);
int ct_len;
//Ricezione di M2 dal server
if(recv(sk, &ct_len, sizeof(ct_len), MSG_WAITALL) != sizeof(ct_len))
{
printf("CLIENT: Errore nella ricezione della lunghezza del messaggio M2 dal server\n");
exit(1);
}
ciphertext = (char *)malloc(ct_len);
bzero(ciphertext, ct_len);
if(recv(sk, ciphertext, ct_len, MSG_WAITALL) != ct_len)
{
printf("CLIENT: Errore nella ricezione del messaggio M2 dal server\n");
exit(1);
}
printf("ciphertext:\t%s\n", ciphertext);
/* allocazione del contesto */
EVP_CIPHER_CTX *ctx = (EVP_CIPHER_CTX *)malloc(sizeof(EVP_CIPHER_CTX));
/* inizializzazione del contesto */
EVP_CIPHER_CTX_init(ctx);
/* setup del contesto per la cifratura */
EVP_DecryptInit(ctx, EVP_des_ecb(), NULL, NULL);
/* Allocazione buffer */
plaintext = (char *)malloc(ct_len);
bzero(plaintext, ct_len);
/* Inizializzazione contesto decifratura */
EVP_DecryptInit(ctx, EVP_des_ecb(), k, NULL);
/*decifratura */
int nc = 0;
int ct_ptr = 0;
EVP_DecryptUpdate(ctx, &plaintext[ct_ptr], &nc, &ciphertext[ct_ptr], ct_len);
EVP_DecryptFinal(ctx, &plaintext[ct_ptr], &nc);
printf("Testo:\t%s\nct_len = %i\nchiave=%s\n", plaintext, ct_len, k);
exit(0);
}SERVER:
Codice: Seleziona tutto
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <openssl/evp.h>
#include <openssl/rand.h>
#define SA struct sockaddr
#define SRV_PORT 1024
#define BACKLOG_SIZE 5
void handler(int cl_sk)
{
char *msg = "Resisto a tutto fuorche' alle tentazioni";
char *plaintext, *ciphertext;
char * k = "chia";
int nc, /* numero di byte [de]crittati ad ogni passo*/
nctot, /* numero totale di byte crittati */
i, /* indice */
ct_len, /* lunghezza del buffer */
ct_ptr, msg_ptr, /* puntatore alla prima posizione libera del buffer */
msg_len, /* lunghezza del messaggio */
n; /* numero di byte che si cifra di volta in volta*/
/* allocazione del contesto */
EVP_CIPHER_CTX *ctx = (EVP_CIPHER_CTX *)malloc(sizeof(EVP_CIPHER_CTX));
/* inizializzazione del contesto */
EVP_CIPHER_CTX_init(ctx);
/* setup del contesto per la cifratura */
EVP_EncryptInit(ctx, EVP_des_ecb(), NULL, NULL);
EVP_EncryptInit(ctx, NULL, k, NULL);
/* allocazione del buffer per ciphertext */
msg_len = strlen(msg)+1;
ct_len = msg_len + EVP_CIPHER_CTX_block_size(ctx);
ciphertext = (char *)malloc(ct_len);
n = 10;
nc = 0;
nctot = 0;
ct_ptr = 0;
msg_ptr =0;
for (i = 0; i < msg_len / n; i++) {
EVP_EncryptUpdate(ctx, &ciphertext[ct_ptr], &nc, &msg[msg_ptr], n);
ct_ptr += nc;
msg_ptr += n;
nctot += nc;
}
if ( msg_len % n ) {
EVP_EncryptUpdate(ctx, &ciphertext[ct_ptr], &nc, &msg[msg_ptr], msg_len % n);
ct_ptr += nc;
msg_ptr += msg_len % n;
nctot += nc;
}
EVP_EncryptFinal(ctx, &ciphertext[ct_ptr], &nc);
nctot += nc;
//Invio del messaggio M2 al client
if(send(cl_sk, &ct_len, sizeof(ct_len), 0) < sizeof(ct_len))
{
exit(1);
}
if(send(cl_sk, ciphertext, ct_len, 0) < ct_len)
{
exit(1);
}
printf("plaintext:\t%s\n", msg);
printf("ciphertext:\t%s\n", ciphertext);
//Decifratura del ciphertext nel plaintext
EVP_CIPHER_CTX_init(ctx);
nc = 0; ct_ptr = 0;
plaintext = (char *)malloc(ct_len);
bzero(plaintext, ct_len);
EVP_DecryptInit(ctx, EVP_des_ecb(), k, NULL);
EVP_DecryptUpdate(ctx, &plaintext[ct_ptr], &nc, &ciphertext[ct_ptr], ct_len);
EVP_DecryptFinal(ctx, &plaintext[ct_ptr], &nc);
printf("Testo:\t%s\nct_len = %i\nchiave=%s\n", plaintext, ct_len, k);
}
int main(int argc, char *argv[])
{
int sk, cl_sk, len, pid;
struct sockaddr_in my_addr, cl_addr;
char cl_paddr[INET_ADDRSTRLEN];
uint16_t cl_port;
sk = socket(AF_INET, SOCK_STREAM, 0);
if(sk == -1)
{
printf("SERVER: Impossibile creare un nuovo socket.\n");
exit(1);
}
memset(&my_addr, 0, sizeof(my_addr));
my_addr.sin_family = AF_INET;
my_addr.sin_addr.s_addr = htonl(INADDR_ANY);
my_addr.sin_port = htons(SRV_PORT);
if(bind(sk, (SA *) &my_addr, sizeof(my_addr)) == -1)
{
printf("SERVER: Errore nella bind.\n");
exit(1);
}
if(listen(sk, BACKLOG_SIZE) == -1)
{
printf("SERVER: Impossibile creare un coda di backlog lunga %d\n", BACKLOG_SIZE);
exit(1);
}
for(;;)
{
//Ciclo con cui il server accetta le richieste dei client
len = sizeof(cl_addr);
cl_sk = accept(sk, (SA *) &cl_addr, &len);
if(cl_sk == -1)
{
printf("SERVER: Errore nll'accept\n");
exit(1);
}
//per ogni nuova richiesta il server crea un nuovo processo per servirla
pid = fork();
if(pid == -1)
{
printf("SERVER: Errore nella creazione di un nuovo processo\n");
close(cl_sk);
close(sk);
exit(1);
}
else if(pid != 0) //Codice processo padre
{
close(cl_sk);
continue;
}
else //Codice processo figlio
{
inet_ntop(AF_INET, &cl_addr.sin_addr, cl_paddr, sizeof(cl_paddr));
cl_port = ntohs(cl_addr.sin_port);
printf("SERVER: Connessione stabilita con il client %s sulla porta %u\n", cl_paddr, cl_port);
close(sk);
//Chiamata al gestore di richieste
handler(cl_sk);
exit(0);
}
}
close(sk);
exit(0);
}- difesaparcosempione
- Rampante Reduce

- Messaggi: 6031
- Iscrizione: giovedì 27 luglio 2006, 19:06
- Località: Torino
- Contatti:
Re: [Progetto] programmazione distribuita C con l'uso di openssl
per la compilazione , che librerie serve aver installato. Visto che ci siamo mi diresti come compili i 2 prg ..
ciao

ciao
Re: [Progetto] programmazione distribuita C con l'uso di openssl
certo...
devi aver installato openssl..
per quanto riguarda la compilazione:
[supponendo come nome del file server.c] digiti dopo di che fai partire l'eseguibile con
stessa cosa per il client, cambiando ovviamente i nomi 
devi aver installato openssl..
per quanto riguarda la compilazione:
[supponendo come nome del file server.c] digiti
Codice: Seleziona tutto
cc -lssl server.c -o sCodice: Seleziona tutto
./s- difesaparcosempione
- Rampante Reduce

- Messaggi: 6031
- Iscrizione: giovedì 27 luglio 2006, 19:06
- Località: Torino
- Contatti:
Re: [Progetto] programmazione distribuita C con l'uso di openssl
Quindi basta avere ssl e non diavolerie tipo ssl-dev ...
appena posso provo a generare i 2 prg.
ciao

appena posso provo a generare i 2 prg.
ciao
Re: [Progetto] programmazione distribuita C con l'uso di openssl
eh si, scarichi il sorgente e compili...ci vuole poco!! grazie, sono in paranoia che devo completare un progetto per venerdi mattina -.-
- difesaparcosempione
- Rampante Reduce

- Messaggi: 6031
- Iscrizione: giovedì 27 luglio 2006, 19:06
- Località: Torino
- Contatti:
Re: [Progetto] programmazione distribuita C con l'uso di openssl
colpix e affondato ...
e probabilmente come pensavo ( male ) io.
Per generare i programmi mi serve il kit di developping di ssl
Output cc
Quindi la cosa si complica ( anche perchè dovrei installare ed ho una 8.04 )
vediamo cosa si potrà fare.
ciao

e probabilmente come pensavo ( male ) io.
Per generare i programmi mi serve il kit di developping di ssl
Output cc
ho messo anche l'output di dpkg per dimostrarti che openssl è da me installato.user@ubux[79 .25]:~/todelete/prg-openssliib$ cc -lssl srv.c -o srv
srv.c:9:25: error: openssl/evp.h: No such file or directory
srv.c:10:26: error: openssl/rand.h: No such file or directory
srv.c: In function ‘handler’:
srv.c:31: error: ‘EVP_CIPHER_CTX’ undeclared (first use in this function)
srv.c:31: error: (Each undeclared identifier is reported only once
srv.c:31: error: for each function it appears in.)
srv.c:31: error: ‘ctx’ undeclared (first use in this function)
srv.c:31: error: expected expression before ‘)’ token
user@ubux[79 .25]:~/todelete/prg-openssliib$ cc -lssl cli.c -o cli
cli.c:9:25: error: openssl/evp.h: No such file or directory
cli.c:10:26: error: openssl/rand.h: No such file or directory
cli.c: In function ‘main’:
cli.c:64: error: ‘EVP_CIPHER_CTX’ undeclared (first use in this function)
cli.c:64: error: (Each undeclared identifier is reported only once
cli.c:64: error: for each function it appears in.)
cli.c:64: error: ‘ctx’ undeclared (first use in this function)
cli.c:64: error: expected expression before ‘)’ token
user@ubux[79 .25]:~/todelete/prg-openssliib$ dpkg --list | grep ssl
ii libflac8 1.2.1-1ubuntu2 Free Lossless Audio Codec - runtime C librar
ii libssl0.9.8 0.9.8g-4ubuntu3.1 SSL shared libraries
ii libwavpack1 4.41.0-1 an audio codec (lossy and lossless) - librar
ii openssl 0.9.8g-4ubuntu3 Secure Socket Layer (SSL) binary and related
ii ssl-cert 1.0.14-0ubuntu2 Simple debconf wrapper for openssl
Quindi la cosa si complica ( anche perchè dovrei installare ed ho una 8.04 )
vediamo cosa si potrà fare.
ciao
- difesaparcosempione
- Rampante Reduce

- Messaggi: 6031
- Iscrizione: giovedì 27 luglio 2006, 19:06
- Località: Torino
- Contatti:
Re: [Progetto] programmazione distribuita C con l'uso di openssl
potresti postare l'output di questo comando dato sul tuo sistema di sviluppo:
dpkg --list | grep ssl
dovresti avere "ii" un lib-ssl.dev ?
ciao

dpkg --list | grep ssl
dovresti avere "ii" un lib-ssl.dev ?
ciao
Re: [Progetto] programmazione distribuita C con l'uso di openssl
Codice: Seleziona tutto
ii erlang-ssl 1:13.b.3-dfsg-2ubuntu3 Erlang/OTP implementation of SSL
ii libflac8 1.2.1-3 Free Lossless Audio Codec - runtime C library
ii libssl-dev 0.9.8o-1ubuntu4.4 SSL development libraries, header files and documentation
ii libssl0.9.8 0.9.8o-1ubuntu4.4 SSL shared libraries
ii libwavpack1 4.60.1-1 an audio codec (lossy and lossless) - library
ii openssl 0.9.8o-1ubuntu4.4 Secure Socket Layer (SSL) binary and related cryptographic tools
ii python-openssl 0.10-1 Python wrapper around the OpenSSL library
ii ssl-cert 1.0.26 simple debconf wrapper for OpenSSL
- difesaparcosempione
- Rampante Reduce

- Messaggi: 6031
- Iscrizione: giovedì 27 luglio 2006, 19:06
- Località: Torino
- Contatti:
Re: [Progetto] programmazione distribuita C con l'uso di openssl
Adesso ho un problema per cui non riesco ad installare la libreria di sviluppo.
Appena risolvo proverò a generare i 2 prg. Posso utilizzare la stessa macchina per i tests?
ciao

Appena risolvo proverò a generare i 2 prg. Posso utilizzare la stessa macchina per i tests?
ciao
Re: [Progetto] programmazione distribuita C con l'uso di openssl
certo...basta che usi due "terminali" diversi

- difesaparcosempione
- Rampante Reduce

- Messaggi: 6031
- Iscrizione: giovedì 27 luglio 2006, 19:06
- Località: Torino
- Contatti:
Re: [Progetto] programmazione distribuita C con l'uso di openssl
Allora i client comunicano correttamente con il server, la parte di comunicazione regge?
Sembra il discorso di criptaggio e decriptaggio che non funziona ?
Ti faccio queste domande perchè non posso ancora compilare i tuoi "semplici" programmi.
Ho visto che hai usato delle printf per provare la bontà del programma, potresti dirmi il senso di quest'ultime e dove c'è stato un errore ....
Tieni conto che non avendo il -dev non ho i prototipi delle funzioni EVP() e quindi per adesso do scontato che siano state usate ok
ciao
Sembra il discorso di criptaggio e decriptaggio che non funziona ?
Ti faccio queste domande perchè non posso ancora compilare i tuoi "semplici" programmi.
Ho visto che hai usato delle printf per provare la bontà del programma, potresti dirmi il senso di quest'ultime e dove c'è stato un errore ....
Tieni conto che non avendo il -dev non ho i prototipi delle funzioni EVP() e quindi per adesso do scontato che siano state usate ok
ciao
- difesaparcosempione
- Rampante Reduce

- Messaggi: 6031
- Iscrizione: giovedì 27 luglio 2006, 19:06
- Località: Torino
- Contatti:
Re: [Progetto] programmazione distribuita C con l'uso di openssl
intanto è corretto attivare due init cosi ( lato server )The functions EVP_EncryptInit(), EVP_EncryptFinal(), EVP_DecryptInit(), EVP_CipherInit() and EVP_CipherFinal() are obsolete but are retained for compatibility with existing code. New code should use EVP_EncryptInit_ex(), EVP_EncryptFinal_ex(), EVP_DecryptInit_ex(), EVP_DecryptFinal_ex(), EVP_CipherInit_ex() and EVP_CipherFinal_ex() because they can reuse an existing context without allocating and freeing it up on each call.
/* setup del contesto per la cifratura */
EVP_EncryptInit(ctx, EVP_des_ecb(), NULL, NULL);
EVP_EncryptInit(ctx, NULL, k, NULL);
mentre su client
/* setup del contesto per la cifratura */
EVP_DecryptInit(ctx, EVP_des_ecb(), NULL, NULL);
/* Allocazione buffer */
plaintext = (char *)malloc(ct_len);
bzero(plaintext, ct_len);
/* Inizializzazione contesto decifratura */
EVP_DecryptInit(ctx, EVP_des_ecb(), k, NULL);
Ultima modifica di difesaparcosempione il martedì 21 giugno 2011, 19:58, modificato 1 volta in totale.
- difesaparcosempione
- Rampante Reduce

- Messaggi: 6031
- Iscrizione: giovedì 27 luglio 2006, 19:06
- Località: Torino
- Contatti:
Re: [Progetto] programmazione distribuita C con l'uso di openssl
abituati a testare i return code delle funzioni ...
ciao
ciao
Re: [Progetto] programmazione distribuita C con l'uso di openssl
ho rifatto tutto ex novo e ho risolto....Di certo c'era qualcosa di settato male...scusami se ti ho fatto perdere tempo! ciao!!!
- difesaparcosempione
- Rampante Reduce

- Messaggi: 6031
- Iscrizione: giovedì 27 luglio 2006, 19:06
- Località: Torino
- Contatti:
Re: [Progetto] programmazione distribuita C con l'uso di openssl
figurati ..
ciao
potresti postare i 2 nuovi prg, sarei interessato a darci un'occhiata.
ciao
potresti postare i 2 nuovi prg, sarei interessato a darci un'occhiata.
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti