Auditoria
Confira você mesmo.
Tudo nesta página saiu do repositório no build que a publicou: as verificações que rodam a cada mudança, os servidores que o app pode chamar, o que vem de fora conferido arquivo por arquivo e os arquivos que guardam as chaves. Nada é buscado depois.
Este build
- Commit publicado
9a101c6058a319 de outubro de 2026, na main.- Verificação no CI
- RodandoWorkflow verificar, no macOS: verificar.sh --testes, app em Release e testes de unidade. Ver a execução.
- Versão do app
- 1.0.0 (build 11)De project.yml. Em preparação para a App Store.
Conferir na sua máquina
git clone https://github.com/Escalibur-Wallet/escalibur-wallet.git cd escalibur-wallet git checkout 9a101c6058a3O mesmo commit desta página../tools/verificar.sh --testesAs verificações abaixo e os 1.558 testes do núcleo. Num Mac com Xcode 26.6.python3 tools/gerar-site.py build/siteGera este site de novo, com os mesmos números.
97 verificações
O tools/verificar.sh confere no código o que o app promete em texto. Cada linha abaixo é uma afirmação que o script prova a cada mudança, no CI, e para o merge se falhar. Cada uma leva à linha onde mora.
Fronteira de rede12
- núcleo, redes e chaves não têm código de rede linha 54
- sem reflexão no núcleo, nas redes e nas chaves linha 57
- URLSession só no módulo de rede linha 60
- sem URLSession.shared e sem AsyncImage linha 63
- o módulo de rede não enxerga segredo nem chave linha 66
- rede e motores não tocam chaveiro, Secure Enclave nem biometria linha 69
- EscaliburEngines não depende de EscaliburKeys (o compilador garante) linha 71
- EscaliburNetwork não depende de EscaliburKeys (o compilador garante) linha 73
- os motores só usam dado público do módulo de chaves linha 76
- os motores só falam com a rede pelo módulo de rede linha 79
- plano de assinatura só nasce em EscaliburChains linha 82
- só o módulo de chaves assina linha 85
Hosts5
Dependências6
Fontes e build2
Workflows2
Código vendorizado8
- 72 arquivos de secp256k1 conferem com secp256k1.lock linha 214
- 14 arquivos de argon2 conferem com argon2.lock linha 215
- 3 arquivos de "moeda conferem com modelos.lock linha 216
- a pasta da moeda 3D só tem o que o modelos.lock lista linha 218
- as 10 listas BIP-39 conferem com wordlists.lock linha 225
- as listas do medidor de força conferem com forca.lock linha 232
- decifrador de referência confere com recuperacao.lock linha 238
- nenhum decifrador para computador dentro do app linha 242
Registro e aleatoriedade3
Chaveiro e biometria10
- chaveiro só em SecretStore.swift e Enclave.swift linha 255
- sem userPresence, devicePasscode, .or, touchIDAny, flags por número, AfterFirstUnlock, WhenUnlocked sem ThisDeviceOnly linha 260
- biometryAny só na kand.qualquer, em flags(for:) do Enclave.swift linha 272
- a kand.qualquer só embrulha o miolo, no construtor do registro linha 281
- o app não nomeia a kand.qualquer linha 284
- itens em WhenPasscodeSetThisDeviceOnly linha 285
- a exceção do simulador só compila para simulador linha 288
- embrulho em software só no simulador e nos testes linha 290
- armazenamento em memória e embrulho em software só existem nos testes linha 292
- nenhum booleano de biometria autoriza operação linha 294
Segredo4
Plataforma23
- teclados de terceiros bloqueados linha 324
- cobertura antes da foto do seletor de apps linha 325
- NSFileProtectionComplete em todo o contêiner linha 326
- tela sensível some com gravação, espelhamento ou captura da cena linha 328
- camada segura contra captura só com API pública linha 335
- metadados fora do backup do iCloud linha 339
- proteção abaixo da Complete só no marcador de instalação, nos alertas de preço, no aviso de recebimento, nas ordens abertas e no widget linha 346
- o arquivo do widget só leva a moeda e o preço, sem cofre, chaveiro, metadados, saldo nem endereço linha 351
- o widget só lê o arquivo do App Group: sem Kit, sem rede, sem chaveiro linha 353
- entitlements do widget: só o App Group da carteira linha 356
- o aviso de recebimento (segundo plano) só lê endereços públicos e saldo, sem cofre, chaveiro nem metadados linha 359
- o aviso das ordens limite (segundo plano) só lê o UID e o andamento na CoW, sem cofre, chaveiro nem metadados linha 362
- os alertas de preço (segundo plano) não tocam cofre, chaveiro, metadados nem saldo linha 365
- UserDefaults só em Preferences.swift linha 367
- manifesto de privacidade: sem rastreamento, sem coleta, motivos do UserDefaults e do tempo de boot, no projeto linha 377
- entitlements: a proteção de dados e um App Group só (o do widget) linha 384
- permissões: Face ID, câmera, microfone e fala, nada mais linha 386
- área de transferência só em três pontos linha 388
- a checagem do aparelho só pergunta se há texto copiado linha 391
- toda cópia e local e expira linha 398
- a frase só e copiada depois do aviso e some em até 1 minuto linha 403
- nenhum SDK de análise, falha ou anúncio linha 405
- sem navegador embutido; só o Safari da Apple, para o site da Escalibur (SiteBrowser) linha 416
Depuração4
Determinismo2
Privacidade5
- todo host do hosts.lock está na Política de privacidade, em português e em inglês linha 457
- e-mail de suporte igual no app, na página de suporte, nos Termos e na Política linha 471
- páginas públicas (suporte, privacidade, termos) geradas dos mesmos textos do app linha 476
- linha 483
- lista de versões assinada ainda não criada (tools/versoes/versoes.swift autorizar) linha 488
Site4
- o site lista as redes de Chain.swift e os tokens de TokenRegistry.swift linha 499
- todas as páginas do site com Content Security Policy, sem script em linha e sem nada carregado de outro site linha 513
- nenhum travessão nas páginas do site linha 517
- selos das lojas sem link enquanto o app não esta na loja (APP_STORE_URL e PLAY_STORE_URL em tools/gerar-site.py) linha 527
Texto4
Testes3
120 servidores, e nenhum outro
O app só fala com os endereços do hosts.lock. O cliente HTTP recusa qualquer outro em tempo de execução, e cada um está na Política de privacidade, com o que vê. Agrupados como a Política descreve.
Ler a lista compilada no app · hosts.lock no GitHub
Preços, gráficos e logos das moedas6
- api.coingecko.com
- api.coinpaprika.com
- assets.coingecko.com
- coin-images.coingecko.com
- api.kraken.com
- www.okx.com
Gráfico de tokens que o CoinGecko não lista1
- api.geckoterminal.com
Lista de tokens da X Layer e da Sonic, e da BNB Chain quando a Alchemy não responde1
- tokens.coingecko.com
Logos de tokens fora da lista1
- raw.githubusercontent.com
Bitcoin, Litecoin e Dogecoin9
- api.bitcore.io
- api.blockchair.com
- api.blockcypher.com
- blockstream.info
- dogecoin.atomicwallet.io
- litecoin.atomicwallet.io
- litecoinspace.org
- mempool.emzy.de
- mempool.space
Ethereum, Base, Arbitrum, Optimism, Polygon, BNB Chain, Avalanche, Plasma, X Layer, Linea, Unichain, Sonic e Celo50
- 196.rpc.thirdweb.com
- 1rpc.io
- 42220.rpc.thirdweb.com
- 9745.rpc.thirdweb.com
- api-explorer.linea.build
- api.avax.network
- api.routescan.io
- arb1.arbitrum.io
- arbitrum-one-rpc.publicnode.com
- arbitrum.blockscout.com
- arbitrum.drpc.org
- arbitrum.meowrpc.com
- avalanche-c-chain-rpc.publicnode.com
- avalanche.drpc.org
- base-rpc.publicnode.com
- base.blockscout.com
- base.drpc.org
- bsc-dataseed.bnbchain.org
- bsc-dataseed1.defibit.io
- bsc-dataseed1.ninicoin.io
- bsc-rpc.publicnode.com
- celo-rpc.publicnode.com
- celo.blockscout.com
- cloudflare-eth.com
- eth.blockscout.com
- eth.drpc.org
- ethereum-rpc.publicnode.com
- explorer.optimism.io
- forno.celo.org
- linea-rpc.publicnode.com
- linea.drpc.org
- mainnet.base.org
- mainnet.optimism.io
- mainnet.unichain.org
- optimism-rpc.publicnode.com
- optimism.drpc.org
- plasma.gateway.tenderly.co
- polygon-bor-rpc.publicnode.com
- polygon.blockscout.com
- polygon.drpc.org
- rpc.linea.build
- rpc.plasma.to
- rpc.soniclabs.com
- rpc.xlayer.tech
- sonic-rpc.publicnode.com
- sonic.drpc.org
- unichain-rpc.publicnode.com
- unichain.blockscout.com
- unichain.drpc.org
- xlayer.drpc.org
Histórico e tokens de Base, Arbitrum, Polygon e BNB Chain4
- base-mainnet.g.alchemy.com
- arb-mainnet.g.alchemy.com
- polygon-mainnet.g.alchemy.com
- bnb-mainnet.g.alchemy.com
Envio protegido na Ethereum2
- rpc.flashbots.net
- rpc.mevblocker.io
Solana4
- api.mainnet.solana.com
- public.rpc.solanavibestation.com
- solana-mainnet.gateway.tatum.io
- solana-rpc.publicnode.com
XRP Ledger3
- s1.ripple.com
- s2.ripple.com
- xrplcluster.com
Stellar2
- horizon.stellar.lobstr.co
- horizon.stellar.org
Tron3
- api.trongrid.io
- api.tronstack.io
- tron-rpc.publicnode.com
TON2
- tonapi.io
- toncenter.com
Sui4
- fullnode.mainnet.sui.io
- graphql.mainnet.sui.io
- rpc-mainnet.suiscan.xyz
- sui-mainnet.nodeinfra.com
Cardano3
- api.koios.rest
- api.yoroiwallet.com
- zero.yoroiwallet.com
Polkadot6
- polkadot-asset-hub-rpc.polkadot.io
- rpc-asset-hub-polkadot.luckyfriday.io
- asset-hub-polkadot-rpc.n.dwellir.com
- statemint.api.onfinality.io
- polkadot-asset-hub-public-sidecar.parity-chains.parity.io
- subquery-history-polkadot-ah-prod.novasama-tech.org
NEAR6
- api.fastnear.com
- free.rpc.fastnear.com
- near.drpc.org
- rpc.shitzuapes.xyz
- rpc.intea.rs
- tx.main.fastnear.com
Aptos3
- aptos-rest.publicnode.com
- rpc.sentio.xyz
- api.mainnet.aptoslabs.com
Trocas e ordens limite6
- aggregator-api.kyberswap.com
- api.cow.fi
- api.jup.ag
- api.velora.xyz
- li.quest
- open-api.de1.exchange
Ponte entre redes2
- iris-api.circle.com
- app.across.to
Conferir as atualizações do app2
- itunes.apple.com
- escalibur-wallet.github.io
O que vem de fora, conferido arquivo por arquivo
Nenhum pacote é baixado na hora de montar o app, e nenhum binário vem pronto. As bibliotecas de criptografia e as listas de palavras estão no repositório, compiladas do fonte, e o verificador confere a impressão digital (SHA-256) de cada arquivo.
argon2.lock14 arquivos
- LICENSE.txt
- 220f8736a89ff51c92ef3d497f413b48e6cf1df3d6278bc909c6308c78e1718e
- argon2.c
- 72a93deebc5fd76bec0c6d300a2d92b500fb354b26babbddbc6d8b88681e663d
- blake2/blake2-impl.h
- 8ac91f1f57d94235f8de0069b7809be1deb365c3b37adb8e30423cd364aff09a
- blake2/blake2.h
- 3c2de197dd23179f78c57deac7b73a6049778bf651c5db57e508b2cfce5e7559
- blake2/blake2b.c
- 52519ccbc1e48f489ff444091f630d05dadcc8f1ee61c5b7361e3a9618299c9a
- blake2/blamka-round-ref.h
- bcfdcf785218cf897f05b144e80b659e611188fee3887d533bdcb7a6aa4c336b
- core.c
- 0f53eb2370f8971f04fcf043b8083bf81d1530c48b2ead71c0b6c4e22a01aeec
- core.h
- c9665623cb3d306f63b6a3effd87bcfab971c28253c77e111445e42c1523235e
- encoding.c
- e20124ec0f780f88527e79cf00825e839624ed1f469c7e231596bf070f8c7b14
- encoding.h
- 42f283d12ec445cfb423ac2f1f5a5d1a7f152ce2b9363f6ec3e1d5b61cd4ee6d
- include/argon2.h
- df20cb726a2fe6bccc736b81ea0d86219766a0d17f1794c19e048a34830ca1cc
- ref.c
- 4ec47b080c22f4ee416b9dbcfae70ee6007fcfba427f870d7b84395846fa1bc7
- thread.c
- 1402085e2f54b021ea31b0d301f4b689a8b300832e2d11901502e62835185e3e
- thread.h
- 9eab7f9ff356862a00a3075478dd0059344953ed79daab8b29185be2010efe78
forca.lock8 arquivos
- en-nomes
- c9356ecaa568c1dc58cb292a6c3ebd8e265c0c48e87da422a1f7e27de6130391
- en-palavras
- c40875d15ba8089f52f53936e562d3527fc59ce6558dfbdea7a728e975e4255a
- en-wikipedia
- 14236edfc09f509c020284de6d353b09b93de94d9d9096ceb66c29ac35c0ae0f
- pt-nomes
- 922490dc16495cc6021b5e14904d115f7359fd705c26d5cbdbf48d581c4eb1e9
- pt-palavras
- d56518bbbb3e0bc3772ce30264b1317230fa676f1d5fc5c12b15a2522eac8bc7
- pt-sobrenomes
- ff496837571698bc8707911fd5577d4ea537f8e8e3c607b7b84287e05c26b648
- pt-wikipedia
- f0338b31d8b9d97bbd461fa62bc7dad32e65976d1828f74117225d15ae9f2f42
- senhas-comuns
- 861b4d0bacb7ff670bd98e8f92260694f7d75e2267239ebd92c007357d1cfe2b
modelos.lock3 arquivos
- bitcoin-borda.jpg
- 56bb5b40b61b8cd95d483472f6a4ab8d57409275e88ddf899ef0b60da62a57b4
- bitcoin-frente.jpg
- 7da6a0f6e62c1eab85d9cb6b6570679aeaf159ae9a21c799cebc478f7b19431f
- bitcoin-verso.jpg
- 29bd3fe974080f8a4901a8409cc5fe6c8fc3af58726bddcb7dfc720acf93ffa2
recuperacao.lock2 arquivos
- decifrar.py
- aba29df24c1d7dc9562edc22299a92cd77ac4227045c534cff30795aeb8cd3f6
- FORMATO.md
- 81b6a6beec17fb00cb2fd779046b6355af30a7321685e46d87696d36b3788829
secp256k1.lock72 arquivos
- COPYING
- a735999c7e5649df6fcda6fb06ab97435851c392b1b93494ae8725f37441632f
- include/secp256k1.h
- b20af3448985fa64e61b07cc9937f23f873e40e38a6cde169ad4ee4af55cd830
- include/secp256k1_extrakeys.h
- 7c3468c9fd192ad152c5cf042cb44938961d752fcf19966123ce6a5e3fd31637
- include/secp256k1_preallocated.h
- b7283d4cc9c13bb2572dc92e69cea76f3270403baf5748ea4d91a1064b951b85
- include/secp256k1_recovery.h
- 3b2efb3ccf53e9f1bce93a4afae31946585958d5cba3b38fdfb1eea4c6ce2622
- include/secp256k1_schnorrsig.h
- 9b72c2199046d815df533d61a0287c1f4ca73cdef2195666c0c57d284e0c84cc
- src/assumptions.h
- cc875f356cc8f7f272def71f7d7261e44cc27a18a5b668cd8192c84d238e4e68
- src/bench.h
- 575fc51f87564f46856959f88753b37b3c4c1f09c772e7f43a5d59c68f24e9c9
- src/checkmem.h
- f367089bffa53b8998047de2f718f75d627dad549a1e5dc2a9ce9ab9f581ffe8
- src/ecdsa.h
- f97753416b0971133ad9d8acf9af02259931d0285a0333a9753201a353070ef6
- src/ecdsa_impl.h
- 883ad9ac4dfa224a1cc97bc2a4cc09b1078545a1632917dac2524a18ba4e53ee
- src/eckey.h
- cf511599285faecd27ace6191eca3945d85bc852b11076a1b1727759a6b03056
- src/eckey_impl.h
- 4d327c593520c3f60f7b86d407df0870c26cf58037e4156ba8f92258304fd6b6
- src/ecmult.h
- 1e87f35efb7e7e5b6ea1d6ec22bbaeab33ccd4eacc41a9092ee518ece9237ced
- src/ecmult_compute_table.h
- 5a8ce69b18d777c3ad608ef173fd6a47c75b9c37bc6801f19ca4c44eb4b9f8f6
- src/ecmult_compute_table_impl.h
- 6082339f616cd5a628300df24e66353c1374a117e24ddd474fe6151dbc620d60
- src/ecmult_const.h
- 4705e7baabcbf8fd1853f8cef45a7f6a3075b98925d91cc209afda2c956942ba
- src/ecmult_const_impl.h
- 07238bcf17c3292bb8198f7f37baf068bdc9a6a57f843c439e220eb08f400607
- src/ecmult_gen.h
- b15359caff9a96a348d23305b20b6b0f24d667d2614e3e078b0749e3aaedeb75
- src/ecmult_gen_compute_table.h
- 51eb54b0cb7b49b25cf751efb2799322d73c97bc9bdd2a263feff2d2d6eeff9f
- src/ecmult_gen_compute_table_impl.h
- 9ae524743bb5871bff7e41e48b61218336b1919769132aafa944283ef1bb88f2
- src/ecmult_gen_impl.h
- a97fb72b41a12644520c09e9290346e7bd52c48492a74d6c90613e869163f88b
- src/ecmult_impl.h
- ce70d26cb987c9bb2a2477389459437fc2831546c9c14404b58cf7ed07f32cc1
- src/field.h
- 4a044d83637686a021448c152bcef029337af9c53ce5d70983b73fa450b58ffc
- src/field_10x26.h
- ba9a43b62e7e70e6e18af2787bd01dfc3a57fea527cf8ad0333194211ac7d7de
- src/field_10x26_impl.h
- 4c23a9466b333a49e2a974f3472cec8a5379fcd69fb8ff2ebc76d1aafd444784
- src/field_5x52.h
- cbaa91c253ba84d99efcd334c7a39906c164d5edf3cde81200a44a606205cdce
- src/field_5x52_impl.h
- 2c42559c21f23ca02848b76b29c5a2aca36d2fd932b902adfc9ba755ff850f6c
- src/field_5x52_int128_impl.h
- 9f3071c7da547b94e0e6eabe0dbedc42535ea7c470f1dc891d0a24aa5d19dcf7
- src/field_impl.h
- a0ffc1e76ae4087ecb0a38bff62924710c5094ba9a209aeadc73a291b2f7b2af
- src/group.h
- f5f85b79a0c1659bf0a85ff199844b60fc2ace13d46c15fcac518e1db0ee1fb0
- src/group_impl.h
- f55f65b95486c79ab44b55a767fb0879b27983a119757f9207b3c367478ff29e
- src/hash.h
- 4a30c765a9bd49b57bba6a0879fdea66f915f606e6f9f4c92abf580668d50999
- src/hash_impl.h
- e7d20d64807cda921dbb816fdc80085287272a718cc5f97c15720449317196d2
- src/hsort.h
- 220cb669835d34c252598ecff860c93edda337a9f8c2fc07b2b6cead7d48b284
- src/hsort_impl.h
- 2861489c01b927b27d99efe173799a812434748b4addd30d102187ce4f3b66a9
- src/int128.h
- 89ac5d91d64f857038d063dd70eec4b29b4f32aa218c790fe049137c347186cb
- src/int128_impl.h
- 5683c02dfc495639da259d80624711c1c449bbaee6186729e399e713a28b4719
- src/int128_native.h
- b4c52c7ff091083f5eca9879b98641c7a38356a3c5321cbcc22ae1573e7711e1
- src/int128_native_impl.h
- ecaafefadbde3db034d4f44678096833d2d113fd21b4ff7044095b6153ec03a8
- src/int128_struct.h
- 0733b3a65719a1e9a8fb3564c71a38f2f31ca3522f40087d536dba90361b66e7
- src/int128_struct_impl.h
- 0b4e2200327f5357078ba43b0e0514c58c2b1eb217b87ebc14d95efb913b5be2
- src/modinv32.h
- 774887ccd462b145434d1d6b9ae9455aa3618e791544a2b61267e18931d5010d
- src/modinv32_impl.h
- befe02af7099a871677c7b05a81302dff5a4dc1d59f19b20bcb58cc28e096112
- src/modinv64.h
- b71cf177d768beac28fcb4f0ef545aafaad16ad0f275c70ee4c60b5f7549ac41
- src/modinv64_impl.h
- 1254dc7ea941fc4d4ef0a85eed80db58d9e2647a8b8d19238d6afc048d63764d
- src/modules/extrakeys/main_impl.h
- 6c002046bda20ffb8767cac1c6800dd3b8e9be9e648772a1498539159a4b4937
- src/modules/recovery/main_impl.h
- fbec2358a560b669d85720108b0b1a8f653c91531a88ded0a1da339445266cc9
- src/modules/schnorrsig/main_impl.h
- c427a1b90af376af23157268fafc844097970e44d718c68b1e2fe74c3a37b3b5
- src/precomputed_ecmult.c
- 1fba19c482de09f566ed9e7bf6a526e4edb59a1cf38218e3ab413000a0e0deda
- src/precomputed_ecmult.h
- d792b8a49759deff5f1e4092558fa9ae11d24e02695e44bee63a8f0ba8e18503
- src/precomputed_ecmult_gen.c
- c0a7af0884b7b07962be67e9da674e0d75a8d412d116153b8eae2a9e5527d401
- src/precomputed_ecmult_gen.h
- 8f514bed441bccf7e34ff05ff49d3a44e9395519a8fdcf176e6aeab7b5dbd5fc
- src/scalar.h
- 4e9622fb9b90e971ee40f1f5b7598fc5067870512db1ace4241333d1329e856b
- src/scalar_4x64.h
- 42aed583b28bda7982c54a6f63e50c0ae5f9c27d5f66d92ec6bf6c90e765735a
- src/scalar_4x64_impl.h
- 92bc1023ee0e53cbd955a779b2f70d8b29bdc51ca02b61f23dda7054455264de
- src/scalar_8x32.h
- 0614cea113aea88a47ef3b2ba8167722e850d7b2a696a4f16b03ec9a320ef1d6
- src/scalar_8x32_impl.h
- 19ad58cb2a3699c979ee2baf072586302ff2b3a7cfe59c7bd91c5c01120e8727
- src/scalar_impl.h
- 6ba654bd4edc0349d1d7f1dfc25ba2d73dd9f2ecdca8078e384bf7b7837d663f
- src/scalar_low.h
- 3cab20db10224ff85ee7c6d975d2968c1370ed8e96ea26b94650f6e2bac31ac4
- src/scalar_low_impl.h
- 188ea86c20ada218798c558fed63f0ed6267e3cf5ee7e79be2db07cc8584c064
- src/scratch.h
- 4af5e1ff665c0418bcc5b1c2de954e7b377f9bdfdd4309e0296938918fac11ef
- src/scratch_impl.h
- 294a55d429fa4cc9dec46ade345bbb2bfdff4055eb1cbf1ba6168a23e5e74db6
- src/secp256k1.c
- c9eff089d8cd7c5b3a843bf5ca1cc9d3fdac3a4a84b7d446e5a53e2bbd0d712a
- src/selftest.h
- 2eda8afb246812b36e9761977c93ed75a95e1ccfbdab1c31ffba4986b937335e
- src/testrand.h
- 716ca2566258ae09b04e27df76d2c2c5d3c1614a891461fdf0e5aa126d0cf819
- src/testrand_impl.h
- 1dda83d9d288abbd92eb04b2d7f6d7d2e0a489afda8fe2e65bffca74fdf02cc3
- src/tests_common.h
- d7bcac998247023f3040357e701d80e1e23868714aa58a8f38b0f55596781dc3
- src/testutil.h
- 5a780fc16fcd8549ea4774d15beb2d36c6ad9a2ca7180dd95f84199a2863d1ff
- src/unit_test.h
- 650eac2b31c6eedd961023f339332136a4c1cf72e06bab05431645acdc1a1510
- src/util.h
- 1ae020ca4feba019413b549de263e7c07c656fa1f9edd6b63cc563943ae4097b
- src/util_local_visibility.h
- d47d4a58f40157ab2a298151f366c5ebec8f7a1e7aaba88e36b530b1c01584ca
simbolos.lock0 arquivos
wordlists.lock10 arquivos
- chinese_simplified
- 5c5942792bd8340cb8b27cd592f1015edf56a8c5b26276ee18a482428e7c5726
- chinese_traditional
- 417b26b3d8500a4ae3d59717d7011952db6fc2fb84b807f3f94ac734e89c1b5f
- czech
- 7e80e161c3e93d9554c2efb78d4e3cebf8fc727e9c52e03b83b94406bdcc95fc
- english
- 2f5eed53a4727b4bf8880d8f3f199efc90e58503646d9ff8eff3a2ed3b24dbda
- french
- ebc3959ab7801a1df6bac4fa7d970652f1df76b683cd2f4003c941c63d517e59
- italian
- d392c49fdb700a24cd1fceb237c1f65dcc128f6b34a8aacb58b59384b5c648c2
- japanese
- 2eed0aef492291e061633d7ad8117f1a2b03eb80a29d0e4e3117ac2528d05ffd
- korean
- 9e95f86c167de88f450f0aaf89e87f6624a57f973c67b516e338e8e8b8897f60
- portuguese
- 2685e9c194c82ae67e10ba59d9ea5345a23dc093e92276fc5361f6667d79cd3f
- spanish
- 46846a5a0139d1e3cb77293e521c2865f7bcdb82c44e8d0a06a2cd0ecba48c0b
O código que importa
Os arquivos que assinam, conferem o que se assina, guardam as chaves e falam com a rede, linha a linha, no commit publicado. Cada linha leva à mesma linha no GitHub.
Assinatura
- O assinadorO único lugar do app onde uma chave privada assina alguma coisa.
Kit/Sources/EscaliburKeys/Signer.swift · 151 linhas - O contrato entre redes e assinadorO contrato entre as redes e o assinador.
Kit/Sources/EscaliburChains/Signing.swift · 332 linhas - A conferência do planoO plano faz o que a tela pediu? Conferido pelo app antes de mostrar a revisão e de novo antes de assinar (auditoria 2, M1).
Kit/Sources/EscaliburChains/PlanIntentCheck.swift · 82 linhas - O que sai e o que entraO que sai e o que entra num plano, com o ativo pelo mesmo id que a tela usa (`Asset.id`).
Kit/Sources/EscaliburChains/PlanMovement.swift · 58 linhas
Contratos e destinos
- A guarda de chamada EVMA guarda de chamada:
Kit/Sources/EscaliburChains/EVM/EVMCallGuard.swift · 236 linhas - A lista de contratos da trocaA allowlist de routers, compilada.
Kit/Sources/EscaliburChains/Trade/TradeAllowlist.swift · 218 linhas - A lista de contratos da ponteA allowlist da ponte, compilada e rede por rede (docs/seguranca.md 4.12).
Kit/Sources/EscaliburChains/Bridge/BridgeAllowlist.swift · 270 linhas - Endereço parecidoDetecção de envenenamento de endereço.
Kit/Sources/EscaliburChains/AddressPoisoning.swift · 379 linhas
Chaves
- A chave raiz, o PIN e o Face IDA chave raiz (RK) e os dois caminhos que a destrancam:
Kit/Sources/EscaliburKeys/RootKeyVault.swift · 1.907 linhas - As chaves do Secure EnclaveChaves de hardware que embrulham a chave raiz (RK).
Kit/Sources/EscaliburKeys/Enclave.swift · 467 linhas - As regras do PINAs regras do PIN:
Kit/Sources/EscaliburKeys/PINPolicy.swift · 241 linhas - O chaveiroOnde os itens da carteira moram.
Kit/Sources/EscaliburKeys/SecretStore.swift · 182 linhas
Envelope
- O envelopeA porta de entrada da carteira para o envelope Escalibur (`.esclbr`).
Kit/Sources/EscaliburCore/Envelope/Envelope.swift · 214 linhas - O formato .esclbrO formato do arquivo `.esclbr`, campo a campo.
Kit/Sources/EscaliburCore/Envelope/VaultFormat.swift · 302 linhas
Rede
- O cliente HTTPO único ponto do app que fala com a internet.
Kit/Sources/EscaliburNetwork/HTTPClient.swift · 514 linhas - Os hosts permitidosGerado por tools/verificar.sh --atualizar-hosts a partir do hosts.lock.
Kit/Sources/EscaliburNetwork/AllowedHosts.swift · 126 linhas
Verificação
Auditorias de segurança
Os relatórios das revisões de segurança, com os achados e o que foi feito de cada um.
- Auditoria 6 (19/10/2026)Ler o relatório no GitHub
- Auditoria 5 (19/10/2026)Ler o relatório no GitHub
- Auditoria 4 (16/10/2026)Ler o relatório no GitHub
- Auditoria 3 (10/10/2026)Ler o relatório no GitHub
- Auditoria de segurança 2 (agente de segurança, 2026-09-26, main em 84d9c35)Ler o relatório no GitHub
- Auditoria de segurança 1 (agente de segurança, 2026-09-26, main em b7bbdec)Ler o relatório no GitHub