تخطَّ إلى المحتوى
getnextpdf.com

Enterprise الإصدار

⁨FIPS 140⁩ — مرجع متعمّق

هذه الصفحة هي المرجع التفصيلي لوحدة ⁨FIPS 140⁩ في ⁨NextPDF Enterprise⁩. الوحدة هي قدرة سياسة واختبار ذاتي. تقيّد الخيارات التعمية على قائمة سماح متوائمة مع ⁨FIPS⁩، وتشغّل مجموعة اختبارات إجابة-معروفة عند التشغيل، وتمنع مخرجات التعمية عند فشل المجموعة. ⁨NextPDF⁩ ليست وحدة تعمية مُصادَقة وفق ⁨FIPS 140⁩، ولا تحمل أي اعتماد، ولا تمنح أياً منه. الدعم لا يعادل المطابقة، والمطابقة لا تعادل الاعتماد. يتطلّب النشر المتوافق مع ⁨FIPS⁩ إضافةً إلى ذلك موفّر تعمية مُصادَقاً وفق ⁨FIPS⁩ يوفّره المشغّل.

تُشحَن هذه القدرة في ⁨NextPDF Enterprise⁩ (nextpdf/enterprise) وتُفعَّل بغلاف ترخيص من فئة ⁨Enterprise⁩. النشر بدون ذلك الاستحقاق لا يحمّل فئات القدرة. قارن الإصدارات واحصل على ترخيص.

سطح واجهة برمجة التطبيقات العامة

قسم بعنوان «سطح واجهة برمجة التطبيقات العامة»

تعيش جميع الرموز في NextPDF\Enterprise\Security\Fips، باستثناء FipsBootstrap في NextPDF\Enterprise\Bootstrap.

