36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
#!/usr/bin/python3
|
|
# -*- coding=utf-8
|
|
from sys import argv, exit
|
|
from pgpy import PGPKey
|
|
from argparse import ArgumentParser
|
|
|
|
|
|
def SignPackage(key: str, pwd: str, file: str, sign: str = None):
|
|
if sign is None:
|
|
sign = file + ".sig"
|
|
signer = PGPKey.from_file(key)[0]
|
|
if signer.is_public:
|
|
raise Exception("signer not a private key")
|
|
if not signer.is_protected:
|
|
raise Exception("private key unprotected")
|
|
with signer.unlock(pwd):
|
|
with open(file, "rb") as r:
|
|
msg = signer.sign(r.read())
|
|
with open(sign, "wb") as w:
|
|
w.write(bytes(msg))
|
|
|
|
|
|
def main(args: list) -> int:
|
|
prs = ArgumentParser("Renegade Project Arch Linux Repo Uploader")
|
|
prs.add_argument("-f", "--file", help="Package file", required=True)
|
|
prs.add_argument("-s", "--sign", help="Signature file", required=False)
|
|
prs.add_argument("-k", "--key", help="Private key", required=True)
|
|
prs.add_argument("-p", "--pwd", help="Key passphrase", required=True)
|
|
ps = prs.parse_args(args[1:])
|
|
SignPackage(ps.key, ps.pwd, ps.file, ps.sign)
|
|
return 0
|
|
|
|
|
|
if __name__ == '__main__':
|
|
exit(main(argv))
|