تتميز محفظة الأجهزة OneKey ببرنامج ثابت مفتوح المصدر بالكامل. يمكنك الاطلاع على الكود مفتوح المصدر للبرنامج الثابت للمنتجات ذات الصلة في مستودع OneKey على GitHub. قبل أن يتم إصدار ملفات البرنامج الثابت المخصصة للإنتاج الضخم رسميًا، يستخدم فريق OneKey أدوات أتمتة البناء الخاصة بـ GitHub (GitHub CI) لتجميع وبناء الكود المصدري للبرنامج الثابت من مستودعات البرنامج الثابت المعنية. ثم يتم توقيع الملفات بواسطة فريق OneKey قبل إصدارها رسميًا.
تقدم هذه المقالة طريقة تحقق ذاتي، وذلك بمقارنة المجموع الاختباري (checksums) للملفات قبل وبعد التوقيع الجماعي الرسمي للفريق، للتحقق من الاتساق بين ملفات البرنامج الثابت والكود مفتوح المصدر.
للحصول على طرق حول كيفية التحقق من اتساق بيانات المصدر للملفات المختلفة باستخدام دالة التجزئة التشفيرية SHA-256 (مقارنة المجموع الاختباري)، ارجع إلى هذه المقالة.
مستودعات البرنامج الثابت مفتوح المصدر
OneKey Pro
⚙ برنامج النظام الثابت: github.com/OneKeyHQ/firmware-pro
برنامج البلوتوث الثابت: github.com/OneKeyHQ/bluetooth-firmware-pro
OneKey Classic 1S
⚙ برنامج النظام الثابت: github.com/OneKeyHQ/firmware-classic1s
برنامج البلوتوث الثابت: github.com/OneKeyHQ/bluetooth-firmware-classic
OneKey Classic
⚙ برنامج النظام الثابت: github.com/OneKeyHQ/firmware/tree/bixin_dev
برنامج البلوتوث الثابت: github.com/OneKeyHQ/bluetooth-firmware-classic
OneKey Touch
⚙ برنامج النظام الثابت: github.com/OneKeyHQ/firmware (فرع: touch)
برنامج البلوتوث الثابت: github.com/OneKeyHQ/bluetooth-firmware-touch
OneKey Mini
⚙ برنامج النظام الثابت: github.com/OneKeyHQ/firmware/tree/mini
لإعادة إنتاج إصدار البرنامج الثابت الخاص بـ OneKey، اتبع الفيديو التعليمي أدناه
عملية إصدار البرنامج الثابت
عندما يكون برنامج النظام الثابت القياسي الرسمي أو برنامج البلوتوث الثابت جاهزًا للإصدار، ينفذ فريق OneKey الإجراء الخاص بالمستودع المعني لتجميع الكود المصدري. بعد نجاح التجميع، يتم تحميل الملفات إلى مساحة تخزين GitHub Artifacts، في انتظار اكتمال التوقيع الجماعي الداخلي بواسطة الفريق قبل وضعها على شبكة توصيل المحتوى (CDN) الخاصة بـ OneKey. بعد تحديث ملف config.json، يتم دفع إشعارات التحديث عبر تطبيق OneKey وموقع تحديث البرنامج الثابت الخاص بـ OneKey، مما يحث المستخدمين على ترقية برامجهم الثابتة. ارجع إلى الرسم البياني أدناه لمعرفة العملية المحددة.
الأهداف
التحقق من أن "ملف البرنامج الثابت الموقع من فريق OneKey" مشتق من "ملف البرنامج الثابت الموقع مسبقًا بواسطة GitHub CI" في مستودع OneKey مفتوح المصدر.
التحقق من الاتساق بين "ملف البرنامج الثابت الموقع من فريق OneKey" و "ملف البرنامج الثابت المخزن على شبكة CDN الرسمية لـ OneKey".
المتطلبات المسبقة
برنامج النظام الثابت برنامج البلوتوث الثابت
✔ تنزيل ملف البرنامج الثابت الموقع مسبقًا بواسطة GitHub CI (غير موقع)
انتقل إلى إصدار البرنامج الثابت الرسمي للأجهزة من OneKey على GitHub: https://github.com/OneKeyHQ/firmware/releases
ابحث عن إصدار البرنامج الثابت الذي تريد التحقق منه وانقر على رابط GitHub Action.
انقر على اسم البرنامج الثابت تحت "Artifacts" للتنزيل (يلزم تسجيل الدخول إلى GitHub).
✔ تنزيل ملف البرنامج الثابت الموقع من فريق OneKey (موقع)
انتقل إلى إصدار البرنامج الثابت الرسمي للأجهزة من OneKey على GitHub: https://github.com/OneKeyHQ/firmware/releases
ابحث عن إصدار البرنامج الثابت الذي تريد التحقق منه.
انقر لتنزيل ملف .bin تحت "Assets".
✔ تنزيل ملف البرنامج الثابت المخزن على شبكة CDN الرسمية لـ OneKey (موقع)
انتقل إلى ملف CDN الخاص بـ OneKey: https://data.onekey.so/config.json
ابحث عن إصدار البرنامج الثابت الذي تريد التحقق منه.
انسخ الرابط الموجود تحت حقل "url".
افتح في نافذة متصفح جديدة لتنزيل ملف .bin تلقائيًا.
✔ تنزيل ملف البرنامج الثابت للبلوتوث الموقع مسبقًا بواسطة GitHub CI (غير موقع)
انتقل إلى إصدار البرنامج الثابت الرسمي للبلوتوث للأجهزة من OneKey على GitHub
OneKey Classic & Classic 1S: https://github.com/OneKeyHQ/bluetooth-firmware-classic/releases
ابحث عن إصدار البرنامج الثابت الذي تريد التحقق منه وانقر على رابط GitHub Action.
انقر على اسم البرنامج الثابت تحت "Artifacts" للتنزيل (يلزم تسجيل الدخول إلى GitHub).
✔ تنزيل ملف البرنامج الثابت للبلوتوث الموقع من فريق OneKey (موقع)
انتقل إلى إصدار البرنامج الثابت الرسمي للبلوتوث للأجهزة من OneKey على GitHub
OneKey Classic & Classic 1S: https://github.com/OneKeyHQ/bluetooth-firmware-classic/releases
ابحث عن إصدار البرنامج الثابت الذي تريد التحقق منه.
انقر لتنزيل ملف .bin تحت "Assets".
✔ تنزيل ملف البرنامج الثابت للبلوتوث المخزن على شبكة CDN الرسمية لـ OneKey (موقع)
انتقل إلى ملف CDN الخاص بـ OneKey: https://data.onekey.so/config.json
ابحث عن إصدار البرنامج الثابت الذي تريد التحقق منه.
انسخ الرابط الموجود تحت حقل "ble" - "webUpdate".
افتح في نافذة متصفح جديدة لتنزيل ملف .bin تلقائيًا.
✔ تنزيل وتثبيت Python
انتقل إلى: https://www.python.org/downloads/
قم بتنزيل وتثبيت أحدث إصدار من Python.
الخطوات
فيما يلي خطوات التحقق للهدفين المحددين سابقًا:
برنامج النظام الثابت برنامج البلوتوث الثابت
عملية التحقق باستخدام البرنامج الثابت الموقع مسبقًا بواسطة GitHub CI (النظام)
افتح "Terminal" (الطرفية).
قم بتشغيل الأمر أدناه (ملف البرنامج الثابت الموقع من فريق OneKey):
tail -c +1024 /path/to/(file path) | shasum -a 256
قم بتشغيل الأمر أدناه (ملف البرنامج الثابت الموقع مسبقًا بواسطة GitHub CI):
tail -c +1024 /path/to/(file path) | shasum -a 256
قارن "المجموع الاختباري" (Checksums) الذي تم إنشاؤه بواسطة الأمرين. إذا تطابقت النتائج، يمكن التأكد من أن "ملف البرنامج الثابت الموقع من فريق OneKey" مشتق من "ملف البرنامج الثابت الموقع مسبقًا بواسطة GitHub CI" في مستودع OneKey مفتوح المصدر.
بالنسبة لبرنامج النظام الثابت، تتم إضافة نتيجة توقيع بحجم 1024 بايت إلى إصدار CI من البرنامج الثابت، والتي يتم التحقق منها بواسطة محمل الإقلاع عند بدء تشغيل الجهاز.
عملية التحقق باستخدام ملف البرنامج الثابت المخزن على شبكة CDN الرسمية لـ OneKey (النظام)
افتح "Terminal" (الطرفية).
قم بتشغيل الأمر أدناه (ملف البرنامج الثابت الموقع من فريق OneKey):
shasum -a 256 (file path)
قم بتشغيل الأمر أدناه (ملف البرنامج الثابت المخزن على شبكة CDN الرسمية لـ OneKey):
shasum -a 256 (file path)
قارن "المجموع الاختباري" (Checksums) الذي تم إنشاؤه بواسطة الأمرين. إذا تطابقت النتائج، يتم تأكيد اتساق الكود بين ملفي البرنامج الثابت.
عملية التحقق باستخدام البرنامج الثابت الموقع مسبقًا بواسطة GitHub CI (البلوتوث)
ابحث عن ملف ota.bin في المجلد الذي قمت بتنزيله لملف البرنامج الثابت للبلوتوث الموقع مسبقًا بواسطة GitHub CI.
افتح الطرفية في نفس المجلد مع ota.bin.
استدعِ Python باستخدام الأمر: python3
قم بتشغيل الأمر أدناه للحصول على المجموع الاختباري لبرنامج البلوتوث الثابت الموقع مسبقًا بواسطة GitHub CI.
exec("""\nimport struct, hashlib\nwith open("ota.bin", mode="br") as f:\n f.seek(0x0C)\n codelen = struct.unpack("i", f.read(4))[0] - 512\n f.seek(0x600)\n print("".join(format(x, "02x") for x in hashlib.sha256(f.read(codelen)).digest()))\n""")
قم بتشغيل نفس الأمر مع ملف البرنامج الثابت للبلوتوث الموقع من فريق OneKey.
ملاحظة: يرجى تغيير ota.bin في الأمر إلى اسم ملف البرنامج الثابت للبلوتوث الموقع من فريق OneKey.
قارن "المجموع الاختباري" (Checksums) الذي تم إنشاؤه بواسطة الأمرين. إذا تطابقت النتائج، يمكن التأكد من أن "ملف البرنامج الثابت الموقع من فريق OneKey" مشتق من "ملف البرنامج الثابت الموقع مسبقًا بواسطة GitHub CI" في مستودع OneKey مفتوح المصدر.
عملية التحقق باستخدام ملف البرنامج الثابت المخزن على شبكة CDN الرسمية لـ OneKey (البلوتوث)
افتح طرفية في نفس المجلد مع ملف البرنامج الثابت للبلوتوث الموقع من فريق OneKey.
استدعِ Python باستخدام الأمر: python3
انسخ الأمر أدناه:
exec("""\nimport struct, hashlib\nwith open("ota.bin", mode="br") as f:\n f.seek(0x0C)\n codelen = struct.unpack("i", f.read(4))[0] - 512\n f.seek(0x600)\n print("".join(format(x, "02x") for x in hashlib.sha256(f.read(codelen)).digest()))\n""")
غير ota.bin إلى اسم ملف البرنامج الثابت للبلوتوث الموقع من فريق OneKey الذي قمت بتنزيله.
قم بتشغيل الأمر للحصول على المجموع الاختباري.
كرر الخطوات السابقة مع ملف البرنامج الثابت للبلوتوث المخزن على شبكة CDN الرسمية لـ OneKey الذي قمت بتنزيله.
قارن "المجموع الاختباري" (Checksums) الذي تم إنشاؤه بواسطة الأمرين. إذا تطابقت النتائج، يتم تأكيد اتساق الكود بين ملفي البرنامج الثابت.
