Me gustaría acceder a los certificados almacenados en los productos de Mozilla (Firefox y Thunderbird) desde una aplicación Delphi (XE). Para empezar, me gustaría enumerarlos, a continuación sería bueno poder gestionarlos (importar, exportar, eliminar) y usarlos (firmar). El token de software sería suficiente, aunque usar todos los tokens compatibles con mozilla sería genial.Acceso a los certificados de Mozilla desde Delphi
Hasta ahora he intentado usar XPCOM con http://d-gecko.svn.sourceforge.net/viewvc/d-gecko/trunk/ enlace delphi. Sin embargo, no hay mucha documentación a mi alrededor y estoy un poco confundido con toda la terminología y los conceptos. Lo mejor que pude hacer fue:
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;
Utilizando este código me hizo llegar instancia de objeto certdb y yo era capaz de hacer que los certificados. Sin embargo, parece estar completamente vacío (el recuento de FindCertNicknames es 0) y tampoco reacciona al cambiar de OCSP (IsOcspOn siempre devuelve verdadero). Estoy pensando que creé un nuevo almacén de certificados o que necesito activar el perfil de usuario predeterminado de alguna manera.
También intenté acceder a softokn.dll como una biblioteca PKCS # 11. Como esto parece tener algún tipo de API PKCS # 11, no está respondiendo bien. Es decir. CKR_BAD_ARGUMENTS en C_Initialize.
La última y muy mala forma sería acceder a los archivos de certificado directamente, ya que debe ser NSS "estándar", pero realmente no me gusta de esta manera.