Skip to content

Commit 95ec42a

Browse files
committed
Merge remote-tracking branch 'benma/attest' into staging/ble
2 parents 528ed6d + b8cd546 commit 95ec42a

File tree

2 files changed

+222
-95
lines changed

2 files changed

+222
-95
lines changed

py/bitbox02/bitbox02/communication/bitbox_api_protocol.py

Lines changed: 119 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import enum
1919
import sys
2020
import base64
21-
import binascii
2221
import hashlib
2322
import time
2423
from typing import Callable, Optional, Dict, Tuple, Union, Sequence
@@ -74,93 +73,126 @@ class HwwResponseCode:
7473
HARDENED = 0x80000000
7574

7675

77-
class AttestationPubkeyInfo(TypedDict):
78-
# uncompressed secp256k1 pubkey serialization
79-
pubkey: bytes
80-
# if not None, a hex-encoded bootloader hashes (of the padded
81-
# bootloader binary, i.e. the device bootloader area), for which
82-
# this attestation pubkey is
83-
accepted_bootloader_hash: Optional[bytes]
84-
85-
86-
ATTESTATION_PUBKEYS: Sequence[AttestationPubkeyInfo] = [
87-
{
88-
"pubkey": binascii.unhexlify(
89-
"04074ff1273b36c24e80fe3d59e0e897a81732d3f8e9cd07e17e9fc06319cd16b"
90-
"25cf74255674477b3ac9cbac2d12f0dc27a662681fcbc12955b0bccdcbbdcfd01"
91-
),
92-
"accepted_bootloader_hash": None,
93-
},
94-
{
95-
"pubkey": binascii.unhexlify(
96-
"044c53a84f41fa7301b378bb3c260fc9b2ff1cbea7a78181279a8566797a736f1"
97-
"2cea25fa2b1c27a844392fe9b37547dc6fbd00a2676b816e7d2d3562be2a0cbbd"
98-
),
99-
"accepted_bootloader_hash": None,
100-
},
101-
{
102-
"pubkey": binascii.unhexlify(
103-
"04e9c8dc929796aac65af5084eb54dc1ee482d5e0b5c58e2c93f243c5b70b2152"
104-
"3324bdb78d7395317da165ef1138826c3ca3c91ca95e6f490c340cf5508a4a3ec"
105-
),
106-
"accepted_bootloader_hash": None,
107-
},
108-
{
109-
"pubkey": binascii.unhexlify(
110-
"04c2fb05889b9dff5a9fb22a59ee1d16bfc2863f0400ddcb69566e2abe8a15fa0"
111-
"ba1240254ca45aa310d170e724e1310ce5f611cada76c12e3c24a926a390ca4be"
112-
),
113-
"accepted_bootloader_hash": None,
114-
},
115-
{
116-
"pubkey": binascii.unhexlify(
117-
"04c4e82d6d1b91e7853eba96a871ad31fc62620b826b0b8acf815c03de31b792a"
118-
"98e05bb34d3b9e0df1040eac485f03ff8bbbf7a857ef1cf2a49a60ac084efb88f"
119-
),
120-
"accepted_bootloader_hash": None,
121-
},
122-
{
123-
"pubkey": binascii.unhexlify(
124-
"040526f5b8348a8d55e7b1cac043ce98c55bbdb3311b4d1bb2d654281edf8aeb2"
125-
"1f018fb027a6b08e4ddc62c919e648690722d00c6f54c668c9bd8224a1d82423a"
126-
),
127-
"accepted_bootloader_hash": binascii.unhexlify(
128-
"e8fa0bd5fc80b86b9f1ea983664df33b27f6f95855d79fb43248ee4c3d3e6be6"
129-
),
130-
},
131-
{
132-
"pubkey": binascii.unhexlify(
133-
"0422491e19766bd96a56e3f2f3926a6c57b89209ff47bd10e523b223ff65ab9af"
134-
"11c0a5f62c187514f2117ce772de90f9901ee122af78e69bbc4d29eec811be8ec"
135-
),
136-
"accepted_bootloader_hash": None,
137-
},
138-
{
139-
"pubkey": binascii.unhexlify(
140-
"049f1b7180014b6de60d41f16a3c0a37b20146585e4884960249d30f3cd68c74d"
141-
"04420d0cedef5719d6b1529b085ecd534fa6c1690be5eb1b3331bc57b5db224dc"
142-
),
143-
"accepted_bootloader_hash": None,
144-
},
145-
{
146-
"pubkey": binascii.unhexlify(
147-
"04adaa011a4ced11310728abb64f09636267ce0b05782da6d3eeaf987cec7c64f"
148-
"279ad55327184f9e5b4a1e53089b31bcc65032dad7205325f41ed3d9fdfba1f88"
149-
),
150-
"accepted_bootloader_hash": None,
151-
},
152-
{
153-
"pubkey": binascii.unhexlify(
154-
"044a70e663d7fe5fe0d4cbbb752883e35222b8d7d7bffdaa8d591995d1252528a"
155-
"4e9a3e4d5220d485021728b3cdad4fccc681a6ddeea8e2f7c55b4acde8d53573d"
156-
),
157-
"accepted_bootloader_hash": None,
158-
},
76+
# uncompressed secp256k1 pubkey serialization, hex-encoded.
77+
ATTESTATION_PUBKEYS: Sequence[str] = [
78+
"04074ff1273b36c24e80fe3d59e0e897a81732d3f8e9cd07e17e9fc06319cd16b25cf74255674477b3ac9cbac2d12f0dc27a662681fcbc12955b0bccdcbbdcfd01",
79+
"044c53a84f41fa7301b378bb3c260fc9b2ff1cbea7a78181279a8566797a736f12cea25fa2b1c27a844392fe9b37547dc6fbd00a2676b816e7d2d3562be2a0cbbd",
80+
"04e9c8dc929796aac65af5084eb54dc1ee482d5e0b5c58e2c93f243c5b70b21523324bdb78d7395317da165ef1138826c3ca3c91ca95e6f490c340cf5508a4a3ec",
81+
"04c2fb05889b9dff5a9fb22a59ee1d16bfc2863f0400ddcb69566e2abe8a15fa0ba1240254ca45aa310d170e724e1310ce5f611cada76c12e3c24a926a390ca4be",
82+
"04c4e82d6d1b91e7853eba96a871ad31fc62620b826b0b8acf815c03de31b792a98e05bb34d3b9e0df1040eac485f03ff8bbbf7a857ef1cf2a49a60ac084efb88f",
83+
"040526f5b8348a8d55e7b1cac043ce98c55bbdb3311b4d1bb2d654281edf8aeb21f018fb027a6b08e4ddc62c919e648690722d00c6f54c668c9bd8224a1d82423a",
84+
"0422491e19766bd96a56e3f2f3926a6c57b89209ff47bd10e523b223ff65ab9af11c0a5f62c187514f2117ce772de90f9901ee122af78e69bbc4d29eec811be8ec",
85+
"049f1b7180014b6de60d41f16a3c0a37b20146585e4884960249d30f3cd68c74d04420d0cedef5719d6b1529b085ecd534fa6c1690be5eb1b3331bc57b5db224dc",
86+
"04adaa011a4ced11310728abb64f09636267ce0b05782da6d3eeaf987cec7c64f279ad55327184f9e5b4a1e53089b31bcc65032dad7205325f41ed3d9fdfba1f88",
87+
"044a70e663d7fe5fe0d4cbbb752883e35222b8d7d7bffdaa8d591995d1252528a4e9a3e4d5220d485021728b3cdad4fccc681a6ddeea8e2f7c55b4acde8d53573d",
88+
"04ef42d5c74254dd6afb36ec752068252ed6b6e231d019b0dfe32ee9ac2d5444471698e0ce7626e2f1f6266f42e343a20fd6fe2fd9f206e623c2eb6c1c9922465d",
89+
"04438a5d3a6262e631ad7a59ae9ffa0ee73b68957c4b3ad46d5747cae81beb15beafd1feed9c50fbff7f005ae649181c987649e1b251db74a052fef0b6e99a8064",
90+
"04d145a6ba3bf76d5db1b80dbeaef8c66a4eea215d1b6f7260a0b2b63fd30c3f4c3e92913a6ce272b36ff622fff64a67b5cf8ef5db645f403c2647d4c11d5f968e",
91+
"04458f68edde1d059ef2ccc970938cd44f012da4a8556f35f5a4e1df87313c7adfcd4f22e77345e5cc900eb6dd48af9bcb42bebe3163a79b3a3a3d32c359b5c06d",
92+
"0456bb82ddc84bd87d0d6dca27439dad6f0901518bdea2347c1c07e1a53a8480ec24b615af1d6cdb9344d8ea8b2103c9daa674742c260b1d2532acc07cb1b4fce6",
93+
"04f9d9ab547dce5b4d1c4778dae1990746e9e1f9a02475b46f88d8d4cc901db348988be3a5b8466a89f5a55e75416912d4b109eed86298577a718c0e3a023b0bf2",
94+
"040682f7a78d6290e6c59e9d1bde9cd665fa24232198385a10948906b473c59b160f95308ac8adf092276722d68f9db77d61df72587797ee8c3cf0df45ae19a0ba",
95+
"0432b2b5f54365847dcd1a9c96abb041a3d6483e93049fc3440b7b46ef8bac8d397d042dd48bb9928de3f2e343a670792fe25f65e5ffcbbf0121c4a0a061e55cd3",
96+
"043eef9f2af390dfb456800fc7673f1ac61baefa68bff84ccd36fdfe408f90205b865ddd2c6036ceb6260bd6e6b2f2b0a0ade9a60579f259bcb945ea5eced8bfe8",
97+
"04bc9b0fee1e5e088c77608e6ce16313a96a5b725de2c77fb3504e8c6ecf54ba278837f6ecdeb5a537d89d0a655cdaface33ef7786b949533ea8cec90694b15840",
98+
"046f8f4942d0ffea7078850917b850b96fac0d1010ff9ef1419e5e9a8fce94796ff1c451f64ec8e5fbb20bc1cb73fd5fdddf5c647883f3966a82ed3e816d8da862",
99+
"04995f9c5d5f539e53cd106837ca3eba50626df5dd5e54ce3146477c57cd5918c0b83b30f3e469c8ee7c741cd7c6833e78eeab710dfb96360ce464905fbda8179e",
100+
"049991c5db649d7cf37f0a1cae2b4f14461404e0286c0b86e3dd5462a18a3ec35f54e66865a8e88aab14f94cbd8778c3c79440c54e5eeb5f96ba097638017b71dc",
101+
"0433b669b2346c99824e81352a254ef4688349f41570f531e031a9c51e901aa0d74dc1206e0bd41929a75e44ee3e842c9d746f93172f5d9e3dd7a22e79d0fbad1c",
102+
"04d2b99da82c7da93db72b6e6ab52dad09bd71d661e6ff63f22170afb4599fd88456aa8f555d910c5d4cc5a8cffb38f0cd7ec514aeecf3af990dc3ea7ba9d0d1ff",
103+
"043be5abaf680e97f416a66538f0196f9ac8a2efc4f5ddc73ba43b6b3c261216b10f08b4c8c37a63dea0d2fa05240408f6d3de6d9f730af2c4e890fe1256d134aa",
104+
"04f9b88dcff16de9f4d0372e36dbf220cec95099041003ed4f3a894bc6ffd0e881ca45f3c5dd0518d14d98e7e377623f5c4d99f302ce482b0a1ca0c6f046f5d251",
105+
"04564c4238efbaca156d159ec945b80b7979dce14c4a59d380b1fc242d3aa3de0ad4ddae7262a11169819913e4346cb89b1ddc427d2192abd8f6c5a2c850768ba1",
106+
"0486fb44812e9284ac4843463021729f33da45f0b90e3947d642f84320fd1be68deb24989b48b0a8d5c2ce438693ec1405d2358198fa939ea1ecd52b0df1fbc498",
107+
"04a4b9b7a03abd093543b2d8dddddead13be13e7529ce0202b5b29a8ac52d0cfabb97bae52301a8a0e4853f3220e69dd2a0abfce526fdc087e7e0463e6495f739f",
108+
"04fb09aa6b917f136a221d299e4d021adbb309d4753f94fb502f4b6e87abeb475221180c3467762f8342a1edb55a871c016262c1a8526a025a9bb3035efbf1c566",
109+
"04f7b1dfff6f5b91432c6fdc0f79d13017b95d03d12e8b688ac446f89f9e5749d056ea2ea32d4f43cf12b174e2f7dbbd35c86d99891fd15512dddc7813ce710d6a",
110+
"04476ed4537511dd1f24588bfd74e3e34d0d4158d7042037abe6ad86e91beac3b29a4db33c3eeffeaf8e41c86996da2992a0a168bd7f8f6298a6f0c592046635dd",
111+
"04e6a3ba1a4024d7f7a666af76c880f3285bad6e945416b06ba66c6ad2c9ba0344315136d4d2a398c9142ec205f844b896e2eeb2060a3ad1108879f811040902b7",
112+
"04f6d29602c85fbc3af84f295face5b10e996520d19e8e3b95e71a56c30d6c868c38e11df16293c304ccb9cb6e0d4c7d9e7f5badd488e6747eaf88d0be221319fe",
113+
"04517ad3854bf3b9fa52ff703bd6d0fefc61406a7cd606cff270fc8ea1233366e5592321a8bb4dbbaca4df3a80ad68ef9de92e245aae898616d0ababad5f2449a6",
114+
"04e1d94a45345ff33512c63ed5a6bb2f3fb92cc1db15267389cad9e8ef70de3db522faad29ad06f2a73f174b12a23e49c272e673f28a710243bfa8adc2ffd12f1a",
115+
"045570fa35433648d7a6e98274629c3dc565e3211331802baa64087d12a63c53488071a619dd0313993d423a65a2175baba1abdcd5df7186ed247a9eaceb8b74fd",
116+
"0401fe456142c8fa3b15f7d381fc62b40dcc546d5786aaf5fd08d8b2963c90895096ce773dff54b41ef604192ba9dd48786319a4c53e22217200c20cf3fcd95d6b",
117+
"04c552738db26ef0e89bed1be8ade4951e7734579f5c49954373e78ae5e613235835e7835255eb92b64dba9d52db768895d8890e1f60f95522127cbfdf501581a8",
118+
"040366885c11552f8354a6d6d133c1d3a1d4486ac5b85d94733f583d494d39aa05f54bb0d47746bcc082ebdf7f317f33df32e517982a3e1454fbc4b776c012ce79",
119+
"04fb246edb986718ac4e892c336fd3100cd225f389806042d9fdbff1ac84be110ee1b9cfa38c4bd7c7334c8b8d21b7d07e00a1b9910b6b103b8b83cf4f27b352b4",
120+
"046003d369e24ce07356355c3bc0326856412b9d2259686e0f391b223305a7a3894b2cfe9285752865326d47fce223ea24d3c6a087fefd2a80f38041d6406da5c2",
121+
"044481ac1f9fd76dc8d87d4df88944fcc974c8ef4a4283610454eaf67393c38bcc21459132d90d115d208afbdf4bf77d3dede3e904804339a7fce5e57f0ab1bc0b",
122+
"04c7b2d16a898ba1233ff19a3bb1ce8c8956f2db8b42b0ed57bc1b1d249d1e2cb53a800a18050e44bb2d82d48066fc617dd81a0739dc71957a3daf6f22e30d5b39",
123+
"046d3e716eb3580f5335d9d3869ea048c1b4c065817716f2edd2dcb8cefbe9f6d53fe3afd76d43ee48c4b4467fee60685a0afe555ce2b65a2a6a96768f05601bc4",
124+
"044473a7c536402aa209b666acaa95f28379916cbaa6a2f4f03f544698e590e917678b102bfb08a8bb31a8d7ef4f82508373a42903d5bf4b267e4e0d285da81d75",
125+
"0451e34fa15a57dfa8c1bed92d965a8e9ad58531f79851f7aca792f3ae55e83daed5ff4b9552bd9b49eefb6f1aca173cde9b9469e7df3194a089b8f4d833305398",
126+
"0434aac7b381d143f4588e5018ec956d8dfcbca4b9e04d17e0c9abd96c5a88b562cc816c8ca24a0c50550df80e992801e2fc3427ae15ff5857083319686019d4b5",
127+
"047560b4430a1fa56ff42e47fd5f4063f39e993a7af0f04d13a75d601ca42508ba11c3245362763fb0c7847002d364a4d7913052131c11c1c7056330c12e9c29aa",
128+
"0408a651514bf9e992d297629be1f4c1ef7804760451bad13daf701fc3c662f2297fdd166cb8440c6d78527926d71664b1eb5a88ac5b75fd7a9aebfa30a2ac2db1",
129+
"04b6be971ec9f51de953e9689a9d7df828f45459f78cbfbc6f9bdab8a1d5f7bf6305991207c2f3fc48695f113936eac5599130b3bd4bf3f8ed125888c106bf6675",
130+
"04a7436fd434513ec3748e01dba2f1cc6406a945a0329cfd3e60fa04fc8196d21c83a8e34d688afb1a29f251ef29ea659849eac310c8bc38ec29edc23b40cd860e",
131+
"041e432d24bed03c5cfddb38155e2df8e42482294423c79a0341f0b86073d91cea71ffc58bacaf08c11511461e000ecd6db33170ee99e1aca8aff89f68b7c5db31",
132+
"045604b119b5d7ce91093a429c70a246842d9150390eaf5e98530fdd68ff0263051159d4baed1eacde5cce3064a061910348ae3e5dc88b9daef5417418b7fdb57d",
133+
"04aa59b2506202e2112e9bb794cfe43aace1c303559332869e04a151a2b2dc70d382b9b156cfd5a710ff476b5e4744439e7763e076f7dd834ef21900d949798f93",
134+
"0433f5b6c27f93489a98c3a109cae3da0ea86b93d75cf8871f3f78e9696b4045a7342ae38ac06359f710aa2c06a88821ac79672c2498fbec051e4f1525e8c9fae7",
135+
"047cbbe361c84de6b9c9c809b12a584354780b12aa89787673cfc2ca22d48bb0eb43a8aac781d333b8b91956be82840985cc90fd9ba8443589661b6aa308478ec6",
136+
"04768cdf5973c34f027abb68e86844eb981b3ddb5a5f11f8c079b04fe658afeccc8163cab7e97120ada6313a2c3007a948a1ea1b3d466106cf472a127974a971ce",
137+
"041bc1b519a2a67f14c91bc8052cc3d94a7a2824d742abb1be65c7d86085ed0b15c678ff508b01add8bc5f24295f4bfbfb0126c3bbb05ba0bb596062ba37f86c43",
138+
"04ec87da7c538369614ead4d3a3b359fa22468fac84a101623f2394eea10c8ab92b2f118951333a35311e11cffa2ecb9f7a9b9d5e1360efc636fc8b1be830c812b",
139+
"0487cb0069f2a43cd3c0be0d5e6164bb2a4d56db2bd962b25b7159bff04df286010b4e2c54982ee72f573093dede1ef7e7b337bd0a0181f270098cc3aeeb743b5a",
140+
"0487e18223782642f5605fbc2cab0cb3d78a35367da75bc3466aef5fce03375fb36bb24fe3653da9085fde2db75624a2283866f0d39b788ad9538a7795779cffdb",
141+
"04d3b453084456096bc30dd5ac28d6cbab06ca40424543fcc72f3becc198e4cb14728bbd52cc452eb7417729c0e5283277c3a17a5d2faa4e26d40880560734d19b",
142+
"048bf5abf82e6fd10f3516f0586c0cf091941fd17411fda4333bbe8675c97f6395b5cf4e0b6c32c21005a75e3c4c950abd0c34fb8c8722d47cf17b3fb71fafb3dd",
143+
"04e123e5639ae797edb389875534b223439c8b9400b32d799df3f2e3319c87a2bd527f0fbe7bed07186f78b591503abf453af5a0016984176764396ff47466616d",
144+
"049767f3b31fd667975831ff39964e38eda53a1a9bad3ae0807d29d3929ab379cfd27d4cb935f9c089829d6a51c783ca8e73b06cec195437ff58d80ed11879291b",
145+
"04e95dfd536e3ed24c55a76b55cbaf74fe1aceb8b632facfad1205d608cbd0282d77d45868ff49d31afc017ddb17ddb168535929faa0d23203da71546b9cbffef6",
146+
"04853455c8cf75da9e19c8ee89e73057efc9d4cd8008da4c08e2a5903deb712bef3c9d2bb0a853a3a2e2d7b10a8730254babd89639c237dc54ed649e4888fb5a8e",
147+
"04ee55299800e7739b5673029a1fb8d88976e81442c71e2b00ec19665c6578d33d960edd546c263614f4a4f1ddfee6c916022b85f5fe5a3f675d49b65d2899ed21",
148+
"04813b0d011e25ccea0a6c277d8032eaf7c4f055d89e8c4b53c1ada83554f41f0c864681c6b36112a9f47c6512e5033fbfac9c5caaad2bbca15baacbb092c07b6b",
149+
"04a800befd176bc49d7bba6d2ec9807ee72dea039377f7b027a4aab09ecc12a0fafe80394d346a8bf1a3a4a2c7742f9fdb8814a3d01d36d9e1dc90340fb6aa7a4e",
150+
"04fb15f204f7c47fa21bde4ff365938071ea402816048819bddedfca8264d020f0646ac5c0cf47df85794b4dd0a17b788bdd09d45582e8e6b9562a538769f2475d",
151+
"04bb7f11a51e91025681d9d329dbb1fd4ee4ea1eba6afb9c89022dd555ce442331bed3215001afe6d7bcdff5a8215a4e03f3b790a7e47182184a64ad13d0d425bf",
152+
"0466a3f9e7a7eb51ac22e46c972bcefc4ae1b3cfcbc4a532b4d7e51ec4bbb002ce8ed3af4a94fd6fb4fcfafa2252caf328d6a7ddf16edf76079619cbe4a24d89d5",
153+
"04b9f07bb4ede8aed008d65ba6baa5c8743239cc68bb7b3471e290eaaff71601453932f4f0321cb761cd8f2694ab16e405297c4ad9ede751310a09978de7b008be",
154+
"04949f487a41fa7d9b0368a89eb9e16c885b937b08412fe6565588837862537af37a2bc7c7009af2e921273a3133e858147509b415b2f49e9f8da1f69a49175814",
155+
"043548e330caaf10c4696f2a712fb5b2b69cd6316de64d4405c5f2f3d74bfa44b52a72a68a58856677d2b0fb20541766236432f0807d6c2e7e897a2d508fab8b80",
156+
"043aa576a8171b73b0f653532c0b0f6f49b893045b80f99e2214f207093b263f173d467c9c542e4a9cc2b0dd1f6dc46238084c329612b6a54c325fa00bbaadfc59",
157+
"04c982547397aab0b991bb0200336c810a7b7247fca76615012b1be8307d1763617409fcedb531d44ec83dfc25310f38a46ddb83112768dcb8e31ce34efde31d17",
158+
"04e45e1b9dfc8ca9a03c0126b6e07fadb38b2029b03f97ee2e3c9e7f2475aa961cbf6e8c9afbe6086b321bc225a3e44b3157185c6ebe21130cad1b346712ea1716",
159+
"04cd33b47eff77442eb5ab5f67869efc470c62097970b66d0d74fe7ca7fd70eb76b0adc7dbe6788ac5f42fe753750c9743e7f4d0d488963a01840c3a66aa038317",
160+
"043370ff050a99e431726ffee05cbc95225d096ecca1e534516e7c40e741943f6410eff44af418743a117d9b174451685a4eaad2a603645d49181369d54f81714a",
161+
"04cf6bd3c4bbeadfa939957aa3e0ed7ace55a030a85698a8876976a69f65e5843d9332200a242957473d3871a79e90d3e3e902cb749f999e9ba3533704bbf98c8d",
162+
"048b8ea186a6963aa7460cb144622daf28deecf132e38d5ec26d82464c27ebf93e16915eb953bdd1d29487be55be1a566e1a904955f5fc700e03e6bb2c55e9d30d",
163+
"04fb36dfe7949cbcad863b2f3c7c71b1bda01c954e8211103eca93153d44be5a4bc329df2543da1767263a2e8b6596a427a55ba735aff33249dcfec89d8fc8fb49",
164+
"04e8b5c26cae0c7719df23b88a80ab67cd418f929a932b4ee49a52049cce0968838c805942005006bb49431676a08b653440c857a6135b098c7f30d62162240d9d",
165+
"040867f9cd46ec9d0ff098303dca4d3297feee1d00b20da73d9cf2e6ba0a9e83f596a6ed882401cbfedb345c105a7c5f804d683a7714d0bae4aa7e027377fb0ca8",
166+
"04ceedd2c63a20ca20d9f84f83f1d27617722ecba021ef217fad0d1ad2f58b76006a32e8c7ea53f7657a5e1f6f4ea1a4a55081a3670bc7ed8fa2bde2cff465f12a",
167+
"049947a8d9573beb26f61f499da8435fbaa69e020145a5f1fc2efa1558db4747056cd36e299f92fbb9c98f3c7cbf04985fb7c09fac83be3bac2e4b3078129e5383",
168+
"04082483f5c4d03f74365fd66824bd02f7be1461c3559265de71f7702f16faccee4de0bc2e5ea8dc05461535b8ec476b31b1a447744b4e6d86b98f7a5eced629b9",
169+
"042b892b394e21f31de43e6aaa899d158458da5778287e50815358eb25dee9cd598e8d2071519437a9d0c253a2b6fcfbd6d9df32ed7c1df9df431c552e86caf125",
170+
"04ef30a5877fc417b7aa8ea21f1bf76160028a49a0cd43e524a3d9bc44496233b1c5773c0b58fec30d9652ca3ca538b20310749949d38e2d1644cd7e3809b33cc1",
171+
"04676f9723819f36518ad34e7b21d69f830b43fb966c0a3e8d1116bd3fa061fea5099882afbed5bf343ae4b95b4b0a13622c229ea0a555d2c478686096f568a647",
172+
"04abb4363bdfc5a91178ddc8a4cdc05d2e0616783594c53d5af2c2d34caa9b787e685434097fe4fff5af149acfaa9ab57a8060ef9d260c0bfba0eabdf9fad40c4b",
173+
"043220fddfbf5ae6bc63ff750f5f040a2a6e5cd8817a7450ae48653b6a1489fbaf86c9f42d6e31c4be25e2ed9fc1ca68114d01f001a36bde776498e70377d7327f",
174+
"0417a20da4ae93c3532afdef5f5a29124080eb98091214c9520dc60dd2c59d14a45561bc39247cba51edad190f34551309948100d5032afab9862b7ea0c60959c8",
175+
"04f378380a8aee1472449e94452ef366305abee4f797298e80398c0becc339ee9a1a3a4df34af6f10703d3816b377f0e3577ec977dc2158ab25e6aec18d1b92e45",
176+
"049a2763f23933d8cb5664f46a4b1c62cb55087d21a655a8cb271104a3b973c5e4b4c495a3bd834b672e98206141be46f3e823ba4e20b18b33de8352c544a9b5b9",
177+
"045f6f1d56a429497360a87958efb92a0a17c1921ce5b85db163aae22fc428129da8bcace8812a0e0b3f80935f4ea0c71f53c089df024906f09630cc4dcbae69d2",
178+
"04b397d8873b66eb2778281c0b1782e9c173de6021fe7d446de6d0aaddc3946fcd6f711c5e84d3548c28cd11bab548504ac1dd25c7960a0cfb1a09c45ecf88593b",
179+
"04c91160f925c710c3ba4befe7e6ab22692a633d5865e02dd49ad543ecc03d78a180b32bd1c10a1e37c0c2d8439eee0a9065113a3dc9639807306d360d3c86c639",
180+
"04a94517c095528cf6a7b65adbd1f6723b2840392a587630b8f1089b4a744fbf026f3f594c1b0ea7d1f4d70c7648ebde515aef4eeacacbcb46287e086baaabec42",
181+
"049df689158d44e061b5362fe40549fa6b2231e64d01c3fe43ccb8566bbf40178f501a9aa6a3c45dfbcb6a9212a19e68c12bf18788cab71b725d44129c5ae65d62",
182+
"040fead3b041184e24b1bb461c6accf1b35cf63c55bc68e2eea77060331bb14c680c8065cd8a4ee1d8af2f8f8b295c982570c9aa4995f00bf26aac3b04975aab83",
183+
"04fce43a145bfdb469d1e45134ff68254fe260efc9b58c3c6b367a9ec587b379c0547197b4f8865bab06cfa4f86fd94ebe31e921c76402428c94e15d448f8d0e0e",
184+
"04d65831029ae21c554c2ba442a55b92802a82840680b8b95cf4b939f7972f013883ba998139aae896aff41bb2eb73e1a2fb1bfaaf1958823b87a2b1830896981b",
185+
"048b86b0984fcc63434b12dc57f2c3896e7851cdb7ed907b18780ff75b47eff738355fc2b028dc2e16aedc63f3dd8d864fc450e141cc0f21b416676c693cf57ffd",
186+
"047870a256d9ac4e253c247dc71ad404c360f191cb40ecbb81004b6c8a80fbf610201bb57ded75874620a8aa1ea8cdcd6004e84242810fe4c03c0ac83dd42e570a",
187+
"04c6159283412ef6cfa74660565aa51d3fee4e7f852da62f9b33633f626cda4dfa8c39374940640b94fc075d1575545cc7685c969137b27e9d0d178feb2ca00623",
159188
]
160189

161-
ATTESTATION_PUBKEYS_MAP: Dict[bytes, AttestationPubkeyInfo] = {
162-
hashlib.sha256(val["pubkey"]).digest(): val for val in ATTESTATION_PUBKEYS
163-
}
190+
191+
ATTESTATION_PUBKEYS_MAP: Dict[bytes, bytes] = {}
192+
for pubkey_hex in ATTESTATION_PUBKEYS:
193+
pubkey = bytes.fromhex(pubkey_hex)
194+
ATTESTATION_PUBKEYS_MAP[hashlib.sha256(pubkey).digest()] = pubkey
195+
164196

165197
OP_ATTESTATION = b"a"
166198
OP_UNLOCK = b"u"
@@ -605,14 +637,7 @@ def _perform_attestation(self) -> bool:
605637
# root pubkey could not be identified.
606638
return False
607639

608-
root_pubkey_info = ATTESTATION_PUBKEYS_MAP[root_pubkey_identifier]
609-
root_pubkey_bytes_uncompressed = root_pubkey_info["pubkey"]
610-
if (
611-
root_pubkey_info["accepted_bootloader_hash"] is not None
612-
and root_pubkey_info["accepted_bootloader_hash"] != bootloader_hash
613-
):
614-
return False
615-
640+
root_pubkey_bytes_uncompressed = ATTESTATION_PUBKEYS_MAP[root_pubkey_identifier]
616641
root_pubkey = ecdsa.VerifyingKey.from_string(
617642
root_pubkey_bytes_uncompressed[1:], ecdsa.curves.SECP256k1
618643
)

0 commit comments

Comments
 (0)