Dompet perkakasan OneKey menampilkan firmware sumber terbuka sepenuhnya. Anda boleh melihat kod sumber terbuka firmware untuk produk yang berkaitan di repositori GitHub OneKey. Sebelum fail firmware yang bertujuan untuk pengeluaran besar-besaran dikeluarkan secara rasmi, pasukan OneKey menggunakan alatan Automasi Bina GitHub (GitHub CI) untuk menyusun dan membina kod sumber firmware daripada repositori firmware masing-masing. Fail kemudiannya ditandatangani oleh pasukan OneKey sebelum dikeluarkan secara rasmi.
Artikel ini menyediakan kaedah pengesahan kendiri, dengan membandingkan checksum fail sebelum dan selepas multi-sig rasmi pasukan, untuk mengesahkan ketekalan antara fail firmware dan kod sumber terbuka.
Untuk kaedah cara mengesahkan ketekalan data sumber fail yang berbeza menggunakan fungsi hash kriptografi SHA-256 (membandingkan Checksums), rujuk artikel ini.
Repositori Firmware Sumber Terbuka
OneKey Pro
⚙ Firmware Sistem: github.com/OneKeyHQ/firmware-pro
Firmware Bluetooth: github.com/OneKeyHQ/bluetooth-firmware-pro
OneKey Classic 1S
⚙ Firmware Sistem: github.com/OneKeyHQ/firmware-classic1s
Firmware Bluetooth: github.com/OneKeyHQ/bluetooth-firmware-classic
OneKey Classic
⚙ Firmware Sistem: github.com/OneKeyHQ/firmware/tree/bixin_dev
Firmware Bluetooth: github.com/OneKeyHQ/bluetooth-firmware-classic
OneKey Touch
⚙ Firmware Sistem: github.com/OneKeyHQ/firmware (cabang: touch)
Firmware Bluetooth: github.com/OneKeyHQ/bluetooth-firmware-touch
OneKey Mini
⚙ Firmware Sistem: github.com/OneKeyHQ/firmware/tree/mini
Untuk menghasilkan semula keluaran firmware OneKey, ikut tutorial video di bawah
Proses Keluaran Firmware
Apabila firmware standard rasmi atau firmware Bluetooth sedia untuk dikeluarkan, pasukan OneKey akan melaksanakan Tindakan repositori yang sepadan untuk menyusun kod sumber. Selepas penyusunan berjaya, fail dimuat naik ke storan Artefak GitHub, menunggu pasukan melengkapkan multi-sig dalaman sebelum ditempatkan pada CDN OneKey. Selepas mengemas kini fail config.json, pemberitahuan kemas kini ditolak melalui Apl OneKey dan laman web kemas kini firmware OneKey, menggesa pengguna untuk menaik taraf firmware mereka. Rujuk rajah di bawah untuk proses khusus.
Sasaran
Sahkan bahawa "Fail Firmware Bertanda Tangan Pasukan OneKey" berasal daripada "Fail Firmware Bertanda Tangan CI GitHub" dalam repositori sumber terbuka OneKey.
Sahkan ketekalan antara "Fail Firmware Bertanda Tangan Pasukan OneKey" dan "Fail Firmware Disimpan CDN Rasmi OneKey."
Prasyarat
Firmware Sistem Firmware Bluetooth
✔ Muat turun Fail Firmware Bertanda Tangan CI GitHub (Tidak Bertanda Tangan)
Navigasi ke Keluaran Perkakasan Firmware Rasmi OneKey: https://github.com/OneKeyHQ/firmware/releases
Cari versi firmware yang anda ingin sahkan dan klik pautan Tindakan GitHub.
Klik pada nama firmware di bawah Artefak untuk memuat turun (log masuk ke GitHub diperlukan).
✔ Muat turun Fail Firmware Bertanda Tangan Pasukan OneKey (Bertanda Tangan)
Navigasi ke Keluaran Perkakasan Firmware Rasmi OneKey: https://github.com/OneKeyHQ/firmware/releases
Cari versi firmware yang anda ingin sahkan.
Klik untuk memuat turun fail bin di bawah Aset.
✔ Muat turun Fail Firmware Disimpan CDN Rasmi OneKey (Bertanda Tangan)
Navigasi ke fail CDN OneKey: https://data.onekey.so/config.json
Cari versi firmware yang anda ingin sahkan.
Salin pautan di bawah medan "url".
Buka dalam tetingkap penyemak imbas baharu untuk muat turun automatik fail bin.
✔ Muat turun Fail Firmware Bluetooth Bertanda Tangan CI GitHub (Tidak Bertanda Tangan)
Navigasi ke Keluaran GitHub firmware bluetooth rasmi OneKey
OneKey Classic & Classic 1S: https://github.com/OneKeyHQ/bluetooth-firmware-classic/releases
Cari versi firmware yang anda ingin sahkan dan klik pautan Tindakan GitHub.
Klik pada nama firmware di bawah Artefak untuk memuat turun (log masuk ke GitHub diperlukan).
✔ Muat turun Fail Firmware Bluetooth Bertanda Tangan Pasukan OneKey (Bertanda Tangan)
Navigasi ke Keluaran GitHub firmware bluetooth rasmi OneKey
OneKey Classic & Classic 1S: https://github.com/OneKeyHQ/bluetooth-firmware-classic/releases
Cari versi firmware yang anda ingin sahkan.
Klik untuk memuat turun fail bin di bawah Aset.
✔ Muat turun Fail Firmware Bluetooth Disimpan CDN Rasmi OneKey (Bertanda Tangan)
Navigasi ke fail CDN OneKey: https://data.onekey.so/config.json
Cari versi firmware yang anda ingin sahkan.
Salin pautan di bawah medan "ble" - "webUpdate".
Buka dalam tetingkap penyemak imbas baharu untuk muat turun automatik fail bin.
✔ Muat turun dan Pasang Python
Navigasi ke: https://www.python.org/downloads/
Muat turun dan pasang versi Python terkini.
Langkah-langkah
Di bawah adalah langkah pengesahan untuk dua sasaran yang ditetapkan sebelum ini:
Firmware Sistem Firmware Bluetooth
Proses Pengesahan dengan firmware pra-tandatangan CI GitHub (Sistem)
Buka Terminal.
Jalankan arahan di bawah (Fail Firmware Bertanda Tangan Pasukan OneKey):
tail -c +1024 /path/to/(laluan fail) | shasum -a 256
Jalankan arahan di bawah (Fail Firmware Bertanda Tangan CI GitHub):
tail -c +1024 /path/to/(laluan fail) | shasum -a 256
Bandingkan Checksums yang dijana oleh kedua-dua arahan. Jika keputusan sepadan, ia boleh disahkan bahawa "Fail Firmware Bertanda Tangan Pasukan OneKey" berasal daripada "Fail Firmware Bertanda Tangan CI GitHub" dalam repositori sumber terbuka OneKey.
Untuk firmware sistem, hasil tanda tangan 1024 bait ditambah pada versi CI firmware, yang disahkan oleh bootloader semasa permulaan peranti.
Proses Pengesahan dengan Fail Firmware Disimpan CDN Rasmi OneKey (Sistem)
Buka Terminal.
Jalankan arahan di bawah (Fail Firmware Bertanda Tangan Pasukan OneKey):
shasum -a 256 (laluan fail)
Jalankan arahan di bawah (Fail Firmware Disimpan CDN Rasmi OneKey):
shasum -a 256 (laluan fail)
Bandingkan Checksums yang dijana oleh kedua-dua arahan. Jika keputusan sepadan, ketekalan kod bagi kedua-dua fail firmware disahkan.
Proses Pengesahan dengan firmware pra-tandatangan CI GitHub (Bluetooth)
Cari fail ota.bin dalam folder Firmware Bluetooth Pra-Tandatangan CI GitHub yang anda muat turun.
Buka terminal dalam folder yang sama dengan ota.bin.
Panggil Python dengan arahan: python3
Jalankan arahan di bawah untuk mendapatkan checksum firmware Bluetooth Pra-Tandatangan CI GitHub.
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""")
Jalankan arahan yang sama dengan Fail Firmware Bluetooth Bertanda Tangan Pasukan OneKey.
Nota: sila tukar ota.bin dalam arahan kepada nama Fail Firmware Bluetooth Bertanda Tangan Pasukan OneKey.
Bandingkan Checksums yang dijana oleh kedua-dua arahan. Jika keputusan sepadan, ia boleh disahkan bahawa "Fail Firmware Bertanda Tangan Pasukan OneKey" berasal daripada "Fail Firmware Bertanda Tangan CI GitHub" dalam repositori sumber terbuka OneKey.
Proses Pengesahan dengan Fail Firmware Disimpan CDN Rasmi OneKey (Bluetooth)
Buka terminal dalam folder yang sama dengan Fail Firmware Bluetooth Bertanda Tangan Pasukan OneKey.
Panggil Python dengan arahan: python3
Salin arahan di bawah:
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""")
Tukar ota.bin kepada nama Fail Firmware Bluetooth Bertanda Tangan Pasukan OneKey yang anda muat turun.
Jalankan arahan untuk mendapatkan checksum.
Ulangi langkah di atas dengan Fail Firmware Bluetooth Disimpan CDN Rasmi OneKey yang anda muat turun.
Bandingkan Checksums yang dijana oleh kedua-dua arahan. Jika keputusan sepadan, ketekalan kod bagi kedua-dua fail firmware disahkan.
