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