CMS-plaatsaanduiding-autoformaat

HotPDF kan een losgekoppelde CMS-container inschatten zonder een privé-sleutelbewerking, tijdstempelinstantie of meervoudige ondertekenaar op te roepen, en daarna een te kleine ongetekende PDF herbouwen vóór de onomkeerbare ondertekeningsgrens

Zonder bijwerkingen schatten

HPDFCMSEstimatePlaceholder selecteert de handtekeninglengte uit EstimatedSignatureBytes, een provider die spcEstimateSignatureSize adverteert, of de RSA-modulus in het ondertekeningscertificaat, in die volgorde

De schatter bouwt de exacte statische CMS-vorm met een synthetische handtekening van die lengte, behoudt geconfigureerde certificaten en statische meervoudige handtekeningen en vervangt dynamische callbacks door door de aanroeper configureerbare payload-reserves

THPDFCMSPlaceholderEstimateOptions.Default past een marge van 50 procent, een minimum van 1.024 bytes, een uitlijning van 256 bytes en een maximum van 16 MiB toe; tijdstempel- en meervoudige-handtekening-schattingen blijven expliciet omdat hun responsgroottes afhangen van externe diensten

THPDFCMSPlaceholderEstimateInfo rapporteert de geselecteerde bron, handtekeninglengte, statische CMS-lengte, dynamische reserve, geschatte CMS-lengte en de aanbevolen uitgelijnde /Contents-capaciteit

Herbouwen vóór het ondertekenen

De autoformaat-functies inspecteren de bestaande /Contents-capaciteit na het voorbereiden van /ByteRange

Als de capaciteit lager is dan de aanbeveling, ontvangt THPDFCMSRebuildUnsignedPDFCallback het vereiste byteaantal en schrijft een verse ongetekende PDF naar de opgegeven bestemmingsstroom; de herbouwde plaatsaanduiding wordt gevalideerd vóór enige ondertekeningscallback wordt uitgevoerd

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

Retry-veiligheidscontract

HPDFCMSSignPDFStreamWithExternalSignerAutoSize roept de externe ondertekenaar nooit opnieuw aan nadat deze een handtekening retourneert; een onverwachte overflow herstelt de ongetekende plaatsaanduiding en genereert een fout die de werkelijke en beschikbare groottes bevat

HPDFCMSSignPDFStreamWithProviderAutoSize mag alleen opnieuw proberen wanneer de provider spcSafeSignRetry adverteert, een herbouw-callback beschikbaar is en MaximumSigningRetries niet is uitgeput

Als inhoudstijdstempels, handtekeningtijdstempels of dynamische meervoudige handtekeningen zijn ingeschakeld, vereist opnieuw proberen bovendien DynamicCallbacksSafeToRetry=True

De callbackprovider stelt ConfigureSizeEstimation beschikbaar, externe providers accepteren een optionele schatter en veilige-retry-declaratie, en PKCS#11- of Windows-toetssnippets-providers leiden de RSA-uitvoerlengte af uit het certificaat zonder de privé-sleutel aan te raken

Diagnostiek en limieten

THPDFCMSAutoSizeInfo rapporteert initiële en definitieve capaciteiten, de werkelijke CMS-lengte, herbouwaantal, ondertekeningspogingen en of een post-sign-retry plaatsvond

Aanbevolen en retry-groottes worden gecontroleerd met brede rekenkunde, uitgelijnd binnen het geconfigureerde maximum, en wijzen ongeldige percentages, retry-aantallen, nul-lengtes, verkeerd gevormde certificaten, niet-ondersteunde sleutels en herbouw-callbacks die minder reserveren dan gevraagd af