PDFium Delphi Component Docs

FPdfCms birimi

Unit: FPdfCms
RFC 5652 CMS / CAdES SignedData yapılarını kurar, imza ilkesi belgelerini doğrular ve isteğe bağlı RFC 3161 zaman damgalarını gömer

Syntax

TCmsSignerIdKind = (sidIssuerAndSerial, sidSubjectKeyIdentifier);

TCmsSignerId = record
  Kind: TCmsSignerIdKind;
  IssuerDer: TBytes;
  SerialDer: TBytes;
  SubjectKeyId: TBytes;
end;

ICmsSigner = interface
  function GetDigestAlgorithmOid: AnsiString;
  function GetSignatureAlgorithmOid: AnsiString;
  function GetSignatureAlgorithmParams: TBytes;
  function GetSignerId: TCmsSignerId;
  function SignSignedAttrsDigest(const Digest: TSHA256Digest): TBytes;
end;

TCmsBuildOptions = record
  SigningTimeUtc: TDateTime;
  CommitmentTypeOid: AnsiString;
  SignaturePolicyOid: AnsiString;
  SignaturePolicyHash: TBytes;
  SignaturePolicyUri: AnsiString;
  SignaturePolicyDocument: TBytes;
  class function Default: TCmsBuildOptions; static;
end;

function CertKeyAlgorithmOid(const CertDer: TBytes): AnsiString;
function ExtractIssuerAndSerial(const CertDer: TBytes;
  out IssuerTlv, SerialTlv: TBytes): Boolean;
function EcDsaP1363ToDer(const Raw: TBytes): TBytes;
function VerifyCmsSignaturePolicyDocument(const Options: TCmsBuildOptions;
  const PolicyDocument: TBytes; out ErrorText: string): Boolean;
function BuildSignedData(const DetachedDigest: TSHA256Digest;
  const Signer: ICmsSigner; const SignerCertDer: TBytes;
  const ChainCertDer: array of TBytes;
  const Options: TCmsBuildOptions): TBytes;
function ExtractSignatureValue(const CmsDer: TBytes;
  out SignatureValueOctets: TBytes): Boolean;
procedure AddSignatureTimestampToCms(var CmsDer: TBytes;
  const TimestampTokenDer: TBytes);

Description

FPdfCms, PAdES imza yolunun dahili olarak kullandığı alt düzey CMS oluşturucusudur. İleri düzey bir kullanıcının, imzalı özniteliklerin SHA-256 ileti özetinden, bir imzalayan soyutlamasından, imzalayan sertifikasından ve isteğe bağlı bir sertifika zincirinden bir CMS SignedData değeri birleştirmesine izin verir

ICmsSigner arayüzü kripto arka uç sözleşmesidir: çağıran, özet ve imza algoritması OID'lerini ve imzalayan tanımlayıcısını sağlar; imzalı öznitelikler özeti üzerinde gerçek özel anahtar işlemini de o gerçekleştirir. Bu, CMS kodlamasını herhangi bir belirli kripto sağlayıcısından ayırır

TCmsBuildOptions; imzalama zamanını, commitment türünü ve SHA-256 ilke hash'i, URI ve isteğe bağlı bellek içi ilke belgesiyle açık bir imza ilkesi tanımlayıcısı ekleyebilir

ExtractSignatureValue, bitmiş bir CMS değerinden ham imza oktetlerini çıkarır; böylece bunlar bir zaman damgası otoritesine gönderilebilir. AddSignatureTimestampToCms ardından döndürülen zaman damgası token'ını imzasız bir öznitelik olarak gömer ve B-T/B-LTA uyumlu biçimi üretir

ICmsSigner methods

MethodDescription
GetDigestAlgorithmOidİmzalı öznitelikler üzerinde kullanılan hash algoritmasının OID'sini döndürür (SHA-256 için örneğin 2.16.840.1.101.3.4.2.1)
GetSignatureAlgorithmOidÖzete uygulanan imza algoritmasının OID'sini döndürür
GetSignatureAlgorithmParamsAlgoritma parametrelerini döndürür (ECDSA için genelde boştur; PSS için RSA-PSS parametre blob'unu taşır)
GetSignerIdİmzalayanı issuer/serial ya da subject key identifier ile tanımlayan TCmsSignerId değerini döndürür
SignSignedAttrsDigestSağlanan özet üzerinde özel anahtar imzasını gerçekleştirir ve imza oktetlerini döndürür

Functions and procedures

RoutineDescription
CertKeyAlgorithmOidBir sertifikadan SubjectPublicKeyInfo algoritma OID'sini okur; RSA ile ECDSA imza algoritması arasında seçim yapan da budur. Her imzalama arka ucunun gereksinim duyduğu için burada, onlardan birinin içinde değil yaşar
ExtractIssuerAndSerialBir SignerIdentifier'ın taşıdığı ham issuer ve serialNumber TLV'lerini IssuerTlv ve SerialTlv içine çıkarır
EcDsaP1363ToDerHam bir P1363 r||s ECDSA imzasını, CMS'nin beklediği iki INTEGER'dan oluşan DER SEQUENCE içine sarar; token'lar ve platform kripto API'leri ham biçimi döndürür
VerifyCmsSignaturePolicyDocumentBoş olmayan bir SignaturePolicyOid ve 32 baytlık bir SignaturePolicyHash zorunlu kılar, ardından sağlanan ilke belgesini SHA-256 ile doğrular ve başarısızlıkta tanı metni döndürür
BuildSignedDataBir CAdES SignerInfo, imzalayan sertifikası, isteğe bağlı zincir ve yapılandırılmış imzalı özniteliklerle eksiksiz bir detached RFC 5652 CMS ContentInfo kurar
ExtractSignatureValueRFC 3161 zaman damgası message imprint girdisi olarak kullanılan ham SignerInfo imza oktetlerini çıkarır
AddSignatureTimestampToCmsEksiksiz bir RFC 3161 TimeStampToken'ı signature-time-stamp imzasız özniteliği olarak ekler ve kapsayan uzunlukları yeniden kodlar

Types

TypeDescription
TCmsSignerIdKindsidIssuerAndSerial issuer Name artı serial TLV seçer, sidSubjectKeyIdentifier ise ham subject-key-identifier oktetlerini seçer
TCmsSignerIdKind, IssuerDer, SerialDer ve SubjectKeyId seçilen SignerInfo tanımlayıcı biçimini taşır
TCmsBuildOptionsSigningTimeUtc, CommitmentTypeOid, SignaturePolicyOid, SignaturePolicyHash, SignaturePolicyUri ve SignaturePolicyDocument imzalı öznitelikleri yapılandırır; Default tüm isteğe bağlı değerleri temizler

Remarks

See Also

FPdfTsa, FPdfCrypto, FPdfSha256, TPdf.SignPades