PDFium Delphi Component Docs

FPdfEncrypt-yksikkö

Yksikkö: FPdfEncrypt
Johtaa AES-256-salausavaimet ja tuottaa ISO 32000-2 AESV3-CBC- tai ISO/TS 32003 AESV4-GCM -merkkijonot, virrat ja salaus-sanakirjat

Syntax

TPdfEncryptionRevision = (erR5, erR6, erR7);

TPdfEncryptOptions = record
  UserPassword: AnsiString;
  OwnerPassword: AnsiString;
  Permissions: Cardinal;
  EncryptMetadata: Boolean;
  Revision: TPdfEncryptionRevision;
  EnableIntegrityProtection: Boolean;
  class function Default: TPdfEncryptOptions; static;
end;

TPdfEncryptionKeys = record
  FileEncryptionKey: TBytes;
  OEntry: TBytes;
  UEntry: TBytes;
  OEEntry: TBytes;
  UEEntry: TBytes;
  PermsEntry: TBytes;
  KdfSalt: TBytes;
end;

TPdfIncrementalEncryptionContext = record
  FileEncryptionKey: TBytes;
  KdfSalt: TBytes;
  Revision: TPdfEncryptionRevision;
  EncryptMetadata: Boolean;
  EncryptObjectNumber: Integer;
  EncryptGeneration: Integer;
  HasAuthenticationCode: Boolean;
end;

procedure DeriveEncryptionKeys(const Options: TPdfEncryptOptions;
  out Keys: TPdfEncryptionKeys);
function BuildEncryptDictionary(const Keys: TPdfEncryptionKeys;
  const Options: TPdfEncryptOptions): AnsiString;
function EncryptStreamPayload(const FileKey: TBytes;
  const Plain: TBytes): TBytes;
function EncryptDocumentBytes(const PlainPdf: TBytes;
  const Options: TPdfEncryptOptions): TBytes;
function DecryptAesGcmDocumentBytes(const EncryptedPdf: TBytes;
  const Password: AnsiString; out PlainPdf: TBytes;
  out ErrorText: string): Boolean;
function ValidateEncryptedDocumentMac(const EncryptedPdf: TBytes;
  const Password: AnsiString): TPdfMacValidationResult;
function ReadIncrementalEncryptionContext(const EncryptedPdf: TBytes;
  const Password: AnsiString;
  out Context: TPdfIncrementalEncryptionContext;
  out ErrorText: string): Boolean;
procedure ClearIncrementalEncryptionContext(
  var Context: TPdfIncrementalEncryptionContext);
function EncryptIncrementalObjectBody(const PlainBody: TBytes;
  const Context: TPdfIncrementalEncryptionContext;
  out EncryptedBody: TBytes;
  out ErrorText: string): Boolean;

Description

FPdfEncrypt toteuttaa ISO 32000-2:n kohdan 7.6 määrittämän PDF:n AES-256-suojauskäsittelijän ja ISO/TS 32003:n määrittämän AESV4-GCM-laajennuksen. EncryptDocumentBytes muuntaa selkokielisen PDF-tavutaulukon salatuksi dokumentiksi valitulla revisiolla

DeriveEncryptionKeys suorittaa salasanapohjaisen avainten johtamisen, joka tuottaa 32-tavuisen tiedostosalausavaimen sekä /O-, /U-, /OE-, /UE- ja /Perms-sanakirjamerkinnät. BuildEncryptDictionary serialisoi kyseiset merkinnät /Encrypt-sanakirjatekstiksi. EncryptStreamPayload soveltaa AES-256-CBC-salausta yhteen objektivirtaan tiedostoavainta käyttäen

Mukautettua tallennusputkea rakentava edistynyt käyttäjä voi kutsua kolmea primitiiviä suoraan; sovelluskoodi käyttää yleensä TPdf.SaveAsEncrypted- tai TPdf.SaveAsEncryptedToStream-kutsuja, jotka kutsuvat EncryptDocumentBytes-toimintoa sisäisesti

