ApplyPAdESLongTermValidation
Digitala signaturer
Beskrivning
Höjer en redan signerad PDF till PAdES-B-LT i ett anrop och skriver resultatet till en fil
Syntax
Delphi
Function TPDFlib.ApplyPAdESLongTermValidation(Const InputFile, Password, OutputFile, FieldName: WideString; Options: Integer): Integer;Parametrar
| InputFile | Den signerade PDF-filen |
|---|---|
| Password | Lösenordet som öppnar den, eller en tom sträng |
| OutputFile | Den utökade PDF-fil som ska skrivas |
| FieldName | Ett signaturfält som ska behandlas, eller en tom sträng för att lägga in alla signaturer i en och samma revision |
| Options | En bitmask av PADES_LTV_*-värden; 0 väljer PADES_LTV_DEFAULT |
Alternativ
PADES_LTV_WRITE_VRI (1) | Skriver en VRI-post för varje signatur |
|---|---|
PADES_LTV_FETCH_OCSP (2) | Frågar OCSP-respondern för varje länk |
PADES_LTV_FETCH_CRL (4) | Faller tillbaka på CRL när OCSP inte gav något svar |
PADES_LTV_FOLLOW_AIA (8) | Följer utgivarens adresser för att komplettera kedjan |
PADES_LTV_SKIP_EXISTING (16) | Lägger inte till material igen när dess byte redan finns på plats |
PADES_LTV_SKIP_ROOT_REVOCATION (32) | Frågar inte efter status för ett självutgivet rotcertifikat |
PADES_LTV_DEFAULT (63) | Allt ovan; väljs när Options är 0 |
Returvärden
| 1 | Uppgraderingen lyckades |
|---|---|
| 2 | Indatafilen kunde inte läsas |
| 3 | Indata-PDF:en kunde inte tolkas |
| 10 | Utdata kunde inte skrivas |
| 11 | Document security store kunde inte läggas till |
| 20 | Inget sådant signaturfält finns |
| 21 | Ingen av de behandlade signaturerna bar ett läsbart certifikat |
GetPAdESLTVError anger orsaken för alla värden utom 1
Anmärkningar
Signerarens certifikatkedja byggs från signaturens egna CMS-data, och när PADES_LTV_FOLLOW_AIA är satt följs återstående utgivare via de caIssuers-adresser certifikaten anger. Spärrningsmaterial hämtas för varje länk - först OCSP, sedan CRL - och skrivs, tillsammans med certifikaten, till document security store i en enda inkrementell uppdatering
Material som är identiskt med något som redan finns på plats skrivs en gång och refereras av varje signatur som behöver det, så en certifikatutgivare som delas av kedjan eller av flera signaturer förekommer bara en gång. En VRI-post skrivs bara när den har ett certifikat att peka på, så en tom post skapas aldrig
En responder som inte går att nå får inte anropet att misslyckas: uppgraderingen fortsätter med det som hann hämtas, och GetPAdESLTVCertificateCount, GetPAdESLTVCRLCount, GetPAdESLTVOCSPCount och GetPAdESLTVError redogör för vad som erhölls och varför något missades
Exempel
PDF.SetTimeStampOptions(2, 1, 1, 15000, '');
if PDF.ApplyPAdESLongTermValidation('signed.pdf', '', 'signed-lt.pdf', '', 0)<> 1 then
ShowMessage(PDF.GetPAdESLTVError);Se även
ApplyPAdESLongTermValidationToStream, GetSignatureCertificateChainLength, AddPAdESDSSOCSPFromCertificates