From aa06c9ae275ef56a4e43f9ff54e6f833fb3b147d Mon Sep 17 00:00:00 2001 From: LC mac Date: Sat, 7 Feb 2026 04:22:56 +0800 Subject: [PATCH] feat: fix CompactSeedQR binary QR code scanning with jsQR library - Replace BarcodeDetector with jsQR for raw binary byte access - BarcodeDetector forced UTF-8 decoding which corrupted binary data - jsQR's binaryData property preserves raw bytes without text conversion - Fix regex bug: use single backslash \x00 instead of \x00 for binary detection - Add debug logging for scan data inspection - QR generation already worked (Krux-compatible), only scanning was broken Resolves binary QR code scanning for 12/24-word CompactSeedQR format. Tested with Krux device - full bidirectional compatibility confirmed. --- .../Screenshot 2026-02-04 at 13.11.17.png | Bin 0 -> 29687 bytes .../Screenshot 2026-02-05 at 01.11.32.png | Bin 0 -> 31623 bytes .../Screenshot 2026-02-05 at 01.11.43.png | Bin 0 -> 40595 bytes .../Screenshot 2026-02-05 at 01.11.52.png | Bin 0 -> 37204 bytes .../Screenshot 2026-02-06 at 01.42.45.png | Bin 0 -> 63233 bytes .../Screenshot 2026-02-06 at 23.49.37.png | Bin 0 -> 41861 bytes .../Screenshot 2026-02-07 at 02.26.22.png | Bin 0 -> 213733 bytes REFERENCE/baseconv(2).py | 192 ++++ REFERENCE/baseconv.py | 65 ++ REFERENCE/bun-CompactseedQR-implement.md.rtf | 692 +++++++++++++ REFERENCE/bun-seedQR-implement.md.rtf | 470 +++++++++ REFERENCE/encryption_ui.py | 715 +++++++++++++ REFERENCE/kef.py | 564 ++++++++++ REFERENCE/krux | 1 + REFERENCE/krux-test/.gitignore | 34 + REFERENCE/krux-test/README.md | 15 + REFERENCE/krux-test/bun.lock | 33 + REFERENCE/krux-test/krux-test.ts | 123 +++ REFERENCE/krux-test/package.json | 13 + REFERENCE/krux-test/tsconfig.json | 29 + REFERENCE/qr.py | 403 ++++++++ REFERENCE/seeds-blender | 1 + bun.lock | 8 + debug_krux.py | 71 ++ package.json | 2 + src/App.tsx | 961 ++++++++++-------- src/components/QRScanner.tsx | 325 +++--- src/components/QrDisplay.tsx | 108 +- src/components/SeedBlender.tsx | 84 +- src/lib/base43.test.ts | 105 ++ src/lib/base43.ts | 52 +- src/lib/krux.test.ts | 26 +- src/lib/krux.ts | 57 +- src/lib/pbkdf2.ts | 87 ++ src/lib/seedblend.test.ts | 35 +- src/lib/seedblend.ts | 23 +- src/lib/seedpgp.ts | 32 +- src/lib/seedqr.ts | 111 ++ src/lib/types.ts | 4 +- 39 files changed, 4664 insertions(+), 777 deletions(-) create mode 100644 REFERENCE/Screenshot 2026-02-04 at 13.11.17.png create mode 100644 REFERENCE/Screenshot 2026-02-05 at 01.11.32.png create mode 100644 REFERENCE/Screenshot 2026-02-05 at 01.11.43.png create mode 100644 REFERENCE/Screenshot 2026-02-05 at 01.11.52.png create mode 100644 REFERENCE/Screenshot 2026-02-06 at 01.42.45.png create mode 100644 REFERENCE/Screenshot 2026-02-06 at 23.49.37.png create mode 100644 REFERENCE/Screenshot 2026-02-07 at 02.26.22.png create mode 100644 REFERENCE/baseconv(2).py create mode 100644 REFERENCE/baseconv.py create mode 100644 REFERENCE/bun-CompactseedQR-implement.md.rtf create mode 100644 REFERENCE/bun-seedQR-implement.md.rtf create mode 100644 REFERENCE/encryption_ui.py create mode 100644 REFERENCE/kef.py create mode 160000 REFERENCE/krux create mode 100644 REFERENCE/krux-test/.gitignore create mode 100644 REFERENCE/krux-test/README.md create mode 100644 REFERENCE/krux-test/bun.lock create mode 100644 REFERENCE/krux-test/krux-test.ts create mode 100644 REFERENCE/krux-test/package.json create mode 100644 REFERENCE/krux-test/tsconfig.json create mode 100644 REFERENCE/qr.py create mode 160000 REFERENCE/seeds-blender create mode 100644 debug_krux.py create mode 100644 src/lib/base43.test.ts create mode 100644 src/lib/pbkdf2.ts create mode 100644 src/lib/seedqr.ts diff --git a/REFERENCE/Screenshot 2026-02-04 at 13.11.17.png b/REFERENCE/Screenshot 2026-02-04 at 13.11.17.png new file mode 100644 index 0000000000000000000000000000000000000000..8ca46360d8a156bfc5b7d8c7ee9ac2283146a2d7 GIT binary patch literal 29687 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