Kun EnableIntegrityProtection on tosi, kirjoittaja tuottaa PDF 2.0 ISO/TS 32004 -erillisen autentikointikoodin, johon kuuluvat täsmälleen EOF:n kattava /ByteRange, /KDFSalt, CMS AuthenticatedData, HKDF-SHA256, AES-256 Key Wrap ja HMAC-SHA256

PDFium ei tällä hetkellä näytä AESV4-jäsentämistä julkisen ABI:n kautta. Kutsu ensin DecryptAesGcmDocumentBytes-funktiota ja välitä palautetut tavut TPdf.LoadDocument-kutsulle; funktio ei palauta osittaista selkotekstiä salasana-, käyttöoikeus-, PDF MAC-, merkkijonotagi- tai virtatagi-epäonnistumisen jälkeen

ReadIncrementalEncryptionContext autentikoi nykyisen salatun revisioketjun ja palauttaa perityn suojaustilan. EncryptIncrementalObjectBody salaa merkkijonot ja virtahyötykuorman yhdessä muuttuneessa epäsuorassa objektissa säilyttäen metatietopoikkeukset ja päivittäen suorat /Length-arvot; ClearIncrementalEncryptionContext tyhjentää palautetun avainaineiston

Functions

FunctionDescription
DeriveEncryptionKeysSuorittaa salasanapohjaisen avainten johtamisen ja palauttaa tiedostoavaimen sekä viisi sanakirjamerkintää
BuildEncryptDictionarySerialisoi avaimet ja asetukset /Encrypt-sanakirjatekstiksi
EncryptStreamPayloadSalaa yhden objektivirran AES-256-CBC:llä tiedostoavainta käyttäen
EncryptDocumentBytesKertakäyttöapuri, joka johtaa avaimet, kirjoittaa virrat uudelleen ja sisällyttää /Encrypt-sanakirjan koko PDF-tavutaulukkoon
DecryptAesGcmDocumentBytesAutentikoi ja purkaa AESV4-GCM-tuotoksen selkotekstitavuiksi, jotka PDFium voi ladata
ValidateEncryptedDocumentMacValidoi erillisen PDF MAC -koodin alkuperäisiä salattuja tavuja vastaan käyttäjä- tai omistajasalasanalla
ReadIncrementalEncryptionContextAutentikoi salatun revisioketjun ja palauttaa perityn tiedostoavaimen, revision, metadatapolitiikan, /Encrypt-viittauksen ja PDF MAC -tilan
ClearIncrementalEncryptionContextTyhjentää palautetun inkrementaalisen salausavainaineiston turvallisesti
EncryptIncrementalObjectBodySalaa merkkijonot ja virrat yhdessä muuttuneessa epäsuoran objektin rungossa perityn suojauskontekstin alla

Types

TypeDescription
TPdfEncryptionRevisionLuettelo, joka valitsee AESV3-CBC-revision erR5 tai erR6 tai ISO/TS 32003 AESV4-GCM-revision erR7
TPdfEncryptOptionsTietue, joka kantaa salasanoja, käyttöoikeuslippuja, metadatapolitiikkaa, suojauskäsittelijän revisiota ja valinnaista PDF MAC -eheyssuojausta
TPdfEncryptionKeysTietue, joka sisältää tiedostoavaimen, suojauskäsittelijän merkinnät ja valinnaisen 32-tavuisen /KDFSalt:in
TPdfIncrementalEncryptionContextAutentikoitu peritty suojaustila, jota käytetään salattujen epäsuorien objektien liittämiseen korvaamatta olemassa olevaa /Encrypt-sanakirjaa
TPdfMacValidationStatuspmvsValid, pmvsNotPresent, pmvsInvalid tai pmvsUnsupported
TPdfMacValidationResultErillisen PDF MAC -validoinnin Status ja diagnostinen MessageText

Remarks

See Also

FPdfAes, FPdfSha256, FPdfHmac, FPdfMac, TPdf.SaveAsEncrypted, TPdf.SaveAsEncryptedToStream