Windows İmzalama Timestamp'leri
Windows sign işlemi, senkron bir uygulama callback'i üzerinden gerçek bir RFC3161 timestamp isteyebilir ve PDF'i, yanıtı kimikledikten sonra yayınlabilir
İmzalama options'ları
{"schemaVersion":1,"type":"sign","incremental":true,
"existingField":true,"fieldName":"ApprovalOne",
"pfxFile":"C:/keys/signer.pfx","pfxPassword":"password",
"cades":true,"digestMethod":"SHA384","timestamp":true,
"timestampURL":"https://tsa.example/service",
"timestampTrustedCAFile":"C:/trust/tsa-roots.pem",
"timestampTrustedCRLFile":"C:/trust/tsa-crls.pem",
"requireTimestampRevocation":true}
timestamp varsayılan false'tur; true değeri, uygulama transport callback'ini ve güvenilen PEM sertifika kökleri içeren açık bir timestampTrustedCAFile gerektirir
digestMethod, gerçek belge CMS digest'ini ve timestamp imprint algoritmasını SHA256, SHA384 veya SHA512'den seçer; messageImprint, gerçek CMS imza octet'larını tam olarak bir kez hash eder
timestampTrustedCRLFile, isteğe bağlı olarak PEM CRL'leri sağlar; requireTimestampRevocation o dosyayı gerektirir ve issuer ve sertifika CRL denetimlerini sağlar; iptal edilmiş sertifikalar ve süresi geçmiş kanıt dâhil
Trust girdi dosyaları, imzalama sırasında yazma paylaşımı reddedilmiş açık kalır ve birleşik boyutları, OpenSSL onları yüklemeden önce memoryBytes'in sekizde biriyle sınırlıdır
Her istek, taze kriptografik bir nonce içerir ve TSA sertifikalarını ister; yanıt doğrulaması, istek nonce'unu, imprint'i, eksiksiz CMS imzasını, ESS signing-certificate bağını, sertifika zincirini ve kritik timestamp EKU'sunu kimikler
C ABI transport
hpdf_signing_operation_v1'i hpdf_document_execute_json_v1'e geçirin, operation.struct_size'ı sizeof(hpdf_signing_operation_v1)'a ayarlayın ve timestamp_transport ile timestamp_user_data sağlayın
İşlem öneki, mevcut hpdf_operation_v1 düzenini ve ABI sürümünü korur; sıradan işlemler orijinal yapıyı kullanmaya devam eder
Callback, eksiksiz DER TimeStampReq'ı ve ödünç bir response_io alır; eksiksiz DER TimeStampResp'i response_io.write üzerinden yazın ve bir hpdf_status döndürün
Callback, çağıran iş parçacığında çalışır ve istek ile yanıt IO işaretçileri yalnızca o çağrı sırasında geçerlidir; uygulama, ağ transport'unu, kimiklemeyi, timeout'u ve bağlantı politikasına sahiptir
response_io.is_cancelled, işlem girdisini, çıktısını ve sonuç cancellation callback'lerini yoklar; yanıt yazmaları, callback belleğini kopyalamadan önce memoryBytes'in sekizde biriyle ek sınırlı 16 MiB maksimumu uygular
Bir yanıt yazma veya cancellation hatası, callback daha sonra başarı döndürse bile işlem için aktif kalır; başarısız yanıtlar PDF baytları yayınlayamaz
Pascal servis girişi
THPDFJobProcessor.ExecuteLoadedSigningOperation, yüklenmiş belgeyi, işlem JSON nesnesini, çıktı stream'ini, checkpoint'i, THPDFHeadlessTimestampTransport callback'ini ve opak callback context'ini kabul eder
Pascal transport, istek DER alır ve yanıt DER döndürür; iç içe senkron imzalama, iç işlem döndüğünde kapsayan callback context'ini geri yükler
Seed değerleri ve köken
Zorunlu bir SV TimeStamp kısıtı, gerçek kimikli bir yanıtla karşılanır; zorunlu TimeStamp dictionary'si bir URL belirttiğinde timestampURL o değerle eşleşmelidir
timestampURL, uygulama-belirtilmiş transport kökenidir; bildirilen URL'yi karşılaştırmak, HTTPS sunucu kimliğini kurmaz ve uygulama, seçtiği uç noktayı kimiklemelidir
Uygulama callback'i olmayan bağımsız dosya işleri, timestamp isteği yapamaz; tek başına bir URL dizesi, zorunlu bir timestamp'i karşılayamaz