Squash commits for public release

This commit is contained in:
2025-02-12 09:54:05 -05:00
commit 7118adc514
1108 changed files with 80873 additions and 0 deletions

74
utils/crypto/elfsign.py Normal file
View File

@@ -0,0 +1,74 @@
import sys
import hashlib
import argparse
import subprocess
import codecs
from elftools.elf.elffile import ELFFile
# Test Key Set.
PRIVATE_D = 0x38df48893d28df263487987da506d0c56d5f817573bc091071c5cd798d78ba4c996f946a2d695b9b4428794c59500ba2e5b2ed383aa791b18f56fd90875010eddb98c37113f9717511a2845edbcc85e9c559f74d474c107767666f894357c1439217ce82d0181a58ce9a8ad75e3a37ccb3aeba5ba07dd2f8cb8b92ae2735e275
PUBLIC_N = 0xa65f3fc1e6e850b5c7174fb7c0b30f36507ad9a67e83abe707b176fb7f44230711ffe8291119d921e0e483024dc6e603a628996ec2c875069aef21f1b9e9cfbcd3f7ee6f4ecf1bc67d9d7239adef94596038b4b5833ee34b4ddad75b17ad8f8fbb2cd5149115602aa57aecdfdacbea8a7fe735c98784a4b1868986dced517e1d
PUBLIC_E = 0x10001
parser = argparse.ArgumentParser()
parser.add_argument('target', type=str, help='Target third_part package')
parser.add_argument('--overwrite', action='store_true',
help='Overwrites exisiting signature')
args = parser.parse_args()
def shell(cmd, cwd=None):
return subprocess.check_output(cmd, shell=True, cwd=cwd).decode("ascii")
elffile_path = args.target
signfield_loc = 0
sha256_hash = hashlib.sha256()
def int_to_bytes(n, nsize=128):
xs = bytearray()
while (n):
by = n % 256
xs.append(by)
n //= 256
while len(xs) < nsize:
xs.append(0)
return xs
with open(elffile_path, 'rb') as elffile:
signature_section = None
for section in ELFFile(elffile).iter_sections():
if section.name == "._signature":
signature_section = section
signfield_loc = section['sh_offset']
if signature_section is None:
print("Elf file is not configured for signing.")
exit(1)
if not args.overwrite:
for byte in signature_section.data():
if byte != 0:
print("Signature:", ''.join('{:02x}'.format(x)
for x in signature_section.data()[:128]))
print("Elf file is already signed.")
exit(0)
signfield_loc = signature_section['sh_offset']
for segment in ELFFile(elffile).iter_segments():
seg_head = segment.header
if seg_head.p_type == "PT_LOAD":
sha256_hash.update(segment.data())
hash = int(codecs.encode(sha256_hash.digest(), 'hex'), 16)
signature = pow(hash, PRIVATE_D, PUBLIC_N)
signature_file = open(elffile_path, "r+b")
signature_file.seek(signfield_loc)
signature_file.write(int_to_bytes(signature))
signature_file.close()