CMS automatsko skaliranje rezervisanog prostora

HotPDF može da proceni odvojeni CMS kontejner bez pozivanja operacije privatnog ključa, organa vremenskog žiga ili kontra-potpisnika, zatim ponovo formira nepotpisani PDF premale veličine pre nepovratne granice potpisivanja

Procena bez sporednih efekata

HPDFCMSEstimatePlaceholder bira dužinu potpisa iz EstimatedSignatureBytes, dobavljača koji reklamira spcEstimateSignatureSize ili RSA modula u sertifikatu za potpisivanje, tim redosledom

Procenjivač formira tačan statički CMS oblik sa sintetičkim potpisom te dužine, zadržava konfigurisane sertifikate i statičke kontra-potpise te zamenjuje dinamičke callback-e rezervama sadržaja konfigurabilnim od strane pozivaoca

THPDFCMSPlaceholderEstimateOptions.Default primenjuje marginu od 50 posto, minimum od 1 024 bajta, poravnanje od 256 bajtova i maksimum od 16 MiB; procene vremenskog žiga i kontra-potpisa ostaju eksplicitne jer njihove veličine odgovora zavise od eksternih usluga

THPDFCMSPlaceholderEstimateInfo izveštava odabrani izvor, dužinu potpisa, statičku CMS dužinu, dinamičku rezervu, procenjenu CMS dužinu i preporučeni usklađen kapacitet /Contents

Ponovo formiraje pre potpisivanja

Funkcije automatskog skaliranja pregledaju postojeći kapacitet /Contents nakon pripremanja /ByteRange

Ako je kapacitet ispod preporuke, THPDFCMSRebuildUnsignedPDFCallback prima potreban broj bajtova i upisuje svež nepotpisani PDF u izloženi ciljni tok; ponovo formirani rezervisani prostor se validuje pre nego što se pokrene bilo koji callback potpisivanja

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);

Ugovor o bezbednosti ponavljanja

HPDFCMSSignPDFStreamWithExternalSignerAutoSize nikada više ne poziva eksternog potpisnika nakon što ovaj vrati potpis; neočekivano prekoračenje vraća nepotpisani rezervisani prostor i podiže grešku koja sadrži stvarne i dostupne veličine

HPDFCMSSignPDFStreamWithProviderAutoSize može da ponavlja samo kada dobavljač reklamira spcSafeSignRetry, dostupan je callback ponovnog formiranja i nije iscrpljeno MaximumSigningRetries

Ako su omogućeni vremenski žigovi sadržaja, vremenski žigovi potpisa ili dinamički kontra-potpisi, ponavljanje dodatno zahteva DynamicCallbacksSafeToRetry=True

Callback dobavljač izlaže ConfigureSizeEstimation, daljinski dobavljači prihvataju opcioni procenjivač i deklaraciju bezbednog ponavljanja, a PKCS#11 ili Windows key-storage dobavljači izvode RSA izlaznu dužinu iz sertifikata bez diranja privatnog ključa

Dijagnostika i ograničenja

THPDFCMSAutoSizeInfo izveštava početne i konačne kapacitete, stvarnu CMS dužinu, broj ponovnih formiranja, pokušaje potpisivanja i da li je došlo do ponavljanja nakon potpisa

Preporučene veličine i veličine ponavljanja proveravaju se širokom aritmetikom, usklađuju se unutar konfigurisanog maksimuma i odbijaju nevažeće procente, brojanja ponavljanja, nulte dužine, neispravne sertifikate, nepodržane ključeve i callback-e ponovnog formiranja koji rezervišu manje od traženog