2011-11-18 14 views
6

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.

risposta

0

Ho esplorato il modo PKCS # 11 un po 'di più e in realtà ho avuto modo di fare qualcosa. La libreria softokn.dll è "quasi" libreria standard PKCS # 11, vedere https://developer.mozilla.org/en/PKCS11_Module_Specs. La cosa fondamentale è che è necessario inizializzarlo con argomenti speciali (la struttura è descritta nell'URL collegato).

È anche utile per controllare i valori di ritorno dell'ERSS NSS: vedere CKR_NETSCAPE _... a http://people.mozilla.com/~chofmann/l10n/tree/mozilla/security/nss/cmd/pk11mode/pk11mode.c.

L'ultima cosa chiave è che è necessario specificare i token manualmente poiché la documentazione non è chiara sull'uso di secmod.db - c'è una parola mancante, probabilmente "supportata", in "La funzione MOD DB non è attraverso lo standard Interfacce PKCS # 11 ".

Tutto questo è piuttosto una codifica di basso livello e avrà ancora bisogno di molto lavoro, quindi potrebbe essere meglio usare SecureBalackbox come suggerito da Eugene se si sta partendo da zero.

1

Our SecureBlackbox funziona con softtokn.dll tramite PKCS # 11 ed è possibile utilizzare le interfacce fornite da SecureBlackbox per la gestione dei certificati a portata di mano.