mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-11-30 03:18:20 +00:00
32 lines
784 B
Python
32 lines
784 B
Python
|
#!/usr/bin/python
|
||
|
|
||
|
import hashlib
|
||
|
import os
|
||
|
import subprocess
|
||
|
import ecdsa
|
||
|
from binascii import hexlify, unhexlify
|
||
|
|
||
|
print 'master secret:',
|
||
|
h = raw_input()
|
||
|
if h:
|
||
|
h = unhexlify(h)
|
||
|
else:
|
||
|
h = hashlib.sha256(os.urandom(1024)).digest()
|
||
|
|
||
|
print
|
||
|
print 'master secret:', hexlify(h)
|
||
|
print
|
||
|
|
||
|
for i in range(1, 6):
|
||
|
se = hashlib.sha256(h + chr(i)).hexdigest()
|
||
|
print 'seckey', i, ':', se
|
||
|
sk = ecdsa.SigningKey.from_secret_exponent(secexp = int(se, 16), curve=ecdsa.curves.SECP256k1, hashfunc=hashlib.sha256)
|
||
|
print 'pubkey', i, ':', '04' + hexlify(sk.get_verifying_key().to_string())
|
||
|
print sk.to_pem()
|
||
|
|
||
|
p = subprocess.Popen('ssss-split -t 3 -n 5 -x'.split(' '), stdin = subprocess.PIPE)
|
||
|
p.communicate(input = hexlify(h) + '\n')
|
||
|
|
||
|
# to recover use:
|
||
|
# $ ssss-combine -t 3 -x
|