الرمزالمعاملاتالسلوك الافتراضييُرجِعيطرح أو يفشل بـملاحظات
FipsBootstrap::boot()?CryptoPolicyInterface $policy، ?FipsSelfTest $selfTest، ?LoggerInterface $auditLogger (جميعها بقيمة افتراضية null)يشغّل مجموعة اختبارات التشغيل مرة واحدة عند البدء؛ ويعتمد افتراضياً السياسة الصارمةFipsModeGuardFipsModuleErrorStateException عند فشل أي اختبار تشغيلجذر التركيب؛ مسار التدقيق معطّل عندما يكون $auditLogger بقيمة null
FipsBootstrap::lazy()مثل boot()يؤجّل مجموعة الاختبارات إلى أول تأكيد حدّيFipsModeGuardلا شيء وقت الاستدعاء؛ قد يطرح أول تأكيد FipsModuleErrorStateExceptionتبقى الوحدة PRE_OPERATIONAL حتى أول تأكيد
FipsBootstrap::signatureEnforcer()?CryptoPolicyInterface $policy = null، ?FipsSelfTest $selfTest = nullيُقلِع الوحدة، ثم يغلّف الحارس لنقاط اختناق التوقيعFipsSignatureEnforcerFipsModuleErrorStateException عند فشل أي اختبار تشغيليفوّض إلى boot()
FipsBootstrap::selfTestReport()?FipsSelfTest $selfTest = nullيشغّل مجموعة الاختبارات عند الطلب ويلخّصهاarray{status: FipsSelfTestStatus, operational: bool, failed: list<string>}لا يطرح؛ تظهر حالات الفشل في failedلنقاط نهاية فحص صحة المشرف والاستخدام عبر واجهة سطر الأوامر ⁨CLI⁩
FipsCryptoPolicy::strict()?FipsSelfTest $selfTest = nullإعداد ⁨FIPS 140-3⁩ المسبق: ⁨SHA-256/384/512⁩؛ ومعرّفات ⁨OID⁩ المعتمدة لـ ⁨RSA⁩ و⁨RSASSA-PSS⁩ و⁨ECDSA⁩؛ وaes-256-cbc وaes-256-gcm؛ و⁨RSA >= 2048⁩، ⁨EC >= 256⁩selfلا شيءالمُنشئ خاص؛ الإعدادات المسبقة هي المدخل الوحيد
FipsCryptoPolicy::standard()?FipsSelfTest $selfTest = nullإعداد ⁨FIPS 140-2⁩ المسبق: المجموعة الصارمة إضافةً إلى aes-128-cbcselfلا شيءللتوافقية القديمة فقط
FipsCryptoPolicy::assertPreOperational()لا شيءيشغّل مجموعة اختبارات التشغيل، أو يعيد تشغيل نتيجتها الملتقَطةvoidFipsModuleErrorStateException عند فشل أي اختبار تشغيليُقاد بواسطة وصلة الإنفاذ في ⁨Core⁩ قبل أول عملية
سطح استعلام FipsCryptoPolicyمدخلات string / intفحوص عضوية قائمة السماح؛ يُرفَض نوع المفتاح غير المعروفbool / stringلا شيءisHashAlgorithmAllowed، isSignatureAlgorithmAllowed، isEncryptionAlgorithmAllowed، isKeyStrengthAllowed، getPreferredHashAlgorithm، getName
FipsModeGuard::__construct()CryptoPolicyInterface $policy، ?FipsBootGuard $bootGuard = null، ?FipsAuditLogger $auditLogger = nullيغلّف سياسة بحدود بأسلوب التأكيدلا شيءبدون $bootGuard لا توجد بوابة اختبار ذاتي؛ يوفّرها تركيب الإنتاج
FipsModeGuard::assertHashAllowed()string $algorithmكتالوج المنع أولاً، ثم قائمة السماحvoidFipsViolationException؛ وFipsModuleErrorStateException عند توصيل حارس إقلاعيسبق سجلّ التدقيق أي FipsViolationException
FipsModeGuard::assertSignatureAlgorithmAllowed()string $oidكتالوج المنع أولاً، ثم قائمة السماحvoidمثل ما سبقتُطابَق معرّفات ⁨OID⁩ تماماً
FipsModeGuard::assertEncryptionAllowed()string $algorithmكتالوج المنع أولاً، ثم قائمة السماحvoidمثل ما سبقتُقارَن الأسماء بأحرف صغيرة
FipsModeGuard::assertKeyStrengthAllowed()string $keyType، int $bitLengthكتالوج المنع أولاً، ثم الحدود الدنيا للسياسةvoidمثل ما سبقيُرفَض نوع المفتاح غير المعروف
FipsModeGuard::getPolicy()لا شيءيُرجِع السياسة المغلَّفةCryptoPolicyInterfaceلا شيء
FipsBootGuard::__construct()FipsSelfTest $selfTestيحتفظ بمجموعة الاختبارات؛ ولا يشغّلهالا شيءدورة تشغيل واحدة لكل نسخة
FipsBootGuard::report()لا شيءيشغّل مجموعة الاختبارات مرة واحدة، ويخزّن التقرير مؤقتاً، ويلتقط عند الخطأFipsSelfTestReportلا شيءالاستدعاء الأول يشغّل الاختبارات
FipsBootGuard::rerun()لا شيءيفرض تشغيلاً جديداً؛ ويلتقط تشغيلُ الخطأ العمليةَFipsSelfTestReportلا شيءاختبار ذاتي عند الطلب؛ وليس مسار تعافٍ من الخطأ
FipsBootGuard::assertOperational()لا شيءيؤكّد أن الوحدة تشغيلية؛ ولاصق عبر العمليةvoidFipsModuleErrorStateExceptionتبقى النسخة النظيفة تطرح عندما تكون العملية قد التقطت خطأ
FipsBootGuard::status()لا شيءيبلّغ عن الحالة المخزَّنة مؤقتاًFipsSelfTestStatusلا شيءERROR عند الالتقاط؛ وPRE_OPERATIONAL عند عدم التشغيل مطلقاً
FipsSelfTest::__construct()?callable $randomBytesProvider = null، ?callable $hashProvider = nullيستخدم hash() وrandom_bytes() الخاصة بالمنصّةلا شيءتوجد تجاوزات لاختبارات الفشل الحتمية
FipsSelfTest::run()لا شيءينفّذ مجموعة الاختبارات كاملةً؛ ولا يقصُر الدارة أبداًFipsSelfTestReportلا شيءتظهر حالات الفشل في التقرير، لا في الاستثناءات
FipsSelfTestReportFipsSelfTestStatus $status، array $results، array $failedResultsتجميع غير قابل للتغيير لتشغيل واحديطرح assertOperational() استثناء FipsModuleErrorStateException في حالة الخطأأيضاً isOperational() وisError()
FipsSelfTestResultstring $algorithm، string $kind، bool $passed، string $message = ''نتيجة غير قابلة للتغيير لكل اختبارلا شيءkind هو KAT أو PWCT أو HEALTH؛ أيضاً isPassed() وisFailed()
FipsSelfTestStatusتعداد مدعوم بسلسلة نصيةلا شيءالحالات PRE_OPERATIONAL وOPERATIONAL وERROR
FipsSignatureEnforcer::__construct()FipsModeGuard $guardيغلّف حارساً مُبوَّباً بالإقلاع لنقاط اختناق التوقيعلا شيء
FipsSignatureEnforcer::assertSignatureGenerationAllowed()string $algorithm، string $certificatePemيحلّ معرّف ⁨OID⁩ وقوة المفتاح، ثم يفوّض إلى الحارسvoidFipsViolationException (خوارزمية غير معروفة، أو ملخّص ⁨PSS⁩ غير معتمد، أو مفتاح غير قابل للإثبات، أو رفض من السياسة)؛ وFipsModuleErrorStateException عبر الحارسمسار التوليد فقط؛ ولا يمرّ التحقّق من هنا أبداً
FipsAuditLogger::__construct()CryptoPolicyInterface $policy، LoggerInterface $loggerيغلّف مسجّل ⁨PSR-3⁩ ونفس السياسة التي يفرضها الحارسلا شيءلا يمكن أن تختلف القرارات المسجَّلة عن القرارات المفروضة
FipsAuditLogger::logHashOperation() / logSignatureOperation() / logEncryptionOperation() / logKeyStrengthCheck()مدخلات string / int لكل قراريسجّل ⁨ALLOW⁩ عند ⁨INFO⁩ و⁨DENY⁩ عند ⁨WARNING⁩bool (صحيح عند السماح)لا شيءسياق مُهيكَل: اسم السياسة، والعنصر، والقرار
FipsTransitioningAlgorithmsمدخلات string / intكتالوج منع ثابت وفق ⁨SP 800-131A Rev.2⁩bool / list<string>لا شيءisHashDisallowed، isSignatureOidDisallowed، isEncryptionDisallowed، isKeyStrengthDisallowed، إضافةً إلى disallowedHashes، disallowedSignatureOids، disallowedEncryption
FipsViolationExceptionstring $policyName، string $violatingItem، string $reasonانتهاك سياسة مُنمَّط بحقول عامة للقراءة فقطنوع فرعي من NextPDF\Exception\NextPdfException
FipsModuleErrorStateExceptionarray $failedResults، ?string $message = nullرفض في حالة الخطأ يحمل نتائج الاختبارات الفاشلةنوع فرعي من NextPDF\Exception\NextPdfException
public static function boot(?CryptoPolicyInterface $policy = null, ?FipsSelfTest $selfTest = null, ?LoggerInterface $auditLogger = null): FipsModeGuard
public static function lazy(?CryptoPolicyInterface $policy = null, ?FipsSelfTest $selfTest = null, ?LoggerInterface $auditLogger = null): FipsModeGuard
public static function signatureEnforcer(?CryptoPolicyInterface $policy = null, ?FipsSelfTest $selfTest = null): FipsSignatureEnforcer
public static function selfTestReport(?FipsSelfTest $selfTest = null): array
public static function strict(?FipsSelfTest $selfTest = null): self
public static function standard(?FipsSelfTest $selfTest = null): self
public function assertPreOperational(): void
public function isHashAlgorithmAllowed(string $algorithm): bool
public function isSignatureAlgorithmAllowed(string $oid): bool
public function isEncryptionAlgorithmAllowed(string $algorithm): bool
public function isKeyStrengthAllowed(string $keyType, int $bitLength): bool
public function getPreferredHashAlgorithm(): string
public function getName(): string
public function __construct(private CryptoPolicyInterface $policy, private ?FipsBootGuard $bootGuard = null, private ?FipsAuditLogger $auditLogger = null)
public function assertHashAllowed(string $algorithm): void
public function assertSignatureAlgorithmAllowed(string $oid): void
public function assertEncryptionAllowed(string $algorithm): void
public function assertKeyStrengthAllowed(string $keyType, int $bitLength): void
public function getPolicy(): CryptoPolicyInterface
public function __construct(private readonly FipsSelfTest $selfTest)
public function report(): FipsSelfTestReport
public function rerun(): FipsSelfTestReport
public function assertOperational(): void
public function status(): FipsSelfTestStatus
public function __construct(?callable $randomBytesProvider = null, ?callable $hashProvider = null)
public function run(): FipsSelfTestReport
public function __construct(private readonly FipsModeGuard $guard)
public function assertSignatureGenerationAllowed(string $algorithm, string $certificatePem): void
public function __construct(private CryptoPolicyInterface $policy, private LoggerInterface $logger)
public function logHashOperation(string $algorithm): bool
public function logSignatureOperation(string $oid): bool
public function logEncryptionOperation(string $algorithm): bool
public function logKeyStrengthCheck(string $keyType, int $bitLength): bool
public static function isHashDisallowed(string $algorithm): bool
public static function isSignatureOidDisallowed(string $oid): bool
public static function isEncryptionDisallowed(string $algorithm): bool
public static function isKeyStrengthDisallowed(string $keyType, int $bitLength): bool
public static function disallowedHashes(): array
public static function disallowedSignatureOids(): array
public static function disallowedEncryption(): array
public function __construct(public FipsSelfTestStatus $status, public array $results, public array $failedResults)
public function isOperational(): bool
public function isError(): bool
public function assertOperational(): void
// FipsSelfTestResult
public function __construct(public string $algorithm, public string $kind, public bool $passed, public string $message = '')
public function isPassed(): bool
public function isFailed(): bool
// FipsSelfTestStatus
enum FipsSelfTestStatus: string
{
case PRE_OPERATIONAL = 'pre_operational';
case OPERATIONAL = 'operational';
case ERROR = 'error';
}
  • قائمة سماح السياسة هي القرار المرجعي. يضيف FipsTransitioningAlgorithms طبقة منع صريحة وفق ⁨SP 800-131A Rev.2⁩ فوقها، من أجل رسائل رفض واضحة للتدقيق. لا توسّع طبقة المنع قائمة السماح ولا تتجاوزها أبداً.
  • يسمح FipsCryptoPolicy::strict() بـ ⁨SHA-256⁩ و⁨SHA-384⁩ و⁨SHA-512⁩؛ ومعرّفات توقيع ⁨RSA PKCS#1 v1.5⁩ وRSASSA-PSS و⁨ECDSA⁩ المرتبطة بتلك الملخّصات؛ وaes-256-cbc وaes-256-gcm؛ وحدوداً دنيا للمفاتيح تبلغ ⁨RSA 2048⁩ و⁨EC 256⁩ و⁨Ed25519 256⁩. يسمح standard() إضافةً بـ aes-128-cbc.
  • تغطّي مجموعة اختبارات التشغيل: اختبارات ⁨KAT⁩ لملخّصات ⁨SHA-256/384/512⁩، واختبار ⁨KAT⁩ لـ ⁨HMAC-SHA-256⁩، واختبار ⁨KAT⁩ للتعمية وفك التعمية بـ ⁨AES-256-CBC⁩، واختبار ⁨KAT⁩ لوسم ⁨AES-256-GCM⁩، واختبار اتساق زوجي لـ ⁨ECDSA P-256⁩، وفحص صحة ⁨DRBG⁩. ينفّذ FipsSelfTest::run() دائماً كل اختبار ولا يقصُر الدارة أبداً، فيكون التقرير كاملاً كدليل تدقيق.
  • صف ⁨DRBG⁩ هو اختبار صحة مستمر (طول السحب إضافةً إلى سحوب متتالية متمايزة)، وليس اختبار إجابة معروفة. يُفوَّض التزام الإجابة المعروفة لـ ⁨DRBG⁩ إلى موفّر التعمية المُصادَق وفق ⁨FIPS⁩ الذي يوفّره المشغّل.
  • حالة الخطأ لاصقة على مستوى العملية. يلتقط أول تقرير ERROR يرصده أي FipsBootGuard العمليةَ بأكملها. لا يمكن لنسخة حارس أو سياسة جديدة أن تغسل الخطأ، ولا يمحوه تشغيل ناجح لاحق. لا يعيد ضبط الحالة إلا إعادة تشغيل العملية (دورة طاقة حقيقية).
  • يطبّق FipsCryptoPolicy واجهتَي NextPDF\Contracts\CryptoPolicyInterface وNextPDF\Contracts\PreOperationalSelfTestInterface. عند ضبطه كسياسة تعمية لـ ⁨Core⁩، تقود وصلة الإنفاذ في ⁨Core⁩ استدعاء assertPreOperational() قبل إنتاج أول توقيع أو نص مُعمّى.
  • يبوّب FipsSignatureEnforcer مسار التوليد فقط. التحقّق من التواقيع المولَّدة مسبقاً هو استخدام قديم وفق ⁨SP 800-131A Rev.2⁩ ولا يمرّ عبر المُنفِّذ أبداً.
  • عند توصيل مسجّل تدقيق، يُصدر كل حدّ تأكيد سجلاً واحداً ⁨ALLOW⁩ (⁨INFO⁩) أو ⁨DENY⁩ (⁨WARNING⁩) قبل أي طرح لانتهاك سياسة. لذا يكون كل رفض FipsViolationException موثَّقاً في المسار. تُشغَّل بوابة حارس الإقلاع أولاً، فيُرفَع رفض حالة الخطأ قبل سجلّ التدقيق. يستشير FipsAuditLogger نفس السياسة التي يفرضها الحارس، فلا يمكن أن تختلف القرارات المسجَّلة عن المفروضة.

