2011-11-18 10 views
6

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.

Respuesta

0

Exploré el PKCS # 11 un poco más y en realidad lo hice para hacer algo. La biblioteca softokn.dll es "casi" biblioteca estándar PKCS # 11, consulte https://developer.mozilla.org/en/PKCS11_Module_Specs. La clave es que debe inicializarlo con argumentos especiales (la estructura se describe en la URL enlazada).

También es útil para verificar los valores de retorno err de NSS: ver CKR_NETSCAPE _... en http://people.mozilla.com/~chofmann/l10n/tree/mozilla/security/nss/cmd/pk11mode/pk11mode.c.

La última cosa clave es que debe especificar los tokens a mano ya que la documentación no es clara sobre el uso de secmod.db - hay una palabra faltante, probablemente "compatible", en "La función MOD DB no es estándar Interfaces PKCS # 11 ".

Todo esto es una codificación de bajo nivel y todavía necesitará mucho trabajo, por lo que puede ser mejor utilizar SecureBalackbox como lo sugiere Eugene si está empezando desde cero.

1

Nuestro SecureBlackbox funciona con softtokn.dll a través de PKCS # 11 y puede utilizar las interfaces proporcionadas por SecureBlackbox para una administración práctica de certificados.

Cuestiones relacionadas