OneKey donanım cüzdanı, tamamen açık kaynaklı aygıt yazılımına (firmware) sahiptir. İlgili ürünlerin açık kaynak aygıt yazılımı kodunu OneKey'in GitHub deposunda görüntüleyebilirsiniz. Seri üretim için hazırlanan aygıt yazılımı dosyaları resmi olarak yayınlanmadan önce, OneKey ekibi ilgili aygıt yazılımı depolarından kaynak kodu derlemek ve oluşturmak için GitHub'ın Build Automation araçlarını (GitHub CI) kullanır. Dosyalar, resmi olarak yayınlanmadan önce OneKey ekibi tarafından imzalanır.
Bu makale, aygıt yazılımı dosyaları ile açık kaynak kodu arasındaki tutarlılığı doğrulamak için resmi ekibin çoklu imzasından (multi-sig) önceki ve sonraki dosya sağlama toplamlarını (checksum) karşılaştıran bir kendi kendine doğrulama yöntemi sunar.
SHA-256 kriptografik özet işlevini kullanarak farklı dosyaların kaynak verilerinin tutarlılığını doğrulama yöntemleri (Sağlama Toplamlarını karşılaştırma) için bu makaleye başvurun.
Açık Kaynak Aygıt Yazılımı Depoları
OneKey Pro
⚙ Sistem Aygıt Yazılımı: github.com/OneKeyHQ/firmware-pro
Bluetooth Aygıt Yazılımı: github.com/OneKeyHQ/bluetooth-firmware-pro
OneKey Classic 1S
⚙ Sistem Aygıt Yazılımı: github.com/OneKeyHQ/firmware-classic1s
Bluetooth Aygıt Yazılımı: github.com/OneKeyHQ/bluetooth-firmware-classic
OneKey Classic
⚙ Sistem Aygıt Yazılımı: github.com/OneKeyHQ/firmware/tree/bixin_dev
Bluetooth Aygıt Yazılımı: github.com/OneKeyHQ/bluetooth-firmware-classic
OneKey Touch
⚙ Sistem Aygıt Yazılımı: github.com/OneKeyHQ/firmware (dal: touch)
Bluetooth Aygıt Yazılımı: github.com/OneKeyHQ/bluetooth-firmware-touch
OneKey Mini
⚙ Sistem Aygıt Yazılımı: github.com/OneKeyHQ/firmware/tree/mini
OneKey'in aygıt yazılımı sürümünü yeniden oluşturmak için aşağıdaki video eğitimini izleyin
Aygıt Yazılımı Yayın Süreci
Resmi standart aygıt yazılımı veya Bluetooth aygıt yazılımı yayınlanmaya hazır olduğunda, OneKey ekibi açık kaynak kodu derlemek için ilgili deponun Action özelliğini çalıştırır. Derleme başarılı olduktan sonra dosyalar, OneKey'in CDN'ine yerleştirilmeden önce ekibin dahili çoklu imza sürecinin tamamlanmasını beklemek üzere GitHub Artifacts deposuna yüklenir. config.json dosyası güncellendikten sonra, güncelleme bildirimleri OneKey Uygulaması ve OneKey aygıt yazılımı güncelleme web sitesi aracılığıyla gönderilerek kullanıcılara aygıt yazılımlarını yükseltmeleri hatırlatılır. Belirli süreç için aşağıdaki şemaya başvurun.
Hedefler
"OneKey Ekibi Tarafından İmzalanmış Aygıt Yazılımı Dosyası"nın, OneKey açık kaynak deposundaki "GitHub CI ile Önceden İmzalanmış Aygıt Yazılımı Dosyası"ndan türetildiğini doğrulayın.
"OneKey Ekibi Tarafından İmzalanmış Aygıt Yazılımı Dosyası" ile "OneKey Resmi CDN'inde Depolanan Aygıt Yazılımı Dosyası" arasındaki tutarlılığı doğrulayın.
Ön Koşullar
Sistem Aygıt Yazılımı Bluetooth Aygıt Yazılımı
✔ GitHub CI ile Önceden İmzalanmış Aygıt Yazılımı Dosyasını İndirin (İmzasız)
Resmi OneKey donanım aygıt yazılımı GitHub Sürüm sayfasına gidin: https://github.com/OneKeyHQ/firmware/releases
Doğrulamak istediğiniz aygıt yazılımı sürümünü bulun ve GitHub Action bağlantısına tıklayın.
İndirmek için Artifacts altındaki aygıt yazılımı adına tıklayın (GitHub girişi gereklidir).
✔ OneKey Ekibi Tarafından İmzalanmış Aygıt Yazılımı Dosyasını İndirin (İmzalı)
Resmi OneKey donanım aygıt yazılımı GitHub Sürüm sayfasına gidin: https://github.com/OneKeyHQ/firmware/releases
Doğrulamak istediğiniz aygıt yazılımı sürümünü bulun.
Assets altındaki bin dosyasını indirmek için tıklayın.
✔ OneKey Resmi CDN'inde Depolanan Aygıt Yazılımı Dosyasını İndirin (İmzalı)
OneKey CDN dosyasına gidin: https://data.onekey.so/config.json
Doğrulamak istediğiniz aygıt yazılımı sürümünü bulun.
"url" alanındaki bağlantıyı kopyalayın.
Bin dosyasının otomatik indirilmesi için yeni bir tarayıcı penceresinde açın.
✔ GitHub CI ile Önceden İmzalanmış Bluetooth Aygıt Yazılımı Dosyasını İndirin (İmzasız)
Resmi OneKey Bluetooth aygıt yazılımı GitHub Sürüm sayfasına gidin
OneKey Classic & Classic 1S: https://github.com/OneKeyHQ/bluetooth-firmware-classic/releases
Doğrulamak istediğiniz aygıt yazılımı sürümünü bulun ve GitHub Action bağlantısına tıklayın.
İndirmek için Artifacts altındaki aygıt yazılımı adına tıklayın (GitHub girişi gereklidir).
✔ OneKey Ekibi Tarafından İmzalanmış Bluetooth Aygıt Yazılımı Dosyasını İndirin (İmzalı)
Resmi OneKey Bluetooth aygıt yazılımı GitHub Sürüm sayfasına gidin
OneKey Classic & Classic 1S: https://github.com/OneKeyHQ/bluetooth-firmware-classic/releases
Doğrulamak istediğiniz aygıt yazılımı sürümünü bulun.
Assets altındaki bin dosyasını indirmek için tıklayın.
✔ OneKey Resmi CDN'inde Depolanan Bluetooth Aygıt Yazılımı Dosyasını İndirin (İmzalı)
OneKey CDN dosyasına gidin: https://data.onekey.so/config.json
Doğrulamak istediğiniz aygıt yazılımı sürümünü bulun.
"ble" - "webUpdate" alanındaki bağlantıyı kopyalayın.
Bin dosyasının otomatik indirilmesi için yeni bir tarayıcı penceresinde açın.
✔ Python'ı İndirin ve Yükleyin
Şuraya gidin: https://www.python.org/downloads/
Python'ın en son sürümünü indirin ve yükleyin.
Adımlar
Daha önce belirlenen iki hedef için doğrulama adımları aşağıdadır:
Sistem Aygıt Yazılımı Bluetooth Aygıt Yazılımı
GitHub CI ile önceden imzalanmış aygıt yazılımı ile doğrulama süreci (Sistem)
Terminali açın.
Aşağıdaki komutu çalıştırın (OneKey Ekibi Tarafından İmzalanmış Aygıt Yazılımı Dosyası):
tail -c +1024 /path/to/(dosya yolu) | shasum -a 256
Aşağıdaki komutu çalıştırın (GitHub CI ile Önceden İmzalanmış Aygıt Yazılımı Dosyası):
tail -c +1024 /path/to/(dosya yolu) | shasum -a 256
İki komut tarafından oluşturulan Sağlama Toplamlarını karşılaştırın. Sonuçlar eşleşirse, "OneKey Ekibi Tarafından İmzalanmış Aygıt Yazılımı Dosyası"nın, OneKey açık kaynak deposundaki "GitHub CI ile Önceden İmzalanmış Aygıt Yazılımı Dosyası"ndan türetildiği doğrulanabilir.
Sistem aygıt yazılımı için, aygıt başlatılırken önyükleyici (bootloader) tarafından doğrulanan aygıt yazılımının CI sürümüne 1024 baytlık bir imza sonucu eklenir.
OneKey Resmi CDN'inde Depolanan Aygıt Yazılımı Dosyası ile doğrulama süreci (Sistem)
Terminali açın.
Aşağıdaki komutu çalıştırın (OneKey Ekibi Tarafından İmzalanmış Aygıt Yazılımı Dosyası):
shasum -a 256 (dosya yolu)
Aşağıdaki komutu çalıştırın (OneKey Resmi CDN'inde Depolanan Aygıt Yazılımı Dosyası):
shasum -a 256 (dosya yolu)
İki komut tarafından oluşturulan Sağlama Toplamlarını karşılaştırın. Sonuçlar eşleşirse, iki aygıt yazılımı dosyasının kod tutarlılığı doğrulanmış olur.
GitHub CI ile önceden imzalanmış bluetooth aygıt yazılımı ile doğrulama süreci (Bluetooth)
İndirdiğiniz GitHub CI ile Önceden İmzalanmış Bluetooth aygıt yazılımı klasöründeki ota.bin dosyasını bulun.
Aynı klasörde ota.bin dosyası ile bir terminal açın.
Python'ı şu komutla çalıştırın: python3
GitHub CI ile Önceden İmzalanmış Bluetooth aygıt yazılımının sağlama toplamını almak için aşağıdaki komutu çalıştırın.
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""")
Aynı komutu OneKey Ekibi Tarafından İmzalanmış Bluetooth Aygıt Yazılımı Dosyası ile çalıştırın.
Not: Lütfen komuttaki ota.bin dosya adını, OneKey Ekibi Tarafından İmzalanmış Bluetooth Aygıt Yazılımı Dosyasının adıyla değiştirin.
İki komut tarafından oluşturulan Sağlama Toplamlarını karşılaştırın. Sonuçlar eşleşirse, "OneKey Ekibi Tarafından İmzalanmış Aygıt Yazılımı Dosyası"nın, OneKey açık kaynak deposundaki "GitHub CI ile Önceden İmzalanmış Aygıt Yazılımı Dosyası"ndan türetildiği doğrulanabilir.
OneKey Resmi CDN'inde Depolanan Bluetooth Aygıt Yazılımı Dosyası ile doğrulama süreci (Bluetooth)
OneKey Ekibi Tarafından İmzalanmış Bluetooth Aygıt Yazılımı Dosyası ile aynı klasörde bir terminal açın.
Python'ı şu komutla çalıştırın: python3
Aşağıdaki komutu kopyalayın:
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 ifadesini indirdiğiniz OneKey Ekibi Tarafından İmzalanmış Bluetooth Aygıt Yazılımı Dosyasının adıyla değiştirin.
Sağlama toplamını almak için komutu çalıştırın.
Yukarıdaki adımları indirdiğiniz OneKey Resmi CDN'inde Depolanan Bluetooth Aygıt Yazılımı Dosyası ile tekrarlayın.
İki komut tarafından oluşturulan Sağlama Toplamlarını karşılaştırın. Sonuçlar eşleşirse, iki aygıt yazılımı dosyasının kod tutarlılığı doğrulanmış olur.
