TPadesTimestamp = record
TokenDer: TBytes;
GenTime: TDateTime;
PolicyOid: AnsiString;
Nonce: Int64;
end;
function PadesTsaAvailable: Boolean;
function PadesTsaBackendName: string;
function BuildTimeStampReq(const HashInput: TBytes; DigestOid: AnsiString;
Nonce: Int64; CertReq: Boolean): TBytes;
function BuildTimeStampReqFromDigest(const Digest: TSHA256Digest;
DigestOid: AnsiString; Nonce: Int64; CertReq: Boolean): TBytes;
function ParseTimeStampResp(const RespDer: TBytes; ExpectedNonce: Int64;
out Ts: TPadesTimestamp): Boolean; overload;
function ParseTimeStampResp(const RespDer: TBytes; ExpectedNonce: Int64;
const ExpectedDigest: TSHA256Digest; out Ts: TPadesTimestamp): Boolean; overload;
function ValidateTimeStampToken(const TokenDer: TBytes;
const ExpectedDigest: TSHA256Digest; out Ts: TPadesTimestamp): Boolean;
function RequestTimestamp(const TsaUrl: string;
const SignatureValueOctets: TBytes; Nonce: Int64): TPadesTimestamp;
function RequestTimestampDigest(const TsaUrl: string;
const Digest: TSHA256Digest; Nonce: Int64): TPadesTimestamp;
TPadesTimestampProc = function(const TsaUrl: string;
const Digest: TSHA256Digest; Nonce: Int64): TPadesTimestamp;
var PadesTimestampOverride: TPadesTimestampProc;
var PadesTsaAvailableOverride: Integer;
FPdfTsa mengimplementasikan sisi klien RFC 3161 untuk tanda tangan PAdES jangka panjang. Unit ini mengenkode pesan TimeStampReq, mendekode pesan TimeStampResp, dan menawarkan wrapper praktis yang menjalankan pertukaran HTTP penuh terhadap URL timestamp authority (TSA)
Backend transportnya dapat ditukar: di Windows backend FPdfTsaWin berbasis WinHttp dipakai secara otomatis; PadesTsaAvailable melaporkan apakah ada backend yang terpasang dan PadesTsaBackendName menyebutkan namanya
Dua fungsi praktis, RequestTimestamp dan RequestTimestampDigest, meng-hash nilai tanda tangan (atau menerima digest yang sudah dihitung), membangun request, mengirimkannya, dan mem-parse response dalam satu panggilan, sekaligus melakukan verifikasi nonce dan digest
| Function | Description |
|---|---|
PadesTsaAvailable | Mengembalikan True ketika backend transport timestamp tersedia di platform saat ini |
PadesTsaBackendName | Mengembalikan nama tampilan backend timestamp yang aktif |
BuildTimeStampReq | Membangun pesan TimeStampReq dari masukan hash mentah, OID algoritma digest, nonce pilihan pemanggil, dan flag permintaan sertifikat |
BuildTimeStampReqFromDigest | Membangun pesan TimeStampReq dari digest SHA-256 yang sudah dihitung, melewati langkah hashing internal |
ParseTimeStampResp (2 overloads) | Mem-parse TimeStampResp dan memverifikasi nonce; overload kedua tambahan memverifikasi bahwa digest yang diberi timestamp cocok dengan ExpectedDigest |
ValidateTimeStampToken | Memvalidasi TimeStampToken mandiri terhadap digest SHA-256 yang diharapkan dan mengembalikan data timestamp hasil parse |
RequestTimestamp | Meng-hash nilai tanda tangan, mengirim request ke TsaUrl, dan mengembalikan TPadesTimestamp yang terverifikasi |
RequestTimestampDigest | Sama dengan RequestTimestamp tetapi menerima digest yang sudah dihitung alih-alih nilai tanda tangan mentah |
| Type | Description |
|---|---|
EPadesTsa | Exception yang dimunculkan untuk kegagalan encoding timestamp, transport, atau verifikasi |
TPadesTimestamp | Record dengan field TokenDer, GenTime, PolicyOid, dan Nonce untuk timestamp yang dikembalikan |
TPadesTimestampProc | Signature callback yang dipakai untuk menggantikan akuisisi timestamp berbasis digest |
| Variable | Description |
|---|---|
PadesTimestampOverride | TPadesTimestampProc opsional yang dipakai sebagai pengganti backend HTTP platform |
PadesTsaAvailableOverride | Override ketersediaan di mana 0 memakai probe backend, 1 memaksa tersedia, dan -1 memaksa tidak tersedia |
PadesTimestampOverride dan PadesTsaAvailableOverride memungkinkan aplikasi host mengganti transport timestamp miliknya sendiri untuk pengujian atau untuk stack HTTP kustomNonce yang acak secara kriptografis dan verifikasi melalui ParseTimeStampResp untuk mendeteksi penggantian response