A carteira de hardware OneKey possui firmware totalmente de código aberto. Você pode visualizar o código do firmware de código aberto para produtos relevantes no repositório GitHub da OneKey. Antes que os arquivos de firmware destinados à produção em massa sejam oficialmente lançados, a equipe OneKey usa as ferramentas de compilação automatizadas do GitHub (GitHub CI) para compilar e empacotar o código fonte do firmware dos respectivos repositórios de firmware. Os arquivos são então assinados pelo pessoal interno da OneKey antes de serem oficialmente lançados.
Este artigo fornece um método de autoverificação, comparando os Checksums dos arquivos antes e depois da Multi-Sig da equipe oficial, para verificar a consistência entre os arquivos de firmware e o código de código aberto.
Para métodos de como verificar a consistência dos dados de origem de diferentes arquivos usando a função de hash criptográfica SHA-256 (comparando Checksums), consulte este artigo.
Repositórios de Firmware de Código Aberto
- ⚙ Firmware Padrão: github.com/OneKeyHQ/firmware-pro
- Firmware Bluetooth: github.com/OneKeyHQ/bluetooth-firmware-pro
- ⚙ Firmware Padrão: github.com/OneKeyHQ/firmware-classic1s
- Firmware Bluetooth: github.com/OneKeyHQ/bluetooth-firmware-classic
- ⚙ Firmware Padrão: github.com/OneKeyHQ/firmware/tree/bixin_dev
- Firmware Bluetooth: github.com/OneKeyHQ/bluetooth-firmware-classic
- ⚙ Firmware Padrão: github.com/OneKeyHQ/firmware (branch: touch)
- Firmware Bluetooth: github.com/OneKeyHQ/bluetooth-firmware-touch
- ⚙ Firmware Padrão: github.com/OneKeyHQ/firmware/tree/mini
Processo de Lançamento do Firmware
Quando o firmware padrão oficial ou o firmware Bluetooth está pronto para lançamento, a equipe OneKey executará a Action do repositório correspondente para compilar o código de código aberto. Após a compilação bem-sucedida, os arquivos são carregados no armazenamento de artefatos do GitHub, aguardando a conclusão da Multi-Sig interna da equipe antes de serem colocados no CDN da OneKey. Após a atualização do arquivo config.json, as notificações de atualização são enviadas através do aplicativo OneKey e do site de atualização de firmware OneKey, solicitando aos usuários que atualizem seu firmware. Consulte o diagrama abaixo para o processo específico.
Alvos de Verificação
- Verifique se o "Arquivo de Firmware Assinado pela Equipe OneKey" é derivado do "Arquivo de Firmware Pré-Assinado pelo GitHub CI" no repositório de código aberto OneKey.
- Verifique a consistência entre o "Arquivo de Firmware Assinado pela Equipe OneKey" e o "Arquivo de Firmware Armazenado no CDN Oficial OneKey".
Pré-requisito de Verificação
- Navegue até o lançamento oficial do firmware de hardware OneKey no GitHub: https://github.com/OneKeyHQ/firmware/releases
- Encontre a versão do firmware que você deseja verificar e clique no link da Ação do GitHub.
- Clique no nome do firmware em Artifacts para baixar (é necessário fazer login no GitHub).
- Navegue até o lançamento oficial do firmware de hardware OneKey no GitHub: https://github.com/OneKeyHQ/firmware/releases
- Encontre a versão do firmware que você deseja verificar.
- Clique para baixar o arquivo bin em Assets.
- Navegue até o arquivo CDN OneKey: https://data.onekey.so/config.json
- Encontre a versão do firmware que você deseja verificar.
- Copie o link sob o campo "url".
- Abra em uma nova janela do navegador para download automático do arquivo bin.
- Navegue para o lançamento oficial do firmware de Bluetooth do OneKey no GitHub:
- OneKey Classic & Classic 1S: https://github.com/OneKeyHQ/bluetooth-firmware-classic/releases
- OneKey Pro: https://github.com/OneKeyHQ/bluetooth-firmware-pro/releases
- OneKey Touch: https://github.com/OneKeyHQ/bluetooth-firmware-touch/releases
- Encontre a versão do firmware que deseja verificar e clique no link da ação do GitHub.
- Clique no nome do firmware em Artifacts para baixar (é necessário fazer login no GitHub).
- Navegue para o lançamento oficial do firmware de Bluetooth do OneKey no GitHub:
- OneKey Classic & Classic 1S: https://github.com/OneKeyHQ/bluetooth-firmware-classic/releases
- OneKey Pro: https://github.com/OneKeyHQ/bluetooth-firmware-pro/releases
- OneKey Touch: https://github.com/OneKeyHQ/bluetooth-firmware-touch/releases
- Encontre a versão do firmware que deseja verificar.
- Clique para baixar o arquivo bin em Assets.
- Navegue para o arquivo CDN do OneKey: https://data.onekey.so/config.json
- Encontre a versão do firmware que deseja verificar.
- Copie o link no campo "ble" - "webUpdate".
- Abra em uma nova janela do navegador para baixar automaticamente o arquivo bin.
- Navegue para: https://www.python.org/downloads/
- Baixe e instale a versão mais recente do Python.
Passos de Verificação
Abaixo estão os passos de verificação para os dois alvos definidos anteriormente:
- Abra o Terminal.
- Execute o comando abaixo (Arquivo de Firmware Assinado pela Equipe OneKey):
tail -c +1024 /caminho/para/(caminho do arquivo) | shasum -a 256
- Execute o comando abaixo (Arquivo de Firmware Pré-Assinado do GitHub CI):
tail -c +1024 /caminho/para/(caminho do arquivo) | shasum -a 256
- Compare os Checksums gerados pelos dois comandos. Se os resultados coincidirem, pode-se confirmar que o "Arquivo de Firmware Assinado pela Equipe OneKey" é derivado do "Arquivo de Firmware Pré-Assinado pelo GitHub CI" no repositório de código aberto OneKey.
Para o firmware padrão, um resultado de assinatura de 1024 bytes é adicionado à versão de firmware do CI, que é verificado pelo bootloader na inicialização do dispositivo.
- Abra o Terminal.
- Execute o comando abaixo (Arquivo de Firmware Assinado pela Equipe OneKey):
shasum -a 256 (caminho do arquivo)
- Execute o comando abaixo (Arquivo de Firmware Armazenado no CDN Oficial da OneKey):
shasum -a 256 (caminho do arquivo)
- Compare os Checksums gerados pelos dois comandos. Se os resultados coincidirem, a consistência do código dos dois arquivos de firmware é confirmada.
- Encontre o arquivo ota.bin na pasta do firmware Bluetooth pré-assinado do GitHub CI que você baixou.
- Abra um terminal na mesma pasta com ota.bin.
- Invoque o Python com o comando:
python3
- Execute o comando abaixo para obter o checksum do firmware Bluetooth pré-assinado do 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""")
- Execute o mesmo comando com o Arquivo de Firmware Bluetooth Assinado pela Equipe OneKey.
- Nota: por favor, altere ota.bin no comando para o nome do Arquivo de Firmware Bluetooth Assinado pela Equipe OneKey.
- Compare os checksums gerados pelos dois comandos. Se os resultados coincidirem, pode-se confirmar que o "Arquivo de Firmware Assinado pela Equipe OneKey" é derivado do "Arquivo de Firmware Pré-assinado do GitHub CI" no repositório de código aberto do OneKey.
- Abra um terminal na mesma pasta com o Arquivo de Firmware Bluetooth Assinado pela Equipe OneKey.
- Invoque o Python com o comando:
python3
- Copie o comando abaixo:
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""")
- Altere ota.bin para o nome do Arquivo de Firmware Bluetooth Assinado pela Equipe OneKey que você baixou.
- Execute o comando para obter o checksum.
- Repita os passos acima com o Arquivo de Firmware Bluetooth Armazenado no CDN Oficial do OneKey que você baixou.
- Compare os checksums gerados pelos dois comandos. Se os resultados coincidirem, a consistência do código dos dois arquivos de firmware é confirmada.