Доступ к сертификатам Mozilla из Delphi

Я хотел бы получить доступ к сертификатам, хранящимся в продуктах Mozilla (Firefox и Thunderbird) из приложения Delphi (XE). Для начала я хотел бы перечислить их, затем было бы неплохо иметь возможность управлять ими (импорт, экспорт, удаление) и использовать их (знак). Токен программного обеспечения будет достаточным, хотя использование всех токенов, поддерживаемых mozilla, было бы здорово.

до сих пор я пытался использовать XPCOM сhttp://d-gecko.svn.sourceforge.net/viewvc/d-gecko/trunk/ delphi обязательный. Однако вокруг не так много документации, и я немного запутался со всей терминологией и концепциями. Лучшее, что я смог придумать, было:--2-->

    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;

используя этот код, я получил экземпляр объекта certdb, и я смог попросить у него сертификаты. Однако он кажется полностью пустым (count from FindCertNicknames равен 0), а также не реагирует на изменение OCSP (IsOcspOn всегда возвращает true). Я думаю, что я либо создал новый certstore, либо мне нужно активируйте Профиль пользователя по умолчанию.

Я также попытался получить доступ к softokn.dll как библиотека PKCS#11. Поскольку у этого, похоже, есть какой-то API PKCS#11, он не отвечает Хорошо. Т. е. CKR_BAD_ARGUMENTS на C_Inititialize.

последним и очень плохим способом был бы доступ к файлам сертификатов напрямую, поскольку он должен быть "стандартным" NSS, но мне действительно не нравится этот способ.

2 ответов


наш SecureBlackbox работает с softtokn.dll через PKCS#11, и вы можете использовать интерфейсы, предоставляемые SecureBlackbox для удобного управления сертификатами.


Я исследовал путь PKCS#11 немного больше, и я действительно получил его, чтобы что-то сделать. В softokn.библиотека dll-это" почти " стандартная библиотека PKCS#11, см. https://developer.mozilla.org/en/PKCS11_Module_Specs . Главное, что вам нужно инициализировать его специальными аргументами (структура описана в связанном URL-адресе).

его также удобно проверить возвращаемые значения NSS erorr: см. CKR_NETSCAPE... на http://people.mozilla.com/~chofmann/l10n/tree/mozilla/security/nss/cmd/pk11mode/pk11mode.c .

последняя ключевая вещь заключается в том, что вам нужно указать токены вручную, поскольку документация неясна об использовании secmod.db-отсутствует слово, вероятно, "поддерживается", в"функция MOD DB не через стандартные интерфейсы PKCS #11".

все это довольно низкоуровневое кодирование и все равно потребуется много работы, поэтому, возможно, лучше использовать SecureBalackbox как предложил Юджин, если вы начинаете с нуля.