Enterprise sürüm
Validation — Derin referans
Bir bakışta
“Bir bakışta” başlıklı bölümValidation modülü, ham PDF baytlarına karşı önceden hazırlanmış, salt okunur yapısal uyumluluk politikaları çalıştırır. Compliance::assess() tam olarak bir CompliancePolicy uygular ve önem derecesine göre bölümlenmiş bulgular ile zorunlu bir hukuki sorumluluk reddi içeren bir ComplianceReport döndürür. Politikalar; PDF/A-4 (artı e ve f varyantları), PAdES baseline yapısı, bir eIDAS yapısal profili, LTV/DSS sağlığı, ZUGFeRD / Factur-X, FDA 21 CFR Part 11 ve SEC Rule 17a-4 WORM arşivleme için sevk edilir. Her politika saf bir fonksiyondur: baytlar girer, bulgular çıkar. Validation belgeyi asla değiştirmez ve asla kriptografik doğrulama gerçekleştirmez.
Kullanılabilirlik ve lisanslama
“Kullanılabilirlik ve lisanslama” başlıklı bölümBu yetenek NextPDF Enterprise (nextpdf/enterprise) içinde sevk edilir ve bir Enterprise katmanı lisans zarfıyla etkinleşir. Bu yetkiye sahip olmayan bir dağıtım, yeteneğin sınıflarını yüklemez. Sürümleri karşılaştırın ve bir lisans alın.
Validation/Evidence yüzeyi, enterprise.compliance.evidence yeteneği tarafından lisanslanır. Reddedilen bir yetki, özelliği sessizce düşürmek yerine reddeder.
| Katman | Validation yüzeyi |
|---|---|
| Core | Süreç içi bayt akışı doğrulayıcıları ve bir dilbilgisi çapraz denetimi; sıfır bulgulu bir sonuç, bir sertifika değil denetlenmiş bir sonuçtur. |
| Pro | E-fatura katmanında süreç içi EN 16931 / Factur-X / ZUGFeRD doğrulaması; önceden hazırlanmış PDF/A-4, PAdES, LTV, FDA veya SEC politikaları yok. |
| Enterprise | PDF/A-4, PAdES, LTV, ZUGFeRD, FDA Part 11 ve SEC 17a-4 için birleşik bir raporla önceden hazırlanmış yapısal politikalar (bu modül). |
Enterprise Compliance harici-yan-bileşen ağ geçidi, ayrı, farklı bir modüldür.
Genel API yüzeyi
“Genel API yüzeyi” başlıklı bölümcomposer require nextpdf/enterprise:^3| Sembol | Parametreler | Varsayılan davranış | Döndürür | Şununla fırlatır veya başarısız olur | Notlar |
|---|---|---|---|---|---|
Compliance::__construct | ?ClockInterface $clock = null | Enjekte edilmediğinde sistem saati | — | — | DI dostu örnek biçimi; saat validatedAt değerini damgalar |
Compliance::run | string $pdfData, CompliancePolicy $policy, array $context = [] | Tam olarak bir politika uygular ve duvar saati süresini ölçer | ComplianceReport | Özel-politika istisnalarını yayar; yerleşik politikalar fırlatmak yerine bulguları toplar | Örnek yöntemi |
Compliance::assess (statik) | string $pdfData, CompliancePolicy $policy, array $context = [] | Varsayılan bir örnek oluşturur ve run() yöntemine devreder | ComplianceReport | run() ile aynı | Sıfır yapılandırmalı hızlı yol |
Policies::pdfA4 / ::pdfA4e / ::pdfA4f (statik) | — | ISO 19005-4:2020 uyarınca PDF/A-4 yapısal politikası | CompliancePolicy | — | e, 3D/zengin-medya açıklamalarına izin verir; f, gömülü-dosya ilişki denetimleri ekler |
Policies::padesBaseline (statik) | — | PAdES B-B yapısal denetimleri | CompliancePolicy | — | Yalnızca yapı; kriptografik doğrulama yok |
Policies::eidasQualified (statik) | — | eIDAS etiketli bir profil altında PAdES yapısal denetimleri | CompliancePolicy | — | Nitelik, TSP’ye ve nitelikli sertifikaya bağlıdır |
Policies::ltvHealth (statik) | — | DSS yapısal sağlık denetimi | CompliancePolicy | — | DSS varlığı, aktif nesne grafiğinden çözümlenir, hataya-kapalı |
Policies::zugferd (statik) | string $profile = 'BASIC' | Profil takma adını normalleştirir ve ZUGFeRD doğrulayıcısını oluşturur | CompliancePolicy | \ValueError (bilinmeyen profil) | Profiller: MINIMUM, BASIC, BASIC_WL, EN16931, EXTENDED |
Policies::fdaPart11 (statik) | — | FDA 21 CFR Part 11 yapısal politikası | CompliancePolicy | — | Denetim-izi karma-zincir bütünlüğü dahil yedi yapısal denetim |
Policies::sec17a4 / ::sec17a4Compatible / ::sec17a4Structural / ::sec17a4PreSign (statik) | — | Adlandırılmış katılıkta SEC 17a-4 WORM politikası | CompliancePolicy | — | Katılık, WormComplianceLevel ile eşlenir |
CompliancePolicy (arayüz) | — | Tek bir standart için strateji sözleşmesi | — | — | getName(), getIdentifier(), getStandardReference(), validate(); müşteri tarafından uygulanabilir |
ComplianceReport | Salt okunur değer nesnesi | Yapım anında önem derecesine göre bölümlenmiş bulgular | — | — | passes(), fails(), totalFindings(), getDisclaimer(); genel findings, errors, warnings, infos, policyName, policyId, standard, validatedAt, durationMs |
ComplianceFinding | Severity $severity, string $ruleId, string $message, string $clause = '', string $suggestion = '' | Madde referansı ve düzeltme ipucu ile tek bir kural sonucu | — | — | Statik error() / warning() / info(); isError() |
Severity (enum) | 3 dizeyle desteklenen durum | Error, Warning, Info | — | — | Yalnızca Error bir raporu başarısız kılar |
WormComplianceLevel (enum) | 4 dizeyle desteklenen durum | Full, Compatible, Structural, PreSign | — | — | requiresSignature(), requiresDocMdp(), requiresLtv(), maxDocMdpLevel() |
PdfAPolicy, PadesValidator, LtvHealthCheck, ZugferdValidator, Sec17a4WormPolicy, Fda\FdaPart11Policy | Sınıf başına yapıcılar | Her biri tek bir standart için CompliancePolicy uygular | validate() ürünü list<ComplianceFinding> | — | Policies aracılığıyla elde edin; Sec17a4WormPolicy::getLevel(), yapılandırılmış katılığı açığa çıkarır |
Fda\FdaSigningIntent (enum) | 6 dizeyle desteklenen durum | Authoring, Review, Approval, Certification, Verification, Rejection | — | — | toPdfReasonString(), kanonik /Reason dizesini üretir |
Fda\FdaAuditEvent::__construct | DateTimeImmutable $timestamp, string $actor, FdaSigningIntent $action, string $documentHash, string $certificateSerial, string $previousEventHash = '' | Yapım anında SHA-256 zincir karmasını hesaplar | — | InvalidArgumentException (zaman damgası UTC değil) | Genel eventHash; toXmpRdf(), tek bir XMP liste öğesini serileştirir |
Fda\FdaAuditTrail::addEvent | FdaAuditEvent $event | Zincir bağlantısı iz kuyruğuyla eşleştiğinde olayı ekler | self | InvalidArgumentException (karma zinciri kırık) | Ayrıca createEvent(), verifyChain(), getLastEventHash(), getEvents(), embedInMetadata() |
Fda\FdaSignatureEnforcer::configureSeedValue | FdaSigningIntent $intent, string $tsaUrl | FDA kısıtlı bir imza tohum-değeri yapılandırması oluşturur | SeedValueConfig | — | FDA neden kümesini, bir zaman damgasını ve SHA-256 veya daha güçlü özetleri gerektirir |
Fda\FdaSignatureEnforcer::applyTo | SequentialSigner $signer, SigningStrategy $strategy, string $signerName, FdaSigningIntent $intent, string $tsaUrl, string $fieldName = '', ?string $reason = null | Bir Pro SequentialSigner’a FDA kısıtlı bir imzalayıcı ekler | SequentialSigner | — | Kısıtlamaları üretilen imza alanına serileştirir |
namespace NextPDF\Enterprise\Validation;
final readonly class Compliance{ public function __construct(?ClockInterface $clock = null);
/** @param array<string, mixed> $context */ public function run(string $pdfData, CompliancePolicy $policy, array $context = []): ComplianceReport;
/** @param array<string, mixed> $context */ public static function assess(string $pdfData, CompliancePolicy $policy, array $context = []): ComplianceReport;}final class Policies{ public static function pdfA4(): CompliancePolicy; // also pdfA4e(), pdfA4f() public static function padesBaseline(): CompliancePolicy; public static function eidasQualified(): CompliancePolicy; public static function ltvHealth(): CompliancePolicy; public static function zugferd(string $profile = 'BASIC'): CompliancePolicy; public static function fdaPart11(): CompliancePolicy; public static function sec17a4(): CompliancePolicy; // also sec17a4Compatible(), sec17a4Structural(), sec17a4PreSign()}interface CompliancePolicy{ public function getName(): string;
public function getIdentifier(): string;
public function getStandardReference(): string;
/** * @param array<string, mixed> $context * @return list<ComplianceFinding> */ public function validate(string $pdfData, array $context = []): array;}
final readonly class ComplianceReport{ public const string LEGAL_DISCLAIMER;
public function passes(): bool;
public function fails(): bool;
public function totalFindings(): int;
public function getDisclaimer(): string;}Davranış sözleşmesi
“Davranış sözleşmesi” başlıklı bölümCompliance::assess() (statik) ve Compliance::run() (örnek, enjekte edilebilir bir Psr\Clock\ClockInterface ile) tam olarak bir politika uygular ve bir ComplianceReport döndürür. Dışarıdan gözlemlenebilir kurallar:
- Saf salt okunur. Her
CompliancePolicy::validate()saf bir fonksiyondur: baytlar girer, bulgular çıkar. Bir politika asla PDF baytlarını değiştirmez. Bu mimari değişmez, doğrulamayı otomatik düzeltmeden ve Evidence modülünden ayrı tutar. - Önem derecesi geçidi.
ComplianceReport::passes(), yalnızcaerrors === []olduğunda true’dur. Uyarılar ve bilgiler bir raporu asla başarısız kılmaz.fails()bunun tümleyenidir. - Zorunlu sorumluluk reddi.
ComplianceReport::getDisclaimer(), sabit hukuki-sorumluluk-reddi metnini döndürür. Bunu kullanıcıya yönelik çıktıda göstermek sözleşme gereğidir. - Rapor kökeni. Rapor; politikadan politika adını, tanımlayıcısını ve standart referansını, enjekte edilen veya sistem saatinden doğrulama zaman damgasını ve milisaniye cinsinden ölçülen süreyi taşır.
- Topla, iptal etme. Yerleşik politikalar, ilk hatada durmak yerine geçerli tüm denetimleri çalıştırır ve her bulguyu toplar.
- Yalnızca katalogdan erişilebilir DSS.
LtvHealthCheck, DSS varlığını aktif nesne grafiğinden çözümler: aktif trailer, ardından/Rootkatalog, ardından/DSSve alt anahtarları. Yorumlara, dizelere, yetim nesnelere veya geçersiz kılınmış revizyonlara yerleştirilen işaretçi baytlar sayılmaz. Ayrıştırılamayan girdi, DSS yok olarak ele alınır, bu nedenle denetim hataya-kapalıdır. Denetim yapısaldır; gömülü OCSP/CRL verisini kriptografik olarak doğrulamaz. - Yapısal imza denetimleri.
Policies::padesBaseline()vePolicies::eidasQualified(), PAdES yapısını yalnızca PDF düzeyinde doğrular. eIDAS kapsamındaki nitelik, bu modülün dışında kalan TSP’ye ve nitelikli sertifikaya bağlıdır. - Düzenlemeye tabi sektör politikaları yapısaldır.
FdaPart11Policy; imza varlığını,/Reasonniyetini,/Mimzalama zamanını,/Namekimliğini, JavaScript yokluğunu, FDA denetim-izi ad alanını ve karma-zincir bütünlüğünü denetler.Sec17a4WormPolicy, en fazla 13 WORM kuralını denetler;WormComplianceLevel, katılığı seçer.Full, DocMDP düzey 1 gerektirir,Compatible, düzey 2’yi kabul eder veStructural/PreSign, imza, DocMDP ve DSS kurallarını atlar. Her iki politika da yasal uyumluluğu tesis etmez. - ZUGFeRD bağlamı.
Policies::zugferd(), PDF düzeyindeki gereksinimleri her zaman denetler. Fatura XML’ini yalnızca çağıran,$contextiçinde['xml' => $xmlData]geçtiğinde doğrular; aksi takdirdezugferd-xml-skippedbilgi bulgusunu yayar. - Kurcalamaya karşı korumalı denetim izi.
FdaAuditTrail, yalnızca ekleme yapılan bir SHA-256 karma zinciridir.addEvent(), kırık bir bağlantıyı reddeder,verifyChain(), her karmayı yeniden türetir veembedInMetadata(), izihttp://ns.nextpdf.dev/fda/1.0/altında bir PDF/A uzantı şemasıyla XMP’ye yazar.
Uç durumlar ve başarısızlık modları
“Uç durumlar ve başarısızlık modları” başlıklı bölüm- PDF olmayan veya boş bir girdi, yerleşik politikalarda bir istisna yerine hata bulguları verir. Her zaman
passes()değerini denetleyin ve sorumluluk reddini gösterin. Policies::zugferd(), profil takma adlarını (BASIC_WL,EN16931,EN_16931) normalleştirir. Bilinmeyen bir profil, herhangi bir doğrulama çalışmadan önce fabrika zamanında\ValueErroryükseltir.- CRL’leri olan ancak OCSP yanıtı olmayan bir DSS, iptal-materyali denetimini karşılar; bulgu, kabul edilebilir alternatifi belirtir. İkisinin de bulunmaması bir hatadır.
- Eksik bir
/VRIsözlüğü veya/Certsdizisi, hata değil uyarı üretir; rapor yine de geçebilir. FdaAuditEvent, UTC olmayan herhangi bir zaman damgasını yapım anındaInvalidArgumentExceptionile reddeder.FdaAuditTrail::verifyChain(), kurcalanmış veya yeniden sıralanmış herhangi bir olayda false döndürür; asla fırlatmaz.- Özel
CompliancePolicyuygulamalarıvalidate()içinden fırlatabilir;Compliance::run()bunları yakalamaz, bu nedenle bu tür istisnalar çağırana yayılır.
FIPS modu davranışı
“FIPS modu davranışı” başlıklı bölümBu modül hiçbir imzalama, hiçbir kriptografik doğrulama ve hiçbir anahtar saklama gerçekleştirmez. FIPS modu algoritma politikası, Security ve Signature modülleri tarafından yönetilir. FdaSignatureEnforcer tohum değerleri, FDA’ya bağlı imza alanlarını SHA-256, SHA-384 veya SHA-512 özet yöntemleriyle kısıtlar.
Uygunluk
“Uygunluk” başlıklı bölümBu politikalar, yapısal öznitelikleri adlandırılmış standartlara göre denetler. ISO/ETSI profilleri için uygunluk kararı, nihai dosyanın artı harici bir doğrulayıcının özelliği olarak kalır.
| Davranış | Referans |
|---|---|
| Uygunluk, üreticiye göre değil standarda göre belirlenir | ISO 19005-4:2020 §5.2 |
| Uzun vadeli doğrulama için dijital imza sözlüğü / DSS | ISO 32000-2:2020 §12.8 |
DSS, belge kataloğunun DSS anahtarı tarafından tutulan bir sözlüktür | ISO 32000-2:2020 §12.8.4.3 |
| PAdES baseline imza düzeyleri | ETSI EN 319 142-1 §5.4.3 |
| EN 16931 profilinin anlamsal modeli (destekleyici referans) | Factur-X 1.08 (EN 16931) |
FDA 21 CFR Part 11 ve SEC 17a-4 politikaları yalnızca yapısal öznitelikleri denetler; bu düzenlemeler doğrulama bütüncesinin dışındadır ve hiçbir doğrulanmış uygunluk iddiası taşımaz. FDA bulgularının içindeki madde dizeleri (örneğin §11.50, §11.10(e)) ürün tarafından yayılan kural referanslarıdır. EN 16931 satırı, getirme tabanının altında bir destekleyici referanstır; katı bir uygunluk iddiası değildir. Bir standardın desteklenmesi ona uygunluk değildir ve uygunluk sertifikasyon değildir — NextPDF hiçbir sertifikaya sahip değildir ve hiçbirini vermez. Bu referans bir hukuki görüş değildir; yasal yeterlilik için uyumluluk ekibinize danışın.
Geliştirme notları
“Geliştirme notları” başlıklı bölüm- Validation, ağ G/Ç’si olmadan süreç içinde ve yerel olarak çalışır. Bir politika girdiyi değiştiremez.
- Güvenilmeyen kaynaklardan gelen PDF baytlarını düşmanca kabul edin. Yerleşik politikalar, rastgele baytlar üzerinde tümdür ve yapının çözümlenemediği yerde hataya-kapalı olur.
- Bir raporun kullanıcıya yönelik her sunumunda
ComplianceReport::getDisclaimer()değerini gösterin. - Raporlar ve bulgular, imzalı belgelerden ve denetim-izi meta verilerinden kişisel veri taşıyabilir (imzalayan adları, sertifika seri numaraları). Saklama ve en aza indirme denetimleri operatöre aittir.
- Özel politikalar
CompliancePolicyuygular; serileştirme ve önbelleğe alma için tüm politikalar genelindegetIdentifier()değerini benzersiz tutun. - Bu modül kriptografik işlevsellikle ilgilidir; kendi incelemenizde onu güvenlik açısından hassas olarak ele alın.
- Dahilî mekanizma ayrıntısı, kaynak deposunun dahilî belgelerinde kalır ve bu kılavuzun kapsamı dışındadır.
Yayın sınırı
“Yayın sınırı” başlıklı bölümBu sayfa yalnızca dışarıdan gözlemlenebilir davranışı ve desteklenen genel API yüzeyini belgeler. Dahilî ad alanı yolları, yardımcı sınıflar, mekanizma tabloları, runbook dosya adları ve bilet önekleri kapsam dışıdır.