import os import rsa from cryptography.hazmat.backends import default_backend #from cryptography.hazmat.primitives.asymmetric import rsa from cryptography.hazmat.primitives import serialization from cryptography.fernet import Fernet def make_keys(contract_name): (public_key,private_key)=rsa.newkeys(2048) # private_key = rsa.generate_private_key( # public_exponent=65537, # key_size=2048, # backend=default_backend() # ) # public_key = private_key.public_key() # pem = public_key.public_bytes( # encoding=serialization.Encoding.PEM, # format=serialization.PublicFormat.SubjectPublicKeyInfo # ) path = 'contract_keys\\' + contract_name + '\\' os.mkdir(path) with open(path + 'publickey.key','wb') as f: f.write(public_key) # pem = private_key.private_bytes( # encoding=serialization.Encoding.PEM, # format=serialization.PrivateFormat.PKCS8, # encryption_algorithm=serialization.NoEncryption() # ) with open(path + 'privatekey.key','wb') as f: f.write(private_key) symmetric_key = Fernet.generate_key() with open(path + 'symmetric.key','wb') as f: f.write(symmetric_key) def get_keys(contract_name): path = 'contract_keys\\' + contract_name + '\\publickey.key' # with open(path, 'rb') as f: # public_key = serialization.load_pem_public_key( # f.read(), # backend=default_backend() # ) # return public_key with open(path, 'rb') as f: return rsa.PublicKey.load_pkcs1(f.read()) def get_symmetric_key(contract_name): path = 'contract_keys\\' + contract_name + '\\symmetric.key' with open(path, 'rb') as f: return f.read() def get_private_key(contract_name): path = 'contract_keys\\' + contract_name + '\\privatekey.key' # with open(path, "rb") as key_file: # private_key = serialization.load_pem_private_key( # key_file.read(), # password=None, # backend=default_backend() # ) # return private_key with open(path, 'rb') as f: return rsa.PrivateKey.load_pkcs1(f.read()) def get_plain_key(contract_name): path = 'contract_keys\\' + contract_name + '\\publickey.key' with open(path, 'rt') as f: return f.read().split('-----')[2].strip().replace('\n', '')