الحالات الحدّية وأنماط الفشل

قسم بعنوان «الحالات الحدّية وأنماط الفشل»
  • يُرفَض نوع المفتاح غير المعروف من كلتا الطبقتين: تُرجِع السياسة false ويعامله الكتالوج كمرفوض.
  • مُعرّف خوارزمية توقيع لا يستطيع المُنفِّذ ربطه بمعرّف توقيع ⁨OID⁩ يُرفَض على نحو مغلق-عند-الفشل بـ FipsViolationException.
  • يتشارك كل متغيّر من RSASSA-PSS معرّف ⁨OID⁩ 1.2.840.113549.1.1.10، فلا يستطيع المعرّف وحده إثبات الملخّص. يربط المُنفِّذ الملخّص الفعّال صراحةً ويرفض أي رمز ⁨PSS⁩ لا يكون ملخّصه ⁨SHA-256/384/512⁩.
  • الشهادة التي لا يمكن تحليلها، أو التي يتعذّر معرفة طول بتات مفتاحها العام، تُرفَض بوصفها key:unprovable.
  • في بيئة تشغيل تخلو من بدائيات ⁨OpenSSL⁩ اللامتماثلة، يسجّل اختبار الاتساق الزوجي لـ ⁨ECDSA⁩ فشلاً، لا تخطّياً، وتدخل الوحدة حالة ERROR.
  • سحبان عشوائيان متتاليان متطابقان بحجم ⁨32⁩ بايت يُفشلان فحص صحة ⁨DRBG⁩ (كشف المخرجات العالقة) ويفرضان حالة ERROR.
  • FipsModeGuard المُنشأ بدون حارس إقلاع يُجري فحوص السياسة فقط ولا يملك بوابة اختبار ذاتي. يمرّ تركيب الإنتاج عبر FipsBootstrap، الذي يوصّل البوابة دائماً.
  • تُقارَن أسماء الملخّصات والتعميات بأحرف صغيرة؛ وتُطابَق معرّفات التوقيع ⁨OID⁩ تماماً، دون أي توحيد.
  • بعد FipsBootstrap::lazy()، تبقى الوحدة PRE_OPERATIONAL حتى يشغّل أول حدّ تأكيد مجموعة الاختبارات. تُعامَل PRE_OPERATIONAL كغير تشغيلية وقت التأكيد.

