diff --git a/common/defs/fido/proton.json b/common/defs/fido/proton.json new file mode 100644 index 0000000000..17d47b0808 --- /dev/null +++ b/common/defs/fido/proton.json @@ -0,0 +1,4 @@ +{ + "name": "Proton", + "webauthn": ["proton.me"] +} diff --git a/common/defs/fido/proton.png b/common/defs/fido/proton.png new file mode 100644 index 0000000000..31fe6d445f Binary files /dev/null and b/common/defs/fido/proton.png differ diff --git a/core/src/apps/webauthn/knownapps.py b/core/src/apps/webauthn/knownapps.py index 8dc3669946..e01eb93a43 100644 --- a/core/src/apps/webauthn/knownapps.py +++ b/core/src/apps/webauthn/knownapps.py @@ -275,6 +275,14 @@ def by_rp_id_hash(rp_id_hash: bytes) -> FIDOApp | None: use_sign_count=None, use_self_attestation=None, ) + if rp_id_hash == b"\xa2\x59\xc2\xb5\x0d\x78\x50\x80\xf8\xbe\x7f\x17\xca\xf8\x15\x6c\x8d\x18\xf4\x7e\xdb\xaf\x51\x8f\xa6\xf5\x9f\x29\xcd\x28\xf1\x5c": + # WebAuthn key for Proton + return FIDOApp( + label="proton.me", + icon="apps/webauthn/res/icon_proton.toif", + use_sign_count=None, + use_self_attestation=None, + ) if rp_id_hash == b"\x08\xb2\xa3\xd4\x19\x39\xaa\x31\x66\x84\x93\xcb\x36\xcd\xcc\x4f\x16\xc4\xd9\xb4\xc8\x23\x8b\x73\xc2\xf6\x72\xc0\x33\x00\x71\x97": # U2F key for Slush Pool return FIDOApp( diff --git a/core/src/apps/webauthn/res/icon_proton.toif b/core/src/apps/webauthn/res/icon_proton.toif new file mode 100644 index 0000000000..478a38a570 Binary files /dev/null and b/core/src/apps/webauthn/res/icon_proton.toif differ diff --git a/core/src/trezor/res/resources.py b/core/src/trezor/res/resources.py index b9052997a2..15e53f9ca3 100644 --- a/core/src/trezor/res/resources.py +++ b/core/src/trezor/res/resources.py @@ -102,6 +102,8 @@ def load_resource(name: str) -> bytes: return b'TOIF@\x00@\x00&\x05\x00\x00\xed\xd2?L\x1bW\x1c\x07\xf0g\x0b\xa9\x1e\xda\xca\x03R=dxg\x18@\xaa\xaaX\xca\x80%W\xf2Y\xca\x10$\x06,e\xc0\x12\x92M\x94\x01\x98\x001\x10\x0b\xe9\xf8#*%\xa8\x03\xa0\x0c\x18\xa13\x84\x0e\x082TN\x874A6Pg\xa0\xb8\x03\xc2\x19\x8c\x8d\x81\xa2\x1b\xc0\xb9!:<\xa4\xf8\xea\xe7\xf3q\x7f\xde\xb39\x12\xd3.\xfe\xfe\xc6\xfb\xbd\xfb\xbc??\x00\xea\xa9\xa7\x9e\xff7\x10\xb04\x08\xc2 \xf4\xfa\xad\xff\xbd\xeew2\xe9@\x81.\x95\xe9\x82\xed#\xf5|\\\xe8\xe6\x8d\xd6Hbx\x9d\x0fZ<\xb4\xc5\x88\xce\xd2\xd4\x05]P*P\x00A\xbckx]\xbcq6\xf2\xef\xdf\xaez\xaf\xbby&\xad\xd6\xa5\x82\xad\xb5\xf0\xa5\xb8\xb8\x9f\x87\xaa\xdc\x84\x17\xd7\xe9B4T;\x1f\xe5S\xa6\xd2=\xf8\x9f\x91|\xf7~m}\x94\x87\xeb\xe3\x84\xd9fgI>\x93\xae\xbd\x8fn\xe11\xf6\xael\x1f\xc9\xf7Gn\xc3\x17\xc5\xc5\xbc\xc5\xa3\xf3m\x14\xa6\x07\nn\xdf\xed\xf8\xa2\xb8\x91\xe7\x9c\xda?\xc3\xa0\xde\xcfn\xe3\xefT+_\x14G\xf9\xfb\x9aW\x80\x9a\x19\x08\x14u\xd6f\xd4?\xc4\xcaHR\x99\x80E\xf7\n4x\xe1\xde\xf7\xa7\xfd\x11\x7f\x0f\x04\xa4\x90\xfc3\x1f\xde\xb7d}\xdc\xda\xdb~wr>Ym\x07{\x0b\xe0\x861\xea+\xb1x\xde\xbf\xad\xbc\x83\x16\xcfm\xfb(\xab\xden\x9e\xec\xcf\'\xbf\xd4?\x14w|\xd7\xafk\xa0R\x19\xf2\x0e\xe4\xddg\xa1\xdf\xa9-\xb7\xe3:\x1fM\xdaF\xde\x88\x8f&\x82\xbc\x83\x91D\xb9\xe1\x05\x9a{u\xb1\xa7\xd5|d/\xe6\x17\xf9Q~\xd5k\xec\xee\x9a\xa9\xc5\xfc\x94Ie~O\xf6\xb6\xab\x1aZ\xd9>\xe6\x8d\xe9B\xfb\'\xb8\x0f\x83Q\x88>\xef\xf8H7\xd0@\x91\xfc0\xc1o\\\x19\xe5\x7f,\x9eZ\xb6\xe7\x93O\x12\x0fJ~\x14f\x07\xa9}J\xf7\x0f\xd3nt0\x0b\x95\xf5\x10\x8c\xf2\xb8_\x9a`C\xfe\xc7\x05t\xe3\xc8~]\xb2\xbb\x12\xcexo{\xb63\xbcMa\xab\xdd\x13\xa0\xb5\xda\x04+\xb9;\x89\xfbTa\x8c\xe0\xef\xcd\xa52\xa9\xa4b\x7f\x17\xff!s"`;\xdfv\xfb`\x85\x89|9\x84\xfb\xf7V\xf4>U0\x15\x02\x04\x7ff\x0e\xd9#e\xfb\x9b\x8c\xbd\xd8Ii\xd6\xb9#~\'\xa8\x92\xdev\xdc\x7f\xfeJ\xedS%\x9d\xec\x0fL#\xbb\xadh\x7f[\xb6\xd5\xbe?\xe2v\x80k\xc29q\xdf\x16W|Y?\xba\xa4\t~\xe7t[\xdc\x16\xb7&\x9b.\xa8\x02\xa5\xf1M\xbb\x8c\x13\x18Hu_\xd17\x89\xbeuR\xf8\xe3\xab\x0fj\x1bU,\xc7\xf4\x00\x83y\xea\xad|\xffj}\xf3\xd2N\xf0\x7fZ\xb3\x17\xf4:\xb5\xc6X\x81\xe1\xf0A\xdco,\xcd\x9fd\xcb\xfa\x92`NkWFax[o\x87s\xc0\x0bn\x94\xdf^\xe1>\x1f\x04\xe0hY\xb2e}\\\xe7g;c9\xbd>\xf6\xe6&\'G\xa1-\x8by\xdc_\xf5J\xbeZ\x1f\x17\x8e\x0f\x94up\xc2\x84\xdd;\x9c\x80\xc5\xff\xed-\xec\xf8\x8c\xfb\x1d\xfd"![6\x00b\xcbe\xbb\xac\xf7\x08\x9be\xdfm\xa1#z\xfbH\xc8v\x02\xd0L\xbdN\x8a\xe2\x99a\x1f\x82T\x06\xd7\xe7\x93\xe8[lY\xab\xcb>c\x8d\xfd\x89\xdd\xfb)t\x00\xd0\xe2\x91\xee\xd2\xb8\xffW\x90t\xfa\xcei\xd9_\x12d\xddS\xac\xa5\x034st\x1a\x9b\xf7t\x14\x02\xf0\xf5\xa3\xc3\xf2z\xa3\xfe\x94\xe3\x90\xc4\x8b\x8f[\xd1\xd7pH99\xd2\xed\xc2\xf8A\xb6%p\xaa\xd7M\xbbL\xf1\xb5x\xd5I\x8c\xf9\xcd\x94\x8b#\xe9\xb6\xb8\xf4=\x1cRt\xbb\xd0$\x98s\xc7\x7f\x93t\xbf\x05\x00\xeb\xa4\xfa\x0fF\xfc)\x07Y\x17\xc5\xdev\xa9c,\xa4\xd5\xed\xc2\xd1%6\xf3\xfb\x8cU{vc\xfe\xcb\xa1\x8d\xdf:\xef\x11\xd4\xba\xa9\xf4\xf2\x8cS\xe9\xaa\x85\xdf\x95h\xa0\x00\x16*\xb4\xa5\xbb{\xc9\x0f\xdf\x1fI\xec\xf8@\x95\x98g\x8f\xb0\xd3\x9b\xd6\xf4]\x9f\xe3\xdf\xe1~\x9d\xab|n9\xb1\'\xe1m}\xb16}\xd7\xcc\xdc\xeb\xa4\xb1\xeaJ<\x7f50}\xe6k\xa6@=\xf5\xd4SO\x95\xfc\x0b' if name == "apps/webauthn/res/icon_namecheap.toif": return b'TOIF@\x00@\x00W\x03\x00\x00\xed\x92\xbfO\xdb@\x1c\xc5\x0f\x1a$\xc6\x8c\x1d\xaf@%\xc6\x8c\xed\x16\x84\x8a\xd2\x8d\xfe\x07NS(\x1d\xbb\x95-n~T]\xd9\xcc\xe4\x04\x10\xa2\x1b\xedD\xbb8!m%w*Lf\x8a\xafHH\xc7v\xe9de\xa8/n\xc8\xf9\xfc=\xdb\t\xab\xdf[\xcf\xf7>\xef\x9d\x11\xca\x94)S\xa6L\x992\x85\xb5\xf4\xfc{{\xfbWS\xf2\xc6y}\xcf-\xccp\xdd"*[\xa7\xc8\xb6\xce\x8az\x11\'\x1d\xc6\xf9\xdcI\xc3\xf90\xd8\x19B.\r\x1b{\xd3\x85k\xab\xf8\xa2\xea\x8d\xad1\xf4&\x9e\xb5rZw\xb6|\x1f+\x08v\x86G\xfb\xe9\xd3\x8b\xf9"\x99\xa4\x07Fe\xf5\xf9\xf9\xb7\xd7n\xcf=t\xea\xce\xc2Ui\xa8"XZK\x9b_5\xe4t\xbe\x01\xce\xab\xb6\x7fp\xb5Br$`x}\xab\xca\xdf8O\xb9=\x8e\xa6\x8f\x16P\xbc\xc1\xdan\x85\xae\xd3u\x120<&\xf7]\x80\xb77!\x02\x03n\xff\x92\xd4h\x8d\x8e\x18\xe8\xb2\xcf\xd0\x1c\xdcg\x81"\xe6\xe9\x81\xc3\xf9f\x0b:_\xdem\xb36;\xa0\x13\x86W\xf7Z\xc04LO\xb4\xf0\x07\xe8P\xfb6\xe9\xb2.\x13\x19*t\xf6\x054l\xb2p\xbe@P\x88\x9e\xd7w\t#\xac\xfb\xdfc\x86C:\xeb\x02r\xfb1\x81\xe9\xf5\xcf\x80\xb7\xcaw(\xcf\x8f2\xcc\xb6\x00ooy&\xec\'\xc0\x9f\xaa\xbb\x9e\xcb\\\x16e\xa8\xd8\xa5\xbf\xd3/`\x1a\x96\x17XNW\xb5\xf7\xf3=\x88\xc1\xdd\xac\xefM\xbb\x80\x86-6\xce\x8f0\xa8\xdaO,0\xbc\xb4\xfd?\xe3\xe1\xb4\x0bX\x86\x98.2$\xb4\x0fQ\xf0|\xf4\x82\x9f\x88Y\xe0\x1b\xdc\xbe\xef\xf5=\x90!\xb9\xbd\xe0\xb2\x1d\x9c\x98n\x01\xcb\xe0\xe9\x81\xc3\xf9p{\x8b\xf2\x93P~\xd0\x9e\xab\x91z\x01\rw\x98\xeb\xf5=\x88\x01n?9\t\xb7\x0f\x16X\x1d\xaa\x08\xe6\xd7\xc2\xed\xc7\xdf\xcb\x0c\xe8+\xd4\xde\xa4\xa3e\xbc(\xc5\xa4}\xfa\x054\xec\xff\xbdB\x07\x91\x00n/\xbcN\x88A\xb3\xc3\'\xd3-\xe0\x1a\xd1W\x0cnD\x9f\xc1\xf6L\xfaC&\xde\x94O\'/ \xb7\x17\x19\xa0\xf6\x9anyQ\xf3t\xb9}\xba\x05:\x06a.\x83\x18\xe0\xf6Ufz\xdc\x00\xc3&\x02\x14\xbf\x80\x86\xbb\x940\xee(\x03\xd8\xfec\x90\x1ee(\xda\x08T\xec\x02O;F\x97q\x13&S<\x8am\x1fe\x80\xdb\x8f\x16\xd8W\xe57/\xdb\xb4\xcd\xba\x0c``\xc9\xedE\x06U\xfb\xd1\x02X\xbd@\xee\xf6\xc0\'\x882\xcc\x81\xed5V\xf5\x14\x04%\x14\xa3#\xe5\x027\x83\x1a\xadQ\x9fA\xda\xc1,\x00\xed\xf5\xaa\x17XN\xc76\x8a\x95\x8eK\xca\x05z\xb4\xe2\x9bSL\x18\xe6>A\xb7\xe0\xabq\xbe\xcc\x10\xdf>~\x81\x9f\x83e\xb2~\xc7\x10\xbcF\xb5\x00\xdd!\xa6\x8b\x14I\xed\x93\x168"+Dd \'\xf0\x1d\xfc\xf5\xa1\xfc\xe4\xf6I\x0b\\\xbb9\x92\xbbc\x80\xdb#\xd4\xef@\x0b \x1b\xa5R\xdc\x02[\xa4\xe7\x8e\x19\xde\xb7T7\xf45(?]\xfb\xa4\x05\xea\xce\xa1\xd3s\xae}\n\xad\xa0\xbe\xa1\x7f\x16\xd9\xbf\x85RK\xcb\xdf\xfcQ\x11\xfc [\x0eg\x98\xd7\xe3n\xc0\x8b\xd6\xa9\x94\xbe\x88\xa6P\x0b\x1f_\xc2\xf9%\x9f\xe0\xd9o\xf2.\xf9\x0e\xab\xe4\xa7^ \xdbl\x99E4\xb50:(/|i^\x1eK\xde>o\xec\xb5\n(S\xa6L\x992e\xca$\xe9\x1f' + if name == "apps/webauthn/res/icon_proton.toif": + return b'TOIF@\x00@\x00?\x02\x00\x00\xed\xd2\xb1n\xd3@\x18\xc0\xf1/\x9b\x17\x88\xd5.\'\xd5\x91L\xba\x98\xa9\xb6\xe8b\x89\x9cd\xc1\xe2\xf1$:\xb8\x03\'\x9dp\x81{\x80>B\x1cv"x\x84\xf8\x05\x1a\xf5\x15\xd2\x851\xcd3\xa4\x12\x1dI\x18 \xaaP\x1ar\xd7\xea\x1c\xfb;\t\xf1\xfdw\xff\xec\xcf\x1f\xc0z\xe6\x01\x97\xd5\xa3\xd2\x13c\xc6\xe2\x89\xff\x0c\xaa\xcdn\xfe\xfd\x86\xe9\x88\xd8\xf4W\xfd\xc8Jb\xd3\xbf\xdbC\xd7\xb1\xe9s\xd9\x11\x03b\xd3_u\x15\xd8\xf5\xb9\x9c\x07v}.G\xc4\xae\xdf\x13\xaf\x1d\x9b>\x97Sf\xd7\x7f\xfc\nt~\xe9?\xfe\xef\xbaNA\xc2\xd8\x13\x0f\xf9\x9eh5\xe6\xff\x99\xa7\x11\xad\xbc\x81:|\x80\xdc\xd5oa\x915\xef\x03\xbcs{\xda7\xc8\xdd\xe6}\x80\x89\xaf\xf3\xdb\x11\x86\x0f0f\xeag\x8dS\x1c\xbf\xd4l\xa0#p\xfc\x16P\xcd\x1f\xe8:\x18>\xc053\xbd\xc0\x89\xbf\xc8T\rH\x15\xff"U\xfb}\x17PF\xe7\x17\x04\xc77\xdf\x7f\x9d\xd3\x82\xb7\xc6\xf7W\xe7L|\xb5N\x05\xce\xf6\xa7\x9a\xedO\x99\xcd\xaf\xe72\x8c\x9b\xd7s\xb7\'t~A\x9a\xd6\xcf\\O\xab{\xa2\xe9\xaboG\xba\xbb_u\x145\xe5\x1e:#\xc2\xe2\x97\x82?\xa0S\xd1u\xcc\x9f\xfd\xca\xb9\t>\'\x8b\x8cJ\xbec\xe6__\x90\x8b\x94\xcbz:8m\x19\xd9\x87\xce\xb06{\x95\xd9\xe5\x8fHG\xd4\xa9?yn\xa2_\x05u\xda\\\xb2\xd8D\x9f\xf86\xf5\xdc\xa5\x167\x0fp\x9d\xd5g/\xb3>1\xd3oj\xfb\xf3T\x1cE-0\x1d\xaf\x96\xdd\x1f\x9c\xb6\xa3\xaec\x8c\xef|y=1fa\\\x10\xa88\xc3T\xf7\xdc\x19{\x93\xcc\x83\x82\xf4]]\xb9[\xe5\x8b7Gu\xf9\x97l?\xfe\x16~ \xd0\xf8\xe4\xee\xb6\xbd\x17\xdf\x86\xb7\xe1G\x04\x1d\xa0\xdc\xf8\xfb\x1dq\x9c\xec\xc5\xab\xbe\x87\x802\xf3`\xad/\xb3\x17\xc9~|\xd7\'\x1f\xdb_f\xc7\xc9\xba3\x17\xd7\xf7\xc4Ir?\\\x9f\xca\xf3\xf4d#\\\xff\x92\x9d\xa7\x9ba\xfa\x1d\xf1%\xfd\xbb\xf7\x04\xcf\x9f\xb1\xaf[\x15h>\xfd\xbd\xfd\xed\xf0|O\xcc\xb2\xed\x06h\xfe2S\x85\xe7\xff\xccT\r\x10\xf7\xafj\x84\xe6\xf7\x84\xaa\x12\xcd\xa7RU\xe9c\xf9\\\xaa\xfa\xef\xff\xbb\xfe/' if name == "apps/webauthn/res/icon_slushpool.toif": return b'TOIF@\x00@\x00\xf1\x03\x00\x00\xed\x92=h*K\x14\xc7\xa7H\xb1E\n\x0b\x8b)R(\xbc\xc2\x05\x8b+\xdc"\x82M\x16,v\xc1"\x0b)\x14,\x82\xa4\x08\x8bE\x90\x14\x12l$\xa4\x10\xb1\x08\x92"\x88E@\x0b\xc1W\\\xd0B\x88\x8d\xb0\x16\x81M\x11\xf0\x16\x01-,,Rla\xb1E\x8a\xf3<\xce\xdb\xeb\xac\x1a_>\xc0Wd\xff\xa7\x99=sv~\xe7\x8b\x10W\xae\\\xb9r\xe5\xea{\xaa\xa0\xde\xb4\xa8Nuo\r\xbf\x0e\x8bT\xaf\x87\xf04\xa6\xe8\x9dV\xf0\xdcP\xa9^P\xf1\x14\x15\xaf\xcb\xe8\xa7zT$\xa4\x1e\xa2\xfaY\x11\xfd\x01\x89\xea1\xed\xe3\xf4`\n`\x04U\xabj\xed\xeb\xf8}\xd3\x02\x90\x15\xc6\xef\x0c\x00\xb2\x06\x9e\xd3\x1a@0EH\x8fF&0\x8f\xce\x99W!\xa4\x02\xb4[\x18\xf1\x90\x008,~\x9co\xdd\x03\xb0\xca\x98\x16|Bv\xfc]\xcb\xc9G\xcaQ\xf3@\xb0\xa3\xbf\xce?j\x02\xc4\r\xcfeAe\xafn\xe6\xcb\n@\xd2|\xaa\x04S;~\x9b\xdf\x19\x942\xa5\x8c\xb7\xf69~T\xec\x0cF\x80\x8a\x1b\xc7\xc2\x7f\xf1}\xc4[\xebZ\x18]\xb5\x02\x12\xe3/\xf4\x19>\xea*TP\xb3\x06@Cu\xf2\xc7\xd4\xe6\x972\x8c\x8f\xeaQY9+\x02\xfc\xbeg\xfc}]Vd\xe5\xc7\xe5\xe7\xf8\x824\xad\x8c\xa9\x8f\x9c\xcf\xe6\xf0\x90`\xfc\xddTT\x8c\x8a\xc7\x82\x8f$\xcd\x9c\x89\xa7v\x8be\x97\xf7\x1c5\x85Y\xdd\x05u\xc1\xff\xfa\xfeug\xfb\x0c\xf0:\xcc{\x18\x7f47\xccfZ\xb1o#\x13\xbc}I\xe0m\xce\xc4{\xcc\xe7\xeb\xfc\xbc\xa7\x94\xa1z\xdc8+\xb2\x8d\xc2Mb\xd6\x0f\x13r,<^\xec\xcfn\x9f*Q\x91\xc5\xcb\xcay3k\xdc\xb4\xd8\x8cN\xc4\x9f\xb5\xbf3x\xea\x87\xbd5\xcc\xd8\xd5G\xfb\xdf\xa3\xdb5\'\xff\xa8Y\xb5\xb6iI\x13\xf7x!\xdc\xf7m\xaaj}o~\xd7\xbas\xf0\x7f\xd6`\xcb:Ux\xfeKb\xdb\xfc\xa7\n\xcf\x1f\xd3\xae\xb5:\xa3\x9ci[u\xe9vo\x925n\x07\xd5\x95\x7f"k\xfc\xdd\xf9;\xcb\x91\xafC\xe2P\xdcX\x8e\x90\xb9\x0e\xf5hZ\xb3_\xb5\xee\x05\x89y\xef<\xa5\xcc\xe2\xe5}= \xf9\xe6\xfe\xbc\'\xa6%Mg\xa5\xab\x19\xd4C<\xff\xf1b\x13\x1f\x15L\xa1\xf7\xa6\xe5sx\xa3bd\x82~\xaa\x1f\x08\xbc\xff/\xff\xebp3\xff\xf1\x82\x8f\xaf\x87Fk\xf8\xa7Jd\x82\x96\xd6\x08\xf1\x11\xac\xe9v@\xc8\x8e\x7fZy\x1e\xc6\x8d\x98\x86\x7f\n\x12\xfe\xd9\x19\xe0\x14\x7f\x95\x9f\x87Y#\xada\x8e\xfd0\x9b\xe9[\xfc\xb8\xe1\xacoo\xb2\xcao\xa8v\xcf1\xa23\xc0i\x06\xa4\xc8\x9f\xc8\xeb2\xfa\xdb-\x80\xd1,\xde\xae\x18`:g\x9e77\xf1\xbb\xd6\x8e\x9f\xe7\xff*\xbf\xcd\xf7\xd60\x82\xbd\xcf\xe79\x82\x13\xd1\x9e\x8c3\xff~\x98\x90\x87\xc4&>\xc0K\x82\xe7\x9f*\xab\xfc\x1e\x95\x15Y\tHy\xcf\xba\t\xa1vS\x84\xc8\xca\xaa?8\xf3O\xc2\x9b\xf9\xe7M\x9e\x9f\xf78c\x9c\xfb7\xa6\xb7\x835xh\xa8\xab\x99\xdb\xb5\x05\xa4\xcd\xfc\xa4\xe9\xdcY\x9c\xa3\x93\x7f\x15\x9aV\xd0\xda\xad\xaa\xb5\x8e\x1e\x99\xdc\xcd:c^,\xfbsf\x8f\x12\x92\xd66\xf3\x97k\xdcM\xbd5\x7f\xa7\xec\\\x92\xe6\xe9,\xe6@x\x1e\xda\x1be\xd3\xb1+>\xc2:\xb6\x89\xcf\xf6w\xd1\xe3\xd1\xbb\xf8\xaf\xc3\x80\x14\xd3vSX#!?.\x17\xdd\x10\xe6~\xb6\xd7\x8f\xffv\x85\xf1cZ)\xc3\xac\xcbu\xf2y\xe8\xe3\x13 Y\xe3=|\x80z\x98\xc5\xfbf\xbd\xe7s\x9e\xfc\xf1\x972\xb6\x9f\xf1\x17\xe2;1\x82\x13\x91\xbf\xf3\\.\xee<\x97\r\xf5\xb0\xb8\x9e\x7f]>\x11\xfb\xe1`\x8a\xcf\x97\xb1\xaeB\xf5\xd0K"\xce\xf9\x7f\xdf7T\xde\x9c\x9bT\xca\xf0\xfc~\x18\xde\xa9\xd1\x07\xfdo\x89\xea<\xdfG\xf6&\xb0Uu-\xb6E\xb6\x9e*\xb0e\x05$\x9e\x1f\xd3\\\xfe\xff\xc9\x97\x95vk\xbbv\x15"\xae\\\xb9r\xe5\xea[\xea\x1f' if name == "apps/webauthn/res/icon_stripe.toif":