PDFium Delphi Component Docs

FPdfPkcs11 birimi

Unit: FPdfPkcs11
PAdES için PKCS#11 imzalama arka ucu; imzalayan sertifikasını ve özel anahtarını bir token'dan çözer ve SignerInfo imzasını token'ın içinde üretir

Syntax

EPdfPkcs11Error = class(Exception);

TPdfPkcs11Options = record
  ModulePath: string;
  SlotId: UInt64;
  UseSpecificSlot: Boolean;
  Pin: string;
  CertificateLabel: string;
  class function Default: TPdfPkcs11Options; static;
end;

TPdfPkcs11SignerProvider = class(TInterfacedObject, IPadesSignerProvider,
  IPdfPkcs11SignerProvider)
  constructor Create(const Options: TPdfPkcs11Options);
  destructor Destroy; override;
  function BackendName: string;
  function Resolve(const Options: TPadesSignerOptions): TPadesResolvedSigner;
  function EnumerateSlots: TPdfPkcs11Slots;
  function EnumerateCertificates(SlotID: UInt64): TPdfPkcs11Certificates;
  procedure CloseProtectedSessions;
end;

function Pkcs11ModuleAvailable(const ModulePath: string): Boolean;
function Pkcs11ModuleVersion(const ModulePath: string): string;
function Pkcs11AbiLayout: string;
function ConfigurePkcs11SignerProvider(
  const Options: TPdfPkcs11Options): IPdfPkcs11SignerProvider;

Description

FPdfPkcs11, taşınabilir PAdES imzalama arka ucu ve Windows CNG arka ucunun karşılığıdır. İmzalayan sertifikasını ve özel anahtarını bir PKCS#11 token'ından çözer; ardından ICmsSigner imzası SignerInfo imzasını token üzerinden üreten bir TPadesResolvedSigner döndürür, böylece anahtar asla token'dan ayrılmaz

Modül çalışma zamanında yola göre yüklenir - opensc-pkcs11.so, libsofthsm2.so, bir üretici DLL'i - böylece derleme zamanında hiçbir şey bağlanmaz ve eksik bir modül ölümcül değil, bildirilen bir durum olur. Ada göre yalnızca C_GetFunctionList çözülür; diğer tüm giriş noktaları onun döndürdüğü işlev tablosundan alınır, bu da standardın bir modüle ulaşılmasını amaçladığı biçimdir

ConfigurePkcs11SignerProvider, bir TPdfPkcs11Options değerinden bir TPdfPkcs11SignerProvider kurar, etkin PAdES imzalayan arka ucu olarak yükler ve token numaralandırma methodlarını da taşıyan IPdfPkcs11SignerProvider arayüzünü döndürür

Pkcs11ModuleAvailable ve Pkcs11ModuleVersion, verilen bir modülün yüklenip kullanılabilir bir işlev tablosu açığa çıkarıp çıkarmadığını bildirir; böylece bir uygulama başlangıçta bu makinede token imzalamanın mümkün olup olmayacağına karar verebilir. Yüklenen modüller yola göre önbelleğe alınır, çünkü standart modül başına süreç başına yalnızca bir başlatmaya izin verir

Resolve, sertifika için sağlandığında TPadesSignerOptions.CertificateThumbprint, aksi halde CertificateLabel değerini kullanır ve ardından sertifikayla aynı token tanımlayıcısını taşıyan özel anahtar nesnesini bulur. Sertifikanın anahtar algoritması algoritma ailesini belirler: bir EC anahtarı ECDSA ile imzalar ve ham imzası CMS'nin beklediği DER SEQUENCE olarak yeniden kodlanır; bir RSA anahtarı ise istenen dolgu şemasını izler

EnumerateSlots ve EnumerateCertificates seçim kullanıcı arayüzlerine hizmet eder; bir uygulamanın herhangi bir imzalama seçeneği sabitlenmeden önce bir modülün bildirdiği yuvaları ve seçilen bir yuvanın taşıdığı sertifikaları listelemesini sağlar

Functions

FunctionDescription
Pkcs11ModuleAvailableVerilen yoldaki modül yüklendiğinde ve kullanılabilir bir işlev tablosu açığa çıkardığında True döndürür
Pkcs11ModuleVersionModülün bildirdiği sürüm dizesini döndürür; modül yüklenmezken boş bir dize döndürür
Pkcs11AbiLayoutBu derlemenin çözdüğü ABI düzenini ulong=<n> attr=<n> pss=<n> table=<n> biçiminde döndürür
ConfigurePkcs11SignerProviderSağlanan seçeneklerden bir sağlayıcı kurar, PAdES imzalayan arka ucu olarak yükler ve IPdfPkcs11SignerProvider olarak döndürür

Types

TypePurpose
EPdfPkcs11ErrorModül yolu yapılandırılmadığında, modül yüklenemediğinde, bir token çağrısı başarısız olduğunda ya da eşleşen sertifika veya özel anahtar bulunamadığında fırlatılan istisna
TPdfPkcs11OptionsSağlayıcının çalıştığı modülü, yuvayı, PIN'i ve sertifikayı adlandıran kayıt
TPdfPkcs11SignerProviderBir PKCS#11 modülü üzerinde IPadesSignerProvider ve IPdfPkcs11SignerProvider arayüzlerini uygulayan sağlayıcı sınıfı

TPdfPkcs11Options fields

FieldDescription
ModulePathPKCS#11 modülünün yolu; zorunludur, çünkü bir token'a hangi modülün hizmet edeceği bir dağıtım kararındır ve işe yarar bir varsayılan yoktur
SlotIdAçılacak token yuvası; yalnızca UseSpecificSlot True olduğunda dikkate alınır
UseSpecificSlotToken mevcut bildiren ilk yuvanın alınmasını istiyorsanız False bırakın
PinKullanıcı PIN'i; sağlayıcı kendi kopyasını token tükettikten sonra temizler, geçilen dizenin ömründen ise çağıran sorumludur
CertificateLabelİmzalanacak sertifikanın isteğe bağlı nesne etiketi; yalnızca TPadesSignerOptions.CertificateThumbprint boş olduğunda kullanılır
DefaultBoş modül yolu, 0 yuvası, otomatik yuva seçimi ve PIN ya da etiket olmadan seçenekler döndüren statik fabrika

TPdfPkcs11SignerProvider members

MemberDescription
CreateSağlayıcıyı bir TPdfPkcs11Options değerinden kurar; modülün kendisi ilk kullanımda açılır
DestroyÖrnek serbest bırakılmadan önce açık token oturumlarını kapatır
BackendNameArka uç adını döndürür; bir modül yolu yapılandırılmışken modül dosya adını sona ekler
ResolveTPadesSignerOptions değerini token imzalayanını ve imzalayan sertifikası DER'ini tutan bir TPadesResolvedSigner değerine çözer
EnumerateSlotsModülün bildirdiği her yuvayı, token taşımayan yuvalar dahil TPdfPkcs11Slots olarak döndürür
EnumerateCertificatesTek bir yuvadaki sertifikaları, önce o yuvada oturum açarak TPdfPkcs11Certificates olarak döndürür
CloseProtectedSessionsOturum açılan yerlerde çıkış yapar, açık oturumu kapatır ve token'ı diğer tüketicilere serbest bırakır

Remarks

See Also

FPdfCrypto, FPdfCryptoWin, FPdfCms