هذه الوحدة هي سطح وضع ⁨FIPS⁩ نفسه. بينما تكون الوحدة في حالة الخطأ، وبينما تُشغَّل الاختبارات الذاتية قبل التشغيل، تُمنَع مخرجات التعمية: يطرح كل حدّ تأكيد FipsModuleErrorStateException قبل إنتاج أي توقيع أو نص مُعمّى (⁨ISO/IEC 19790:2025 §7.3.3 b), AS03.07⁩). يكشف FipsBootGuard::status() وFipsBootstrap::selfTestReport() الحالةَ ليتمكّن المشغّل من تحديد أن الوحدة دخلت حالة الخطأ (⁨ISO/IEC 19790:2025 §7.10.3⁩). هذه السلوكيات هي مزاعم قدرة حول شيفرة ⁨NextPDF⁩، لا مزاعم مصادقة: حدّ الوحدة الذي تصادق عليه ⁨FIPS 140⁩ هو موفّر التعمية الذي يوفّره المشغّل، وليس ⁨NextPDF⁩.

الادّعاءالمعيارالبند
يستند ⁨FIPS 140-3⁩ إلى ⁨ISO/IEC 19790⁩ و⁨ISO/IEC 24759⁩؛ لذا تستشهد هذه الصفحة ببنود ⁨ISO/IEC 19790⁩.FIPS 140-3Introduction (fips_140_3#x26.x2)
تُمنَع المخرجات في حالة الخطأ وأثناء الاختبارات الذاتية قبل التشغيل.ISO/IEC 19790:2025§7.3.3 b) [AS03.07]
يقارن اختبار الإجابة المعروفة نتيجةً محسوبة بمخرَج متوقَّع معروف؛ وتطبّق مجموعة الاختبارات هذا الشكل.ISO/IEC 19790:2025§7.10.4
يستطيع المشغّل تحديد حالة الخطأ عبر مخرَج حالة.ISO/IEC 19790:2025§7.10.3 [AS10.10]
يستطيع المشغّلون بدء الاختبارات الذاتية عند الطلب للاختبار الدوري؛ ويوفّر rerun() وselfTestReport() ذلك.ISO/IEC 19790:2025§7.10.5 [AS10.54]
⁨SHA-1⁩ ممنوعة لتوليد تواقيع رقمية جديدة؛ ويرفضها كتالوج المنع.NIST SP 800-131A Rev.2§9
توليد التواقيع دون قوة ⁨112⁩ بت (⁨RSA < 2048⁩، ورتبة ⁨ECDSA < 224⁩) ممنوع؛ وتفرض الحدود الدنيا للمفاتيح ذلك.NIST SP 800-131A Rev.2§3 Table 2
التحقّق من تواقيع ⁨SHA-1⁩ المولَّدة مسبقاً هو استخدام قديم؛ ولا يمرّ عبر بوابة التوليد.NIST SP 800-131A Rev.2Change summary (9.x4.p12)

