TPDFlibEUTSLTrustSource
Beveiliging en handtekeningen
Beschrijving
Laadt een EU-lijst van vertrouwde lijsten en de nationale vertrouwde-dienstenlijsten waarnaar ze verwijst, verifieert hun XML-handtekeningen en levert tijdsbewuste vertrouwensankers aan TPDFlibSignatureVerifier
De bron beoordeelt ook verklaringen van gekwalificeerde certificaten, vertrouwde-dienst-kwalificatoren, kwalificatiecriteria, dienstbereik-uitbreidingen en diensthistorie om gekwalificeerde elektronische handtekeningen en zegels onder eIDAS te classificeren
Eenheid
PDFlibEUTSL
Vertrouwensopstart
Function AddLOTLSigningCertificateDER(
Const CertificateDER: AnsiString): Boolean;
Function AddLOTLSigningCertificateFromFile(
Const CertificateFile: WideString): Boolean;
Procedure ClearLOTLSigningCertificates;
Procedure Clear;
Een toepassing moet ten minste één onafhankelijk vertrouwd LOTL-ondertekeningscertificaat vastpinnen voordat een LOTL wordt geladen
Clear gooit de geladen LOTL en elke nationale TSL-momentopname weg, met hun pointers, diensten en diagnostische status, zonder de vastgepinde LOTL-ondertekeningscertificaten aan te raken; de instantie is daarna klaar om een verse momentopname te laden
Het in XML
Het in XML KeyInfo ingebedde ondertekencertificaat moet byte voor byte overeenkomen met een vastgepind certificaat, zodat een zichzelf declarerende ondertekenaar geen eigen vertrouwen kan vestigen
Elke nationale TSL moet op haar beurt zijn ondertekend door een certificaat dat in de overeenkomende, reeds geverifieerde LOTL-verwijzing wordt gedragen
Vertrouwde lijsten laden
Function LoadLOTLFromString(Const XMLData: AnsiString): Boolean;
Function LoadLOTLFromFile(Const FileName: WideString): Boolean;
Function LoadLOTLFromURL(Const URL: WideString): Boolean;
Function LoadTSLFromString(PointerIndex: Integer;
Const XMLData: AnsiString): Boolean;
Function LoadTSLFromFile(PointerIndex: Integer;
Const FileName: WideString): Boolean;
Function LoadTSLFromURL(PointerIndex: Integer): Boolean;
Function RefreshAllTSLs: Integer;
XML-laden schakelt DTD's en externe entiteiten uit, past een configureerbare groottelimiet toe, vereist één envelophandtekening over de documentroot en wijst losse verwijzingen, duplicaathandtekeningen, digestfouten, niet-overeenkomende ondertekenaars en gebiedsafwijkingen af
LoadLOTLFromURL en LoadTSLFromURL vereisen standaard HTTPS en passen NetworkTimeoutMS en MaxXMLBytes toe op elk verzoek; de eigenschap RequireHTTPS (standaard True) regelt de schemacheck, en uitschakelen is alleen bedoeld voor beheerste testomgevingen
RefreshAllTSLs downloadt en valideert elke actuele verwijzing voordat de actieve dienstenset wordt vervangen, zodat een partieel netwerk- of handtekeningfalen de vorige geverifieerde snapshot behoudt
Verlopen LOTL- en TSL-snapshots falen standaard gesloten en blijven onbruikbaar na hun NextUpdate-tijdstip; AllowExpiredLists is alleen beschikbaar voor beheerste archiverings- of diagnoseworkflows
Inspectie
Function GetPointerCount: Integer;
Function GetPointerInfo(Index: Integer;
Out Info: TPDFlibEUTSLPointerInfo): Boolean;
Function GetPointerSigningCertificateDER(PointerIndex,
CertificateIndex: Integer; Out CertificateDER: AnsiString): Boolean;
Function GetServiceCount: Integer;
Function GetServiceInfo(Index: Integer;
Out Info: TPDFlibEUTSLServiceInfo): Boolean;
Function GetServiceCertificateDER(ServiceIndex, CertificateIndex: Integer;
VerificationTime: TDateTime;
Out CertificateDER: AnsiString): Boolean;
Verwijzingsinformatie legt gebied, locatie, MIME-type en toegestaan aantal TSL-ondertekenaars bloot
Dienstinformatie legt de huidige dienstnaam, -type, -status, statusbegintijd, certificaataantal en historieaantal bloot
GetLOTLLocation, GetLOTLNextUpdate, GetRevision en GetLastError leggen snapshot- en diagnosestatus bloot
Handtekeningverificatie
var
TrustSource: TPDFlibEUTSLTrustSource;
ChainReport: TPDFlibSignatureChainReport;
begin
TrustSource:= TPDFlibEUTSLTrustSource.Create;
try
TrustSource.AddLOTLSigningCertificateFromFile('EU-LOTL-Signer.cer');
if not TrustSource.LoadLOTLFromURL(LOTLURL) then
raise Exception.Create(String(TrustSource.GetLastError));
if TrustSource.RefreshAllTSLs<> TrustSource.GetPointerCount then
raise Exception.Create(String(TrustSource.GetLastError));
Verifier.SetTrustSource(TrustSource);
try
Result:= Verifier.VerifySignerCertificateChainEx(
0, 0, srmOnline, 0, ChainReport);
finally
Verifier.SetTrustSource(nil);
end;
finally
TrustSource.Free;
end;
end;
SetTrustSource bewaart een niet-eigen verwijzing, dus de bron moet in leven blijven totdat ze wordt losgekoppeld of de verifier wordt vernietigd
GetTrustAnchors(VerificationTime, Certificates) bewaart een niet-eigenende verwijzing, dus de bron moet in leven blijven totdat ze wordt losgekoppeld of de verifier wordt vernietigd
EvaluateCertificateChain(Certificates, VerificationTime, Report) en TPDFlibSignatureQualificationReport zijn de twee haken die de verifier op de bron aanroept: de eerste geeft de DER-gecodeerde ankers terug van diensten die op de gevraagde tijd worden vertrouwd, de tweede classificeert een gevalideerde keten in een
De verifier combineert bronankers met eventuele handmatige aangepaste ankers in één exclusieve ketenmachine en cacht die machine op bronrevisie en verificatietijdstip
Wanneer een bron is toegewezen en noch zij noch de handmatige set een anker levert, faalt verificatie gesloten in plaats van terug te vallen op Windows-systeemroots
Kwalificatierapport
TPDFlibSignatureChainReport.QualificationReport geeft TPDFlibSignatureQualificationReport terug nadat een geldige keten is beoordeeld
Het rapport identificeert het dienstgebied, de naam, het type, de status, de statusbegintijd, toegepaste kwalificatoren, certificaatdoel, gekwalificeerde status en de status van het apparaat voor het maken van gekwalificeerde handtekeningen
Statuswaarden onderscheiden niet beoordeeld, niet van toepassing, niet gekwalificeerd, gekwalificeerd certificaat, gekwalificeerde elektronische handtekening en gekwalificeerd elektronisch zegel, met aparte QSCD-varianten