Enterprise الإصدار
التحقق من التوقيع — مرجع متعمّق
لمحة سريعة
قسم بعنوان «لمحة سريعة»هذه الصفحة هي المرجع المتعمّق لسطح جانب التحقق من AdES في NextPDF Enterprise. نقطة الدخول هي NextPDF\Enterprise\Security\Validation\AdESValidationEngine. وهي تنفّذ تدفّقات التحقق في NextPDF المصمَّمة على نموذج ETSI لعمليات الفحص الأساسي، والمقترن بالوقت، وطويل الأمد، والأرشيفي بالطوابع الزمنية: التحقق الأساسي، والتحقق مع الوقت، والتحقق مع بيانات طويلة الأمد، والتحقق من سلسلة تغطية DocTimeStamp الأرشيفية. والنتائج هي قيم ValidationReport تحمل حالات تعداد MainIndication وSubIndication بقيم نصية من نوع URN الخاص بـETSI. الأسطح الداعمة الموثّقة هنا: واجهة SPI المسماة SignatureDataExtractor وتطبيقها CmsSignatureDataExtractor، والماسح على مستوى البايت PdfSignatureDictionaryScanner، وسطح التحقق من المسار NextPDF\Enterprise\Security\Pki، وBatchSignatureValidator. للإرشاد على مستوى سير العمل، راجع التحقق من التوقيع: جانب التحقق التشفيري لـ AdES / PAdES.
التوفّر والترخيص
قسم بعنوان «التوفّر والترخيص»تُشحن هذه القدرة ضمن NextPDF Enterprise (nextpdf/enterprise) وتُفعَّل بمظروف ترخيص من فئة Enterprise. ونشرٌ بلا ذلك الاستحقاق لا يُحمّل أصناف هذه القدرة. قارن بين الإصدارات واحصل على ترخيص.
سطح واجهة برمجة التطبيقات العامة
قسم بعنوان «سطح واجهة برمجة التطبيقات العامة»| الرمز | المعاملات | السلوك الافتراضي | القيمة المُعادة | يرمي أو يفشل بـ | ملاحظات |
|---|---|---|---|---|---|
AdESValidationEngine::__construct | 11 معاملاً اختيارياً: ?PathValidatorInterface $chainValidator، ?SignatureDataExtractor $extractor، ClockInterface $clock، ?LoggerInterface $logger، string $defaultPolicy، NetworkPolicy $networkPolicy، وخمسة متعاونين اختياريين للتحقق | جميع الإعدادات الافتراضية مغلقة عند الفشل: مُتحقِّق مسار Pki فوق ساعة المحرّك، بلا مستخرِج، بلا مخزن ثقة TSA | محرّك جديد | لا يرمي | مع غياب مخزن الثقة، يُبلّغ تقييمُ سلسلة TSA عن عدم الثقة؛ وهذا يُطابَق إلى INDETERMINATE، ولا يكون تمريراً أبداً |
AdESValidationEngine::validateBasic | string $signedData، string $signature | التحقق الأساسي: التنسيق، والملخّص، والتشفير، والخوارزمية الضعيفة، والسلسلة، والإبطال المُقيَّد بالمصدر | ValidationReport | لا يرمي؛ إخفاقات الاستخراج والمسار تُطابَق إلى تقارير مغلقة عند الفشل | بلا مستخرِج، فحوص حماية فقط؛ راجع الحالات الحدّية |
AdESValidationEngine::validateWithTime | string $signedData، string $signature، DateTimeImmutable $claimedTime | التحقق الأساسي أولاً؛ ثم مقارنة نافذة الشهادة والإبطال بالوقت المُدّعى | ValidationReport | لا يرمي | بوابة صارمة للطابع الزمني للتوقيع عند وجود السمة؛ ويبقى $claimedTime مِرساةَ الوقت |
AdESValidationEngine::validateWithLongTermData | string $signedData، string $signature، array $dssData (certs/ocsps/crls) | يُشترط تمرير أساسي؛ بوابة الطابع الزمني للتوقيع مُسلّحة بتقييم TSA عند genTime؛ وبوابات POE وإبطال DSS والأرشفة | ValidationReport | لا يرمي | NetworkPolicy::STRICT_OFFLINE مع بيانات مُضمَّنة غير كافية يُنتج INDETERMINATE / TRY_LATER |
AdESValidationEngine::validateArchivalTimestampChain | string $pdfBytes، array $dssData = []، ?TrustAnchorStoreInterface $anchors = null | سلسلة تغطية DocTimeStamp مبنية على الأدلة فوق بايتات ByteRange المضبوطة | ValidationReport | لا يرمي عند البايتات العدائية | TOTAL_PASSED فقط لسلسلة موثوقة تغطّي حتى EOF |
MainIndication | — | تعداد مدعوم بسلسلة نصية، ثلاث حالات | — | — | قيم URN الخاصة بـETSI؛ راجع قائمة الحالات أدناه |
SubIndication | — | تعداد مدعوم بسلسلة نصية، خمس عشرة حالة | — | — | قيم URN الخاصة بـETSI؛ راجع قائمة الحالات أدناه |
ValidationReport::__construct | MainIndication $mainIndication، ?SubIndication $subIndication، DiagnosticData $diagnosticData، DateTimeImmutable $validationTime، string $validationPolicy = '' | نتيجة تحقق غير قابلة للتغيير (final readonly) | تقرير جديد | لا يرمي | isPassed()، isFailed()، isIndeterminate()، toArray() |
DiagnosticData::__construct | array $certificateChain، array $timestamps، array $revocationData، string $validationPolicy، string $signatureFormat، array $warnings (جميعها بقيم افتراضية) | حاوية أدلة غير قابلة للتغيير؛ مسار تدقيق فقط | قيمة جديدة | لا يرمي | toArray() يُسلسِل المراجع لأغراض التقرير |
SignatureDataExtractor::extract | string $signedData، string $signature | SPI: يحلّل CMS ويستخرج مكوّنات التحقق | ExtractedSignatureData | SignatureExtractionException عندما يتعذّر تحليل التوقيع | واجهة؛ تفصل تحليل ASN.1 عن المحرّك |
CmsSignatureDataExtractor::extract | string $signedData، string $signature | استخراج مع تحقق تشفيري من توقيع PAdES أساسي منفصل | ExtractedSignatureData | SignatureExtractionException فقط عندما يتعذّر تحليل CMS كلياً | إخفاق التشفير أو الربط يُعيد بيانات بقيمة cryptoValid / hashValid خاطئة؛ ولا يرمي لأجل ذلك أبداً |
PdfSignatureDictionaryScanner::scan | string $pdfBytes | مسح على مستوى البايت لقواميس /ByteRange + /Contents بفحوص تقاطعية مانعة للانتحال بمطابقة دقيقة | list<PdfSignatureOccurrence> | كلّي؛ لا يرمي أبداً؛ المرشّحات المشوّهة تُتخطّى | مرتّبة حسب نهاية التغطية، الأبكر أولاً |
PathValidatorInterface::validate | array $chain، ?DateTimeImmutable $validationTime = null، array $initialPolicies = [] | التحقق من المسار وفق RFC 5280 §6.1.4 مع معالجة السياسات | PathValidationResult | PathValidationException عند سلسلة غير صحيحة بنيوياً أو تجاوز حدّ عدائي | السلسلة تبدأ بالكيان النهائي أولاً والمِرساة أخيراً |
PathValidatorInterface::validateWithAiaChasing | array $chain، ?DateTimeImmutable $validationTime = null | حلّ AIA للوسائط المفقودة، ثم التحقق | PathValidationResult | PathValidationException | عمليات الجلب مُقيَّدة بحدود المهلة والبايتات |
CertificateChainValidator | المُنشئ: المحرّك، PathValidationOptions، الساعة، المُسجِّل؛ الساكن withDefaults() | تطبيق SPI بالحدود العدائية الافتراضية | PathValidationResult من كلتا الطريقتين | PathValidationException | يُرمى أيضاً عندما يتعذّر تصدير OpenSSLCertificate إلى PEM |
PathValidationOptions::__construct | حدود (maxDepth، maxPolicyFanout، fetchTimeoutSeconds، fetchSizeCapBytes) بالإضافة إلى أعلام السياسة، ?TrustAnchorStoreInterface $trustAnchors، bool $requireTrustedAnchor | عمق 32، تفرّع 64، 5 ثوانٍ لكل جلب، 10 MiB لكل جلب؛ جميع الأعلام خاطئة | خيارات جديدة | لا يرمي | مصانع: defaults()، strict()، withTrustAnchors() |
PathValidationResult::__construct | bool $valid، string $trustAnchorFingerprint، DateTimeImmutable $validatedAt، array $validPolicies، ?RevocationCheckResult $revocation، bool $trustAnchorTrusted، array $fetchedCertificates، array $failureReasons | نتيجة غير قابلة للتغيير؛ trustAnchorTrusted افتراضه خاطئ (مغلق عند الفشل) | قيمة جديدة | لا يرمي | عضوية الثقة متمايزة عن الصحة البنيوية |
PolicyProcessor | المُنشئ: PolicyTreeState $state، PathValidationOptions $options؛ processCertificate(string $certDer, int $depth, bool $selfIssued)، finalizeWrapUp()، tree() | توسيع شجرة السياسات وتخطيطها وإنهاؤها وفق RFC 5280 §6.1.4 | void / list<non-empty-string> / PolicyTree | PathValidationException عند أي إخفاق في معالجة السياسة (مغلق عند الفشل) | الإنهاء يُعيد معرّفات OID للسياسات الباقية، باستثناء anyPolicy |
PolicyTree | attach(PolicyTreeNode $node, PathValidationOptions $options)، enforceFanout(...)، remove(...)، بالإضافة إلى استعلامات القراءة | حالة valid_policy_tree مع فهرس عمق | يتغيّر حسب الطريقة | PathValidationException عندما يتجاوز عددُ الأوراق الحيّة حدَّ التفرّع | يكشف ANY_POLICY_OID (2.5.29.32.0) |
NameConstraintsChecker::processCertificate | string $certDer، bool $applyNameCheck | يجمع ويُنفّذ الشُّجيرات المسموحة / المستثناة وفق RFC 5280 §6.1.4(g) | void | PathValidationException عند شُجيرة منتهَكة، أو شكل GeneralName غير مدعوم في قيد، أو تجاوز حدّ | الأسماء غير القابلة للمقارنة تُعالَج بالإغلاق عند الفشل |
TrustAnchorStoreInterface::containsFingerprint | string $anchorDerSha256Hex | العضوية بواسطة SHA-256 ست عشري بأحرف صغيرة فوق شهادة DER للمِرساة | bool | لا يرمي | درزة الثقة التي يستشيرها مُتحقِّق المسار |
BatchSignatureValidator::validate | array $inputs (list<DocumentSignatureInput>) | التحقق من توقيعات متعددة المستندات مع تخزين مؤقت للإبطال لكل دفعة | BatchValidationReport | InvalidArgumentException عند قائمة فارغة؛ وحارس موارد يرفض الدفعات التي تتجاوز 1000 مستند | يوجد في NextPDF\Enterprise\Signature |
final class AdESValidationEnginepublic function validateBasic(string $signedData, string $signature): ValidationReportpublic function validateWithTime( string $signedData, string $signature, DateTimeImmutable $claimedTime,): ValidationReportpublic function validateWithLongTermData( string $signedData, string $signature, array $dssData,): ValidationReportpublic function validateArchivalTimestampChain( string $pdfBytes, array $dssData = [], ?TrustAnchorStoreInterface $anchors = null,): ValidationReportpublic function validate( array $chain, ?DateTimeImmutable $validationTime = null, array $initialPolicies = [],): PathValidationResult;public function validateWithAiaChasing( array $chain, ?DateTimeImmutable $validationTime = null,): PathValidationResult;public static function withDefaults( ?ClockInterface $clock = null, ?AiaChaser $aiaChaser = null, ?LoggerInterface $logger = null,): selfpublic function containsFingerprint(string $anchorDerSha256Hex): bool;public function extract(string $signedData, string $signature): ExtractedSignatureData;public function scan(string $pdfBytes): arraypublic function validate(array $inputs): BatchValidationReportتعدادات المؤشّرات. حالات MainIndication: TOTAL_PASSED، TOTAL_FAILED، INDETERMINATE. القيم الداعمة تتبع النمط urn:etsi:019102:mainindication:total-passed (أحرف صغيرة، بشرطات). حالات SubIndication: HASH_FAILURE، SIG_CRYPTO_FAILURE، REVOKED، EXPIRED، NOT_YET_VALID، NO_POE، TRY_LATER، CERTIFICATE_CHAIN_GENERAL_FAILURE، FORMAT_FAILURE، REVOKED_CA_NO_POE، CRYPTO_CONSTRAINTS_FAILURE، POLICY_PROCESSING_FAILURE، REVOCATION_OUT_OF_BOUNDS_NO_POE، NO_SIGNING_CERTIFICATE_FOUND، TIMESTAMP_ORDER_FAILURE. كلٌّ منها مدعوم بـurn:etsi:019102:subindication:<CASE_NAME> باسم الحالة المضبوط.
عقد السلوك
قسم بعنوان «عقد السلوك»- تقارير داخلة، تقارير خارجة. نقاط الدخول الأربع للمحرّك تُعيد
ValidationReportعند المدخلات العدائية بدلاً من الرمي. وSignatureExtractionExceptionالمُلتقَط يُوجَّه إلى مسار الحماية؛ وPathValidationExceptionالمُلتقَط يُطابَق إلىTOTAL_FAILED/CERTIFICATE_CHAIN_GENERAL_FAILURE. - ترتيب التحقق الأساسي. فحص التنسيق أولاً؛ والبنية غير القابلة للتحليل هي
TOTAL_FAILED/FORMAT_FAILURE(EN 319 102-1 §5.3.4). ثم الملخّص (HASH_FAILURE) والتحقق التشفيري (SIG_CRYPTO_FAILURE)، بما يطابق نتائج اللبنات في EN 319 102-1 §5.2.7.4. ويُعيد المُتحقِّق حسابَ الملخّص ويقارنه بسمة التوقيعmessageDigest(RFC 5652 §5.6)؛ والملخّصات المقدَّمة من المُنتِج لا يُوثَق بها أبداً. - الخوارزميات الضعيفة تتدنّى. توقيعٌ يُتحقَّق منه بموجب SHA-1، أو بربط ضعيف لشهادة التوقيع، يُعيد
INDETERMINATE/CRYPTO_CONSTRAINTS_FAILURE، ولا يكونTOTAL_PASSEDأبداً. ويُعيد مسار الوقت تأكيد ذلك حتى لا يُغسَل توقيعٌ ضعيف ليصبح تمريراً صالحاً زمنياً. - بوابة مصدر الإبطال. لا تُستشار أعلام الإبطال في المستخرِج إلا عندما يكون المستخرِج قد أجرى فعلاً فحصَ إبطال (
revocationCheckedصحيح). والافتراض غير المفحوص ليس «مُتحقَّقاً أنه غير مُبطَل» ولا مُطلِقاً لـREVOKED. ودليل الإبطال يُثبَت عبر مسار DSS. - انتشار حالة عدم التمرير. مسارا الوقت وطويل الأمد لا يرفعان أبداً نتيجةً أساسية غير مُمرَّرة. يوجد استثناء واحد:
INDETERMINATE/REVOKEDالأساسي يُحسَم بمقارنته بـ$claimedTime؛ فالإبطال عند الوقت المُدّعى أو قبله هوTOTAL_FAILED/REVOKED. وهذا يعكس نمط EN 319 102-1 §5.3.4 في حسم حالة غير محدّدة متعلقة بالإبطال بدليل زمني. وعندما يتعذّر إجراء المقارنة، يُنشَر التقرير الأساسي غير المحسوم حرفياً. - ربط صارم للطابع الزمني للتوقيع (مغلق عند الفشل؛ كسر توافق). عندما يحمل CMS سمةً غير موقَّعة
id-aa-timeStampToken، يُطلِق وجودُها الإنفاذَ في مساري الوقت وطويل الأمد معاً؛ ولا يوجد وضع تحذير فقط. يجب أن تكون العدّية سمةً واحدة بالضبط بقيمة واحدة بالضبط (EN 319 122-1 §5.3)؛ وأي شكل آخر هوTOTAL_FAILED/FORMAT_FAILURE. يجب أن يُتحقَّق من الرمز تشفيرياً من طرف إلى طرف؛ ورمزٌ غير قابل للتحقق، أو تعارض فارقي في التحليل، أو عدم تطابق البصمة هوINDETERMINATE/TIMESTAMP_ORDER_FAILURE. وخوارزمية بصمة غير مدعومة أو SHA-1 هيINDETERMINATE/CRYPTO_CONSTRAINTS_FAILURE. وقاعدة الربط هي RFC 3161 Appendix A: يجب أن يساويmessageImprintالخاص بالرمز تجزئةَ بايتات قيمةsignatureفي SignerInfo، مع المقارنة في زمن ثابت. - بوابات المسار طويل الأمد. في المسار المُعلَّم بالبند 5.4، يتلقّى الطابع الزمني المربوط للتوقيع إضافةً إلى ذلك تقييمَ شهادة TSA عند
genTimeالخاص بالرمز؛ ومِرساةٌ غير موثوقة هيINDETERMINATE/CERTIFICATE_CHAIN_GENERAL_FAILURE، ولا تكون تمريراً أبداً. وNetworkPolicy::STRICT_OFFLINEمع مادة DSS مُضمَّنة غير كافية يُعيدINDETERMINATE/TRY_LATER. وكلٌّ من نتائج إثبات الوجود وإبطال DSS وسلسلة الأرشفة يقفز مباشرةً إلىINDETERMINATEبمؤشّر فرعي مُطابَق. - بوابات سلسلة الأرشفة. غياب أي DocTimeStamp هو
INDETERMINATE/NO_POE. وByteRange غير مطابق بنيوياً هوTOTAL_FAILED/FORMAT_FAILURE. ويجب على كل رمز أن يُتحقَّق منه، وأن يربط بصمته بالبايتات المغطّاة بـByteRange بالضبط، وأن يجتاز تخطيط أوجه TSA عند genTime (EXPIRED،NOT_YET_VALID،REVOKED_CA_NO_POE،CERTIFICATE_CHAIN_GENERAL_FAILURE، أوTRY_LATERتحت وضع عدم الاتصال الصارم). ويُنفَّذ الترتيب:genTimeغير متناقص، وتغطية متقدّمة بصرامة، ورموز لاحقة تحتوي ثقب/Contentsللرمز السابق. ويجب أن يغطّي الرمزُ الأحدث البايتَ الأخير؛ والبايتات المتأخِّرة هيTIMESTAMP_ORDER_FAILURE. وgenTimeمتقدّم بأكثر من 300 ثانية على ساعة المُتحقِّق هوTIMESTAMP_ORDER_FAILURE. - التشخيصات لا تُقرِّر أبداً. مُدخلات إثبات الوجود في
DiagnosticData::$timestampsهي مسار تدقيق فقط. وهي لا تغيّر مؤشّراً أبداً، ويُعاد ضبط المُجمِّع عند كل نقطة دخول. - حدود Pki تسبق التشفير. حدود
PathValidationOptions(عمق 32، تفرّع سياسات 64، 5 ثوانٍ و10 MiB لكل جلب) تُفحَص قبل العمل المكلِف. وPathValidationResult::$trustAnchorTrustedمتمايز عن$valid؛ وrequireTrustedAnchorيجعل نهايةً غير مؤكَّدة غيرَ صحيحة. وstrict()يُفعّلrequireExplicitPolicy، ونقل الإبطال بالفشل الصارم، وrequireTrustedAnchor. وصحة المسار نسبية إلى المِرساة وفق RFC 5280 §6.1: المسار الصحيح يبدأ عند مِرساة ثقة مُقدَّمة كمدخل. - سطح الدفعات.
BatchSignatureValidator::validate()يرميInvalidArgumentExceptionعند قائمة فارغة ويرفض الدفعات التي تتجاوز 1000 مستند عبر حارس موارد. وPHP تمتلك كل التحقق التشفيري في ذلك خط الأنابيب.
الحالات الحدّية وأنماط الفشل
قسم بعنوان «الحالات الحدّية وأنماط الفشل»- المحرّك الافتراضي بلا مستخرِج.
new AdESValidationEngine()يُجري فحوص حماية فقط: توقيع فارغ أو بيانات موقَّعة فارغة هوTOTAL_FAILED؛ وأي زوج غير فارغ يُحسَم إلىINDETERMINATE/NO_SIGNING_CERTIFICATE_FOUND، ولا يكونTOTAL_PASSEDأبداً. احقنNextPDF\Enterprise\Security\Validation\CmsSignatureDataExtractorللحصول على التحقق التشفيري. - فحص ثقة TSA الافتراضي بلا مخزن. عندئذ تُبلّغ كل سلسلة TSA عن عدم الثقة، فتبقى نتائج الطابع الزمني للتوقيع الأرشيفية وطويلة الأمد
INDETERMINATE. زوِّد المراسي عبرvalidateArchivalTimestampChain(..., $anchors)أوTsaCertificateAtGenTimeCheckمُهيّأ. $pdfBytesفارغ.validateArchivalTimestampChain('')يُعيدTOTAL_FAILED/FORMAT_FAILURE.- الطوابع الزمنية للتوقيع السابقة للإصلاح لا يمكن أن تمرّ. الرموز التي أنتجتها إصدارات NextPDF قبل إصلاح الربط الصارم بصمت مدخلاً مختلفاً. وهي تفشل في ربط Appendix A بشكل دائم؛ أعد التوقيع وأعد الطبع الزمني لاستعادة نتيجة إيجابية. وهذا كسر توافق متعمَّد وموثَّق.
- طوابع DocTimeStamp مكرّرة أو متداخلة. تكرارٌ في المراجعة نفسها، أو تغطية متساوية أو متداخلة، أو رمز لاحق لا يحتوي ثقب توقيع الرمز السابق، يفشل في بوابة الترتيب.
- الماسح كلّي وعلى مستوى البايت.
scan()يتخطّى المرشّحات المشوّهة أو المنتحَلة بصمت؛ و/ByteRangeخادع داخل تدفّق محتوى مرفوض. وهو لا يحلّ الكائنات غير المباشرة ولا يجتاز جدول الإحالات المرجعية. - التغطية، لا القابلية للوصول.
validateArchivalTimestampChain()يُثبت تغطيةً تشفيرية لنطاق البايتات حتى نهاية الملف. وتحليل القابلية للوصول على مستوى الكائن (مثلاً، جذر مستند مُعاد التوجيه داخل مراجعة مغطّاة) معلَن أنه خارج النطاق. - الاستخدام المباشر لـPki يرمي. استدعاء تطبيقات
PathValidatorInterfaceمباشرةً يُظهِرPathValidationExceptionعند السلاسل غير الصحيحة بنيوياً، والحدود المتجاوَزة، وأشكال القيود غير المدعومة، وفشل تصدير PEM لمقبضOpenSSLCertificate. والمحرّك يلتقط هذا الصنف؛ أما مستدعوك أنت فعليهم معالجته.
سلوك وضع FIPS
قسم بعنوان «سلوك وضع FIPS»يقبل جانبُ التحقق RSA PKCS#1 v1.5 مع SHA-2 وECDSA على P-256/P-384/P-521. ورموز RSASSA-PSS وEdDSA وSHA-3 تفشل مغلقةً بوصفها غير مدعومة؛ وSHA-1 يتدنّى إلى CRYPTO_CONSTRAINTS_FAILURE. وتحت ملف سياسة التشفير Enterprise FIPS 140-3 (الموثَّق مع وحدة الأمان)، ينطبق القيد على أي الخوارزميات تُقبَل؛ أما تدفّق التحقق نفسه — إعادة حساب الملخّص، وفحوص التوقيع، والربط، والتحقق من المسار — فلا يتغيّر. ولا تملك NextPDF أي شهادة FIPS 140-3 ولا تدّعي هذه الصفحة أياً منها.
المطابقة
قسم بعنوان «المطابقة»| الادّعاء | المعيار | البند |
|---|---|---|
| التحقق من التوقيع الأساسي لبنة قابلة لإعادة الاستخدام للتحقق بالطابع الزمني والتحقق المقترن بالوقت. | ETSI EN 319 102-1 | §5.3.1 |
إخفاق السلامة يُطابَق إلى HASH_FAILURE؛ وفحص توقيع فاشل يُطابَق إلى SIG_CRYPTO_FAILURE. | ETSI EN 319 102-1 | §5.2.7.4 |
| فحص التنسيق يجري أولاً وعدم التمرير يوقف العملية. | ETSI EN 319 102-1 | §5.3.4 |
| حالة غير محدّدة متعلقة بالإبطال يمكن حسمها بدليل زمني. | ETSI EN 319 102-1 | §5.3.4 |
| مسار اعتماد صحيح يبدأ عند مِرساة ثقة مُقدَّمة كمدخل. | RFC 5280 | §6.1 |
المُتحقِّق يُعيد حساب ملخّص المحتوى؛ ويجب أن يساوي سمة التوقيع messageDigest. | RFC 5652 | §5.6 |
messageImprint الخاص بالطابع الزمني للتوقيع يُجزّئ قيمة الحقل signature في SignerInfo. | RFC 3161 | Appendix A |
سمة signature-time-stamp تحمل AttributeValue واحداً بالضبط. | ETSI EN 319 122-1 | §5.3 |
جميع البنود مُعاد صياغتها؛ ولا تُعيد NextPDF إنتاج النص المعياري. لا تُقدّم NextPDF أي ادّعاء مطابقة أو اعتماد لـ AdES / PAdES. فدعم معيارٍ ما ليس مطابقةً له، والمطابقة ليست اعتماداً — ولا تملك NextPDF أي اعتماد ولا تمنح أياً منه. والمحرّك يُنفّذ إجراءات التحقق المذكورة كقدرة؛ وهو ليس خدمة تحقق مؤهَّلة أو معتمَدة، وتقرير TOTAL_PASSED بيانٌ تشفيري، لا حكمٌ قانوني. وقيم التعداد تعيد استخدام نمط معرّف URN الخاص بـETSI من أجل قابلية تشغيل بيانات التقارير البينية؛ وذلك الاستخدام لا يؤكّد أي مصادقة.
ملاحظات التطوير
قسم بعنوان «ملاحظات التطوير»- تخطيط تسمية البنود. يُعلِّم مصدرُ الحزمة نقاطَ الدخول بوصفها بنود EN 319 102-1 5.2 و5.3 و5.4. ويضع مُدوَّن المطابقة عمليةَ التحقق من التوقيع الأساسي نفسها عند البند 5.3، مع اللبنة التشفيرية عند 5.2.7.4. وتستشهد هذه الصفحة بأرقام البنود المسترجعة؛ وعقد السلوك، لا التسمية، هو المرجع المعتمد.
- اختبارات حتمية. كل مقارنة وقت تمرّ عبر
ClockInterfaceالمحقون وفق PSR-20. احقن ساعةً مُجمَّدة لاختبار فحوص النافذة، وحدّ انحراف genTime البالغ 300 ثانية، وقرارات حداثة CRL. - التركيب. جميع متعاوني المحرّك محقونون عبر المُنشئ واختياريون، بإعدادات افتراضية مغلقة عند الفشل. ومُتحقِّق المسار الافتراضي هو
CertificateChainValidator::withDefaults()فوق ساعة المحرّك؛ والخيارات الافتراضية تُبقي معالجة السياسة وقيود الأسماء بلا أثر للمدخلات المطابِقة غير المقيَّدة. - مساحات الأسماء. سطح المحرّك يوجد في
NextPDF\Enterprise\Security\Validation، وسطح التحقق من المسار فيNextPDF\Enterprise\Security\Pki، ومنسِّق الدفعات فيNextPDF\Enterprise\Signature. - نظافة التقارير. التقارير غير قابلة للتغيير وقابلة للتسلسل عبر
toArray(). ويُعاد ضبط السياق التشخيصي عند كل نقطة دخول، فلا يحمل تقريرٌ أبداً أدلةً من تشغيل سابق على نسخة المحرّك نفسها.
انظر أيضاً
قسم بعنوان «انظر أيضاً»- التحقق من التوقيع: جانب التحقق التشفيري لـ AdES / PAdES — صفحة القدرة: سير العمل، وجدول الخوارزميات، وملاحظات الترقية.
- التوقيع — مرجع متعمّق — جانب المُنتِج لـ PAdES B-LT / B-LTA.
- التحقق — مرجع متعمّق — فحوص السياسة البنيوية بلا تشفير.
- الأمان — مرجع متعمّق — سطح أمان Enterprise المُجمَّع، بما فيه ملف FIPS.
- تخطيط خط أساس PAdES — B-B وB-T وB-LT وB-LTA عبر الإصدارات.
حدود النشر
قسم بعنوان «حدود النشر»توثّق هذه الصفحة السلوكَ القابل للملاحظة خارجياً وسطحَ واجهة برمجة التطبيقات العامة المدعوم فقط. أما مسارات مساحات الأسماء الداخلية، وأصناف المساعدة، وجداول الآليات، وأسماء ملفات كتيّبات التشغيل، وبادئات التذاكر، فخارج النطاق.