You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

27 lines
747 B

  1. #!/usr/bin/env python3
  2. import rsa
  3. import json
  4. from binascii import hexlify
  5. versions_info = json.load(open('update/versions.json'))
  6. if 'signature' in versions_info:
  7. del versions_info['signature']
  8. print('Enter the PKCS1 private key, followed by a blank line:')
  9. privkey = ''
  10. while True:
  11. try:
  12. line = input()
  13. except EOFError:
  14. break
  15. if line == '':
  16. break
  17. privkey += line + '\n'
  18. privkey = bytes(privkey, 'ascii')
  19. privkey = rsa.PrivateKey.load_pkcs1(privkey)
  20. signature = hexlify(rsa.pkcs1.sign(json.dumps(versions_info, sort_keys=True).encode('utf-8'), privkey, 'SHA-256')).decode()
  21. print('signature: ' + signature)
  22. versions_info['signature'] = signature
  23. json.dump(versions_info, open('update/versions.json', 'w'), indent=4, sort_keys=True)