create_keys.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import os
  2. import rsa as rsa2
  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. #(pubkey,privkey)=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. os.mkdir(path)
  21. with open(path + 'publickey.key','wb') as f:
  22. f.write(pem)
  23. pem = private_key.private_bytes(
  24. encoding=serialization.Encoding.PEM,
  25. format=serialization.PrivateFormat.PKCS8,
  26. encryption_algorithm=serialization.NoEncryption()
  27. )
  28. with open(path + 'privatekey.key','wb') as f:
  29. f.write(pem)
  30. symmetric_key = Fernet.generate_key()
  31. with open(path + 'symmetric.key','wb') as f:
  32. f.write(symmetric_key)
  33. def get_keys(contract_name):
  34. path = 'contract_keys\\' + contract_name + '\\publickey.key'
  35. # with open(path, 'rb') as f:
  36. # public_key = serialization.load_pem_public_key(
  37. # f.read(),
  38. # backend=default_backend()
  39. # )
  40. # return public_key
  41. with open(path, 'rb') as f:
  42. return rsa2.PublicKey.load_pkcs1(f.read())
  43. def get_symmetric_key(contract_name):
  44. path = 'contract_keys\\' + contract_name + '\\symmetric.key'
  45. with open(path, 'rb') as f:
  46. return f.read()
  47. def get_private_key(contract_name):
  48. path = 'contract_keys\\' + contract_name + '\\privatekey.key'
  49. with open(path, "rb") as key_file:
  50. private_key = serialization.load_pem_private_key(
  51. key_file.read(),
  52. password=None,
  53. backend=default_backend()
  54. )
  55. return private_key
  56. def get_plain_key(contract_name):
  57. path = 'contract_keys\\' + contract_name + '\\publickey.key'
  58. with open(path, 'rt') as f:
  59. return f.read().split('-----')[2].strip().replace('\n', '')