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

Bkz. artımlı PFX imzalama ve native RFC3161 doğrulaması