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

Zie ook

TPDFlibSignatureVerifier