Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Da C a Vo

9 views
Skip to first unread message

Infoservice

unread,
May 26, 2008, 12:57:25 PM5/26/08
to
Qualche anima buona che conosce il c meglio di me, puň tradurmi il codice
seguente in codice Vo? Grazie!

#define FORMAT_ASN1 1
#define FORMAT_PEM 3

void *load_certificate(char *file, int format) {
void *x509 = NULL;
void *certbio;

certbio = BIO_new(BIO_s_file())) == NULL);

BIO_read_filename(certbio, file);

if (format == FORMAT_ASN1)
x509 = d2i_X509_bio(certbio, NULL);
else if (format == FORMAT_PEM)
x509 = PEM_read_bio_X509_AUX(certbio, NULL, NULL, NULL);
else
throw "Formato del certificato sconosciuto.";

BIO_free(certbio);
return(x509);
}


int main() {

char *certfile = "miocertificato.cer";
char *codicefiscale = "AAAZZZ99X99A000Z";

// Serve per verifica la versione della libreria
cout << "Versione di OpenSSL: " << SSLeay_version(SSLEAY_VERSION) << endl;

void *x509;
void *pkey;
void *rsakey;
void *crypted;

ERR_load_CRYPTO_strings();
OpenSSL_add_all_algorithms();

x509 = load_certificate(certfile, FORMAT_PEM);
pkey = X509_get_pubkey(x509);
X509_free(x509);

rsakey = EVP_PKEY_get1_RSA(pkey);
EVP_PKEY_free(pkey);

// Cifra il testo del codice fiscale
char *outdata;
int outdatalen;
int keysize;

keysize = RSA_size(rsakey);
outdata = (char*)OPENSSL_malloc(keysize);
outdatalen = RSA_public_encrypt(strlen(codicefiscale), codicefiscale,
outdata, rsakey, RSA_PKCS1_PADDING);
// A questo punto il valore e' cifrato RSA ma codificato binario (ovvero
non codificato)

// Codifica il risultato in Base64
void *b64;
crypted = BIO_new(BIO_s_mem());
b64 = BIO_new(BIO_f_base64());
BIO_push(b64, crypted); // Concatena i due BIO
BIO_write(b64, outdata, outdatalen);
BIO_flush(b64);
OPENSSL_free(outdata);

// Estrae il risultato
char *result;
int resultlen;
resultlen = BIO_pending(crypted);
result = (char *)malloc(resultlen + 1);
BIO_read(crypted, result, resultlen);

BIO_free_all(crypted);

cout << "Risultato:" << endl << result << endl << endl;

free(result);
}


dr D'Aquila Francesco (Centro arte e cornici srl)

unread,
May 27, 2008, 10:44:38 AM5/27/08
to
Suppongo si tratti del telematico USL-SOGEI relativo alla codifica del
codice fiscale
se è cosi posso mandarti il tutto in codice VO per come mi è stato spedito
da Enzo Campanella.
Sempre che Enzo Campanella nel frattempo non veda e provveda.
Fammi Sapere
Francesco D'Aquila

"Infoservice" <pi...@aol.it> ha scritto nel messaggio
news:483aebff$0$35959$4faf...@reader2.news.tin.it...
> Qualche anima buona che conosce il c meglio di me, può tradurmi il codice

Infoservice

unread,
May 27, 2008, 12:17:05 PM5/27/08
to
Grazie, ma ho già il codice di Enzo, stiamo cercando appunto insieme, visto
che dobbiamo aggiornare il file xml, di evitare l'utilizzo del dos per
criptare il codice fiscale. Visto che esiste la dll e che il comando dos è
scritto in C sarebbe bello poterlo utilizzare da codice, soprattutto usando
"Svista" che ci mette una vita.....
Ciao.

Francesco


"dr D'Aquila Francesco (Centro arte e cornici srl)"
<Francesco...@virgilio.it> ha scritto nel messaggio
news:483c1e55$0$18146$4faf...@reader3.news.tin.it...

0 new messages