DAOpenFileWithEncryptionKeyA

Document management, Direct access functionality, Security

Description

The trailing A denotes the ANSI (char) DLL entry point; the ActiveX/COM surface exposes only the Unicode form. Behaviour is identical to DAOpenFileWithEncryptionKey and string arguments are interpreted using the current SetAnsiMode code page

Opens an encrypted PDF for authorised recovery or investigation by accepting the hexadecimal file-encryption key directly instead of deriving it from a password

The file is opened through a source-read-only handle and cannot be appended to in place

Syntax

Delphi

Function DLDAOpenFileWithEncryptionKeyA(InstanceID: Integer; InputFileName, EncryptionKeyHex: PAnsiChar; Options: Integer): Integer; Stdcall;

DLL

int DLDAOpenFileWithEncryptionKeyA(int InstanceID, const char * InputFileName, const char * EncryptionKeyHex, int Options);

Parameters

InputFileNameThe path and name of the encrypted PDF
EncryptionKeyHexAn even-length ASCII hexadecimal key with no prefix or whitespace; revisions 2 through 4 require the exact key length declared by the encryption dictionary and revisions 5 through 7 require 32 bytes
OptionsZero requires an available verifier; PDF_RAW_KEY_ALLOW_UNVERIFIED permits an otherwise valid key only when the document has no usable verifier

Return values

Non-zeroA Direct Access file handle
0The input could not be opened; inspect LastErrorCode, including PDFLIB_ERROR_RAW_ENCRYPTION_KEY_INVALID for invalid syntax, length, options or verification

Remarks

Available revision 2 through 4 /U values and revision 5 through 7 /Perms values are always checked; PDF_RAW_KEY_ALLOW_UNVERIFIED never accepts a mismatch

Call DAGetEncryptionKeyValidation after opening to distinguish verified and explicitly unverified handles

The ANSI strings are widened with the current SetAnsiMode code page before the request is processed

The key is sensitive credential material and should be obtained, transported and stored under the same controls as a document password