@@ -285,11 +285,6 @@ def groups_layout(
285285 sg .Checkbox ( 'Passphrase' , key = '-SD-PASS-C-' , visible = False , ** T_hue ( B_kwds , 2 / 20 )),
286286 ],
287287 [
288- sg .Text ("Fixed: " , visible = LO_PRO , ** T_hue ( T_kwds , 1 / 20 )),
289- ] + [
290- sg .Radio ( f"{ b } -bit" , "SD" , key = f"-SD-{ b } -FIX-" , visible = LO_PRO , ** T_hue ( B_kwds , 1 / 20 ))
291- for b in BITS
292- ] + [
293288 sg .Frame ( passphrase_trezor_incompatible , [
294289 [
295290 sg .Text ( "Passphrase (decrypt): " , ** T_kwds ),
@@ -319,19 +314,20 @@ def groups_layout(
319314 sg .Frame ( SE_SEED_FRAME , [
320315 [
321316 sg .Radio ( "None" , "SE" , key = '-SE-NON-' , visible = LO_REC ,
322- default = True , ** B_kwds ),
317+ default = LO_BAK , ** B_kwds ),
323318 sg .Radio ( "Hex" , "SE" , key = '-SE-HEX-' , visible = LO_PRO , ** B_kwds ),
324- sg .Radio ( "Die rolls, ... (SHA-512)" , "SE" , key = '-SE-SHA-' , visible = LO_REC , ** B_kwds ),
319+ sg .Radio ( "Die rolls, ... (SHA-512)" , "SE" , key = '-SE-SHA-' , visible = LO_REC ,
320+ default = LO_CRE or LO_PRO , ** B_kwds ),
325321 sg .Checkbox ( 'Ignore Bad Entropy' , key = '-SE-SIGS-C-' , visible = LO_REC or LO_PRO ,
326322 disabled = False , ** T_hue ( B_kwds , 3 / 20 )),
327323 ],
328324 [
329- sg .Frame ( 'Entropy' , [
325+ sg .Column ( [
330326 [
331- sg .Text ( "Hex digits: " , key = '-SE-DATA-T-' , size = prefix , ** T_kwds ),
327+ sg .Text ( "Die rolls, etc.:" , key = '-SE-DATA-T-' , size = prefix , ** T_kwds ),
332328 sg .Input ( "" , key = '-SE-DATA-' , size = inlong , ** I_kwds ),
333329 ],
334- ], key = '-SE-DATA-F-' , visible = False , ** F_kwds ),
330+ ], key = '-SE-DATA-F-' , visible = False ),
335331 ],
336332 [
337333 sg .Text ( "Seed XOR Data: " , visible = LO_REC ,
@@ -532,9 +528,6 @@ def update_seed_data( event, window, values ):
532528 '-SD-128-RND-' ,
533529 '-SD-256-RND-' ,
534530 '-SD-512-RND-' ,
535- '-SD-128-FIX-' ,
536- '-SD-256-FIX-' ,
537- '-SD-512-FIX-' ,
538531 '-SD-BIP-' , # Recover 128- to 256-bit Mnemonic Seed Entropy
539532 '-SD-BIP-SEED-' , # Recover 512-bit Generated Seed w/ passphrase
540533 '-SD-SLIP-' ,
@@ -775,9 +768,13 @@ def stretch_seed_entropy( entropy, n, bits, encoding=None ):
775768 # Other encoding was provided, eg 'UTF-8', 'ASCII', ...; stretch for the 0th Seed, too.
776769 n += 1
777770 entropy = codecs .encode ( entropy , encoding ) # '012abc' --> b'012abc'
778- for _ in range ( n ):
779- entropy = hashlib .sha512 ( entropy ).digest ()
780771 octets = ( bits + 7 ) // 8
772+ if entropy :
773+ for _ in range ( n ):
774+ entropy = hashlib .sha512 ( entropy ).digest ()
775+ else :
776+ # If no entropy provided, result is all 0
777+ entropy = b'\0 ' * octets
781778 assert len ( entropy ) >= octets , \
782779 "Insufficient extra Seed Entropy provided for {ordinal(n+1)} {bits}-bit Seed"
783780 return entropy [:octets ]
@@ -809,7 +806,9 @@ def update_seed_entropy( event, window, values ):
809806 update_seed_entropy .src = src
810807 window ['-SE-DATA-' ].update ( data )
811808 values ['-SE-DATA-' ] = data
812- if 'HEX' in update_seed_entropy .src :
809+ if 'NON' in update_seed_entropy .src :
810+ window ['-SE-DATA-T-' ].update ( "" )
811+ elif 'HEX' in update_seed_entropy .src :
813812 window ['-SE-DATA-T-' ].update ( "Hex digits: " )
814813 else :
815814 window ['-SE-DATA-T-' ].update ( "Die rolls, etc.: " )
0 commit comments