CMS-platshållar-autostorlek
HotPDF kan uppskatta en fristående CMS-behållare utan att anropa en privat nyckeloperation, tidsstämpelauktoritet eller kontrasignerare, och sedan bygga om ett för litet osignerat PDF före den oåterkalleliga signeringsgränsen
Uppskattning utan sidoeffekter
HPDFCMSEstimatePlaceholder väljer signaturlängden från EstimatedSignatureBytes, en leverantör som annonserar spcEstimateSignatureSize, eller RSA-modulen i signeringscertifikatet, i den ordningen
Uppskattaren bygger den exakta statiska CMS-formen med en syntetisk signatur av den längden, behåller konfigurerade certifikat och statiska kontrasignaturer samt ersätter dynamiska callbacks med anropare-konfigurerbara nyttolastreserver
THPDFCMSPlaceholderEstimateOptions.Default tillämpar en marginal på 50 procent, ett minimum på 1,024 byte, inriktning på 256 byte och ett maximum på 16 MiB; tidsstämpel- och kontrasignaturuppskattningar förblir explicita eftersom deras svarsstorlekar beror på externa tjänster
THPDFCMSPlaceholderEstimateInfo rapporterar den valda källan, signaturlängden, den statiska CMS-längden, den dynamiska reserven, den uppskattade CMS-längden och den rekommenderade inriktade /Contents-kapaciteten
Bygg om före signering
Autostorleksfunktionerna inspekterar den befintliga /Contents-kapaciteten efter förberedelse av /ByteRange
Om kapaciteten är under rekommendationen tar THPDFCMSRebuildUnsignedPDFCallback emot det krävda byteantalet och skriver ett färskt osignerat PDF till destinationsströmmen; den ombyggda platshållaren valideras före varje signeringscallback körs
EstimateOptions := THPDFCMSPlaceholderEstimateOptions.Default;
AutoOptions := THPDFCMSAutoSizeOptions.Default;
AutoOptions.Estimate := EstimateOptions;
HPDFCMSSignPDFStreamWithProviderAutoSize(
InputStream, OutputStream, CertificateDER, Provider, KeyIdentifier,
SignOptions, AutoOptions,
procedure(ContentsBytes: Integer; Destination: TStream)
begin
BuildUnsignedPDF(ContentsBytes, Destination);
end,
AutoSizeInfo);
Återförsökssäkerhetskontrakt
HPDFCMSSignPDFStreamWithExternalSignerAutoSize anropar aldrig den externa signeraren igen efter att den returnerat en signatur; ett oväntat överflöde återställer den osignerade platshållaren och utlöser ett fel som innehåller de faktiska och tillgängliga storlekarna
HPDFCMSSignPDFStreamWithProviderAutoSize får endast försöka igen när leverantören annonserar spcSafeSignRetry, en ombyggnads-callback finns tillgänglig och MaximumSigningRetries inte har förbrukats
Om innehållstidsstämplar, signaturtidsstämplar eller dynamiska kontrasignaturer är aktiverade kräver återförsök dessutom DynamicCallbacksSafeToRetry=True
Callback-leverantören exponerar ConfigureSizeEstimation, fjärrleverantörer accepterar en valfri uppskattare och säker-återförsök-deklaration, och PKCS#11- eller Windows-nyckellagringsleverantörer härleder RSA-utgångslängd från certifikatet utan att röra den privata nyckeln
Diagnostik och gränser
THPDFCMSAutoSizeInfo rapporterar initiala och slutliga kapaciteter, den faktiska CMS-längden, ombyggnadsantalet, signeringsförsöken och om ett efter-signering-återförsök inträffade
Rekommenderade och återförsöks-storlekar kontrolleras med bred aritmetik, inriktas inom det konfigurerade maximumet och avvisar ogiltiga procenttal, återförsöksantal, nollängder, felformaterade certifikat, icke-stödda nycklar och ombyggnads-callbacks som reserverar mindre än begärt