Desidero accedere ai certificati memorizzati nei prodotti Mozilla (Firefox e Thunderbird) da un'applicazione Delphi (XE). Per cominciare vorrei elencarli, dopo sarebbe bello poterli gestire (importare, esportare, eliminare) e usarli (segno). Il token software sarebbe sufficiente anche se l'utilizzo di tutti i token supportati da mozilla sarebbe ottimo.Accesso ai certificati Mozilla da Delphi
Finora ho provato a utilizzare XPCOM con il binding delphi http://d-gecko.svn.sourceforge.net/viewvc/d-gecko/trunk/. Tuttavia non c'è molta documentazione in giro e sono un po 'confuso con tutta la terminologia e i concetti. Il massimo che potessi era:
var ns:nsIX509CertDB;
servMgr:nsIServiceManager;
p:Pchar;
begin
GRE_Startup;
NS_GetServiceManager(servmgr);
servMgr.GetServiceByContractID('@mozilla.org/security/x509certdb;1',NS_IX509CERTDB_IID,ns);
ns.FindCertNicknames(nil,1,count,p);
GRE_Shutdown;
end;
Utilizzando questo codice ho fatto arrivare istanza di oggetto certdb e sono stato in grado di chiedere per i certificati. Tuttavia sembra essere completamente vuoto (contare da FindCertNicknames è 0) e inoltre non reagisce al cambio OCSP (IsOcspOn restituisce sempre true). Sto pensando che ho creato un nuovo certstore o che ho bisogno di attivare il profilo utente predefinito in qualche modo.
Ho anche provato ad accedere a softokn.dll come libreria PKCS # 11. Poiché sembra che abbia una sorta di API PKCS # 11, non risponde bene. Cioè CKR_BAD_ARGUMENTS su C_Inititialize.
L'ultimo e davvero pessimo sistema sarebbe l'accesso ai file dei certificati direttamente come dovrebbe essere l'NSS "standard", ma a me non piace molto in questo modo.