مترجم+مفسّر: وحدة تشفير جديدة — بلايك3 + هاش_مفتاح (BLAKE3) (المرحلة ١)#215
Merged
Conversation
…١ من RFC توسيع مكتبة التشفير) يضيف وحدة `تشفير` (منفصلة عن `تأكيدات`، بلا كسر توافق — استورد تشفير تحمّل الآن كلتا الحزمتين معًا) بدالّتين ذاتيّتَي التنفيذ بالكامل (بلا OpenSSL/libsodium): بلايك3 (هاش BLAKE3) وهاش_مفتاح (مصادقة رسالة عبر نمط BLAKE3 المُفتاح الرسميّ — أحدث وأبسط من HMAC التقليديّ، لا يحتاج حماية من هجمات امتداد الطول). التنفيذ (مفسّر C++ + وقت تشغيل المترجم C + نسخة أندرويد المنفصلة) مُتحقَّق مقابل 35 شعاعًا رسميًّا من test_vectors.json (مستودع BLAKE3-team) عبر تحقّق تفاضليّ مستقلّ قبل الدمج، بتغطية أطوال من صفر إلى 16384 بايت (كتلة واحدة/عدّة كتل/عدّة قطع في شجرة Merkle) لكلا نمطَي الهاش والمُفتاح. يعالج قيدًا في MSVC (C2026 "string too big") ظهر عند تكبير الحرف الخام لوقت تشغيل أندرويد المضمَّن — يُقسَّم إلى نداءين << بدل حرف واحد ضخم، بلا تغيير في محتوى الملفّ المكتوب.
|
📚 تذكير مزامنة دليل المطوّرين هذا الـPR يلمس مصادر موثَّقة في دليل المطوّرين. راجع الفصول الآتية وحدّثها إن تغيّر سلوكها، ثم ثبّت البصمات هناك (
بندٌ في معيار الإنجاز. تذكيرٌ آليّ — لا يحجب الدمج. |
…ake3-hmac # Conflicts: # tests/behavior/sections/09_المكتبة_القياسية/COVERAGE.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
الملخّص
المرحلة ١ من RFC توسيع مكتبة التشفير:
وحدة
تشفيرجديدة (منفصلة عنتأكيدات، بلا كسر توافق —استورد تشفيريحمّل الآن الحزمتين معًا) بدالّتين ذاتيّتَي التنفيذ بالكامل (بلا
OpenSSL/libsodium):
بلايك3(نص)— هاش BLAKE3-256، نصّ ست عشريّ 64 حرفًا.هاش_مفتاح(نص، مفتاح)— مصادقة رسالة عبر نمط BLAKE3 المُفتاح الرسميّ (لاHMAC تقليديّ — لا حاجة لحماية من هجمات امتداد الطول، النمط جزء أصيل من
التصميم). مفتاح 32 بايت يُستعمَل مباشرة؛ غير ذلك يُشتقّ منه مفتاح 32 بايت
عبر
بلايك3(مفتاح)أوّلًا.التحقّق (BLAKE3 خوارزميّة غير تافهة — شجرة Merkle مجزّأة، لا SHA-256 بسيط)
نُفِّذت في ثلاث نسخ مستقلّة يجب أن تتّفق حرفيًّا: المفسّر (C++)، وقت
تشغيل المترجم (C)، ونسخة أندرويد المنفصلة (تعلّم من درس PR #212 — لا تُنسى
هذه المرّة). التحقّق قبل الدمج:
test_vectors.json(مستودع BLAKE3-team) — 0 فشل (نمطا hash وkeyed_hash).
بايت (كتلة واحدة/عدّة كتل/عدّة قطع شجرة) — 0 فشل.
sad_embedded_runtime.cوbuiltin_module_crypto.cppاختُبِرت تفاضليًّا مقابل المرجع المُتحقَّق — 0 تباين.
.صمُشغَّل بالمفسّر ومُصرَّف بالمترجم — ناتجمطابق حرفيًّا،
بلايك3("")يطابق الشعاع الرسميّ.عائق بناء عولج
إضافة كتلة BLAKE3 (~360 سطرًا) لحرف Android الخام (
R"(...)") أفشلت MSVCبـ
C2026 "string too big"رغم أنّ الحرف ~21.7KB فقط (تحت حدّ 65535 المُوثَّق)— يبدو أنّ MSVC يفرض حدًّا عمليًّا أدنى للحروف الخام تحديدًا. الحلّ: تقسيمه
إلى نداءين
<<منفصلين بدل حرف واحد ضخم — تحقّقت أميليا بايتيًّا أنّ محتوىالملفّ المكتوب لم يتغيّر.
التغييرات
language-truth/builtins/crypto.yaml(جديد) +_index.yaml— SoT لوحدة تشفير.interpreter/src/builtins/builtin_module_crypto.cpp(جديد) — BLAKE3 C++.tools/compiler/runtime/sad_embedded_runtime.c— BLAKE3 C +sad_blake3_hash/sad_blake3_keyed_hash.tools/compiler/compiler_driver_android_linker.cpp— نفس الدوال لأندرويد (+إصلاح C2026).compiler/src/frontend/builders/builtins_crypto.cpp(جديد) + SIR opcodes جديدة + مولِّد LLVM.interpreter/src/builtins/builtin_registry.cpp—استورد تشفيريحمّل الحزمتين (قديمة+جديدة).04_تشفير/155،156(شعاعات BLAKE3 رسميّة + BLAKE3 keyed_hash رسميّ) + تحديثCOVERAGE.md.خطة الاختبار
python x.py build --config Debugنجح.04_تشفير/كاملًا (6 ملفّات) 100% تكافؤ مزدوج، burn-in 5 جولات نظيف.01_مدمج/(21 ملفًّا) بلا انحدار.python x.py gen --checkنظيف.