1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-10-12 19:09:10 +00:00
trezor-firmware/legacy/bootloader/firmware_sign_split.py

39 lines
915 B
Python
Raw Normal View History

#!/usr/bin/env python3
2014-10-23 16:09:41 +00:00
import hashlib
import os
import subprocess
from binascii import hexlify, unhexlify
import ecdsa
print("master secret:", end="")
h = input()
2014-10-23 16:09:41 +00:00
if h:
h = unhexlify(h).encode("ascii")
2014-10-23 16:09:41 +00:00
else:
h = hashlib.sha256(os.urandom(1024)).digest()
2017-02-01 17:07:47 +00:00
print()
print("master secret:", hexlify(h))
2017-02-01 17:07:47 +00:00
print()
2014-10-23 16:09:41 +00:00
for i in range(1, 6):
se = hashlib.sha256(h + chr(i).encode("ascii")).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,
":",
(b"04" + hexlify(sk.get_verifying_key().to_string())).decode("ascii"),
)
print(sk.to_pem().decode("ascii"))
2014-10-23 16:09:41 +00:00
p = subprocess.Popen("ssss-split -t 3 -n 5 -x".split(" "), stdin=subprocess.PIPE)
p.communicate(input=hexlify(h) + "\n")
2014-10-23 16:09:41 +00:00
# to recover use:
# $ ssss-combine -t 3 -x