Newsgroup: it.comp.lang.delphi
Titolo: Cifratura Pincode sistema tessera sanitaria

 non funge 
perché restituisce un eccezione: "Error accessing SanitelCF.cer on 
reading 壕醇胦骭⹝䍅峪苹ᙯ樿躰奄賣ᅞ轢溼쇯䅬圧逛㛏岝濜ygkﺵ疢ℊᶭ⩕鼨."
 
Ho visto che ci sono una mare di documenti che lamentano "cannot load 
openss library" ed il suggerimento è sempre lo stesso: scaricare 
Openssl, installarlo ed assicurarsi di copiare le dll nel percorso di 
ricerca. Cosa che, naturalmente ho fatto.
 
Qualcuno può suggerirmi una procedura funzionante?
 
Grazie.
 
Ciao.

Ho avuto anch'io un problema simile
Con la versione di Delhi xe7 funzionava, con la rx1 non voleva saperne di andare 
Credo dipenda dalla libreria di interfaccia che non è compatibile 
 
Avendo necessità di risolvere ho optato per questa soluzione, anche se poco pulita:
 
Ho scaricato il programma openssl e copiato eseguibile e librerie in una cartella del mio programma
 
Eseguo dal mio programma una chiamata a openssl con parametri un file di origine (temporaneo) che contiene di volta in volta il codice fiscale o il pincode 
 
Il target lo imposto su un file temporaneo che poi vado a leggere per estrapolare il valore cifrato
 
So benissimo che non è una soluzione ottimale ma avevo fretta di risolvere per il cliente finale vista la scadenza dell'invio per il 2016


 
Visto l'approssimarsi della scadenza ho fatto inserire i documenti, 
manualmente, uno alla volta dal sito web di tessera sanitaria.
 
Grazie di tutto.
 
Ciao.

Risolto:
  oltre il comando
opnessl rsautl -encrypt -in CF.txt -out CF.enc -inkey SanitelCF.cer 
-certin -pkcs
 
*è necessario effettuare questo ulteriore passaggio:*
openssl enc -base64 -A -in CF.enc -out CF64.enc
 
solo così il PinCodeCifrato viene riconosciuto.
 
Perché anche se le specifiche (Vedi documento versione 2.1 del 
19/09/2016, pagina 3) dicono che dalla versione 1.1 si passa da Base64 a 
stringa, ciò NON sembra vero.
 
Grazie a tutti.
 
Ciao.

 solo così il PinCodeCifrato viene riconosciuto.
 
Mi segno il suggerimento, anche se al momento il mio sistema sta funzionando ugualmente.
Grazie


Ciao Anch'io seguendo i suggerimenti al link che hai segnalato 
riesco ad ottenere la stringa simile alla tua
 
 壕醇胦骭⹝䍅峪苹ᙯ樿躰奄賣ᅞ轢溼쇯䅬圧逛㛏岝濜ygkﺵ疢ℊᶭ⩕鼨
 
Non ho capito però coma hai risolto.
 
io ho utilizzato le "Delphi-OpenSSL-master" scaricate dal link
http://www.disi.unige.it/person/FerranteM/delphiopenssl/
 
ottenendo una stringa indecifrabile.
 
Cosa intendi quando scrivi che hai risolto da riiga di comando:
 
opnessl rsautl -encrypt -in CF.txt -out CF.enc -inkey SanitelCF.cer
-certin -pkcs
 
*è necessario effettuare questo ulteriore passaggio:*
openssl enc -base64 -A -in CF.enc -out CF64.enc 
 
 
Grazie Mille


Ciao,
 
Saresti così gentile da postarti la chiamata
a openssl con parametri un file di origine (temporaneo) che contiene di volta in volta il codice fiscale o il pincode 
 
sto cercando di seguire lo stesso tuo procedimento
 
Grazie Mille

 
 
Ho creato un file .bat che ho denominato: "fnCodificatore.bat" che 
contiene le due linee di comandi ssl che seguono:
 
openssl rsautl -encrypt -in CF.txt -out CF.enc -inkey SanitelCF.cer 
-certin -pkcs
openssl" enc -base64 -A -in CF.enc -out CF64.enc
 
e che da Delphi richiamo così:
 
ShellExecute(Handle, 'open', PWideChar(fnCodificatore), nil, nil, 
SW_SHOWNORMAL);
 
 
Il doppio passaggio è necessario perché i dati passati devono essere 
codificati in Base64.
 
Ciao.


Ciao,
 
Grazie Mille 
Nell'attesa che rispondessi sono riuscito a chiamare con ShellExecute
l'eseguibile 'openssl.exe' passandogli le righe di comando
"rsautl -encrypt -in CF.txt -out CF.enc -inkey SanitelCF.cer -certin -pkcs enc -base64 -A -in CF.enc -out CF64.enc"
 
ShellExecute(Handle, 'open', '.\openssl.exe',
PChar('rsautl -encrypt -in CF.txt -out CF.enc -inkey SanitelCF.cer -certin -pkcs enc -base64 -A -in CF.enc -out CF64.enc'),
nil,SW_NORMAL);
 
Tutto funziona alla grande 
Grazie per la dritta
 
Ciao