Tôi muốn truy cập các chứng chỉ được lưu trữ trong các sản phẩm Mozilla (Firefox và Thunderbird) từ ứng dụng Delphi (XE). Để bắt đầu tôi muốn liệt kê chúng, tiếp theo nó sẽ là tốt đẹp để có thể quản lý chúng (nhập khẩu, xuất khẩu, xóa) và sử dụng chúng (ký). Mã thông báo phần mềm sẽ là đủ mặc dù sử dụng tất cả các thẻ được hỗ trợ bởi mozilla sẽ là tuyệt vời.Truy cập Chứng chỉ Mozilla từ Delphi
Cho đến nay tôi đã thử sử dụng XPCOM với ràng buộc delphi http://d-gecko.svn.sourceforge.net/viewvc/d-gecko/trunk/. Tuy nhiên không có nhiều tài liệu xung quanh và tôi hơi bối rối với tất cả các thuật ngữ và khái niệm. Điều tốt nhất tôi có thể quản lý là:
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;
Sử dụng mã này Tôi đã nhận được cá thể của đối tượng certdb và tôi có thể yêu cầu chứng chỉ. Tuy nhiên nó có vẻ là hoàn toàn trống rỗng (tính từ FindCertNicknames là 0) và nó cũng không phản ứng khi thay đổi OCSP (IsOcspOn luôn trả về true). Tôi nghĩ rằng tôi đã tạo ra một certstore mới hoặc tôi cần kích hoạt profile người dùng mặc định bằng cách nào đó.
Tôi cũng đã thử truy cập softokn.dll dưới dạng thư viện PKCS # 11. Vì điều này dường như có một số loại PKCS # 11 API, nó không đáp ứng tốt. I E. CKR_BAD_ARGUMENTS trên C_Inititialize.
Cách cuối cùng và thực sự xấu sẽ truy cập tệp chứng chỉ trực tiếp vì nó phải là "chuẩn" NSS nhưng tôi thực sự không thích cách này.