2
0

create_keys.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import os
  2. import rsa
  3. from cryptography.hazmat.backends import default_backend
  4. #from cryptography.hazmat.primitives.asymmetric import rsa
  5. from cryptography.hazmat.primitives import serialization
  6. from cryptography.fernet import Fernet
  7. def make_keys(contract_name):
  8. (public_key,private_key)=rsa.newkeys(2048)
  9. # private_key = rsa.generate_private_key(
  10. # public_exponent=65537,
  11. # key_size=2048,
  12. # backend=default_backend()
  13. # )
  14. # public_key = private_key.public_key()
  15. # pem = public_key.public_bytes(
  16. # encoding=serialization.Encoding.PEM,
  17. # format=serialization.PublicFormat.SubjectPublicKeyInfo
  18. # )
  19. #path = 'contract_keys\\' + contract_name + '\\'
  20. path = f'contract_keys\\{contract_name}\\'
  21. os.makedirs(path, exist_ok=True)
  22. with open(path + 'publickey.key','wb') as f:
  23. f.write(public_key.save_pkcs1('PEM'))
  24. # pem = private_key.private_bytes(
  25. # encoding=serialization.Encoding.PEM,
  26. # format=serialization.PrivateFormat.PKCS8,
  27. # encryption_algorithm=serialization.NoEncryption()
  28. # )
  29. with open(path + 'privatekey.key','wb') as f:
  30. f.write(private_key.save_pkcs1('PEM'))
  31. symmetric_key = Fernet.generate_key()
  32. with open(path + 'symmetric.key','wb') as f:
  33. f.write(symmetric_key)
  34. def get_keys(contract_name):
  35. path = 'contract_keys\\' + contract_name + '\\publickey.key'
  36. # with open(path, 'rb') as f:
  37. # public_key = serialization.load_pem_public_key(
  38. # f.read(),
  39. # backend=default_backend()
  40. # )
  41. # return public_key
  42. with open(path, 'rb') as f:
  43. return rsa.PublicKey.load_pkcs1(f.read())
  44. def get_symmetric_key(contract_name):
  45. path = 'contract_keys\\' + contract_name + '\\symmetric.key'
  46. with open(path, 'rb') as f:
  47. return f.read()
  48. def get_private_key(contract_name):
  49. path = 'contract_keys\\' + contract_name + '\\privatekey.key'
  50. # with open(path, "rb") as key_file:
  51. # private_key = serialization.load_pem_private_key(
  52. # key_file.read(),
  53. # password=None,
  54. # backend=default_backend()
  55. # )
  56. # return private_key
  57. with open(path, 'rb') as f:
  58. return rsa.PrivateKey.load_pkcs1(f.read())
  59. def get_plain_key(contract_name):
  60. path = 'contract_keys\\' + contract_name + '\\publickey.key'
  61. with open(path, 'rt') as f:
  62. return f.read().split('-----')[2].strip().replace('\n', '')