Automatsko skaliranje CMS rezerviranog prostora

HotPDF može procijeniti odvojeni CMS spremnik bez pozivanja operacije privatnog ključa, vremenskog tijela ili potpisnika u kontrasat, a zatim ponovno izgraditi premali nepotpisani PDF prije nepovratne granice potpisivanja

Procjena bez nuspojava

HPDFCMSEstimatePlaceholder bira duljinu potpisa iz EstimatedSignatureBytes, pružatelja koji reklamira spcEstimateSignatureSize ili RSA modula u certifikatu potpisivanja, tim redoslijedom

Procjenitelj gradi točan statični oblik CMS-a sa sintetičkim potpisom te duljine, zadržava konfigurirane certifikate i statične potpise u kontrasat te zamjenjuje dinamičke pozive povratnim rezervama korisnog sadržaja koje je konfigurirao pozivatelj

THPDFCMSPlaceholderEstimateOptions.Default primjenjuje maržu od 50 posto, minimum od 1024 bajta, poravnanje od 256 bajta i maksimum od 16 MiB; procjene vremenskih oznaka i potpisa u kontrasat ostaju eksplicitne jer njihove veličine odgovora ovise o vanjskim uslugama

THPDFCMSPlaceholderEstimateInfo izvještava o odabranom izvoru, duljini potpisa, statičnoj CMS duljini, dinamičkoj rezervi, procijenjenoj CMS duljini i preporučenom poravnatom kapacitetu /Contents

Ponovna izgradnja prije potpisivanja

Funkcije automatske veličine ispituju postojeći kapacitet /Contents nakon pripreme /ByteRange

Ako je kapacitet ispod preporuke, THPDFCMSRebuildUnsignedPDFCallback prima potreban broj bajtova i upisuje svjež nepotpisani PDF u odredišni tok; ponovno izgrađeni rezervirani prostor se potvrđuje prije nego se pokrene bilo koji poziv 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 sigurnosti ponovnog pokušaja

HPDFCMSSignPDFStreamWithExternalSignerAutoSize nikada ponovno ne poziva vanjskog potpisnika nakon što vrati potpis; neočekivano prekoračenje vraća nepotpisani rezerviran prostor i podiže pogrešku koja sadrži stvarnu i dostupnu veličinu

HPDFCMSSignPDFStreamWithProviderAutoSize može ponoviti samo kada pružatelj reklamira spcSafeSignRetry, dostupan je poziv ponovne izgradnje i MaximumSigningRetries nije iscrpljen

Ako su omogućene vremenske oznake sadržaja, vremenske oznake potpisa ili dinamički potpisi u kontrasat, ponavljanje dodatno zahtijeva DynamicCallbacksSafeToRetry=True

Pružatelj s pozivom izlaže ConfigureSizeEstimation, udaljeni pružatelji prihvaćaju opcionalni procjenitelj i deklaraciju sigurnog ponavljanja, a PKCS#11 ili Windows pružatelji pohrane ključeva izvode RSA izlaznu duljinu iz certifikata bez diranja privatnog ključa

Dijagnostika i ograničenja

THPDFCMSAutoSizeInfo izvještava o početnim i konačnim kapacitetima, stvarnoj CMS duljini, broju ponovnih izgradnji, pokušajima potpisivanja i je li se dogodilo ponavljanje nakon potpisa

Preporučene veličine i veličine ponavljanja provjeravaju se širokom aritmetikom, poravnavaju unutar konfiguriranog maksimuma te odbijaju nevaljane postotke, brojeve ponavljanja, nulte duljine, neispravne certifikate, nepodržane ključeve i pozive ponovne izgradnje koji rezerviraju manje od zahtijevanog