WzlKFg^FVj;d7bcWpE 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 Sh$G-Xpb3Z(M2m&>ef}4kEL3s; literal 0 HcmV?d00001 diff --git a/REFERENCE/Screenshot 2026-02-05 at 01.11.32.png b/REFERENCE/Screenshot 2026-02-05 at 01.11.32.png new file mode 100644 index 0000000000000000000000000000000000000000..6f03454d9c6ac58c138eeed9a3c1828bfba403aa GIT binary patch literal 31623 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%0A|=S>qzrj4gN^lWer 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 G|NjS977-Ny literal 0 HcmV?d00001 diff --git a/REFERENCE/Screenshot 2026-02-05 at 01.11.43.png b/REFERENCE/Screenshot 2026-02-05 at 01.11.43.png new file mode 100644 index 0000000000000000000000000000000000000000..75e4cfb902459edb5bd5e0af66a62c62e4dff523 GIT binary patch literal 40595 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%0A_nypJwy!Vrot)BS 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 M>iXATsG)-Y2Uq^`r~m)} literal 0 HcmV?d00001 diff --git a/REFERENCE/Screenshot 2026-02-05 at 01.11.52.png b/REFERENCE/Screenshot 2026-02-05 at 01.11.52.png new file mode 100644 index 0000000000000000000000000000000000000000..a1a591ac8b0466256be1cfc3d4f52b25c43a7fff GIT binary patch literal 37204 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 literal 0 HcmV?d00001 diff --git a/REFERENCE/Screenshot 2026-02-06 at 01.42.45.png b/REFERENCE/Screenshot 2026-02-06 at 01.42.45.png new file mode 100644 index 0000000000000000000000000000000000000000..911b92a9538fdf91a0cd4f63bb5ed13a79a41731 GIT binary patch literal 63233 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 R0ciI>pn`^cxvWX>{{TwIWcvUB literal 0 HcmV?d00001 diff --git a/REFERENCE/Screenshot 2026-02-07 at 02.26.22.png b/REFERENCE/Screenshot 2026-02-07 at 02.26.22.png new file mode 100644 index 0000000000000000000000000000000000000000..78bd579db4a280337ea0f2b63b196b5cbb155792 GIT binary patch literal 213733 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án`=Eyc`Gy;8Ly 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 256: + div, mod = divmod(long_value, 256) + result.append(mod) + long_value = div + if long_value > 0: + result.append(long_value) + n_pad = 0 + for char in v: + if char == chars[0]: + n_pad += 1 + else: + break + if n_pad > 0: + result.extend(b"\x00" * n_pad) + return bytes(reversed(result)) + + +def pure_python_base_encode(v, base): + """decode bytes v from base encoding; returns str""" + chars = B58CHARS if base == 58 else B43CHARS + long_value = 0 + power_of_base = 1 + for char in reversed(v): + long_value += power_of_base * char + power_of_base <<= 8 + result = bytearray() + while long_value >= base: + div, mod = divmod(long_value, base) + result.extend(chars[mod].encode()) + long_value = div + if long_value > 0: + result.extend(chars[long_value].encode()) + # Bitcoin does a little leading-zero-compression: + # leading 0-bytes in the input become leading-1s + n_pad = 0 + for char in v: + if char == 0x00: + n_pad += 1 + else: + break + if n_pad > 0: + result.extend((chars[0] * n_pad).encode()) + return bytes(reversed(result)).decode() diff --git a/REFERENCE/baseconv.py b/REFERENCE/baseconv.py new file mode 100644 index 0000000..804ae10 --- /dev/null +++ b/REFERENCE/baseconv.py @@ -0,0 +1,65 @@ +# The MIT License (MIT) + +# Copyright (c) 2021-2025 Krux contributors + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +import sys +import base64 +from krux import baseconv + +class base43: + + def encode(data, add_padding=False): + """Encodes data to Base43.""" + return baseconv.pure_python_base_encode(data, 43) + + def decode(encoded_str): + """Decodes a Base43 string.""" + return baseconv.pure_python_base_decode(encoded_str, 43) + + +class base32: + """ + Mock for the base32 module. + """ + def encode(data, add_padding=False): + """Encodes data to Base32.""" + encoded = base64.b32encode(data).decode('utf-8') + if not add_padding: + encoded = encoded.rstrip('=') + return encoded + + def decode(encoded_str): + """Decodes a Base32 string.""" + try: + len_pad = (8 - len(encoded_str) % 8) % 8 + decoded = base64.b32decode(encoded_str + ("=" * len_pad)) + except ValueError as e: + raise ValueError("Invalid Base32 string: %s" % e) + + return decoded + + + +if "base32" not in sys.modules: + sys.modules["base32"] = base32 + +if "base43" not in sys.modules: + sys.modules["base43"] = base43 diff --git a/REFERENCE/bun-CompactseedQR-implement.md.rtf b/REFERENCE/bun-CompactseedQR-implement.md.rtf new file mode 100644 index 0000000..2bce61d --- /dev/null +++ b/REFERENCE/bun-CompactseedQR-implement.md.rtf @@ -0,0 +1,692 @@ +{\rtf1\ansi\ansicpg1252\cocoartf2867 +\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\froman\fcharset0 Times-Roman;\f1\froman\fcharset0 Times-Bold;\f2\froman\fcharset0 TimesNewRomanPSMT; +\f3\fmodern\fcharset0 Courier-Bold;\f4\fnil\fcharset0 HelveticaNeue;\f5\fmodern\fcharset0 Courier; +\f6\fmodern\fcharset0 Courier-Oblique;\f7\fnil\fcharset0 Menlo-Italic;\f8\fnil\fcharset0 AppleColorEmoji; +\f9\fnil\fcharset0 Menlo-Regular;} +{\colortbl;\red255\green255\blue255;\red255\green255\blue255;\red0\green0\blue0;\red185\green188\blue186; +\red162\green127\blue173;\red166\green178\blue85;\red111\green144\blue176;\red212\green128\blue77;\red132\green134\blue132; +\red0\green0\blue0;\red0\green0\blue233;} +{\*\expandedcolortbl;;\cssrgb\c100000\c100000\c100000;\cssrgb\c0\c0\c0\c84706;\cssrgb\c77255\c78431\c77647; +\cssrgb\c69804\c58039\c73333;\cssrgb\c70980\c74118\c40784;\cssrgb\c50588\c63529\c74510;\cssrgb\c87059\c57647\c37255;\cssrgb\c58824\c59608\c58824; +\cssrgb\c0\c0\c0;\cssrgb\c0\c0\c93333;} +{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{decimal\}}{\leveltext\leveltemplateid1\'01\'00;}{\levelnumbers\'01;}\fi-360\li720\lin720 }{\listname ;}\listid1}} +{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}} +\paperw11900\paperh16840\margl1440\margr1440\vieww11520\viewh8400\viewkind0 +\deftab720 +\pard\pardeftab720\sa240\partightenfactor0 + +\f0\fs24 \cf2 \expnd0\expndtw0\kerning0 +\outl0\strokewidth0 \strokec2 You're right to clarify! The test code I provided +\f1\b only covers reading/decoding CompactSeedQR +\f0\b0 (direction 2). Let me provide a +\f1\b complete bidirectional test +\f0\b0 that covers both:\ +\pard\tx220\tx720\pardeftab720\li720\fi-720\sa240\partightenfactor0 +\ls1\ilvl0 +\f1\b \cf2 \kerning1\expnd0\expndtw0 \outl0\strokewidth0 {\listtext 1 }\expnd0\expndtw0\kerning0 +\outl0\strokewidth0 \strokec2 Encoding +\f0\b0 : Mnemonic +\f2 \uc0\u8594 +\f0 CompactSeedQR (binary data that goes into QR code)\ +\ls1\ilvl0 +\f1\b \kerning1\expnd0\expndtw0 \outl0\strokewidth0 {\listtext 2 }\expnd0\expndtw0\kerning0 +\outl0\strokewidth0 \strokec2 Decoding +\f0\b0 : CompactSeedQR +\f2 \uc0\u8594 +\f0 Mnemonic (restore from QR)\ +\pard\pardeftab720\sa298\partightenfactor0 + +\f1\b\fs36 \cf2 \strokec2 Complete Bidirectional Test ( +\f3\fs39 compact-seedqr-complete.ts +\f1\fs36 )\ +\pard\pardeftab720\qc\partightenfactor0 + +\f4\b0\fs22 \cf3 \strokec3 \ +\pard\pardeftab720\partightenfactor0 + +\f5\fs26 \cf2 \strokec2 bash\ +\pard\pardeftab720\partightenfactor0 +\cf4 \strokec4 bun add bip39 qrcode\ +\pard\pardeftab720\qc\partightenfactor0 + +\f4\fs22 \cf3 \strokec3 \ +\pard\pardeftab720\partightenfactor0 + +\f5\fs26 \cf2 \strokec2 typescript\ +\pard\pardeftab720\partightenfactor0 + +\f3\b \cf5 \strokec5 import +\f5\b0 \cf4 \strokec4 * +\f3\b \cf5 \strokec5 as +\f5\b0 \cf4 \strokec4 bip39 +\f3\b \cf5 \strokec5 from +\f5\b0 \cf4 \strokec4 \cf6 \strokec6 "bip39"\cf4 \strokec4 ;\ + +\f3\b \cf5 \strokec5 import +\f5\b0 \cf4 \strokec4 QRCode +\f3\b \cf5 \strokec5 from +\f5\b0 \cf4 \strokec4 \cf6 \strokec6 "qrcode"\cf4 \strokec4 ;\ +\ + +\f3\b \cf5 \strokec5 interface +\f5\b0 \cf4 \strokec4 \cf7 \strokec7 CompactSeedQRTestVector\cf4 \strokec4 \{\ + name: \cf8 \strokec8 string\cf4 \strokec4 ;\ + mnemonic: \cf8 \strokec8 string\cf4 \strokec4 ;\ + hexEntropy: \cf8 \strokec8 string\cf4 \strokec4 ;\ + wordCount: \cf8 \strokec8 12\cf4 \strokec4 | \cf8 \strokec8 24\cf4 \strokec4 ;\ +\}\ +\ + +\f3\b \cf5 \strokec5 const +\f5\b0 \cf4 \strokec4 TEST_VECTORS: CompactSeedQRTestVector[] = [\ + \{\ + name: \cf6 \strokec6 "Test Vector 1: 24-word"\cf4 \strokec4 ,\ + mnemonic: \cf6 \strokec6 "attack pizza motion avocado network gather crop fresh patrol unusual wild holiday candy pony ranch winter theme error hybrid van cereal salon goddess expire"\cf4 \strokec4 ,\ + hexEntropy: \cf6 \strokec6 "0e74b64107f94cc0ccfae6a13dcbec3662154fec67e0e00999c07892597d190a"\cf4 \strokec4 ,\ + wordCount: \cf8 \strokec8 24\cf4 \strokec4 \ + \},\ + \{\ + name: \cf6 \strokec6 "Test Vector 4: 12-word"\cf4 \strokec4 ,\ + mnemonic: \cf6 \strokec6 "forum undo fragile fade shy sign arrest garment culture tube off merit"\cf4 \strokec4 ,\ + hexEntropy: \cf6 \strokec6 "5bbd9d71a8ec799083laff359d456545"\cf4 \strokec4 ,\ + wordCount: \cf8 \strokec8 12\cf4 \strokec4 \ + \},\ + \{\ + name: \cf6 \strokec6 "Test Vector 6: 12-word (with null byte)"\cf4 \strokec4 ,\ + mnemonic: \cf6 \strokec6 "approve fruit lens brass ring actual stool coin doll boss strong rate"\cf4 \strokec4 ,\ + hexEntropy: \cf6 \strokec6 "0acbba008d9ba005f5996b40a3475cd9"\cf4 \strokec4 ,\ + wordCount: \cf8 \strokec8 12\cf4 \strokec4 \ + \}\ +];\ +\ +\pard\pardeftab720\partightenfactor0 + +\f6\i \cf9 \strokec9 // ============================================================================ +\f5\i0 \cf4 \strokec4 \ + +\f6\i \cf9 \strokec9 // DIRECTION 1: ENCODE - Mnemonic +\f7 \uc0\u8594 +\f6 CompactSeedQR (Binary for QR Code) +\f5\i0 \cf4 \strokec4 \ + +\f6\i \cf9 \strokec9 // ============================================================================ +\f5\i0 \cf4 \strokec4 \ +\ + +\f6\i \cf9 \strokec9 /**\ + * Convert mnemonic to CompactSeedQR format (raw entropy bytes)\ + * This is what you encode into the QR code as BINARY data\ + */ +\f5\i0 \cf4 \strokec4 \ +\pard\pardeftab720\partightenfactor0 + +\f3\b \cf5 \strokec5 function +\f5\b0 \cf4 \strokec4 encodeToCompactSeedQR(mnemonic: \cf8 \strokec8 string\cf4 \strokec4 ): Buffer \{\ + +\f6\i \cf9 \strokec9 // Validate mnemonic +\f5\i0 \cf4 \strokec4 \ + +\f3\b \cf5 \strokec5 if +\f5\b0 \cf4 \strokec4 (!bip39.validateMnemonic(mnemonic)) \{\ + +\f3\b \cf5 \strokec5 throw +\f5\b0 \cf4 \strokec4 +\f3\b \cf5 \strokec5 new +\f5\b0 \cf4 \strokec4 \cf7 \strokec7 Error\cf4 \strokec4 (\cf6 \strokec6 "Invalid mnemonic"\cf4 \strokec4 );\ + \}\ +\ + +\f6\i \cf9 \strokec9 // Extract entropy (WITHOUT checksum) +\f5\i0 \cf4 \strokec4 \ + +\f6\i \cf9 \strokec9 // bip39.mnemonicToEntropy returns hex string +\f5\i0 \cf4 \strokec4 \ + +\f3\b \cf5 \strokec5 const +\f5\b0 \cf4 \strokec4 entropyHex = bip39.mnemonicToEntropy(mnemonic);\ + +\f3\b \cf5 \strokec5 const +\f5\b0 \cf4 \strokec4 entropy = Buffer.from(entropyHex, \cf6 \strokec6 "hex"\cf4 \strokec4 );\ +\ + +\f6\i \cf9 \strokec9 // Validate length +\f5\i0 \cf4 \strokec4 \ + +\f3\b \cf5 \strokec5 if +\f5\b0 \cf4 \strokec4 (entropy.length !== \cf8 \strokec8 16\cf4 \strokec4 && entropy.length !== \cf8 \strokec8 32\cf4 \strokec4 ) \{\ + +\f3\b \cf5 \strokec5 throw +\f5\b0 \cf4 \strokec4 +\f3\b \cf5 \strokec5 new +\f5\b0 \cf4 \strokec4 \cf7 \strokec7 Error\cf4 \strokec4 (\cf6 \strokec6 `Invalid entropy length: \cf4 \strokec4 $\{entropy.length\}\cf6 \strokec6 `\cf4 \strokec4 );\ + \}\ +\ + +\f3\b \cf5 \strokec5 return +\f5\b0 \cf4 \strokec4 entropy;\ +\}\ +\ +\pard\pardeftab720\partightenfactor0 + +\f6\i \cf9 \strokec9 /**\ + * Generate a QR code from mnemonic (as PNG data URL)\ + */ +\f5\i0 \cf4 \strokec4 \ +\pard\pardeftab720\partightenfactor0 + +\f3\b \cf5 \strokec5 async +\f5\b0 \cf4 \strokec4 +\f3\b \cf5 \strokec5 function +\f5\b0 \cf4 \strokec4 generateCompactSeedQR(mnemonic: \cf8 \strokec8 string\cf4 \strokec4 ): \cf8 \strokec8 Promise\cf4 \strokec4 <\cf8 \strokec8 string\cf4 \strokec4 > \{\ + +\f3\b \cf5 \strokec5 const +\f5\b0 \cf4 \strokec4 entropy = encodeToCompactSeedQR(mnemonic);\ + \ + +\f6\i \cf9 \strokec9 // Generate QR code with BINARY data +\f5\i0 \cf4 \strokec4 \ + +\f6\i \cf9 \strokec9 // Important: Use 'byte' mode for raw binary data +\f5\i0 \cf4 \strokec4 \ + +\f3\b \cf5 \strokec5 const +\f5\b0 \cf4 \strokec4 qrDataURL = +\f3\b \cf5 \strokec5 await +\f5\b0 \cf4 \strokec4 QRCode.toDataURL([\{ data: entropy, mode: \cf6 \strokec6 'byte'\cf4 \strokec4 \}], \{\ + errorCorrectionLevel: \cf6 \strokec6 'L'\cf4 \strokec4 , +\f6\i \cf9 \strokec9 // SeedSigner uses Low error correction +\f5\i0 \cf4 \strokec4 \ + type: \cf6 \strokec6 'image/png'\cf4 \strokec4 ,\ + width: \cf8 \strokec8 300\cf4 \strokec4 \ + \});\ +\ + +\f3\b \cf5 \strokec5 return +\f5\b0 \cf4 \strokec4 qrDataURL;\ +\}\ +\ +\pard\pardeftab720\partightenfactor0 + +\f6\i \cf9 \strokec9 // ============================================================================ +\f5\i0 \cf4 \strokec4 \ + +\f6\i \cf9 \strokec9 // DIRECTION 2: DECODE - CompactSeedQR +\f7 \uc0\u8594 +\f6 Mnemonic (Restore from QR) +\f5\i0 \cf4 \strokec4 \ + +\f6\i \cf9 \strokec9 // ============================================================================ +\f5\i0 \cf4 \strokec4 \ +\ + +\f6\i \cf9 \strokec9 /**\ + * Parse CompactSeedQR from raw bytes (what QR scanner gives you)\ + */ +\f5\i0 \cf4 \strokec4 \ +\pard\pardeftab720\partightenfactor0 + +\f3\b \cf5 \strokec5 function +\f5\b0 \cf4 \strokec4 decodeCompactSeedQR(data: Buffer | Uint8Array): \cf8 \strokec8 string\cf4 \strokec4 \{\ + +\f3\b \cf5 \strokec5 const +\f5\b0 \cf4 \strokec4 entropy = Buffer.from(data);\ +\ + +\f6\i \cf9 \strokec9 // Validate length +\f5\i0 \cf4 \strokec4 \ + +\f3\b \cf5 \strokec5 if +\f5\b0 \cf4 \strokec4 (entropy.length !== \cf8 \strokec8 16\cf4 \strokec4 && entropy.length !== \cf8 \strokec8 32\cf4 \strokec4 ) \{\ + +\f3\b \cf5 \strokec5 throw +\f5\b0 \cf4 \strokec4 +\f3\b \cf5 \strokec5 new +\f5\b0 \cf4 \strokec4 \cf7 \strokec7 Error\cf4 \strokec4 (\ + \cf6 \strokec6 `Invalid CompactSeedQR length: \cf4 \strokec4 $\{entropy.length\}\cf6 \strokec6 bytes. Must be 16 (12-word) or 32 (24-word).`\cf4 \strokec4 \ + );\ + \}\ +\ + +\f6\i \cf9 \strokec9 // Convert entropy to mnemonic (automatically adds BIP39 checksum) +\f5\i0 \cf4 \strokec4 \ + +\f3\b \cf5 \strokec5 const +\f5\b0 \cf4 \strokec4 mnemonic = bip39.entropyToMnemonic(entropy);\ +\ + +\f3\b \cf5 \strokec5 return +\f5\b0 \cf4 \strokec4 mnemonic;\ +\}\ +\ +\pard\pardeftab720\partightenfactor0 + +\f6\i \cf9 \strokec9 /**\ + * Parse from hex string (for testing)\ + */ +\f5\i0 \cf4 \strokec4 \ +\pard\pardeftab720\partightenfactor0 + +\f3\b \cf5 \strokec5 function +\f5\b0 \cf4 \strokec4 decodeCompactSeedQRFromHex(hexEntropy: \cf8 \strokec8 string\cf4 \strokec4 ): \cf8 \strokec8 string\cf4 \strokec4 \{\ + +\f3\b \cf5 \strokec5 const +\f5\b0 \cf4 \strokec4 entropy = Buffer.from(hexEntropy, \cf6 \strokec6 "hex"\cf4 \strokec4 );\ + +\f3\b \cf5 \strokec5 return +\f5\b0 \cf4 \strokec4 decodeCompactSeedQR(entropy);\ +\}\ +\ +\pard\pardeftab720\partightenfactor0 + +\f6\i \cf9 \strokec9 // ============================================================================ +\f5\i0 \cf4 \strokec4 \ + +\f6\i \cf9 \strokec9 // TESTS +\f5\i0 \cf4 \strokec4 \ + +\f6\i \cf9 \strokec9 // ============================================================================ +\f5\i0 \cf4 \strokec4 \ +\ +\pard\pardeftab720\partightenfactor0 + +\f3\b \cf5 \strokec5 async +\f5\b0 \cf4 \strokec4 +\f3\b \cf5 \strokec5 function +\f5\b0 \cf4 \strokec4 runBidirectionalTests() \{\ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 " +\f8 \uc0\u55358 \u56810 +\f5 CompactSeedQR Bidirectional Tests\\n"\cf4 \strokec4 );\ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 "="\cf4 \strokec4 .repeat(\cf8 \strokec8 80\cf4 \strokec4 ));\ +\ + +\f3\b \cf5 \strokec5 let +\f5\b0 \cf4 \strokec4 passed = \cf8 \strokec8 0\cf4 \strokec4 ;\ + +\f3\b \cf5 \strokec5 let +\f5\b0 \cf4 \strokec4 failed = \cf8 \strokec8 0\cf4 \strokec4 ;\ +\ + +\f3\b \cf5 \strokec5 for +\f5\b0 \cf4 \strokec4 ( +\f3\b \cf5 \strokec5 const +\f5\b0 \cf4 \strokec4 vector +\f3\b \cf5 \strokec5 of +\f5\b0 \cf4 \strokec4 TEST_VECTORS) \{\ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 `\\n +\f8 \uc0\u55357 \u56523 +\f5 \cf4 \strokec4 $\{vector.name\}\cf6 \strokec6 `\cf4 \strokec4 );\ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 `Mnemonic: \cf4 \strokec4 $\{vector.mnemonic.slice(\cf8 \strokec8 0\cf4 \strokec4 , \cf8 \strokec8 50\cf4 \strokec4 )\}\cf6 \strokec6 ...`\cf4 \strokec4 );\ +\ + +\f3\b \cf5 \strokec5 try +\f5\b0 \cf4 \strokec4 \{\ + +\f6\i \cf9 \strokec9 // ===== DIRECTION 1: ENCODE ===== +\f5\i0 \cf4 \strokec4 \ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 "\\n +\f8 \uc0\u55357 \u56594 +\f5 ENCODE: Mnemonic +\f9 \uc0\u8594 +\f5 CompactSeedQR"\cf4 \strokec4 );\ + \ + +\f3\b \cf5 \strokec5 const +\f5\b0 \cf4 \strokec4 encodedEntropy = encodeToCompactSeedQR(vector.mnemonic);\ + +\f3\b \cf5 \strokec5 const +\f5\b0 \cf4 \strokec4 encodedHex = encodedEntropy.toString(\cf6 \strokec6 "hex"\cf4 \strokec4 );\ + \ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 ` Generated entropy: \cf4 \strokec4 $\{encodedHex\}\cf6 \strokec6 `\cf4 \strokec4 );\ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 ` Expected entropy: \cf4 \strokec4 $\{vector.hexEntropy\}\cf6 \strokec6 `\cf4 \strokec4 );\ + \ + +\f3\b \cf5 \strokec5 const +\f5\b0 \cf4 \strokec4 encodeMatches = encodedHex === vector.hexEntropy;\ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 ` \cf4 \strokec4 $\{encodeMatches ? \cf6 \strokec6 " +\f8 \uc0\u9989 +\f5 "\cf4 \strokec4 : \cf6 \strokec6 " +\f8 \uc0\u10060 +\f5 "\cf4 \strokec4 \}\cf6 \strokec6 Encode \cf4 \strokec4 $\{encodeMatches ? \cf6 \strokec6 "PASSED"\cf4 \strokec4 : \cf6 \strokec6 "FAILED"\cf4 \strokec4 \}\cf6 \strokec6 `\cf4 \strokec4 );\ +\ + +\f6\i \cf9 \strokec9 // Generate actual QR code +\f5\i0 \cf4 \strokec4 \ + +\f3\b \cf5 \strokec5 const +\f5\b0 \cf4 \strokec4 qrDataURL = +\f3\b \cf5 \strokec5 await +\f5\b0 \cf4 \strokec4 generateCompactSeedQR(vector.mnemonic);\ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 ` +\f8 \uc0\u55357 \u56561 +\f5 QR Code generated (\cf4 \strokec4 $\{qrDataURL.length\}\cf6 \strokec6 bytes PNG data)`\cf4 \strokec4 );\ +\ + +\f6\i \cf9 \strokec9 // ===== DIRECTION 2: DECODE ===== +\f5\i0 \cf4 \strokec4 \ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 "\\n +\f8 \uc0\u55357 \u56595 +\f5 DECODE: CompactSeedQR +\f9 \uc0\u8594 +\f5 Mnemonic"\cf4 \strokec4 );\ + \ + +\f3\b \cf5 \strokec5 const +\f5\b0 \cf4 \strokec4 decodedMnemonic = decodeCompactSeedQRFromHex(vector.hexEntropy);\ + \ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 ` Decoded: \cf4 \strokec4 $\{decodedMnemonic.slice(\cf8 \strokec8 0\cf4 \strokec4 , \cf8 \strokec8 50\cf4 \strokec4 )\}\cf6 \strokec6 ...`\cf4 \strokec4 );\ + \ + +\f3\b \cf5 \strokec5 const +\f5\b0 \cf4 \strokec4 decodeMatches = decodedMnemonic === vector.mnemonic;\ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 ` \cf4 \strokec4 $\{decodeMatches ? \cf6 \strokec6 " +\f8 \uc0\u9989 +\f5 "\cf4 \strokec4 : \cf6 \strokec6 " +\f8 \uc0\u10060 +\f5 "\cf4 \strokec4 \}\cf6 \strokec6 Decode \cf4 \strokec4 $\{decodeMatches ? \cf6 \strokec6 "PASSED"\cf4 \strokec4 : \cf6 \strokec6 "FAILED"\cf4 \strokec4 \}\cf6 \strokec6 `\cf4 \strokec4 );\ +\ + +\f6\i \cf9 \strokec9 // ===== ROUND-TRIP TEST ===== +\f5\i0 \cf4 \strokec4 \ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 "\\n +\f8 \uc0\u55357 \u56580 +\f5 ROUND-TRIP: Mnemonic +\f9 \uc0\u8594 +\f5 QR +\f9 \uc0\u8594 +\f5 Mnemonic"\cf4 \strokec4 );\ + \ + +\f3\b \cf5 \strokec5 const +\f5\b0 \cf4 \strokec4 roundTripMnemonic = decodeCompactSeedQR(encodedEntropy);\ + +\f3\b \cf5 \strokec5 const +\f5\b0 \cf4 \strokec4 roundTripMatches = roundTripMnemonic === vector.mnemonic;\ + \ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 ` \cf4 \strokec4 $\{roundTripMatches ? \cf6 \strokec6 " +\f8 \uc0\u9989 +\f5 "\cf4 \strokec4 : \cf6 \strokec6 " +\f8 \uc0\u10060 +\f5 "\cf4 \strokec4 \}\cf6 \strokec6 Round-trip \cf4 \strokec4 $\{roundTripMatches ? \cf6 \strokec6 "PASSED"\cf4 \strokec4 : \cf6 \strokec6 "FAILED"\cf4 \strokec4 \}\cf6 \strokec6 `\cf4 \strokec4 );\ +\ + +\f3\b \cf5 \strokec5 if +\f5\b0 \cf4 \strokec4 (encodeMatches && decodeMatches && roundTripMatches) \{\ + passed++;\ + \} +\f3\b \cf5 \strokec5 else +\f5\b0 \cf4 \strokec4 \{\ + failed++;\ + \}\ +\ + \} +\f3\b \cf5 \strokec5 catch +\f5\b0 \cf4 \strokec4 (error) \{\ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 ` +\f8 \uc0\u10060 +\f5 ERROR: \cf4 \strokec4 $\{error\}\cf6 \strokec6 `\cf4 \strokec4 );\ + failed++;\ + \}\ + \}\ +\ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 "\\n"\cf4 \strokec4 + \cf6 \strokec6 "="\cf4 \strokec4 .repeat(\cf8 \strokec8 80\cf4 \strokec4 ));\ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 `\\n +\f8 \uc0\u55357 \u56522 +\f5 Results: \cf4 \strokec4 $\{passed\}\cf6 \strokec6 /\cf4 \strokec4 $\{TEST_VECTORS.length\}\cf6 \strokec6 passed`\cf4 \strokec4 );\ + \ + +\f3\b \cf5 \strokec5 if +\f5\b0 \cf4 \strokec4 (failed === \cf8 \strokec8 0\cf4 \strokec4 ) \{\ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 " +\f8 \uc0\u55356 \u57225 +\f5 ALL TESTS PASSED!"\cf4 \strokec4 );\ + \}\ +\}\ +\ +\pard\pardeftab720\partightenfactor0 + +\f6\i \cf9 \strokec9 // ============================================================================ +\f5\i0 \cf4 \strokec4 \ + +\f6\i \cf9 \strokec9 // EXAMPLE USAGE +\f5\i0 \cf4 \strokec4 \ + +\f6\i \cf9 \strokec9 // ============================================================================ +\f5\i0 \cf4 \strokec4 \ +\ +\pard\pardeftab720\partightenfactor0 + +\f3\b \cf5 \strokec5 async +\f5\b0 \cf4 \strokec4 +\f3\b \cf5 \strokec5 function +\f5\b0 \cf4 \strokec4 demonstrateUsage() \{\ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 "\\n\\n"\cf4 \strokec4 + \cf6 \strokec6 "="\cf4 \strokec4 .repeat(\cf8 \strokec8 80\cf4 \strokec4 ));\ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 " +\f8 \uc0\u55357 \u56481 +\f5 USAGE EXAMPLE\\n"\cf4 \strokec4 );\ +\ + +\f3\b \cf5 \strokec5 const +\f5\b0 \cf4 \strokec4 exampleMnemonic = \cf6 \strokec6 "forum undo fragile fade shy sign arrest garment culture tube off merit"\cf4 \strokec4 ;\ +\ + +\f6\i \cf9 \strokec9 // ===== CREATE QR CODE ===== +\f5\i0 \cf4 \strokec4 \ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 " +\f8 1\uc0\u65039 \u8419 +\f5 CREATE CompactSeedQR from mnemonic:"\cf4 \strokec4 );\ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 ` Input: \cf4 \strokec4 $\{exampleMnemonic\}\cf6 \strokec6 `\cf4 \strokec4 );\ + \ + +\f3\b \cf5 \strokec5 const +\f5\b0 \cf4 \strokec4 entropy = encodeToCompactSeedQR(exampleMnemonic);\ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 ` Binary data (hex): \cf4 \strokec4 $\{entropy.toString(\cf6 \strokec6 "hex"\cf4 \strokec4 )\}\cf6 \strokec6 `\cf4 \strokec4 );\ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 ` Binary data (bytes): [\cf4 \strokec4 $\{\cf8 \strokec8 Array\cf4 \strokec4 .from(entropy).join(\cf6 \strokec6 ", "\cf4 \strokec4 )\}\cf6 \strokec6 ]`\cf4 \strokec4 );\ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 ` Length: \cf4 \strokec4 $\{entropy.length\}\cf6 \strokec6 bytes (\cf4 \strokec4 $\{entropy.length === \cf8 \strokec8 16\cf4 \strokec4 ? \cf6 \strokec6 "12-word"\cf4 \strokec4 : \cf6 \strokec6 "24-word"\cf4 \strokec4 \}\cf6 \strokec6 )`\cf4 \strokec4 );\ +\ + +\f3\b \cf5 \strokec5 const +\f5\b0 \cf4 \strokec4 qrDataURL = +\f3\b \cf5 \strokec5 await +\f5\b0 \cf4 \strokec4 generateCompactSeedQR(exampleMnemonic);\ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 ` +\f8 \uc0\u9989 +\f5 QR code generated!`\cf4 \strokec4 );\ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 ` +\f8 \uc0\u55357 \u56561 +\f5 Display this QR: `\cf4 \strokec4 );\ +\ + +\f6\i \cf9 \strokec9 // ===== SCAN QR CODE ===== +\f5\i0 \cf4 \strokec4 \ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 "\\n +\f8 2\uc0\u65039 \u8419 +\f5 SCAN CompactSeedQR and restore mnemonic:"\cf4 \strokec4 );\ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 ` Simulating QR scanner output...`\cf4 \strokec4 );\ + \ + +\f6\i \cf9 \strokec9 // In real app, your QR scanner returns raw bytes: +\f5\i0 \cf4 \strokec4 \ + +\f6\i \cf9 \strokec9 // const scannedBytes = qrScanner.decode(); +\f5\i0 \cf4 \strokec4 \ + +\f3\b \cf5 \strokec5 const +\f5\b0 \cf4 \strokec4 scannedBytes = entropy; +\f6\i \cf9 \strokec9 // Simulate scanning the QR we just created +\f5\i0 \cf4 \strokec4 \ +\ + +\f3\b \cf5 \strokec5 const +\f5\b0 \cf4 \strokec4 restoredMnemonic = decodeCompactSeedQR(scannedBytes);\ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 ` Restored: \cf4 \strokec4 $\{restoredMnemonic\}\cf6 \strokec6 `\cf4 \strokec4 );\ + \cf8 \strokec8 console\cf4 \strokec4 .log(\cf6 \strokec6 ` +\f8 \uc0\u9989 +\f5 Match: \cf4 \strokec4 $\{restoredMnemonic === exampleMnemonic\}\cf6 \strokec6 `\cf4 \strokec4 );\ +\}\ +\ +\pard\pardeftab720\partightenfactor0 + +\f6\i \cf9 \strokec9 // Run everything +\f5\i0 \cf4 \strokec4 \ +runBidirectionalTests().then(() => demonstrateUsage());\ +\pard\pardeftab720\sa298\partightenfactor0 + +\f1\b\fs36 \cf2 \strokec2 Run Command\ +\pard\pardeftab720\qc\partightenfactor0 + +\f4\b0\fs22 \cf3 \strokec3 \ +\pard\pardeftab720\partightenfactor0 + +\f5\fs26 \cf2 \strokec2 bash\ +\pard\pardeftab720\partightenfactor0 +\cf4 \strokec4 bun run compact-seedqr-complete.ts\ +\pard\pardeftab720\sa298\partightenfactor0 + +\f1\b\fs36 \cf2 \strokec2 Expected Output\ +\pard\pardeftab720\qc\partightenfactor0 + +\f4\b0\fs22 \cf3 \strokec3 \ +\pard\pardeftab720\partightenfactor0 + +\f5\fs26 \cf2 \strokec2 text\ +\pard\pardeftab720\partightenfactor0 + +\f8 \cf4 \strokec4 \uc0\u55358 \u56810 +\f5 CompactSeedQR Bidirectional Tests\ +\ +================================================================================\ +\ + +\f8 \uc0\u55357 \u56523 +\f5 Test Vector 1: 24-word\ +Mnemonic: attack pizza motion avocado network gather crop fre...\ +\ + +\f8 \uc0\u55357 \u56594 +\f5 ENCODE: Mnemonic +\f9 \uc0\u8594 +\f5 CompactSeedQR\ + Generated entropy: 0e74b64107f94cc0ccfae6a13dcbec3662154fec67e0e00999c07892597d190a\ + Expected entropy: 0e74b64107f94cc0ccfae6a13dcbec3662154fec67e0e00999c07892597d190a\ + +\f8 \uc0\u9989 +\f5 Encode PASSED\ + +\f8 \uc0\u55357 \u56561 +\f5 QR Code generated (2847 bytes PNG data)\ +\ + +\f8 \uc0\u55357 \u56595 +\f5 DECODE: CompactSeedQR +\f9 \uc0\u8594 +\f5 Mnemonic\ + Decoded: attack pizza motion avocado network gather crop fre...\ + +\f8 \uc0\u9989 +\f5 Decode PASSED\ +\ + +\f8 \uc0\u55357 \u56580 +\f5 ROUND-TRIP: Mnemonic +\f9 \uc0\u8594 +\f5 QR +\f9 \uc0\u8594 +\f5 Mnemonic\ + +\f8 \uc0\u9989 +\f5 Round-trip PASSED\ +\ +...\ +\ +================================================================================\ +\ + +\f8 \uc0\u55357 \u56522 +\f5 Results: 3/3 passed\ + +\f8 \uc0\u55356 \u57225 +\f5 ALL TESTS PASSED!\ +\ +================================================================================\ + +\f8 \uc0\u55357 \u56481 +\f5 USAGE EXAMPLE\ +\ + +\f8 1\uc0\u65039 \u8419 +\f5 CREATE CompactSeedQR from mnemonic:\ + Input: forum undo fragile fade shy sign arrest garment culture tube off merit\ + Binary data (hex): 5bbd9d71a8ec799083laff359d456545\ + Binary data (bytes): [91, 189, 157, 113, 168, 236, 121, ...]\ + Length: 16 bytes (12-word)\ + +\f8 \uc0\u9989 +\f5 QR code generated!\ +\ + +\f8 2\uc0\u65039 \u8419 +\f5 SCAN CompactSeedQR and restore mnemonic:\ + Simulating QR scanner output...\ + Restored: forum undo fragile fade shy sign arrest garment culture tube off merit\ + +\f8 \uc0\u9989 +\f5 Match: true\ +\pard\pardeftab720\sa298\partightenfactor0 + +\f1\b\fs36 \cf2 \strokec2 Summary: What the Code Does\ + +\itap1\trowd \taflags0 \trgaph108\trleft-108 \trbrdrt\brdrnil \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalc \clshdrawnil \clwWidth1000\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx2160 +\clvertalc \clshdrawnil \clwWidth2033\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx4320 +\clvertalc \clshdrawnil \clwWidth2779\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx6480 +\clvertalc \clshdrawnil \clwWidth4979\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\qc\partightenfactor0 + +\fs24 \cf2 \strokec10 Direction\cf0 \cell +\pard\intbl\itap1\pardeftab720\qc\partightenfactor0 +\cf2 Input\cf0 \cell +\pard\intbl\itap1\pardeftab720\qc\partightenfactor0 +\cf2 Output\cf0 \cell +\pard\intbl\itap1\pardeftab720\qc\partightenfactor0 +\cf2 What It Does\cf0 \cell \row + +\itap1\trowd \taflags0 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalc \clshdrawnil \clwWidth1000\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx2160 +\clvertalc \clshdrawnil \clwWidth2033\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx4320 +\clvertalc \clshdrawnil \clwWidth2779\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx6480 +\clvertalc \clshdrawnil \clwWidth4979\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\partightenfactor0 +\cf2 1. Encode +\f0\b0 \cf0 \cell +\pard\intbl\itap1\pardeftab720\partightenfactor0 +\cf2 Mnemonic (words)\cf0 \cell +\pard\intbl\itap1\pardeftab720\partightenfactor0 +\cf2 Binary entropy (16/32 bytes)\cf0 \cell +\pard\intbl\itap1\pardeftab720\partightenfactor0 +\cf2 Strips checksum, creates raw bytes for QR\cf0 \cell \row + +\itap1\trowd \taflags0 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrt\brdrnil \trbrdrr\brdrnil +\clvertalc \clshdrawnil \clwWidth1000\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx2160 +\clvertalc \clshdrawnil \clwWidth2033\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx4320 +\clvertalc \clshdrawnil \clwWidth2779\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx6480 +\clvertalc \clshdrawnil \clwWidth4979\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\partightenfactor0 + +\f1\b \cf2 2. Decode +\f0\b0 \cf0 \cell +\pard\intbl\itap1\pardeftab720\partightenfactor0 +\cf2 Binary data from QR\cf0 \cell +\pard\intbl\itap1\pardeftab720\partightenfactor0 +\cf2 Mnemonic (words)\cf0 \cell +\pard\intbl\itap1\pardeftab720\partightenfactor0 +\cf2 Reads raw bytes, adds checksum, converts to words\cf0 \cell \lastrow\row +\pard\pardeftab720\qc\partightenfactor0 + +\f4\fs22 \cf3 \strokec3 \ +\ +\pard\pardeftab720\sa240\partightenfactor0 + +\f0\fs24 \cf2 \strokec2 The QR code itself contains +\f1\b raw binary entropy +\f0\b0 (NOT encoded as hex or base64). This is why CompactSeedQR is smaller than Standard SeedQR!{\field{\*\fldinst{HYPERLINK "https://github.com/SeedSigner/seedsigner/blob/dev/docs/seed_qr/README.md"}}{\fldrslt \cf11 \ul \ulc11 \strokec11 github+1}}\ +} \ No newline at end of file diff --git a/REFERENCE/bun-seedQR-implement.md.rtf b/REFERENCE/bun-seedQR-implement.md.rtf new file mode 100644 index 0000000..d66c4e6 --- /dev/null +++ b/REFERENCE/bun-seedQR-implement.md.rtf @@ -0,0 +1,470 @@ +{\rtf1\ansi\ansicpg1252\cocoartf2867 +\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\froman\fcharset0 Times-Roman;\f1\froman\fcharset0 Times-Bold;\f2\fnil\fcharset0 HelveticaNeue; +\f3\fmodern\fcharset0 Courier;\f4\fmodern\fcharset0 Courier-Bold;\f5\fmodern\fcharset0 Courier-Oblique; +\f6\fnil\fcharset0 AppleColorEmoji;} +{\colortbl;\red255\green255\blue255;\red255\green255\blue255;\red0\green0\blue0;\red185\green188\blue186; +\red111\green144\blue176;\red162\green127\blue173;\red166\green178\blue85;\red132\green134\blue132;\red212\green128\blue77; +\red0\green0\blue0;\red191\green80\blue83;} +{\*\expandedcolortbl;;\cssrgb\c100000\c100000\c100000;\cssrgb\c0\c0\c0\c84706;\cssrgb\c77255\c78431\c77647; +\cssrgb\c50588\c63529\c74510;\cssrgb\c69804\c58039\c73333;\cssrgb\c70980\c74118\c40784;\cssrgb\c58824\c59608\c58824;\cssrgb\c87059\c57647\c37255; +\cssrgb\c0\c0\c0;\cssrgb\c80000\c40000\c40000;} +\paperw11900\paperh16840\margl1440\margr1440\vieww11520\viewh8400\viewkind0 +\deftab720 +\pard\pardeftab720\sa240\partightenfactor0 + +\f0\fs24 \cf2 \expnd0\expndtw0\kerning0 +\outl0\strokewidth0 \strokec2 Here's a +\f1\b Bun TypeScript test +\f0\b0 for +\f1\b SeedSigner SeedQR +\f0\b0 (both Standard and Compact formats) using +\f1\b Test Vector 1 +\f0\b0 from the official specification:\ +\pard\pardeftab720\sa298\partightenfactor0 + +\f1\b\fs36 \cf2 Setup\ +\pard\pardeftab720\qc\partightenfactor0 + +\f2\b0\fs22 \cf3 \strokec3 \ +\pard\pardeftab720\partightenfactor0 + +\f3\fs26 \cf2 \strokec2 bash\ +\pard\pardeftab720\partightenfactor0 +\cf4 \strokec4 mkdir seedsigner-test\ +\pard\pardeftab720\partightenfactor0 +\cf5 \strokec5 cd\cf4 \strokec4 seedsigner-test\ +bun init -y\ +bun add bip39\ +\pard\pardeftab720\sa298\partightenfactor0 + +\f4\b\fs39 \cf2 \strokec2 seedsigner-test.ts +\f1\fs36 \ +\pard\pardeftab720\qc\partightenfactor0 + +\f2\b0\fs22 \cf3 \strokec3 \ +\pard\pardeftab720\partightenfactor0 + +\f3\fs26 \cf2 \strokec2 typescript\ +\pard\pardeftab720\partightenfactor0 + +\f4\b \cf6 \strokec6 import +\f3\b0 \cf4 \strokec4 * +\f4\b \cf6 \strokec6 as +\f3\b0 \cf4 \strokec4 bip39 +\f4\b \cf6 \strokec6 from +\f3\b0 \cf4 \strokec4 \cf7 \strokec7 "bip39"\cf4 \strokec4 ;\ +\ + +\f4\b \cf6 \strokec6 const +\f3\b0 \cf4 \strokec4 BIP39_ENGLISH_WORDLIST = [\ + \cf7 \strokec7 "abandon"\cf4 \strokec4 , \cf7 \strokec7 "ability"\cf4 \strokec4 , \cf7 \strokec7 "able"\cf4 \strokec4 , \cf7 \strokec7 "about"\cf4 \strokec4 , \cf7 \strokec7 "above"\cf4 \strokec4 , \cf7 \strokec7 "absent"\cf4 \strokec4 , \cf7 \strokec7 "absorb"\cf4 \strokec4 , \cf7 \strokec7 "abstract"\cf4 \strokec4 , \cf7 \strokec7 "absurd"\cf4 \strokec4 , \cf7 \strokec7 "abuse"\cf4 \strokec4 ,\ + \cf7 \strokec7 "access"\cf4 \strokec4 , \cf7 \strokec7 "accident"\cf4 \strokec4 , \cf7 \strokec7 "account"\cf4 \strokec4 , \cf7 \strokec7 "accuse"\cf4 \strokec4 , \cf7 \strokec7 "achieve"\cf4 \strokec4 , \cf7 \strokec7 "acid"\cf4 \strokec4 , \cf7 \strokec7 "acoustic"\cf4 \strokec4 , \cf7 \strokec7 "acquire"\cf4 \strokec4 , \cf7 \strokec7 "across"\cf4 \strokec4 , \cf7 \strokec7 "act"\cf4 \strokec4 ,\ + \cf7 \strokec7 "actor"\cf4 \strokec4 , \cf7 \strokec7 "actress"\cf4 \strokec4 , \cf7 \strokec7 "actual"\cf4 \strokec4 , \cf7 \strokec7 "adapt"\cf4 \strokec4 , \cf7 \strokec7 "add"\cf4 \strokec4 , \cf7 \strokec7 "addict"\cf4 \strokec4 , \cf7 \strokec7 "address"\cf4 \strokec4 , \cf7 \strokec7 "adjust"\cf4 \strokec4 , \cf7 \strokec7 "admit"\cf4 \strokec4 , \cf7 \strokec7 "adult"\cf4 \strokec4 ,\ + \cf7 \strokec7 "advance"\cf4 \strokec4 , \cf7 \strokec7 "advice"\cf4 \strokec4 , \cf7 \strokec7 "aerobic"\cf4 \strokec4 , \cf7 \strokec7 "affair"\cf4 \strokec4 , \cf7 \strokec7 "afford"\cf4 \strokec4 , \cf7 \strokec7 "afraid"\cf4 \strokec4 , \cf7 \strokec7 "again"\cf4 \strokec4 , \cf7 \strokec7 "age"\cf4 \strokec4 , \cf7 \strokec7 "agent"\cf4 \strokec4 , \cf7 \strokec7 "agree"\cf4 \strokec4 ,\ + \cf7 \strokec7 "ahead"\cf4 \strokec4 , \cf7 \strokec7 "aim"\cf4 \strokec4 , \cf7 \strokec7 "air"\cf4 \strokec4 , \cf7 \strokec7 "airport"\cf4 \strokec4 , \cf7 \strokec7 "aisle"\cf4 \strokec4 , \cf7 \strokec7 "alarm"\cf4 \strokec4 , \cf7 \strokec7 "album"\cf4 \strokec4 , \cf7 \strokec7 "alcohol"\cf4 \strokec4 , \cf7 \strokec7 "alert"\cf4 \strokec4 , \cf7 \strokec7 "alien"\cf4 \strokec4 ,\ + \cf7 \strokec7 "all"\cf4 \strokec4 , \cf7 \strokec7 "alley"\cf4 \strokec4 , \cf7 \strokec7 "allow"\cf4 \strokec4 , \cf7 \strokec7 "almost"\cf4 \strokec4 , \cf7 \strokec7 "alone"\cf4 \strokec4 , \cf7 \strokec7 "alpha"\cf4 \strokec4 , \cf7 \strokec7 "already"\cf4 \strokec4 , \cf7 \strokec7 "also"\cf4 \strokec4 , \cf7 \strokec7 "alter"\cf4 \strokec4 , \cf7 \strokec7 "always"\cf4 \strokec4 ,\ + \cf7 \strokec7 "amateur"\cf4 \strokec4 , \cf7 \strokec7 "amazing"\cf4 \strokec4 , \cf7 \strokec7 "among"\cf4 \strokec4 , \cf7 \strokec7 "amount"\cf4 \strokec4 , \cf7 \strokec7 "amused"\cf4 \strokec4 , \cf7 \strokec7 "analyst"\cf4 \strokec4 , \cf7 \strokec7 "anchor"\cf4 \strokec4 , \cf7 \strokec7 "ancient"\cf4 \strokec4 , \cf7 \strokec7 "anger"\cf4 \strokec4 , \cf7 \strokec7 "angle"\cf4 \strokec4 ,\ + \cf7 \strokec7 "angry"\cf4 \strokec4 , \cf7 \strokec7 "animal"\cf4 \strokec4 , \cf7 \strokec7 "ankle"\cf4 \strokec4 , \cf7 \strokec7 "announce"\cf4 \strokec4 , \cf7 \strokec7 "annual"\cf4 \strokec4 , \cf7 \strokec7 "another"\cf4 \strokec4 , \cf7 \strokec7 "answer"\cf4 \strokec4 , \cf7 \strokec7 "antenna"\cf4 \strokec4 , \cf7 \strokec7 "antique"\cf4 \strokec4 , \cf7 \strokec7 "anxiety"\cf4 \strokec4 ,\ + \cf7 \strokec7 "any"\cf4 \strokec4 , \cf7 \strokec7 "apart"\cf4 \strokec4 , \cf7 \strokec7 "apology"\cf4 \strokec4 , \cf7 \strokec7 "appear"\cf4 \strokec4 , \cf7 \strokec7 "apple"\cf4 \strokec4 , \cf7 \strokec7 "approve"\cf4 \strokec4 , \cf7 \strokec7 "april"\cf4 \strokec4 , \cf7 \strokec7 "arch"\cf4 \strokec4 , \cf7 \strokec7 "arctic"\cf4 \strokec4 , \cf7 \strokec7 "area"\cf4 \strokec4 ,\ + \cf7 \strokec7 "arena"\cf4 \strokec4 , \cf7 \strokec7 "argue"\cf4 \strokec4 , \cf7 \strokec7 "arm"\cf4 \strokec4 , \cf7 \strokec7 "armed"\cf4 \strokec4 , \cf7 \strokec7 "armor"\cf4 \strokec4 , \cf7 \strokec7 "army"\cf4 \strokec4 , \cf7 \strokec7 "around"\cf4 \strokec4 , \cf7 \strokec7 "arrange"\cf4 \strokec4 , \cf7 \strokec7 "arrest"\cf4 \strokec4 , \cf7 \strokec7 "arrive"\cf4 \strokec4 ,\ + +\f5\i \cf8 \strokec8 // ... (truncated for brevity - full 2048 word list needed in production) +\f3\i0 \cf4 \strokec4 \ + \cf7 \strokec7 "attack"\cf4 \strokec4 , \cf7 \strokec7 "pizza"\cf4 \strokec4 , \cf7 \strokec7 "motion"\cf4 \strokec4 , \cf7 \strokec7 "avocado"\cf4 \strokec4 , \cf7 \strokec7 "network"\cf4 \strokec4 , \cf7 \strokec7 "gather"\cf4 \strokec4 , \cf7 \strokec7 "crop"\cf4 \strokec4 , \cf7 \strokec7 "fresh"\cf4 \strokec4 , \cf7 \strokec7 "patrol"\cf4 \strokec4 , \cf7 \strokec7 "unusual"\cf4 \strokec4 ,\ + +\f5\i \cf8 \strokec8 // Full wordlist should be loaded from bip39 library +\f3\i0 \cf4 \strokec4 \ +];\ +\ +\pard\pardeftab720\partightenfactor0 + +\f5\i \cf8 \strokec8 // Full wordlist from bip39 +\f3\i0 \cf4 \strokec4 \ +\pard\pardeftab720\partightenfactor0 + +\f4\b \cf6 \strokec6 const +\f3\b0 \cf4 \strokec4 FULL_WORDLIST = bip39.wordlists.english;\ +\ + +\f4\b \cf6 \strokec6 interface +\f3\b0 \cf4 \strokec4 \cf5 \strokec5 SeedQRResult\cf4 \strokec4 \{\ + mnemonic: \cf9 \strokec9 string\cf4 \strokec4 ;\ + wordCount: \cf9 \strokec9 12\cf4 \strokec4 | \cf9 \strokec9 24\cf4 \strokec4 ;\ + format: \cf7 \strokec7 "standard"\cf4 \strokec4 | \cf7 \strokec7 "compact"\cf4 \strokec4 ;\ +\}\ +\ +\pard\pardeftab720\partightenfactor0 + +\f5\i \cf8 \strokec8 // --- Standard SeedQR: Parse numeric digit stream --- +\f3\i0 \cf4 \strokec4 \ +\pard\pardeftab720\partightenfactor0 + +\f4\b \cf6 \strokec6 function +\f3\b0 \cf4 \strokec4 parseStandardSeedQR(digitStream: \cf9 \strokec9 string\cf4 \strokec4 ): SeedQRResult \{\ + +\f4\b \cf6 \strokec6 if +\f3\b0 \cf4 \strokec4 (digitStream.length % \cf9 \strokec9 4\cf4 \strokec4 !== \cf9 \strokec9 0\cf4 \strokec4 ) \{\ + +\f4\b \cf6 \strokec6 throw +\f3\b0 \cf4 \strokec4 +\f4\b \cf6 \strokec6 new +\f3\b0 \cf4 \strokec4 \cf5 \strokec5 Error\cf4 \strokec4 (\cf7 \strokec7 "Invalid digit stream length. Must be multiple of 4."\cf4 \strokec4 );\ + \}\ +\ + +\f4\b \cf6 \strokec6 const +\f3\b0 \cf4 \strokec4 wordIndices: \cf9 \strokec9 number\cf4 \strokec4 [] = [];\ + \ + +\f5\i \cf8 \strokec8 // Split into 4-digit indices +\f3\i0 \cf4 \strokec4 \ + +\f4\b \cf6 \strokec6 for +\f3\b0 \cf4 \strokec4 ( +\f4\b \cf6 \strokec6 let +\f3\b0 \cf4 \strokec4 i = \cf9 \strokec9 0\cf4 \strokec4 ; i < digitStream.length; i += \cf9 \strokec9 4\cf4 \strokec4 ) \{\ + +\f4\b \cf6 \strokec6 const +\f3\b0 \cf4 \strokec4 indexStr = digitStream.slice(i, i + \cf9 \strokec9 4\cf4 \strokec4 );\ + +\f4\b \cf6 \strokec6 const +\f3\b0 \cf4 \strokec4 index = parseInt(indexStr, \cf9 \strokec9 10\cf4 \strokec4 );\ + +\f4\b \cf6 \strokec6 if +\f3\b0 \cf4 \strokec4 (isNaN(index) || index >= \cf9 \strokec9 2048\cf4 \strokec4 ) \{\ + +\f4\b \cf6 \strokec6 throw +\f3\b0 \cf4 \strokec4 +\f4\b \cf6 \strokec6 new +\f3\b0 \cf4 \strokec4 \cf5 \strokec5 Error\cf4 \strokec4 (\cf7 \strokec7 `Invalid word index: \cf4 \strokec4 $\{indexStr\}\cf7 \strokec7 `\cf4 \strokec4 );\ + \}\ + wordIndices.push(index);\ + \}\ +\ + +\f4\b \cf6 \strokec6 const +\f3\b0 \cf4 \strokec4 wordCount = wordIndices.length;\ + +\f4\b \cf6 \strokec6 if +\f3\b0 \cf4 \strokec4 (wordCount !== \cf9 \strokec9 12\cf4 \strokec4 && wordCount !== \cf9 \strokec9 24\cf4 \strokec4 ) \{\ + +\f4\b \cf6 \strokec6 throw +\f3\b0 \cf4 \strokec4 +\f4\b \cf6 \strokec6 new +\f3\b0 \cf4 \strokec4 \cf5 \strokec5 Error\cf4 \strokec4 (\cf7 \strokec7 `Invalid word count: \cf4 \strokec4 $\{wordCount\}\cf7 \strokec7 . Must be 12 or 24.`\cf4 \strokec4 );\ + \}\ +\ + +\f4\b \cf6 \strokec6 const +\f3\b0 \cf4 \strokec4 mnemonicWords = wordIndices.map(index => FULL_WORDLIST[index]);\ + +\f4\b \cf6 \strokec6 const +\f3\b0 \cf4 \strokec4 mnemonic = mnemonicWords.join(\cf7 \strokec7 " "\cf4 \strokec4 );\ +\ + +\f4\b \cf6 \strokec6 return +\f3\b0 \cf4 \strokec4 \{\ + mnemonic,\ + wordCount,\ + format: \cf7 \strokec7 "standard"\cf4 \strokec4 \ + \};\ +\}\ +\ +\pard\pardeftab720\partightenfactor0 + +\f5\i \cf8 \strokec8 // --- Compact SeedQR: Parse binary entropy (128 bits for 12-word, 256 bits for 24-word) --- +\f3\i0 \cf4 \strokec4 \ +\pard\pardeftab720\partightenfactor0 + +\f4\b \cf6 \strokec6 function +\f3\b0 \cf4 \strokec4 parseCompactSeedQR(hexEntropy: \cf9 \strokec9 string\cf4 \strokec4 ): SeedQRResult \{\ + +\f4\b \cf6 \strokec6 const +\f3\b0 \cf4 \strokec4 entropy = Buffer.from(hexEntropy, \cf7 \strokec7 'hex'\cf4 \strokec4 );\ + \ + +\f4\b \cf6 \strokec6 if +\f3\b0 \cf4 \strokec4 (entropy.length !== \cf9 \strokec9 16\cf4 \strokec4 && entropy.length !== \cf9 \strokec9 32\cf4 \strokec4 ) \{\ + +\f4\b \cf6 \strokec6 throw +\f3\b0 \cf4 \strokec4 +\f4\b \cf6 \strokec6 new +\f3\b0 \cf4 \strokec4 \cf5 \strokec5 Error\cf4 \strokec4 (\cf7 \strokec7 `Invalid entropy length: \cf4 \strokec4 $\{entropy.length\}\cf7 \strokec7 . Must be 16 (12-word) or 32 (24-word) bytes.`\cf4 \strokec4 );\ + \}\ +\ + +\f4\b \cf6 \strokec6 const +\f3\b0 \cf4 \strokec4 wordCount = entropy.length === \cf9 \strokec9 16\cf4 \strokec4 ? \cf9 \strokec9 12\cf4 \strokec4 : \cf9 \strokec9 24\cf4 \strokec4 ;\ + +\f4\b \cf6 \strokec6 const +\f3\b0 \cf4 \strokec4 mnemonic = bip39.entropyToMnemonic(entropy);\ +\ + +\f4\b \cf6 \strokec6 return +\f3\b0 \cf4 \strokec4 \{\ + mnemonic,\ + wordCount,\ + format: \cf7 \strokec7 "compact"\cf4 \strokec4 \ + \};\ +\}\ +\ +\pard\pardeftab720\partightenfactor0 + +\f5\i \cf8 \strokec8 // --- Test Vector 1 --- +\f3\i0 \cf4 \strokec4 \ +\pard\pardeftab720\partightenfactor0 + +\f4\b \cf6 \strokec6 async +\f3\b0 \cf4 \strokec4 +\f4\b \cf6 \strokec6 function +\f3\b0 \cf4 \strokec4 runSeedSignerTests() \{\ + \cf9 \strokec9 console\cf4 \strokec4 .log(\cf7 \strokec7 " +\f6 \uc0\u55358 \u56785 \u8205 \u55357 \u56620 +\f3 Testing SeedSigner SeedQR Format\\n"\cf4 \strokec4 );\ +\ + +\f5\i \cf8 \strokec8 // Test Vector 1: 24-word seed +\f3\i0 \cf4 \strokec4 \ + +\f4\b \cf6 \strokec6 const +\f3\b0 \cf4 \strokec4 testVector1 = \{\ + mnemonic: \cf7 \strokec7 "attack pizza motion avocado network gather crop fresh patrol unusual wild holiday candy pony ranch winter theme error hybrid van cereal salon goddess expire"\cf4 \strokec4 ,\ + standardDigitStream: \cf7 \strokec7 "011513251154012711900771041507421289190620080870026613431420201617920614089619290300152408010643"\cf4 \strokec4 ,\ + compactHexEntropy: \cf7 \strokec7 "0e54b64107f94cc0ccfae6a13dcbec3662154fec67e0e00999c07892597d190a"\cf4 \strokec4 \ + \};\ +\ + \cf9 \strokec9 console\cf4 \strokec4 .log(\cf7 \strokec7 " +\f6 \uc0\u55357 \u56522 +\f3 Test Vector 1 (24-word)"\cf4 \strokec4 );\ + \cf9 \strokec9 console\cf4 \strokec4 .log(\cf7 \strokec7 "Expected:"\cf4 \strokec4 , testVector1.mnemonic);\ +\ + +\f4\b \cf6 \strokec6 try +\f3\b0 \cf4 \strokec4 \{\ + +\f5\i \cf8 \strokec8 // Test Standard SeedQR +\f3\i0 \cf4 \strokec4 \ + +\f4\b \cf6 \strokec6 const +\f3\b0 \cf4 \strokec4 standardResult = parseStandardSeedQR(testVector1.standardDigitStream);\ + \cf9 \strokec9 console\cf4 \strokec4 .log(\cf7 \strokec7 "\\n +\f6 \uc0\u9989 +\f3 Standard SeedQR PASSED"\cf4 \strokec4 );\ + \cf9 \strokec9 console\cf4 \strokec4 .log(\cf7 \strokec7 ` Words: \cf4 \strokec4 $\{standardResult.wordCount\}\cf7 \strokec7 , Mnemonic: \cf4 \strokec4 $\{standardResult.mnemonic.slice(\cf9 \strokec9 0\cf4 \strokec4 , \cf9 \strokec9 50\cf4 \strokec4 )\}\cf7 \strokec7 ...`\cf4 \strokec4 );\ +\ + +\f5\i \cf8 \strokec8 // Test Compact SeedQR +\f3\i0 \cf4 \strokec4 \ + +\f4\b \cf6 \strokec6 const +\f3\b0 \cf4 \strokec4 compactResult = parseCompactSeedQR(testVector1.compactHexEntropy);\ + \cf9 \strokec9 console\cf4 \strokec4 .log(\cf7 \strokec7 "\\n +\f6 \uc0\u9989 +\f3 Compact SeedQR PASSED"\cf4 \strokec4 );\ + \cf9 \strokec9 console\cf4 \strokec4 .log(\cf7 \strokec7 ` Words: \cf4 \strokec4 $\{compactResult.wordCount\}\cf7 \strokec7 , Mnemonic: \cf4 \strokec4 $\{compactResult.mnemonic.slice(\cf9 \strokec9 0\cf4 \strokec4 , \cf9 \strokec9 50\cf4 \strokec4 )\}\cf7 \strokec7 ...`\cf4 \strokec4 );\ +\ + +\f4\b \cf6 \strokec6 if +\f3\b0 \cf4 \strokec4 (standardResult.mnemonic === testVector1.mnemonic && compactResult.mnemonic === testVector1.mnemonic) \{\ + \cf9 \strokec9 console\cf4 \strokec4 .log(\cf7 \strokec7 "\\n +\f6 \uc0\u55356 \u57225 +\f3 ALL TESTS PASSED!"\cf4 \strokec4 );\ + \}\ +\ + \} +\f4\b \cf6 \strokec6 catch +\f3\b0 \cf4 \strokec4 (error) \{\ + \cf9 \strokec9 console\cf4 \strokec4 .error(\cf7 \strokec7 " +\f6 \uc0\u10060 +\f3 Test failed:"\cf4 \strokec4 , error);\ + \}\ +\}\ +\ +\pard\pardeftab720\partightenfactor0 + +\f5\i \cf8 \strokec8 // Run tests +\f3\i0 \cf4 \strokec4 \ +runSeedSignerTests();\ +\pard\pardeftab720\sa298\partightenfactor0 + +\f1\b\fs36 \cf2 \strokec2 Run Command\ +\pard\pardeftab720\qc\partightenfactor0 + +\f2\b0\fs22 \cf3 \strokec3 \ +\pard\pardeftab720\partightenfactor0 + +\f3\fs26 \cf2 \strokec2 bash\ +\pard\pardeftab720\partightenfactor0 +\cf4 \strokec4 bun run seedsigner-test.ts\ +\pard\pardeftab720\sa298\partightenfactor0 + +\f1\b\fs36 \cf2 \strokec2 Expected Output\ +\pard\pardeftab720\qc\partightenfactor0 + +\f2\b0\fs22 \cf3 \strokec3 \ +\pard\pardeftab720\partightenfactor0 + +\f3\fs26 \cf2 \strokec2 text\ +\pard\pardeftab720\partightenfactor0 + +\f6 \cf4 \strokec4 \uc0\u55358 \u56785 \u8205 \u55357 \u56620 +\f3 Testing SeedSigner SeedQR Format\ +\ + +\f6 \uc0\u55357 \u56522 +\f3 Test Vector 1 (24-word)\ +Expected: attack pizza motion avocado network gather crop fresh patrol unusual wild holiday candy pony ranch winter theme error hybrid van cereal salon goddess expire\ +\ + +\f6 \uc0\u9989 +\f3 Standard SeedQR PASSED\ + Words: 24, Mnemonic: attack pizza motion avocado network gather crop f...\ +\ + +\f6 \uc0\u9989 +\f3 Compact SeedQR PASSED\ + Words: 24, Mnemonic: attack pizza motion avocado network gather crop f...\ +\ + +\f6 \uc0\u55356 \u57225 +\f3 ALL TESTS PASSED!\ +\pard\pardeftab720\sa298\partightenfactor0 + +\f1\b\fs36 \cf2 \strokec2 Key Differences from Krux KEF\ + +\itap1\trowd \taflags0 \trgaph108\trleft-108 \trbrdrt\brdrnil \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalc \clshdrawnil \clwWidth1160\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx2880 +\clvertalc \clshdrawnil \clwWidth3425\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx5760 +\clvertalc \clshdrawnil \clwWidth3052\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\qc\partightenfactor0 + +\fs24 \cf2 \strokec10 Feature\cf0 \cell +\pard\intbl\itap1\pardeftab720\qc\partightenfactor0 +\cf2 SeedSigner SeedQR\cf0 \cell +\pard\intbl\itap1\pardeftab720\qc\partightenfactor0 +\cf2 Krux KEF\cf0 \cell \row + +\itap1\trowd \taflags0 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalc \clshdrawnil \clwWidth1160\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx2880 +\clvertalc \clshdrawnil \clwWidth3425\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx5760 +\clvertalc \clshdrawnil \clwWidth3052\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\partightenfactor0 +\cf2 Purpose +\f0\b0 \cf0 \cell +\pard\intbl\itap1\pardeftab720\partightenfactor0 +\cf2 Encode BIP39 mnemonic indices\cf0 \cell +\pard\intbl\itap1\pardeftab720\partightenfactor0 +\cf2 Encrypt arbitrary data\cf0 \cell \row + +\itap1\trowd \taflags0 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalc \clshdrawnil \clwWidth1160\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx2880 +\clvertalc \clshdrawnil \clwWidth3425\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx5760 +\clvertalc \clshdrawnil \clwWidth3052\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\partightenfactor0 + +\f1\b \cf2 Encryption +\f0\b0 \cf0 \cell +\pard\intbl\itap1\pardeftab720\partightenfactor0 + +\f1\b \cf2 None +\f0\b0 (plain text)\cf0 \cell +\pard\intbl\itap1\pardeftab720\partightenfactor0 +\cf2 AES-GCM + PBKDF2\cf0 \cell \row + +\itap1\trowd \taflags0 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalc \clshdrawnil \clwWidth1160\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx2880 +\clvertalc \clshdrawnil \clwWidth3425\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx5760 +\clvertalc \clshdrawnil \clwWidth3052\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\partightenfactor0 + +\f1\b \cf2 Formats +\f0\b0 \cf0 \cell +\pard\intbl\itap1\pardeftab720\partightenfactor0 +\cf2 Standard (digits), Compact (binary)\cf0 \cell +\pard\intbl\itap1\pardeftab720\partightenfactor0 +\cf2 Versioned envelopes\cf0 \cell \row + +\itap1\trowd \taflags0 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalc \clshdrawnil \clwWidth1160\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx2880 +\clvertalc \clshdrawnil \clwWidth3425\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx5760 +\clvertalc \clshdrawnil \clwWidth3052\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\partightenfactor0 + +\f1\b \cf2 Input +\f0\b0 \cf0 \cell +\pard\intbl\itap1\pardeftab720\partightenfactor0 +\cf2 QR contains raw indices/entropy\cf0 \cell +\pard\intbl\itap1\pardeftab720\partightenfactor0 +\cf2 Base43-encoded encrypted data\cf0 \cell \row + +\itap1\trowd \taflags0 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrt\brdrnil \trbrdrr\brdrnil +\clvertalc \clshdrawnil \clwWidth1160\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx2880 +\clvertalc \clshdrawnil \clwWidth3425\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx5760 +\clvertalc \clshdrawnil \clwWidth3052\clftsWidth3 \clmart10 \clmarl10 \clmarb10 \clmarr10 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt20 \clpadl20 \clpadb20 \clpadr20 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\partightenfactor0 + +\f1\b \cf2 Output +\f0\b0 \cf0 \cell +\pard\intbl\itap1\pardeftab720\partightenfactor0 +\cf2 BIP39 mnemonic\cf0 \cell +\pard\intbl\itap1\pardeftab720\partightenfactor0 +\cf2 Raw decrypted bytes\cf0 \cell \lastrow\row +\pard\pardeftab720\qc\partightenfactor0 + +\f2\fs22 \cf3 \strokec3 \ +\ +\pard\pardeftab720\sa298\partightenfactor0 + +\f1\b\fs36 \cf2 \strokec2 Usage in Your App\ +\pard\pardeftab720\qc\partightenfactor0 + +\f2\b0\fs22 \cf3 \strokec3 \ +\pard\pardeftab720\partightenfactor0 + +\f3\fs26 \cf2 \strokec2 typescript\ +\pard\pardeftab720\partightenfactor0 + +\f5\i \cf8 \strokec8 // Detect format automatically +\f3\i0 \cf4 \strokec4 \ +\pard\pardeftab720\partightenfactor0 + +\f4\b \cf6 \strokec6 export +\f3\b0 \cf4 \strokec4 +\f4\b \cf6 \strokec6 async +\f3\b0 \cf4 \strokec4 +\f4\b \cf6 \strokec6 function +\f3\b0 \cf4 \strokec4 parseSeedQR(qrData: \cf9 \strokec9 string\cf4 \strokec4 ): \cf9 \strokec9 Promise\cf4 \strokec4 <\cf9 \strokec9 string\cf4 \strokec4 > \{\ + +\f5\i \cf8 \strokec8 // Check if it's numeric digits (Standard SeedQR) +\f3\i0 \cf4 \strokec4 \ + +\f4\b \cf6 \strokec6 if +\f3\b0 \cf4 \strokec4 (\cf11 \strokec11 /^\\d+$/\cf4 \strokec4 .test(qrData)) \{\ + +\f4\b \cf6 \strokec6 return +\f3\b0 \cf4 \strokec4 parseStandardSeedQR(qrData).mnemonic;\ + \}\ + \ + +\f5\i \cf8 \strokec8 // Check if it's hex (Compact SeedQR) +\f3\i0 \cf4 \strokec4 \ + +\f4\b \cf6 \strokec6 if +\f3\b0 \cf4 \strokec4 (\cf11 \strokec11 /^[0-9a-fA-F]+$/\cf4 \strokec4 .test(qrData)) \{\ + +\f4\b \cf6 \strokec6 return +\f3\b0 \cf4 \strokec4 parseCompactSeedQR(qrData).mnemonic;\ + \}\ + \ + +\f4\b \cf6 \strokec6 throw +\f3\b0 \cf4 \strokec4 +\f4\b \cf6 \strokec6 new +\f3\b0 \cf4 \strokec4 \cf5 \strokec5 Error\cf4 \strokec4 (\cf7 \strokec7 "Unsupported SeedQR format"\cf4 \strokec4 );\ +\}\ +\pard\pardeftab720\sa240\partightenfactor0 + +\f0\fs24 \cf2 \strokec2 The +\f3\fs26 bip39 +\f0\fs24 library handles the full English wordlist and checksum validation automatically!\ +} \ No newline at end of file diff --git a/REFERENCE/encryption_ui.py b/REFERENCE/encryption_ui.py new file mode 100644 index 0000000..e0bd4c1 --- /dev/null +++ b/REFERENCE/encryption_ui.py @@ -0,0 +1,715 @@ +# The MIT License (MIT) + +# Copyright (c) 2021-2024 Krux contributors + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +import time +from embit import bip39 +from binascii import hexlify +from ..display import DEFAULT_PADDING, FONT_HEIGHT, BOTTOM_PROMPT_LINE +from ..krux_settings import t, Settings +from ..encryption import QR_CODE_ITER_MULTIPLE +from krux import kef +from ..themes import theme +from . import ( + Page, + Menu, + MENU_CONTINUE, + ESC_KEY, + LETTERS, + UPPERCASE_LETTERS, + NUM_SPECIAL_1, + NUM_SPECIAL_2, + DIGITS, +) + +# Override constants for KEF envelope operations +OVERRIDE_ITERATIONS = 1 +OVERRIDE_VERSION = 2 +OVERRIDE_MODE = 3 +OVERRIDE_LABEL = 4 + +ENCRYPTION_KEY_MAX_LEN = 200 + + +def decrypt_kef(ctx, data): + """finds kef-envelope and returns data fully decrypted, else ValueError""" + from binascii import unhexlify + from krux.baseconv import base_decode, hint_encodings + + # nothing to decrypt or declined raises ValueError here, + # so callers can `except ValueError: pass`, then treat original data. + # If user decides to decrypt and fails with wrong key, then + # `KeyError("Failed to decrypt")` raised by `KEFEnvelope.unseal_ui()` + # will bubble up to caller. + err = "Not decrypted" # intentionally vague + + # if data is str, assume encoded, look for kef envelope + kef_envelope = None + if isinstance(data, str): + encodings = hint_encodings(data) + for encoding in encodings: + as_bytes = None + if encoding in ("hex", "HEX"): + try: + as_bytes = unhexlify(data) + except: + continue + elif encoding == 32: + try: + as_bytes = base_decode(data, 32) + except: + continue + elif encoding == 64: + try: + as_bytes = base_decode(data, 64) + except: + continue + elif encoding == 43: + try: + as_bytes = base_decode(data, 43) + except: + continue + + if as_bytes: + kef_envelope = KEFEnvelope(ctx) + if kef_envelope.parse(as_bytes): + break + kef_envelope = None + del as_bytes + + # kef_envelope may already be parsed, else do so or fail early + if kef_envelope is None: + if not isinstance(data, bytes): + raise ValueError(err) + + kef_envelope = KEFEnvelope(ctx) + if not kef_envelope.parse(data): + raise ValueError(err) + + # unpack as many kef_envelopes as there may be + while True: + data = kef_envelope.unseal_ui() + if data is None: + # fail if not unsealed + raise ValueError(err) + # we may have unsealed another envelope + kef_envelope = KEFEnvelope(ctx) + if not kef_envelope.parse(data): + return data + raise ValueError(err) + + +def prompt_for_text_update( + ctx, + dflt_value, + dflt_prompt=None, + dflt_affirm=True, + prompt_highlight_prefix="", + title=None, + keypads=None, + esc_prompt=False, +): + """Clears screen, prompts question, allows for keypad input""" + if dflt_value: + if dflt_prompt: + dflt_prompt += " " + dflt_value + else: + dflt_prompt = t("Use current value?") + " " + dflt_value + ctx.display.clear() + if dflt_value and dflt_prompt: + ctx.display.draw_centered_text( + dflt_prompt, highlight_prefix=prompt_highlight_prefix + ) + dflt_answer = Page(ctx).prompt("", BOTTOM_PROMPT_LINE) + if dflt_affirm == dflt_answer: + return dflt_value + if not isinstance(keypads, list) or keypads is None: + keypads = [LETTERS, UPPERCASE_LETTERS, NUM_SPECIAL_1, NUM_SPECIAL_2] + value = Page(ctx).capture_from_keypad( + title, keypads, starting_buffer=dflt_value, esc_prompt=esc_prompt + ) + if isinstance(value, str): + return value + return dflt_value + + +class KEFEnvelope(Page): + """UI to handle KEF-Encryption-Format Envelopes""" + + def __init__(self, ctx): + super().__init__(ctx, None) + self.ctx = ctx + self.__key = None + self.__iv = None + self.label = None + self.iterations = Settings().encryption.pbkdf2_iterations + max_delta = self.iterations // 10 + self.iterations += int(time.ticks_ms()) % max_delta + self.mode_name = Settings().encryption.version + self.mode = kef.MODE_NUMBERS[self.mode_name] + self.iv_len = kef.MODE_IVS.get(self.mode, 0) + self.version = None + self.version_name = None + self.ciphertext = None + + def parse(self, kef_envelope): + """parses envelope, from kef.wrap()""" + if self.ciphertext is not None: + raise ValueError("KEF Envelope already parsed") + try: + self.label, self.version, self.iterations, self.ciphertext = kef.unwrap( + kef_envelope + ) + except: + return False + self.version_name = kef.VERSIONS[self.version]["name"] + self.mode = kef.VERSIONS[self.version]["mode"] + self.mode_name = [k for k, v in kef.MODE_NUMBERS.items() if v == self.mode][0] + return True + + def input_key_ui(self, creating=True): + """calls ui to gather master key""" + ui = EncryptionKey(self.ctx) + self.__key = ui.encryption_key(creating) + return bool(self.__key) + + def input_mode_ui(self): + """implements ui to allow user to select KEF mode-of-operation""" + self.ctx.display.clear() + self.ctx.display.draw_centered_text( + t("Use default Mode?") + " " + self.mode_name, highlight_prefix="?" + ) + if self.prompt("", BOTTOM_PROMPT_LINE): + return True + menu_items = [(k, v) for k, v in kef.MODE_NUMBERS.items() if v is not None] + idx, _ = Menu( + self.ctx, [(x[0], lambda: None) for x in menu_items], back_label=None + ).run_loop() + self.mode_name, self.mode = menu_items[idx] + self.iv_len = kef.MODE_IVS.get(self.mode, 0) + return True + + def input_version_ui(self): + """implements ui to allow user to select KEF version""" + self.ctx.display.clear() + self.ctx.display.draw_centered_text( + t("Use default Mode?") + " " + self.mode_name, highlight_prefix="?" + ) + if self.prompt("", BOTTOM_PROMPT_LINE): + return True + menu_items = [ + (v["name"], k) + for k, v in sorted(kef.VERSIONS.items()) + if isinstance(v, dict) and v["mode"] is not None + ] + idx, _ = Menu( + self.ctx, [(x[0], lambda: None) for x in menu_items], back_label=None + ).run_loop() + self.version = [v for i, (_, v) in enumerate(menu_items) if i == idx][0] + self.version_name = kef.VERSIONS[self.version]["name"] + self.mode = kef.VERSIONS[self.version]["mode"] + self.mode_name = [k for k, v in kef.MODE_NUMBERS.items() if v == self.mode][0] + self.iv_len = kef.MODE_IVS.get(self.mode, 0) + return True + + def input_iterations_ui(self): + """implements ui to allow user to set key-stretch iterations""" + curr_value = str(self.iterations) + dflt_prompt = t("Use default PBKDF2 iter.?") + title = t("PBKDF2 iter.") + ": 10K - 510K" + keypads = [DIGITS] + iterations = prompt_for_text_update( + self.ctx, curr_value, dflt_prompt, True, "?", title, keypads + ) + if QR_CODE_ITER_MULTIPLE <= int(iterations) <= 550000: + self.iterations = int(iterations) + return True + return None + + def input_label_ui( + self, + dflt_label="", + dflt_prompt="", + dflt_affirm=True, + title=t("Visible Label"), + keypads=None, + ): + """implements ui to allow user to set a KEF label""" + if dflt_label and not dflt_prompt: + dflt_prompt = t("Update KEF ID?") + dflt_affirm = False + self.label = prompt_for_text_update( + self.ctx, dflt_label, dflt_prompt, dflt_affirm, "?", title, keypads + ) + return True + + def input_iv_ui(self): + """implements ui to allow user to gather entropy from camera for iv""" + if self.iv_len > 0: + error_txt = t("Failed gathering camera entropy") + self.ctx.display.clear() + self.ctx.display.draw_centered_text( + t("Additional entropy from camera required for %s") % self.mode_name + ) + if not self.prompt(t("Proceed?"), BOTTOM_PROMPT_LINE): + self.flash_error(error_txt) + self.__iv = None + return None + from .capture_entropy import CameraEntropy + + camera_entropy = CameraEntropy(self.ctx) + entropy = camera_entropy.capture(show_entropy_details=False) + if entropy is None: + self.flash_error(error_txt) + self.__iv = None + return None + self.__iv = entropy[: self.iv_len] + return True + self.__iv = None + return True + + def public_info_ui(self, kef_envelope=None, prompt_decrypt=False): + """implements ui to allow user to see public exterior of KEF envelope""" + if kef_envelope: + self.parse(kef_envelope) + elif not self.ciphertext: + raise ValueError("KEF Envelope not yet parsed") + try: + displayable_label = self.label.decode() + except: + displayable_label = "0x" + hexlify(self.label).decode() + + public_info = "\n".join( + [ + t("KEF Encrypted") + " (" + str(len(self.ciphertext)) + " B)", + self.fit_to_line(displayable_label, t("ID") + ": "), + t("Version") + ": " + self.version_name, + t("PBKDF2 iter.") + ": " + str(self.iterations), + ] + ) + self.ctx.display.clear() + if prompt_decrypt: + return self.prompt( + public_info + "\n\n" + t("Decrypt?"), self.ctx.display.height() // 2 + ) + self.ctx.display.draw_hcentered_text(public_info) + self.ctx.input.wait_for_button() + return True + + def seal_ui( + self, + plaintext, + overrides=None, + dflt_label_prompt="", + dflt_label_affirm=True, + ): + """implements ui to allow user to seal plaintext inside a KEF envelope""" + if not isinstance(overrides, list): + overrides = [] + if self.ciphertext: + raise ValueError("KEF Envelope already sealed") + if not (self.__key or self.input_key_ui()): + return None + if overrides: + if OVERRIDE_ITERATIONS in overrides and not self.input_iterations_ui(): + return None + if OVERRIDE_VERSION in overrides and not self.input_version_ui(): + return None + if OVERRIDE_MODE in overrides and not self.input_mode_ui(): + return None + if self.iv_len: + if not (self.__iv or self.input_iv_ui()): + return None + if OVERRIDE_LABEL in overrides or not self.label: + self.input_label_ui(self.label, dflt_label_prompt, dflt_label_affirm) + if self.version is None: + self.version = kef.suggest_versions(plaintext, self.mode_name)[0] + self.version_name = kef.VERSIONS[self.version]["name"] + self.ctx.display.clear() + self.ctx.display.draw_centered_text(t("Processing…")) + cipher = kef.Cipher(self.__key, self.label, self.iterations) + self.ciphertext = cipher.encrypt(plaintext, self.version, self.__iv) + self.__key = None + self.__iv = None + return kef.wrap(self.label, self.version, self.iterations, self.ciphertext) + + def unseal_ui(self, kef_envelope=None, prompt_decrypt=True, display_plain=False): + """implements ui to allow user to unseal a plaintext from a sealed KEF envelope""" + if kef_envelope: + if not self.parse(kef_envelope): + return None + if not self.ciphertext: + raise ValueError("KEF Envelope not yet parsed") + if prompt_decrypt: + if not self.public_info_ui(prompt_decrypt=prompt_decrypt): + return None + if not (self.__key or self.input_key_ui(creating=False)): + return None + self.ctx.display.clear() + self.ctx.display.draw_centered_text(t("Processing…")) + cipher = kef.Cipher(self.__key, self.label, self.iterations) + plaintext = cipher.decrypt(self.ciphertext, self.version) + self.__key = None + if plaintext is None: + raise KeyError("Failed to decrypt") + if display_plain: + self.ctx.display.clear() + try: + self.ctx.display.draw_centered_text(plaintext.decode()) + except: + self.ctx.display.draw_centered_text("0x" + hexlify(plaintext).decode()) + self.ctx.input.wait_for_button() + return plaintext + + +class EncryptionKey(Page): + """UI to capture an encryption key""" + + def __init__(self, ctx): + super().__init__(ctx, None) + self.ctx = ctx + + def key_strength(self, key_string): + """Check the strength of a key.""" + + if isinstance(key_string, bytes): + key_string = hexlify(key_string).decode() + + if len(key_string) < 8: + return t("Weak") + + has_upper = has_lower = has_digit = has_special = False + + for c in key_string: + if "a" <= c <= "z": + has_lower = True + elif "A" <= c <= "Z": + has_upper = True + elif "0" <= c <= "9": + has_digit = True + else: + has_special = True + + # small optimization: stop if all found + if has_upper and has_lower and has_digit and has_special: + break + + # Count how many character types are present + score = sum([has_upper, has_lower, has_digit, has_special]) + + # Add length score to score + key_len = len(key_string) + if key_len >= 12: + score += 1 + if key_len >= 16: + score += 1 + if key_len >= 20: + score += 1 + if key_len >= 40: + score += 1 + + set_len = len(set(key_string)) + if set_len < 6: + score -= 1 + if set_len < 3: + score -= 1 + + # Determine key strength + if score >= 4: + return t("Strong") + if score >= 3: + return t("Medium") + return t("Weak") + + def encryption_key(self, creating=False): + """Loads and returns an encryption key from keypad or QR code""" + submenu = Menu( + self.ctx, + [ + (t("Type Key"), self.load_key), + (t("Scan Key QR Code"), self.load_qr_encryption_key), + ], + back_label=None, + ) + _, key = submenu.run_loop() + + try: + # encryption key may have been encrypted + decrypted = decrypt_kef(self.ctx, key) + try: + # no assumed decodings except for utf8 + decrypted = decrypted.decode() + except: + pass + + key = decrypted if decrypted else key + except KeyError: + self.flash_error(t("Failed to decrypt")) + return None + except ValueError: + # ValueError=not KEF or declined to decrypt + pass + + while True: + if key in (None, "", b"", ESC_KEY, MENU_CONTINUE): + self.flash_error(t("Failed to load")) + return None + + self.ctx.display.clear() + offset_y = DEFAULT_PADDING + displayable = key if isinstance(key, str) else "0x" + hexlify(key).decode() + key_lines = self.ctx.display.draw_hcentered_text( + "{} ({}): {}".format(t("Key"), len(key), displayable), + offset_y, + highlight_prefix=":", + ) + + if creating: + strength = self.key_strength(key) + offset_y += (key_lines + 1) * FONT_HEIGHT + color = theme.error_color if strength == t("Weak") else theme.fg_color + self.ctx.display.draw_hcentered_text( + "{}: {}".format(t("Strength"), strength), + offset_y, + color, + highlight_prefix=":", + ) + + if self.prompt(t("Proceed?"), BOTTOM_PROMPT_LINE): + return key + + # user did not confirm to proceed + if not isinstance(key, str): + return None + key = self.load_key(key) + + def load_key(self, data=""): + """Loads and returns a key from keypad""" + if not isinstance(data, str): + raise TypeError("load_key() expected str") + data = self.capture_from_keypad( + t("Key"), + [LETTERS, UPPERCASE_LETTERS, NUM_SPECIAL_1, NUM_SPECIAL_2], + starting_buffer=data, + ) + if len(str(data)) > ENCRYPTION_KEY_MAX_LEN: + raise ValueError("Maximum length exceeded (%s)" % ENCRYPTION_KEY_MAX_LEN) + return data + + def load_qr_encryption_key(self): + """Loads and returns a key from a QR code""" + + from .qr_capture import QRCodeCapture + + qr_capture = QRCodeCapture(self.ctx) + data, _ = qr_capture.qr_capture_loop() + if data is None: + return None + if len(data) > ENCRYPTION_KEY_MAX_LEN: + raise ValueError("Maximum length exceeded (%s)" % ENCRYPTION_KEY_MAX_LEN) + return data + + +class EncryptMnemonic(Page): + """UI with mnemonic encryption output options""" + + def __init__(self, ctx): + super().__init__(ctx, None) + self.ctx = ctx + self.mode_name = Settings().encryption.version + + def _encrypt_mnemonic_with_label(self): + """Helper method to encrypt mnemonic with label selection.""" + + kef_envelope = KEFEnvelope(self.ctx) + default_label = self.ctx.wallet.key.fingerprint_hex_str() + kef_envelope.label = default_label + mnemonic_bytes = bip39.mnemonic_to_bytes(self.ctx.wallet.key.mnemonic) + encrypted_data = kef_envelope.seal_ui( + mnemonic_bytes, + overrides=[OVERRIDE_LABEL], + dflt_label_prompt=t("Use fingerprint as ID?"), + dflt_label_affirm=True, + ) + if encrypted_data is None: + return None, None + + mnemonic_id = kef_envelope.label + return encrypted_data, mnemonic_id + + def encrypt_menu(self): + """Menu with mnemonic encryption output options""" + + encrypt_outputs_menu = [ + (t("Store on Flash"), self.store_mnemonic_on_memory), + ( + t("Store on SD Card"), + ( + None + if not self.has_sd_card() + else lambda: self.store_mnemonic_on_memory(True) + ), + ), + (t("Encrypted QR Code"), self.encrypted_qr_code), + ] + submenu = Menu(self.ctx, encrypt_outputs_menu) + _, _ = submenu.run_loop() + return MENU_CONTINUE + + def store_mnemonic_on_memory(self, sd_card=False): + """Save encrypted mnemonic on flash or sd_card""" + + from ..encryption import MnemonicStorage + + encrypted_data, mnemonic_id = self._encrypt_mnemonic_with_label() + if encrypted_data is None: + return + + mnemonic_storage = MnemonicStorage() + if mnemonic_id in mnemonic_storage.list_mnemonics(sd_card): + self.flash_error( + t("ID already exists") + "\n" + t("Encrypted mnemonic was not stored") + ) + del mnemonic_storage + return + + if mnemonic_storage.store_encrypted_kef(mnemonic_id, encrypted_data, sd_card): + self.ctx.display.clear() + self.ctx.display.draw_centered_text( + t("Encrypted mnemonic stored with ID:") + " " + mnemonic_id, + highlight_prefix=":", + ) + else: + self.ctx.display.clear() + self.ctx.display.draw_centered_text( + t("Failed to store mnemonic"), theme.error_color + ) + self.ctx.input.wait_for_button() + del mnemonic_storage + + def encrypted_qr_code(self): + """Exports an encryprted mnemonic QR code""" + + encrypted_data, mnemonic_id = self._encrypt_mnemonic_with_label() + if encrypted_data is None: + return + + from .qr_view import SeedQRView + from ..baseconv import base_encode + + # All currently offered versions should encode to base43 + qr_data = base_encode(encrypted_data, 43) + seed_qr_view = SeedQRView(self.ctx, data=qr_data, title=mnemonic_id) + seed_qr_view.display_qr(allow_export=True) + + +class LoadEncryptedMnemonic(Page): + """UI to load encrypted mnemonics stored on flash and Sd card""" + + def __init__(self, ctx): + super().__init__(ctx, None) + self.ctx = ctx + + def load_from_storage(self, remove_opt=False): + """Lists all encrypted mnemonics stored is flash and SD card""" + from ..encryption import MnemonicStorage + from ..settings import THIN_SPACE + + mnemonic_ids_menu = [] + mnemonic_storage = MnemonicStorage() + mnemonics = mnemonic_storage.list_mnemonics() + sd_mnemonics = mnemonic_storage.list_mnemonics(sd_card=True) + del mnemonic_storage + + for mnemonic_id in sorted(mnemonics): + mnemonic_ids_menu.append( + ( + mnemonic_id + " (flash)", + lambda m_id=mnemonic_id: ( + self._remove_encrypted_mnemonic(m_id) + if remove_opt + else self._load_encrypted_mnemonic(m_id) + ), + ) + ) + for mnemonic_id in sorted(sd_mnemonics): + mnemonic_ids_menu.append( + ( + mnemonic_id + " (SD" + THIN_SPACE + "card)", + lambda m_id=mnemonic_id: ( + self._remove_encrypted_mnemonic(m_id, sd_card=True) + if remove_opt + else self._load_encrypted_mnemonic(m_id, sd_card=True) + ), + ) + ) + submenu = Menu(self.ctx, mnemonic_ids_menu) + index, status = submenu.run_loop() + if index == submenu.back_index: + return MENU_CONTINUE + return status + + def _load_encrypted_mnemonic(self, mnemonic_id, sd_card=False): + """Uses encryption module to load and decrypt a mnemonic""" + from ..encryption import MnemonicStorage + + error_txt = t("Failed to decrypt") + + key_capture = EncryptionKey(self.ctx) + key = key_capture.encryption_key() + if key in (None, "", ESC_KEY): + self.flash_error(t("Key was not provided")) + return MENU_CONTINUE + self.ctx.display.clear() + self.ctx.display.draw_centered_text(t("Processing…")) + mnemonic_storage = MnemonicStorage() + try: + words = mnemonic_storage.decrypt(key, mnemonic_id, sd_card).split() + except: + self.flash_error(error_txt) + return MENU_CONTINUE + + if len(words) not in (12, 24): + self.flash_error(error_txt) + return MENU_CONTINUE + del mnemonic_storage + return words + + def _remove_encrypted_mnemonic(self, mnemonic_id, sd_card=False): + """Deletes a mnemonic""" + from ..encryption import MnemonicStorage + + mnemonic_storage = MnemonicStorage() + self.ctx.display.clear() + if self.prompt(t("Remove %s?") % mnemonic_id, self.ctx.display.height() // 2): + mnemonic_storage.del_mnemonic(mnemonic_id, sd_card) + message = t("%s removed.") % mnemonic_id + message += "\n\n" + if sd_card: + message += t( + "Fully erase your SD card in another device to ensure data is unrecoverable" + ) + else: + message += t("To ensure data is unrecoverable use Wipe Device feature") + self.ctx.display.clear() + self.ctx.display.draw_centered_text(message) + self.ctx.input.wait_for_button() + del mnemonic_storage diff --git a/REFERENCE/kef.py b/REFERENCE/kef.py new file mode 100644 index 0000000..42aab1a --- /dev/null +++ b/REFERENCE/kef.py @@ -0,0 +1,564 @@ +# The MIT License (MIT) + +# Copyright (c) 2021-2025 Krux contributors + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +import ucryptolib +import uhashlib_hw + + +# KEF: AES, MODEs VERSIONS, MODE_NUMBERS, and MODE_IVS are defined here +# to disable a MODE: set its value to None +# to disable a VERSION: set its value to None +AES = ucryptolib.aes +MODE_ECB = ucryptolib.MODE_ECB +MODE_CBC = ucryptolib.MODE_CBC +MODE_CTR = ucryptolib.MODE_CTR +MODE_GCM = ucryptolib.MODE_GCM +VERSIONS = { + # initial versions: released 2023.08 to encrypt bip39 entropy bytes + 0: { + "name": "AES-ECB v1", + "mode": MODE_ECB, + "auth": -16, + }, + 1: { + "name": "AES-CBC v1", + "mode": MODE_CBC, + "auth": -16, + }, + # AES in ECB mode + 5: { + # smallest ECB ciphertext, w/ unsafe padding: for high entropy mnemonics, passphrases, etc + "name": "AES-ECB", + "mode": MODE_ECB, + "auth": 3, + }, + 6: { + # safe padding: for mid-sized plaintext w/o duplicate blocks + "name": "AES-ECB +p", + "mode": MODE_ECB, + "pkcs_pad": True, + "auth": -4, + }, + 7: { + # compressed, w/ safe padding: for larger plaintext; may compact otherwise duplicate blocks + "name": "AES-ECB +c", + "mode": MODE_ECB, + "pkcs_pad": True, + "auth": -4, + "compress": True, + }, + # AES in CBC mode + 10: { + # smallest CBC cipherext, w/ unsafe padding: for mnemonics, passphrases, etc + "name": "AES-CBC", + "mode": MODE_CBC, + "auth": 4, + }, + 11: { + # safe padding: for mid-sized plaintext + "name": "AES-CBC +p", + "mode": MODE_CBC, + "pkcs_pad": True, + "auth": -4, + }, + 12: { + # compressed, w/ safe padding: for larger plaintext + "name": "AES-CBC +c", + "mode": MODE_CBC, + "pkcs_pad": True, + "auth": -4, + "compress": True, + }, + # AES in CTR stream mode + 15: { + # doesn't require padding: for small and mid-sized plaintext + "name": "AES-CTR", + "mode": MODE_CTR, + "pkcs_pad": None, + "auth": -4, + }, + 16: { + # compressed: for larger plaintext + "name": "AES-CTR +c", + "mode": MODE_CTR, + "pkcs_pad": None, + "auth": -4, + "compress": True, + }, + # AES in GCM stream mode + 20: { + # doesn't require padding: for small and mid-sized plaintext + "name": "AES-GCM", + "mode": MODE_GCM, + "pkcs_pad": None, + "auth": 4, + }, + 21: { + # compressed: for larger plaintext + "name": "AES-GCM +c", + "mode": MODE_GCM, + "pkcs_pad": None, + "auth": 4, + "compress": True, + }, +} +MODE_NUMBERS = { + "AES-ECB": MODE_ECB, + "AES-CBC": MODE_CBC, + "AES-CTR": MODE_CTR, + "AES-GCM": MODE_GCM, +} +MODE_IVS = { + MODE_CBC: 16, + MODE_CTR: 12, + MODE_GCM: 12, +} + +AES_BLOCK_SIZE = 16 + + +class Cipher: + """More than just a helper for AES encrypt/decrypt. Enforces KEF VERSIONS rules""" + + def __init__(self, key, salt, iterations): + key = key if isinstance(key, bytes) else key.encode() + salt = salt if isinstance(salt, bytes) else salt.encode() + self._key = uhashlib_hw.pbkdf2_hmac_sha256(key, salt, iterations) + + def encrypt(self, plain, version, iv=b"", fail_unsafe=True): + """AES encrypt according to KEF rules defined by version, returns payload bytes""" + mode = VERSIONS[version]["mode"] + v_iv = MODE_IVS.get(mode, 0) + v_pkcs_pad = VERSIONS[version].get("pkcs_pad", False) + v_auth = VERSIONS[version].get("auth", 0) + v_compress = VERSIONS[version].get("compress", False) + auth = b"" + if iv is None: + iv = b"" + + if not isinstance(plain, bytes): + raise TypeError("Plaintext is not bytes") + + # for versions that compress + if v_compress: + plain = _deflate(plain) + + # fail: post-encryption appended "auth" with unfaithful-padding breaks decryption + if fail_unsafe and v_pkcs_pad is False and v_auth > 0 and plain[-1] == 0x00: + raise ValueError("Cannot validate decryption for this plaintext") + + # for modes that don't have authentication, KEF uses 2 forms of sha256 + if v_auth != 0 and mode in (MODE_ECB, MODE_CBC, MODE_CTR): + if v_auth > 0: + # unencrypted (public) auth: hash the plaintext w/ self._key + auth = uhashlib_hw.sha256( + bytes([version]) + iv + plain + self._key + ).digest()[:v_auth] + elif v_auth < 0: + # encrypted auth: hash only the plaintext + auth = uhashlib_hw.sha256(plain).digest()[:-v_auth] + + # fail: same case as above if auth bytes have NUL suffix + if fail_unsafe and v_pkcs_pad is False and auth[-1] == 0x00: + raise ValueError("Cannot validate decryption for this plaintext") + plain += auth + auth = b"" + + # some modes need to pad to AES 16-byte blocks + if v_pkcs_pad is True or v_pkcs_pad is False: + plain = _pad(plain, pkcs_pad=v_pkcs_pad) + + # fail to encrypt in modes where it is known unsafe + if fail_unsafe and mode == MODE_ECB: + unique_blocks = len( + set((plain[x : x + 16] for x in range(0, len(plain), 16))) + ) + if unique_blocks != len(plain) // 16: + raise ValueError("Duplicate blocks in ECB mode") + + # setup the encryptor (checking for modes that need initialization-vector) + if v_iv > 0: + if not (isinstance(iv, bytes) and len(iv) == v_iv): + raise ValueError("Wrong IV length") + elif iv: + raise ValueError("IV is not required") + if iv: + if mode == MODE_CTR: + encryptor = AES(self._key, mode, nonce=iv) + elif mode == MODE_GCM: + encryptor = AES(self._key, mode, iv, mac_len=v_auth) + else: + encryptor = AES(self._key, mode, iv) + else: + encryptor = AES(self._key, mode) + + # encrypt the plaintext + encrypted = encryptor.encrypt(plain) + + # for modes that do have inherent authentication, use it + if mode == MODE_GCM: + auth = encryptor.digest()[:v_auth] + + return iv + encrypted + auth + + def decrypt(self, payload, version): + """AES Decrypt according to KEF rules defined by version, returns plaintext bytes""" + mode = VERSIONS[version]["mode"] + v_iv = MODE_IVS.get(mode, 0) + v_pkcs_pad = VERSIONS[version].get("pkcs_pad", False) + v_auth = VERSIONS[version].get("auth", 0) + v_compress = VERSIONS[version].get("compress", False) + + # validate payload size early + min_payload = 1 if mode in (MODE_CTR, MODE_GCM) else AES_BLOCK_SIZE + min_payload += min(0, v_auth) + v_iv + if len(payload) <= min_payload: + raise ValueError("Invalid Payload") + + # setup decryptor (pulling initialization-vector from payload if necessary) + if not v_iv: + iv = b"" + decryptor = AES(self._key, mode) + else: + iv = payload[:v_iv] + if mode == MODE_CTR: + decryptor = AES(self._key, mode, nonce=iv) + elif mode == MODE_GCM: + decryptor = AES(self._key, mode, iv, mac_len=v_auth) + else: + decryptor = AES(self._key, mode, iv) + payload = payload[v_iv:] + + # remove authentication from payload if suffixed to ciphertext + auth = None + if v_auth > 0: + auth = payload[-v_auth:] + payload = payload[:-v_auth] + + # decrypt the ciphertext + decrypted = decryptor.decrypt(payload) + + # if authentication added (inherent or added by KEF for ECB/CBC) + # then: unpad and validate via embeded authentication bytes + # else: let caller deal with unpad and auth + if v_auth != 0: + try: + decrypted = self._authenticate( + version, iv, decrypted, decryptor, auth, mode, v_auth, v_pkcs_pad + ) + except: + decrypted = None + + # for versions that compress + if decrypted and v_compress: + decrypted = _reinflate(decrypted) + + return decrypted + + def _authenticate( + self, version, iv, decrypted, aes_object, auth, mode, v_auth, v_pkcs_pad + ): + if not ( + isinstance(version, int) + and 0 <= version <= 255 + and isinstance(iv, bytes) + and isinstance(decrypted, bytes) + and ( + mode != MODE_GCM + or (hasattr(aes_object, "verify") and callable(aes_object.verify)) + ) + and (isinstance(auth, bytes) or auth is None) + and mode in MODE_NUMBERS.values() + and (isinstance(v_auth, int) and -32 <= v_auth <= 32) + and (v_pkcs_pad is True or v_pkcs_pad is False or v_pkcs_pad is None) + ): + raise ValueError("Invalid call to ._authenticate()") + + # some modes need to unpad + len_pre_unpad = len(decrypted) + if v_pkcs_pad in (False, True): + decrypted = _unpad(decrypted, pkcs_pad=v_pkcs_pad) + + if v_auth < 0: + # auth was added to plaintext + auth = decrypted[v_auth:] + decrypted = decrypted[:v_auth] + + # versions that have built-in authentication use their own + if mode == MODE_GCM: + try: + aes_object.verify(auth) + return decrypted + except: + return None + + # versions that don't have built-in authentication use 2 forms of sha256 + max_attempts = 1 + if v_pkcs_pad is False: + # NUL padding is imperfect, still attempt to authenticate -- up to a limit... + # ... lesser of num bytes unpadded and auth size+1, + 1 + max_attempts = min(len_pre_unpad - len(decrypted), abs(v_auth) + 1) + 1 + + for _ in range(max_attempts): + if v_auth > 0: + # for unencrypted (public) auth > 0: hash the decrypted w/ self._key + cksum = uhashlib_hw.sha256( + bytes([version]) + iv + decrypted + self._key + ).digest()[:v_auth] + else: + # for encrypted auth < 0: hash only the decrypted + cksum = uhashlib_hw.sha256(decrypted).digest()[:-v_auth] + if cksum == auth: + return decrypted + + if v_auth < 0: + # for next attempt, assume auth had NUL stripped by unpad() + decrypted += auth[:1] + auth = auth[1:] + b"\x00" + elif v_auth > 0: + # for next attempt, assume plaintext had NUL stripped by unpad() + decrypted += b"\x00" + return None + + +def suggest_versions(plaintext, mode_name): + """Suggests a krux encryption version based on plaintext and preferred mode""" + + small_thresh = 32 # if len(plaintext) <= small_thresh: it is small + big_thresh = 120 # if len(plaintext) >= big_thresh: it is big + + # gather metrics on plaintext + if not isinstance(plaintext, (bytes, str)): + raise TypeError("Plaintext is not bytes or str") + p_length = len(plaintext) + unique_blocks = len(set((plaintext[x : x + 16] for x in range(0, p_length, 16)))) + p_duplicates = bool(unique_blocks < p_length / 16) + if isinstance(plaintext, bytes): + p_nul_suffix = bool(plaintext[-1] == 0x00) + else: + p_nul_suffix = bool(plaintext.encode()[-1] == 0x00) + + candidates = [] + for version, values in VERSIONS.items(): + # strategy: eliminate bad choices of versions + # TODO: explore a strategy that cuts to the best one right away + + if values is None or values["mode"] is None: + continue + + # never use a version that is not the correct mode + if values["mode"] != MODE_NUMBERS[mode_name]: + continue + v_compress = values.get("compress", False) + v_auth = values.get("auth", 0) + v_pkcs_pad = values.get("pkcs_pad", False) + + # never use non-compressed ECB when plaintext has duplicate blocks + if p_duplicates and mode_name == "AES-ECB" and not v_compress: + continue + + # never use v1 versions since v2 is smaller + if mode_name in ("AES-ECB", "AES-CBC") and v_auth == -16: + continue + + # based on plaintext size + if p_length <= small_thresh: + # except unsafe ECB text... + if mode_name == "AES-ECB" and p_duplicates: + pass + else: + # ...never use pkcs when it's small and can keep it small + if v_pkcs_pad is True and not p_nul_suffix: + continue + # ...and never compress + if v_compress: + continue + else: + # never use non-safe padding for not-small plaintext + if v_pkcs_pad is False: + continue + + # except unsafe ECB text... + if mode_name == "AES-ECB" and p_duplicates: + pass + elif p_length < big_thresh: + # ...never use compressed for not-big plaintext + if v_compress: + continue + else: + # never use non-compressed for big plaintext + if not v_compress: + continue + + # never use a version with unsafe padding if plaintext ends 0x00 + if p_nul_suffix and v_pkcs_pad is False: + continue + + candidates.append(version) + return candidates + + +def wrap(id_, version, iterations, payload): + """ + Wraps inputs into KEF Encryption Format envelope, returns bytes + """ + + try: + # when wrapping, be tolerant about id_ as bytes or str + id_ = id_ if isinstance(id_, bytes) else id_.encode() + if not 0 <= len(id_) <= 252: + raise ValueError + len_id = len(id_).to_bytes(1, "big") + except: + raise ValueError("Invalid ID") + + try: + if not ( + 0 <= version <= 255 + and VERSIONS[version] is not None + and VERSIONS[version]["mode"] is not None + ): + raise ValueError + except: + raise ValueError("Invalid version") + + try: + if not isinstance(iterations, int): + raise ValueError + if iterations % 10000 == 0: + iterations = iterations // 10000 + if not 1 <= iterations <= 10000: + raise ValueError + else: + if not 10000 < iterations < 2**24: + raise ValueError + iterations = iterations.to_bytes(3, "big") + except: + raise ValueError("Invalid iterations") + + extra = MODE_IVS.get(VERSIONS[version]["mode"], 0) + if VERSIONS[version].get("auth", 0) > 0: + extra += VERSIONS[version]["auth"] + if not isinstance(payload, bytes): + raise ValueError("Payload is not bytes") + if VERSIONS[version].get("pkcs_pad", False) in (True, False): + if (len(payload) - extra) % 16 != 0: + raise ValueError("Ciphertext is not aligned") + if (len(payload) - extra) // 16 < 1: + raise ValueError("Ciphertext is too short") + + version = version.to_bytes(1, "big") + return b"".join([len_id, id_, version, iterations, payload]) + + +def unwrap(kef_bytes): + """ + Unwraps KEF Encryption Format bytes, returns tuple of parsed values + """ + len_id = kef_bytes[0] + + try: + # out-of-order reading to validate version early + version = kef_bytes[1 + len_id] + if VERSIONS[version] is None or VERSIONS[version]["mode"] is None: + raise ValueError + except: + raise ValueError("Invalid format") + + # When unwrapping, be strict returning id_ as bytes + id_ = kef_bytes[1 : 1 + len_id] + + kef_iterations = int.from_bytes(kef_bytes[2 + len_id : 5 + len_id], "big") + if kef_iterations <= 10000: + iterations = kef_iterations * 10000 + else: + iterations = kef_iterations + + payload = kef_bytes[len_id + 5 :] + extra = MODE_IVS.get(VERSIONS[version]["mode"], 0) + if VERSIONS[version].get("auth", 0) > 0: + extra += VERSIONS[version]["auth"] + if VERSIONS[version].get("pkcs_pad", False) in (True, False): + if (len(payload) - extra) % 16 != 0: + raise ValueError("Ciphertext is not aligned") + if (len(payload) - extra) // 16 < 1: + raise ValueError("Ciphertext is too short") + + return (id_, version, iterations, payload) + + +def _pad(some_bytes, pkcs_pad): + """ + Pads some_bytes to AES block size of 16 bytes, returns bytes + pkcs_pad: False=NUL-pad, True=PKCS#7-pad, None=no-pad + """ + if pkcs_pad is None: + return some_bytes + len_padding = (AES_BLOCK_SIZE - len(some_bytes) % AES_BLOCK_SIZE) % AES_BLOCK_SIZE + if pkcs_pad is True: + if len_padding == 0: + len_padding = AES_BLOCK_SIZE + return some_bytes + (len_padding).to_bytes(1, "big") * len_padding + if pkcs_pad is False: + return some_bytes + b"\x00" * len_padding + raise TypeError("pkcs_pad is not (None, True, False)") + + +def _unpad(some_bytes, pkcs_pad): + """ + Strips padding from some_bytes, returns bytes + pkcs_pad: False=NUL-pad, True=PKCS#7-pad, None=no-pad + """ + if pkcs_pad is None: + return some_bytes + if pkcs_pad is True: + len_padding = some_bytes[-1] + return some_bytes[:-len_padding] + if pkcs_pad is False: + return some_bytes.rstrip(b"\x00") + raise TypeError("pkcs_pad is not in (None, True, False)") + + +def _deflate(data): + """Compresses the given data using deflate module""" + import io + import deflate + + try: + stream = io.BytesIO() + with deflate.DeflateIO(stream) as d: + d.write(data) + return stream.getvalue() + except: + raise ValueError("Error compressing") + + +def _reinflate(data): + """Decompresses the given data using deflate module""" + import io + import deflate + + try: + with deflate.DeflateIO(io.BytesIO(data)) as d: + return d.read() + except: + raise ValueError("Error decompressing") diff --git a/REFERENCE/krux b/REFERENCE/krux new file mode 160000 index 0000000..bff65f4 --- /dev/null +++ b/REFERENCE/krux @@ -0,0 +1 @@ +Subproject commit bff65f4fb8bf8a52551f28179a624be5e9765e49 diff --git a/REFERENCE/krux-test/.gitignore b/REFERENCE/krux-test/.gitignore new file mode 100644 index 0000000..a14702c --- /dev/null +++ b/REFERENCE/krux-test/.gitignore @@ -0,0 +1,34 @@ +# dependencies (bun install) +node_modules + +# output +out +dist +*.tgz + +# code coverage +coverage +*.lcov + +# logs +logs +_.log +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# caches +.eslintcache +.cache +*.tsbuildinfo + +# IntelliJ based IDEs +.idea + +# Finder (MacOS) folder config +.DS_Store diff --git a/REFERENCE/krux-test/README.md b/REFERENCE/krux-test/README.md new file mode 100644 index 0000000..f848e66 --- /dev/null +++ b/REFERENCE/krux-test/README.md @@ -0,0 +1,15 @@ +# krux-test + +To install dependencies: + +```bash +bun install +``` + +To run: + +```bash +bun run +``` + +This project was created using `bun init` in bun v1.3.8. [Bun](https://bun.com) is a fast all-in-one JavaScript runtime. diff --git a/REFERENCE/krux-test/bun.lock b/REFERENCE/krux-test/bun.lock new file mode 100644 index 0000000..e899d70 --- /dev/null +++ b/REFERENCE/krux-test/bun.lock @@ -0,0 +1,33 @@ +{ + "lockfileVersion": 1, + "configVersion": 1, + "workspaces": { + "": { + "name": "krux-test", + "dependencies": { + "bip39": "^3.1.0", + }, + "devDependencies": { + "@types/bun": "latest", + }, + "peerDependencies": { + "typescript": "^5", + }, + }, + }, + "packages": { + "@noble/hashes": ["@noble/hashes@1.8.0", "", {}, "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A=="], + + "@types/bun": ["@types/bun@1.3.8", "", { "dependencies": { "bun-types": "1.3.8" } }, "sha512-3LvWJ2q5GerAXYxO2mffLTqOzEu5qnhEAlh48Vnu8WQfnmSwbgagjGZV6BoHKJztENYEDn6QmVd949W4uESRJA=="], + + "@types/node": ["@types/node@25.2.0", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-DZ8VwRFUNzuqJ5khrvwMXHmvPe+zGayJhr2CDNiKB1WBE1ST8Djl00D0IC4vvNmHMdj6DlbYRIaFE7WHjlDl5w=="], + + "bip39": ["bip39@3.1.0", "", { "dependencies": { "@noble/hashes": "^1.2.0" } }, "sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A=="], + + "bun-types": ["bun-types@1.3.8", "", { "dependencies": { "@types/node": "*" } }, "sha512-fL99nxdOWvV4LqjmC+8Q9kW3M4QTtTR1eePs94v5ctGqU8OeceWrSUaRw3JYb7tU3FkMIAjkueehrHPPPGKi5Q=="], + + "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], + + "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], + } +} diff --git a/REFERENCE/krux-test/krux-test.ts b/REFERENCE/krux-test/krux-test.ts new file mode 100644 index 0000000..e21a8a4 --- /dev/null +++ b/REFERENCE/krux-test/krux-test.ts @@ -0,0 +1,123 @@ +import * as bip39 from "bip39"; +// Bun implements the Web Crypto API globally as `crypto` + +const BASE43_ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ$*+-./:"; + +// --- Helper: Base43 Decode --- +function base43Decode(str: string): Uint8Array { + let value = 0n; + const base = 43n; + + for (const char of str) { + const index = BASE43_ALPHABET.indexOf(char); + if (index === -1) throw new Error(`Invalid Base43 char: ${char}`); + value = value * base + BigInt(index); + } + + // Convert BigInt to Buffer/Uint8Array + let hex = value.toString(16); + if (hex.length % 2 !== 0) hex = '0' + hex; + return new Uint8Array(Buffer.from(hex, 'hex')); +} + +// --- Main Decryption Function --- +async function decryptKruxKEF(kefData: string, passphrase: string) { + // 1. Decode Base43 + const rawBytes = base43Decode(kefData); + + // 2. Parse Envelope + let offset = 0; + + // ID Length (1 byte) + const idLen = rawBytes[offset++]; + + // ID / Salt + const salt = rawBytes.slice(offset, offset + idLen); + offset += idLen; + + // Version (1 byte) + const version = rawBytes[offset++]; + + // Iterations (3 bytes, Big-Endian) + const iterBytes = rawBytes.slice(offset, offset + 3); + const iterations = (iterBytes[0] << 16) | (iterBytes[1] << 8) | iterBytes[2]; + offset += 3; + + // Payload: [IV (12 bytes)] [Ciphertext (N)] [Tag (4 bytes)] + const payload = rawBytes.slice(offset); + const iv = payload.slice(0, 12); + const tagLength = 4; + const ciphertextWithTag = payload.slice(12); + + console.log("--- Parsed KEF Data ---"); + console.log(`Version: ${version}`); + console.log(`Iterations: ${iterations}`); + console.log(`Salt (hex): ${Buffer.from(salt).toString('hex')}`); + + if (version !== 20) { + throw new Error("Only KEF Version 20 (AES-GCM) is supported."); + } + + // 3. Derive Key (PBKDF2-HMAC-SHA256) + const keyMaterial = await crypto.subtle.importKey( + "raw", + new TextEncoder().encode(passphrase), + { name: "PBKDF2" }, + false, + ["deriveKey"] + ); + + const key = await crypto.subtle.deriveKey( + { + name: "PBKDF2", + salt: salt, + iterations: iterations, + hash: "SHA-256", + }, + keyMaterial, + { name: "AES-GCM", length: 256 }, + false, + ["decrypt"] + ); + + // 4. Decrypt (AES-GCM) + try { + const decryptedBuffer = await crypto.subtle.decrypt( + { + name: "AES-GCM", + iv: iv, + tagLength: 32, // 4 bytes * 8 + }, + key, + ciphertextWithTag + ); + + return new Uint8Array(decryptedBuffer); + + } catch (error) { + throw new Error(`Decryption failed: ${error}`); + } +} + +// --- Run Test --- +const kefString = "1334+HGXM$F8PPOIRNHX0.R*:SBMHK$X88LX$*/Y417R/6S1ZQOB2LHM-L+4T1YQVU:B*CKGXONP7:Y/R-B*:$R8FK"; +const passphrase = "aaa"; +const expectedMnemonic = "differ release beauty fresh tortoise usage curtain spoil october town embrace ridge rough reject cabin snap glimpse enter book coach green lonely hundred mercy"; + +console.log(`\nDecrypting KEF String...`); +try { + const entropy = await decryptKruxKEF(kefString, passphrase); + const mnemonic = bip39.entropyToMnemonic(Buffer.from(entropy)); + + console.log("\n--- Result ---"); + console.log(`Mnemonic: ${mnemonic}`); + + if (mnemonic === expectedMnemonic) { + console.log("\n✅ SUCCESS: Mnemonic matches expected output."); + } else { + console.log("\n❌ FAIL: Mnemonic does not match."); + } +} catch (e) { + console.error(e); +} + diff --git a/REFERENCE/krux-test/package.json b/REFERENCE/krux-test/package.json new file mode 100644 index 0000000..1399ed2 --- /dev/null +++ b/REFERENCE/krux-test/package.json @@ -0,0 +1,13 @@ +{ + "name": "krux-test", + "private": true, + "devDependencies": { + "@types/bun": "latest" + }, + "peerDependencies": { + "typescript": "^5" + }, + "dependencies": { + "bip39": "^3.1.0" + } +} diff --git a/REFERENCE/krux-test/tsconfig.json b/REFERENCE/krux-test/tsconfig.json new file mode 100644 index 0000000..bfa0fea --- /dev/null +++ b/REFERENCE/krux-test/tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + // Environment setup & latest features + "lib": ["ESNext"], + "target": "ESNext", + "module": "Preserve", + "moduleDetection": "force", + "jsx": "react-jsx", + "allowJs": true, + + // Bundler mode + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "noEmit": true, + + // Best practices + "strict": true, + "skipLibCheck": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedIndexedAccess": true, + "noImplicitOverride": true, + + // Some stricter flags (disabled by default) + "noUnusedLocals": false, + "noUnusedParameters": false, + "noPropertyAccessFromIndexSignature": false + } +} diff --git a/REFERENCE/qr.py b/REFERENCE/qr.py new file mode 100644 index 0000000..34845e6 --- /dev/null +++ b/REFERENCE/qr.py @@ -0,0 +1,403 @@ +# The MIT License (MIT) + +# Copyright (c) 2021-2024 Krux contributors + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# pylint: disable=E1101 +import io +import math +import qrcode + +FORMAT_NONE = 0 +FORMAT_PMOFN = 1 +FORMAT_UR = 2 +FORMAT_BBQR = 3 + +PMOFN_PREFIX_LENGTH_1D = 6 +PMOFN_PREFIX_LENGTH_2D = 8 +BBQR_PREFIX_LENGTH = 8 +UR_GENERIC_PREFIX_LENGTH = 22 + +# CBOR_PREFIX = 6 bytes for tags, 1 for index, 1 for max_index, 2 for message len, 4 for checksum +# Check UR's fountain_encoder.py file, on Part.cbor() function for more details +UR_CBOR_PREFIX_LEN = 14 +UR_BYTEWORDS_CRC_LEN = 4 # 32 bits CRC used on Bytewords encoding + +UR_MIN_FRAGMENT_LENGTH = 10 + +# https://www.qrcode.com/en/about/version.html +# List of capacities, based on versions +# Tables below are limited to version 20 and we use L (Low) ECC (Error Correction Code) Level + +# [0-9] = 10 chars +# Version 1(index 0)=21x21px = 41 chars, version 2=25x25px = 77 chars ... +QR_CAPACITY_NUMERIC = [ + 41, + 77, + 127, + 187, + 255, + 322, + 370, + 461, + 552, + 652, + 772, + 883, + 1022, + 1101, + 1250, + 1408, + 1548, + 1725, + 1903, + 2061, +] + + +# [A-Z0-9 $%*+\-./:] = 45 chars (no lowercase!) +# Version 1(index 0)=21x21px = 25 chars, version 2=25x25px = 47 chars ... +QR_CAPACITY_ALPHANUMERIC = [ + 25, + 47, + 77, + 114, + 154, + 195, + 224, + 279, + 335, + 395, + 468, + 535, + 619, + 667, + 758, + 854, + 938, + 1046, + 1153, + 1249, +] + + +# ASCII, UTF-8 (any 8-bit / 1 byte sequence) +# Requires more pixels to show information +# Version 1(index 0)=21x21px = 17 bytes, version 2=25x25px = 32 bytes ... +QR_CAPACITY_BYTE = [ + 17, + 32, + 53, + 78, + 106, + 134, + 154, + 192, + 230, + 271, + 321, + 367, + 425, + 458, + 520, + 586, + 644, + 718, + 792, + 858, +] + + +class QRPartParser: + """Responsible for parsing either a singular or animated series of QR codes + and returning the final decoded, combined data + """ + + def __init__(self): + self.parts = {} + self.total = -1 + self.format = None + self.decoder = None + self.bbqr = None + + def parsed_count(self): + """Returns the number of parsed parts so far""" + if self.format == FORMAT_UR: + # Single-part URs have no expected part indexes + if self.decoder.fountain_decoder.expected_part_indexes is None: + return 1 if self.decoder.result is not None else 0 + completion_pct = self.decoder.estimated_percent_complete() + return math.ceil(completion_pct * self.total_count() / 2) + len( + self.decoder.fountain_decoder.received_part_indexes + ) + return len(self.parts) + + def processed_parts_count(self): + """Returns quantity of processed QR code parts""" + if self.format == FORMAT_UR: + return self.decoder.fountain_decoder.processed_parts_count + return len(self.parts) + + def total_count(self): + """Returns the total number of parts there should be""" + if self.format == FORMAT_UR: + # Single-part URs have no expected part indexes + if self.decoder.fountain_decoder.expected_part_indexes is None: + return 1 + return self.decoder.expected_part_count() * 2 + return self.total + + def parse(self, data): + """Parses the QR data, extracting part information""" + if self.format is None: + self.format, self.bbqr = detect_format(data) + + if self.format == FORMAT_NONE: + self.parts[1] = data + self.total = 1 + elif self.format == FORMAT_PMOFN: + part, index, total = parse_pmofn_qr_part(data) + self.parts[index] = part + self.total = total + return index - 1 + elif self.format == FORMAT_UR: + if not self.decoder: + from ur.ur_decoder import URDecoder + + self.decoder = URDecoder() + self.decoder.receive_part(data) + elif self.format == FORMAT_BBQR: + from .bbqr import parse_bbqr + + part, index, total = parse_bbqr(data) + self.parts[index] = part + self.total = total + return index + return None + + def is_complete(self): + """Returns a boolean indicating whether or not enough parts have been parsed""" + if self.format == FORMAT_UR: + return self.decoder.is_complete() + keys_check = ( + sum(range(1, self.total + 1)) + if self.format in (FORMAT_PMOFN, FORMAT_NONE) + else sum(range(self.total)) + ) + return ( + self.total != -1 + and self.parsed_count() == self.total_count() + and sum(self.parts.keys()) == keys_check + ) + + def result(self): + """Returns the combined part data""" + if self.format == FORMAT_UR: + from ur.ur import UR + + return UR(self.decoder.result.type, bytearray(self.decoder.result.cbor)) + + if self.format == FORMAT_BBQR: + from .bbqr import decode_bbqr + + return decode_bbqr(self.parts, self.bbqr.encoding, self.bbqr.file_type) + + code_buffer = io.StringIO("") + for _, part in sorted(self.parts.items()): + if isinstance(part, bytes): + # Encoded data won't write on StringIO + return part + code_buffer.write(part) + code = code_buffer.getvalue() + code_buffer.close() + return code + + +def to_qr_codes(data, max_width, qr_format): + """Returns the list of QR codes necessary to represent the data in the qr format, given + the max_width constraint + """ + if qr_format == FORMAT_NONE: + code = qrcode.encode(data) + yield (code, 1) + else: + num_parts, part_size = find_min_num_parts(data, max_width, qr_format) + if qr_format == FORMAT_PMOFN: + part_index = 0 + while True: + part_number = "p%dof%d " % (part_index + 1, num_parts) + if isinstance(data, bytes): + part_number = part_number.encode() + part = None + if part_index == num_parts - 1: + part = part_number + data[part_index * part_size :] + part_index = 0 + else: + part = ( + part_number + + data[part_index * part_size : (part_index + 1) * part_size] + ) + part_index += 1 + code = qrcode.encode(part) + yield (code, num_parts) + elif qr_format == FORMAT_UR: + from ur.ur_encoder import UREncoder + + encoder = UREncoder(data, part_size, 0) + while True: + part = encoder.next_part() + code = qrcode.encode(part) + yield (code, encoder.fountain_encoder.seq_len()) + elif qr_format == FORMAT_BBQR: + from .bbqr import int2base36 + + part_index = 0 + while True: + header = "B$%s%s%s%s" % ( + data.encoding, + data.file_type, + int2base36(num_parts), + int2base36(part_index), + ) + part = None + if part_index == num_parts - 1: + part = header + data.payload[part_index * part_size :] + part_index = 0 + else: + part = ( + header + + data.payload[ + part_index * part_size : (part_index + 1) * part_size + ] + ) + part_index += 1 + code = qrcode.encode(part) + yield (code, num_parts) + + +def get_size(qr_code): + """Returns the size of the qr code as the number of chars until the first newline""" + size = math.sqrt(len(qr_code) * 8) + return int(size) + + +def max_qr_bytes(max_width, encoding="byte"): + """Calculates the maximum length, in bytes, a QR code of a given size can store""" + # Given qr_size = 17 + 4 * version + 2 * frame_size + max_width -= 2 # Subtract frame width + qr_version = (max_width - 17) // 4 + if encoding == "alphanumeric": + capacity_list = QR_CAPACITY_ALPHANUMERIC + else: + capacity_list = QR_CAPACITY_BYTE + + try: + return capacity_list[qr_version - 1] + except: + # Limited to version 20 + return capacity_list[-1] + + +def find_min_num_parts(data, max_width, qr_format): + """Finds the minimum number of QR parts necessary to encode the data in + the specified format within the max_width constraint + """ + encoding = "alphanumeric" if qr_format == FORMAT_BBQR else "byte" + qr_capacity = max_qr_bytes(max_width, encoding) + if qr_format == FORMAT_PMOFN: + data_length = len(data) + part_size = qr_capacity - PMOFN_PREFIX_LENGTH_1D + # where prefix = "pXofY " where Y < 9 + num_parts = (data_length + part_size - 1) // part_size + if num_parts > 9: # Prefix has 2 digits numbers, so re-calculate + part_size = qr_capacity - PMOFN_PREFIX_LENGTH_2D + # where prefix = "pXXofYY " where max YY = 99 + num_parts = (data_length + part_size - 1) // part_size + part_size = (data_length + num_parts - 1) // num_parts + elif qr_format == FORMAT_UR: + qr_capacity -= ( + # This is an approximation, UR index grows indefinitely + UR_GENERIC_PREFIX_LENGTH # index: ~ "ur:crypto-psbt/xxx-xx/" + ) + # UR will add a bunch of info (some duplicated) on the body of each QR + # Info's lenght is multiplied by 2 in Bytewords.encode step + qr_capacity -= (UR_CBOR_PREFIX_LEN + UR_BYTEWORDS_CRC_LEN) * 2 + qr_capacity = max(UR_MIN_FRAGMENT_LENGTH, qr_capacity) + data_length = len(data.cbor) + data_length *= 2 # UR will Bytewords.encode, which multiply bytes length by 2 + num_parts = (data_length + qr_capacity - 1) // qr_capacity + # For UR, part size will be the input for "max_fragment_len" + part_size = len(data.cbor) // num_parts + part_size = max(part_size, UR_MIN_FRAGMENT_LENGTH) + # UR won't use "num_parts", will use encoder.fountain_encoder.seq_len() instead + elif qr_format == FORMAT_BBQR: + data_length = len(data.payload) + max_part_size = qr_capacity - BBQR_PREFIX_LENGTH + if data_length < max_part_size: + return 1, data_length + # Round max_part_size to the nearest lower multiple of 8 + max_part_size = (max_part_size // 8) * 8 + # Calculate the number of parts required (rounded up) + num_parts = (data_length + max_part_size - 1) // max_part_size + # Calculate the optimal part size + part_size = data_length // num_parts + # Round to the nearest higher multiple of 8 + part_size = ((part_size + 7) // 8) * 8 + # Check if the part size is within the limits + if part_size > max_part_size: + num_parts += 1 + part_size = data_length // num_parts + # Round to the nearest higher multiple of 8 again + part_size = ((part_size + 7) // 8) * 8 + else: + raise ValueError("Invalid format type") + return num_parts, part_size + + +def parse_pmofn_qr_part(data): + """Parses the QR as a P M-of-N part, extracting the part's content, index, and total""" + of_index = data.index("of") + space_index = data.index(" ") + part_index = int(data[1:of_index]) + part_total = int(data[of_index + 2 : space_index]) + return data[space_index + 1 :], part_index, part_total + + +def detect_format(data): + """Detects the QR format of the given data""" + qr_format = FORMAT_NONE + try: + if data.startswith("p"): + header = data.split(" ")[0] + if "of" in header and header[1:].split("of")[0].isdigit(): + qr_format = FORMAT_PMOFN + elif data.lower().startswith("ur:"): + qr_format = FORMAT_UR + elif data.startswith("B$"): + from .bbqr import BBQrCode, KNOWN_ENCODINGS, KNOWN_FILETYPES + + if data[3] in KNOWN_FILETYPES: + bbqr_file_type = data[3] + if data[2] in KNOWN_ENCODINGS: + bbqr_encoding = data[2] + return FORMAT_BBQR, BBQrCode(None, bbqr_encoding, bbqr_file_type) + + except: + pass + return qr_format, None diff --git a/REFERENCE/seeds-blender b/REFERENCE/seeds-blender new file mode 160000 index 0000000..79ceb56 --- /dev/null +++ b/REFERENCE/seeds-blender @@ -0,0 +1 @@ +Subproject commit 79ceb564f5e39eff4f81c12bcf9b5d67c959658b diff --git a/bun.lock b/bun.lock index d2073e5..cd68c69 100644 --- a/bun.lock +++ b/bun.lock @@ -7,6 +7,7 @@ "dependencies": { "@types/pako": "^2.0.4", "html5-qrcode": "^2.3.8", + "jsqr": "^1.4.0", "lucide-react": "^0.462.0", "openpgp": "^6.3.0", "pako": "^2.1.0", @@ -18,6 +19,7 @@ "@types/bun": "^1.3.6", "@types/node": "^22.10.2", "@types/qrcode": "^1.5.5", + "@types/qrcode-generator": "^1.0.6", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "@vitejs/plugin-react": "^4.3.4", @@ -210,6 +212,8 @@ "@types/qrcode": ["@types/qrcode@1.5.6", "", { "dependencies": { "@types/node": "*" } }, "sha512-te7NQcV2BOvdj2b1hCAHzAoMNuj65kNBMz0KBaxM6c3VGBOhU0dURQKOtH8CFNI/dsKkwlv32p26qYQTWoB5bw=="], + "@types/qrcode-generator": ["@types/qrcode-generator@1.0.6", "", { "dependencies": { "qrcode-generator": "*" } }, "sha512-XasuPjhHBC4hyOJ/pHaUNTj+tNxA1SyZpXaS/FOUxEVX03D1gFM8UmMKSIs+pPHLAmRZpU6j9KYxvo+lfsvhKw=="], + "@types/react": ["@types/react@18.3.27", "", { "dependencies": { "@types/prop-types": "*", "csstype": "^3.2.2" } }, "sha512-cisd7gxkzjBKU2GgdYrTdtQx1SORymWyaAFhaxQPK9bYO9ot3Y5OikQRvY0VYQtvwjeQnizCINJAenh/V7MK2w=="], "@types/react-dom": ["@types/react-dom@18.3.7", "", { "peerDependencies": { "@types/react": "^18.0.0" } }, "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ=="], @@ -324,6 +328,8 @@ "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], + "jsqr": ["jsqr@1.4.0", "", {}, "sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A=="], + "lilconfig": ["lilconfig@3.1.3", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="], "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="], @@ -394,6 +400,8 @@ "qrcode": ["qrcode@1.5.4", "", { "dependencies": { "dijkstrajs": "^1.0.1", "pngjs": "^5.0.0", "yargs": "^15.3.1" }, "bin": { "qrcode": "bin/qrcode" } }, "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg=="], + "qrcode-generator": ["qrcode-generator@2.0.4", "", {}, "sha512-mZSiP6RnbHl4xL2Ap5HfkjLnmxfKcPWpWe/c+5XxCuetEenqmNFf1FH/ftXPCtFG5/TDobjsjz6sSNL0Sr8Z9g=="], + "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], "react": ["react@18.3.1", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ=="], diff --git a/debug_krux.py b/debug_krux.py new file mode 100644 index 0000000..b959bc9 --- /dev/null +++ b/debug_krux.py @@ -0,0 +1,71 @@ +# +# This is a debug script to trace the Krux decryption process. +# It has been modified to be self-contained and avoid MicroPython-specific libraries. +# +import sys + +# Add the source directory to the path to allow imports +sys.path.append('REFERENCE/krux/src') + +from krux.baseconv import pure_python_base_decode + +def unwrap_standalone(kef_bytes): + """A self-contained version of kef.unwrap for debugging.""" + try: + len_id = kef_bytes[0] + if not (0 <= len_id <= 252): + raise ValueError(f"Invalid label length: {len_id}") + if len(kef_bytes) < (1 + len_id + 4): + raise ValueError("KEF bytes too short for header") + + id_ = kef_bytes[1 : 1 + len_id] + version = kef_bytes[1 + len_id] + kef_iterations = int.from_bytes(kef_bytes[2 + len_id : 5 + len_id], "big") + + if kef_iterations <= 10000: + iterations = kef_iterations * 10000 + else: + iterations = kef_iterations + + payload = kef_bytes[len_id + 5 :] + return (id_, version, iterations, payload) + except Exception as e: + raise ValueError(f"Failed to unwrap KEF envelope: {e}") + + +def debug_krux_decryption(): + # Test case from the user + base43_string = "1334+HGXM$F8PPOIRNHX0.R*:SBMHK$X88LX$*/Y417R/6S1ZQOB2LHM-L+4T1YQVU:B*CKGXONP7:Y/R-B*:$R8FK" + + print("--- Krux Decryption Debug (Phase 1: Decoding & Unwrapping) ---") + print(f"Input Base43: {base43_string}\n") + + # Step 1: Base43 Decode + try: + kef_envelope_bytes = pure_python_base_decode(base43_string, 43) + print(f"[OK] Step 1: Base43 Decoded (KEF Envelope Hex):") + print(kef_envelope_bytes.hex()) + print("-" * 20) + except Exception as e: + print(f"[FAIL] Step 1: Base43 Decoding failed: {e}") + return + + # Step 2: Unwrap KEF Envelope + try: + label_bytes, version, iterations, payload = unwrap_standalone(kef_envelope_bytes) + label = label_bytes.decode('utf-8', errors='ignore') + print(f"[OK] Step 2: KEF Unwrapped") + print(f" - Label: '{label}'") + print(f" - Version: {version}") + print(f" - Iterations: {iterations}") + print(f" - Payload (Hex): {payload.hex()}") + print("-" * 20) + print("\n--- DEBUGGING COMPLETE ---") + print("Please paste this entire output for analysis.") + + except Exception as e: + print(f"[FAIL] Step 2: KEF Unwrapping failed: {e}") + return + +if __name__ == '__main__': + debug_krux_decryption() diff --git a/package.json b/package.json index cb4d60a..7417c42 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "dependencies": { "@types/pako": "^2.0.4", "html5-qrcode": "^2.3.8", + "jsqr": "^1.4.0", "lucide-react": "^0.462.0", "openpgp": "^6.3.0", "pako": "^2.1.0", @@ -23,6 +24,7 @@ "@types/bun": "^1.3.6", "@types/node": "^22.10.2", "@types/qrcode": "^1.5.5", + "@types/qrcode-generator": "^1.0.6", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "@vitejs/plugin-react": "^4.3.4", diff --git a/src/App.tsx b/src/App.tsx index 38d1204..83477d6 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,4 +1,4 @@ -import { useState, useEffect } from 'react'; +import { useState, useEffect, useCallback } from 'react'; import { QrCode, RefreshCw, @@ -15,9 +15,11 @@ import { QrDisplay } from './components/QrDisplay'; import QRScanner from './components/QRScanner'; import { validateBip39Mnemonic } from './lib/bip39'; import { buildPlaintext, encryptToSeed, decryptFromSeed, detectEncryptionMode } from './lib/seedpgp'; +import { encodeStandardSeedQR, encodeCompactSeedQREntropy } from './lib/seedqr'; import * as openpgp from 'openpgp'; import { SecurityWarnings } from './components/SecurityWarnings'; import { getSessionKey, encryptJsonToBlob, destroySessionKey, EncryptedBlob } from './lib/sessionCrypto'; +import { EncryptionMode, EncryptionResult } from './lib/types'; // Import EncryptionMode and EncryptionResult import Header from './components/Header'; import { StorageDetails } from './components/StorageDetails'; import { ClipboardDetails } from './components/ClipboardDetails'; @@ -34,9 +36,9 @@ interface StorageItem { } interface ClipboardEvent { - timestamp: Date; - field: string; - length: number; + timestamp: Date; + field: string; + length: number; } function App() { @@ -51,7 +53,7 @@ function App() { const [privateKeyInput, setPrivateKeyInput] = useState(''); const [privateKeyPassphrase, setPrivateKeyPassphrase] = useState(''); const [hasBip39Passphrase, setHasBip39Passphrase] = useState(false); - const [qrPayload, setQrPayload] = useState(''); + const [qrPayload, setQrPayload] = useState(''); const [recipientFpr, setRecipientFpr] = useState(''); const [restoreInput, setRestoreInput] = useState(''); const [decryptedRestoredMnemonic, setDecryptedRestoredMnemonic] = useState(null); @@ -70,44 +72,45 @@ function App() { const [showLockConfirm, setShowLockConfirm] = useState(false); // Krux integration state - const [encryptionMode, setEncryptionMode] = useState<'pgp' | 'krux'>('pgp'); + const [encryptionMode, setEncryptionMode] = useState<'pgp' | 'krux' | 'seedqr'>('pgp'); const [kruxLabel, setKruxLabel] = useState('Seed Backup'); const [kruxIterations, setKruxIterations] = useState(200000); - const [detectedMode, setDetectedMode] = useState<'pgp' | 'krux' | null>(null); + const [seedQrFormat, setSeedQrFormat] = useState<'standard' | 'compact'>('standard'); + const [detectedMode, setDetectedMode] = useState(null); const SENSITIVE_PATTERNS = ['key', 'mnemonic', 'seed', 'private', 'secret', 'pgp', 'password']; const isSensitiveKey = (key: string): boolean => { - const lowerKey = key.toLowerCase(); - return SENSITIVE_PATTERNS.some(pattern => lowerKey.includes(pattern)); + const lowerKey = key.toLowerCase(); + return SENSITIVE_PATTERNS.some(pattern => lowerKey.includes(pattern)); }; const getStorageItems = (storage: Storage): StorageItem[] => { - const items: StorageItem[] = []; - for (let i = 0; i < storage.length; i++) { - const key = storage.key(i); - if (key) { - const value = storage.getItem(key) || ''; - items.push({ - key, - value: value.substring(0, 50) + (value.length > 50 ? '...' : ''), - size: new Blob([value]).size, - isSensitive: isSensitiveKey(key) - }); - } + const items: StorageItem[] = []; + for (let i = 0; i < storage.length; i++) { + const key = storage.key(i); + if (key) { + const value = storage.getItem(key) || ''; + items.push({ + key, + value: value.substring(0, 50) + (value.length > 50 ? '...' : ''), + size: new Blob([value]).size, + isSensitive: isSensitiveKey(key) + }); } - return items.sort((a, b) => (b.isSensitive ? 1 : 0) - (a.isSensitive ? 1 : 0)); + } + return items.sort((a, b) => (b.isSensitive ? 1 : 0) - (a.isSensitive ? 1 : 0)); }; const refreshStorage = () => { - setLocalItems(getStorageItems(localStorage)); - setSessionItems(getStorageItems(sessionStorage)); + setLocalItems(getStorageItems(localStorage)); + setSessionItems(getStorageItems(sessionStorage)); }; useEffect(() => { - refreshStorage(); - const interval = setInterval(refreshStorage, 2000); - return () => clearInterval(interval); + refreshStorage(); + const interval = setInterval(refreshStorage, 2000); + return () => clearInterval(interval); }, []); @@ -121,58 +124,56 @@ function App() { useEffect(() => { const handleCopy = (e: ClipboardEvent & Event) => { - const target = e.target as HTMLElement; + const target = e.target as HTMLElement; - // Get selection to measure length - const selection = window.getSelection()?.toString() || ''; - const length = selection.length; + // Get selection to measure length + const selection = window.getSelection()?.toString() || ''; + const length = selection.length; - if (length === 0) return; // Nothing copied + if (length === 0) return; // Nothing copied - // Detect field name - let field = 'Unknown field'; + // Detect field name + let field = 'Unknown field'; - if (target.tagName === 'TEXTAREA' || target.tagName === 'INPUT') { - // Try multiple ways to identify the field - field = - target.getAttribute('aria-label') || - target.getAttribute('name') || - target.getAttribute('id') || - (target as HTMLInputElement).type || - target.tagName.toLowerCase(); + // Check for data-sensitive attribute on any element first + const sensitiveAttr = target.getAttribute('data-sensitive') || + target.closest('[data-sensitive]')?.getAttribute('data-sensitive'); + if (sensitiveAttr) { + field = sensitiveAttr; + } else if (target.tagName === 'TEXTAREA' || target.tagName === 'INPUT') { + // Try multiple ways to identify the field for legacy inputs + field = + target.getAttribute('aria-label') || + target.getAttribute('name') || + target.getAttribute('id') || + (target as HTMLInputElement).type || + target.tagName.toLowerCase(); - // Check parent labels - const label = target.closest('label') || - document.querySelector(`label[for="${target.id}"]`); - if (label) { - field = label.textContent?.trim() || field; - } - - // Check for data-sensitive attribute - const sensitiveAttr = target.getAttribute('data-sensitive') || - target.closest('[data-sensitive]')?.getAttribute('data-sensitive'); - if (sensitiveAttr) { - field = sensitiveAttr; - } - - // Detect if it looks like sensitive data - const isSensitive = /mnemonic|seed|key|private|password|secret/i.test( - target.className + ' ' + field + ' ' + (target.getAttribute('placeholder') || '') - ); - - if (isSensitive && field === target.tagName.toLowerCase()) { - // Try to guess from placeholder - const placeholder = target.getAttribute('placeholder'); - if (placeholder) { - field = placeholder.substring(0, 40) + '...'; - } - } + // Check parent labels + const label = target.closest('label') || + document.querySelector(`label[for="${target.id}"]`); + if (label) { + field = label.textContent?.trim() || field; } - setClipboardEvents(prev => [ - { timestamp: new Date(), field, length }, - ...prev.slice(0, 9) // Keep last 10 events - ]); + // Detect if it looks like sensitive data + const isSensitive = /mnemonic|seed|key|private|password|secret/i.test( + target.className + ' ' + field + ' ' + (target.getAttribute('placeholder') || '') + ); + + if (isSensitive && field === target.tagName.toLowerCase()) { + // Try to guess from placeholder + const placeholder = target.getAttribute('placeholder'); + if (placeholder) { + field = placeholder.substring(0, 40) + '...'; + } + } + } + + setClipboardEvents(prev => [ + { timestamp: new Date(), field, length }, + ...prev.slice(0, 9) // Keep last 10 events + ]); }; document.addEventListener('copy', handleCopy as EventListener); @@ -184,8 +185,8 @@ function App() { if (activeTab === 'restore' && restoreInput.trim()) { const detected = detectEncryptionMode(restoreInput); setDetectedMode(detected); - // Auto-switch mode if not already set - if (detected !== encryptionMode) { + // Auto-switch encryption mode if not already set AND it's an encrypted type + if ((detected === 'pgp' || detected === 'krux') && detected !== encryptionMode) { setEncryptionMode(detected); } } else { @@ -194,42 +195,45 @@ function App() { }, [restoreInput, activeTab, encryptionMode]); const clearClipboard = async () => { - try { - // Actually clear the system clipboard - await navigator.clipboard.writeText(''); + try { + // Actually clear the system clipboard + await navigator.clipboard.writeText(''); - // Clear history - setClipboardEvents([]); + // Clear history + setClipboardEvents([]); - // Show success briefly - alert('✅ Clipboard cleared and history wiped'); - } catch (err) { - // Fallback for browsers that don't support clipboard API - const dummy = document.createElement('textarea'); - dummy.value = ''; - document.body.appendChild(dummy); - dummy.select(); - document.execCommand('copy'); - document.body.removeChild(dummy); + // Show success briefly + alert('✅ Clipboard cleared and history wiped'); + } catch (err) { + // Fallback for browsers that don't support clipboard API + const dummy = document.createElement('textarea'); + dummy.value = ''; + document.body.appendChild(dummy); + dummy.select(); + document.execCommand('copy'); + document.body.removeChild(dummy); - setClipboardEvents([]); - alert('✅ History cleared (clipboard may require manual clearing)'); - } + setClipboardEvents([]); + alert('✅ History cleared (clipboard may require manual clearing)'); + } }; - const copyToClipboard = async (text: string) => { + const copyToClipboard = async (text: string | Uint8Array) => { if (isReadOnly) { setError("Copy to clipboard is disabled in Read-only mode."); return; } + + const textToCopy = typeof text === 'string' ? text : Array.from(text).map(b => b.toString(16).padStart(2, '0')).join(''); + try { - await navigator.clipboard.writeText(text); + await navigator.clipboard.writeText(textToCopy); setCopied(true); window.setTimeout(() => setCopied(false), 1500); } catch { const ta = document.createElement("textarea"); - ta.value = text; + ta.value = textToCopy; ta.style.position = "fixed"; ta.style.left = "-9999px"; document.body.appendChild(ta); @@ -256,22 +260,42 @@ function App() { const plaintext = buildPlaintext(mnemonic, hasBip39Passphrase); - const result = await encryptToSeed({ - plaintext, - publicKeyArmored: publicKeyInput || undefined, - messagePassword: backupMessagePassword || undefined, - mode: encryptionMode, - kruxLabel: encryptionMode === 'krux' ? kruxLabel : undefined, - kruxIterations: encryptionMode === 'krux' ? kruxIterations : undefined, - }); + let result: EncryptionResult; + if (encryptionMode === 'seedqr') { + if (seedQrFormat === 'standard') { + const qrString = await encodeStandardSeedQR(mnemonic); + console.log('📋 Standard SeedQR generated:', qrString.slice(0, 50) + '...'); + result = { framed: qrString }; + } else { // compact + const qrEntropy = await encodeCompactSeedQREntropy(mnemonic); + + console.log('🔐 Compact SeedQR generated:'); + console.log(' - Type:', qrEntropy instanceof Uint8Array ? 'Uint8Array' : typeof qrEntropy); + console.log(' - Length:', qrEntropy.length); + console.log(' - Hex:', Array.from(qrEntropy).map(b => b.toString(16).padStart(2, '0')).join('')); + console.log(' - First 16 bytes:', Array.from(qrEntropy.slice(0, 16))); + + result = { framed: qrEntropy }; // framed will hold the Uint8Array + } + } else { + // Existing PGP and Krux encryption + result = await encryptToSeed({ + plaintext, + publicKeyArmored: publicKeyInput || undefined, + messagePassword: backupMessagePassword || undefined, + mode: encryptionMode, + kruxLabel: encryptionMode === 'krux' ? kruxLabel : undefined, + kruxIterations: encryptionMode === 'krux' ? kruxIterations : undefined, + }); + } setQrPayload(result.framed); if (result.recipientFingerprint) { setRecipientFpr(result.recipientFingerprint); } - // Initialize session key before encrypting - await getSessionKey(); + // Initialize session key before encrypting + await getSessionKey(); // Encrypt mnemonic with session key and clear plaintext state const blob = await encryptJsonToBlob({ mnemonic, timestamp: Date.now() }); setEncryptedMnemonicCache(blob); @@ -283,6 +307,7 @@ function App() { } }; + const handleRestore = async () => { setLoading(true); setError(''); @@ -291,7 +316,7 @@ function App() { try { // Auto-detect mode if not manually set const modeToUse = detectedMode || encryptionMode; - + const result = await decryptFromSeed({ frameText: restoreInput, privateKeyArmored: privateKeyInput || undefined, @@ -363,13 +388,35 @@ function App() { } }; + const handleRestoreScanSuccess = useCallback((scannedData: string | Uint8Array) => { + if (typeof scannedData === 'string') { + setRestoreInput(scannedData); + } else { + const hex = Array.from(scannedData).map(b => b.toString(16).padStart(2, '0')).join(''); + setRestoreInput(hex); + } + setShowQRScanner(false); + setError(''); + }, []); // Empty dependency array means this function is stable + + const handleRestoreClose = useCallback(() => { + setShowQRScanner(false); + }, []); + + const handleRestoreError = useCallback((error: string) => { + setError(error); + }, []); + + + + return (

-
setShowSecurityModal(true)} - localItems={localItems} - sessionItems={sessionItems} +
setShowSecurityModal(true)} + localItems={localItems} + sessionItems={sessionItems} onOpenStorageModal={() => setShowStorageModal(true)} events={clipboardEvents} onOpenClipboardModal={() => setShowClipboardModal(true)} @@ -383,353 +430,365 @@ function App() { />
- {/* Error Display */} - {error && ( -
- -
-

Error

-

{error}

-
-
- )} - - {/* Info Banner */} - {recipientFpr && activeTab === 'backup' && ( -
- -
- Recipient Key: {recipientFpr} -
-
- )} - - {/* Main Content Grid */} -
-
- {activeTab === 'backup' ? ( - <> -
- -