openpilot is an open source driver assistance system. openpilot performs the functions of Automated Lane Centering and Adaptive Cruise Control for over 200 supported car makes and models.

30 lines
704 B

#!/usr/bin/env python
import os
import sys
import struct
import hashlib
from Crypto.PublicKey import RSA
rsa = RSA.importKey(open(sys.argv[3]).read())
with open(sys.argv[1]) as f:
dat = f.read()
print "signing", len(dat), "bytes"
with open(sys.argv[2], "wb") as f:
if os.getenv("SETLEN") is not None:
x = struct.pack("I", len(dat)) + dat[4:]
# mock signature of dat[4:]
dd = hashlib.sha1(dat[4:]).digest()
else:
x = dat
dd = hashlib.sha1(dat).digest()
print "hash:",dd.encode("hex")
dd = "\x00\x01" + "\xff"*0x69 + "\x00" + dd
rsa_out = pow(int(dd.encode("hex"), 16), rsa.d, rsa.n)
sig = (hex(rsa_out)[2:-1].rjust(0x100, '0')).decode("hex")
x += sig
f.write(x)