2011-11-18 32 views
6

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.

Trả lời

0

Tôi đã khám phá cách PKCS # 11 một chút và tôi thực sự đã làm điều đó. Thư viện softokn.dll là thư viện PKCS # 11 chuẩn "gần như", xem https://developer.mozilla.org/en/PKCS11_Module_Specs. Điều quan trọng là bạn cần phải khởi tạo nó với các đối số đặc biệt (cấu trúc được mô tả trong URL được liên kết).

Nó cũng tiện dụng để kiểm tra giá trị trả về NSS erorr: xem CKR_NETSCAPE _... tại http://people.mozilla.com/~chofmann/l10n/tree/mozilla/security/nss/cmd/pk11mode/pk11mode.c.

Điều cuối cùng là bạn cần chỉ định mã thông báo bằng tay vì tài liệu không rõ ràng về cách sử dụng secmod.db - có một từ bị thiếu, có thể là "được hỗ trợ", trong "Hàm MOD DB không thông qua tiêu chuẩn Giao diện PKCS # 11 ".

Tất cả điều này là mã hóa ở mức độ thấp và vẫn cần nhiều công việc để có thể sử dụng SecureBalackbox tốt hơn theo đề xuất của Eugene nếu bạn bắt đầu từ đầu.

1

SecureBlackbox của chúng tôi hoạt động với softtokn.dll qua PKCS # 11 và bạn có thể sử dụng giao diện do SecureBlackbox cung cấp để quản lý chứng chỉ tiện dụng.

Các vấn đề liên quan