جميع البنود مُعاد صياغتها؛ ولم يُستنسَخ أي نص معياري. ⁨NextPDF⁩ لا تقدّم أي ادّعاء اعتماد وفق ⁨FIPS 140⁩. تُوائم الوحدة سلوكها مع البنود المستشهَد بها كقدرة مساعِدة على الامتثال. أما كون النشر ممتثلاً لـ ⁨FIPS⁩ فيعتمد على موفّر المشغّل المُصادَق، وتعريف حدّ الوحدة، وبرنامج الامتثال — لا على ⁨NextPDF⁩ وحدها.

  • تحقن اختبارات الفشل الحتمية موفّرين معطوبين عبر مُنشئ FipsSelfTest، أو عبر معاملات $selfTest في FipsCryptoPolicy::strict() وstandard() وطرق FipsBootstrap.
  • لمزلاج خطأ العملية اللاصق خطّاف إعادة ضبط داخلي مخصّص للاختبار فقط. وهو ليس جزءاً من واجهة برمجة التطبيقات المدعومة، ويجب ألا تستدعيه شيفرة الإنتاج.
  • يشغّل كل عملية عامل ⁨PHP⁩ مجموعة اختبارات التشغيل الخاصة بها. ويُخزَّن التقرير مؤقتاً لكل نسخة، فتكون تأكيدات المسار الساخن فحوص حالة بزمن ثابت.
  • لا تلتقط FipsModuleErrorStateException وتتابع. يعني الاستثناء أن الوحدة ترفض خدمات التعمية؛ والاستجابة الصحيحة هي التوقّف وإعادة تشغيل العملية بعد المعالجة.
  • يخدم FipsBootstrap::selfTestReport() احتياجات الاختبار الذاتي عند الطلب والدوري، مثل نقاط فحص الصحة. ولا يمحو تشغيل ناجح عند الطلب خطأً ملتقَطاً أبداً.

توثّق هذه الصفحة السلوك القابل للرصد خارجياً وسطح واجهة برمجة التطبيقات العامة المدعوم فقط. أما مسارات فضاءات الأسماء الداخلية، وفئات المساعدة، وجداول الآليات، وأسماء ملفات كتيّبات التشغيل، وبادئات التذاكر فخارج النطاق.