Commit 4a972dc4 authored by mar-ar's avatar mar-ar Committed by oroulet

enables to open encrypted keys with a password

parent f095fd11
......@@ -153,11 +153,11 @@ class Client:
"""
self.user_certificate = await uacrypto.load_certificate(path)
async def load_private_key(self, path: str):
async def load_private_key(self, path, password=None, format=None):
"""
Load user private key. This is used for authenticating using certificate
"""
self.user_private_key = await uacrypto.load_private_key(path)
self.user_private_key = await uacrypto.load_private_key(path, password, format)
async def connect_and_get_server_endpoints(self):
"""
......
......@@ -27,13 +27,15 @@ def x509_from_der(data):
return x509.load_der_x509_certificate(data, default_backend())
async def load_private_key(path, format=None):
async def load_private_key(path, password=None, format=None):
_, ext = os.path.splitext(path)
if isinstance(password, str):
password.encode('utf-8')
async with aiofiles.open(path, mode='rb') as f:
if ext == ".pem" or format == 'pem' or format == 'PEM':
return serialization.load_pem_private_key(await f.read(), password=None, backend=default_backend())
return serialization.load_pem_private_key(await f.read(), password=password, backend=default_backend())
else:
return serialization.load_der_private_key(await f.read(), password=None, backend=default_backend())
return serialization.load_der_private_key(await f.read(), password=password, backend=default_backend())
def der_from_x509(certificate):
......
......@@ -156,8 +156,8 @@ class Server:
"""
self.certificate = await uacrypto.load_certificate(path, format)
async def load_private_key(self, path, format=None):
self.iserver.private_key = await uacrypto.load_private_key(path, format)
async def load_private_key(self, path, password=None, format=None):
self.iserver.private_key = await uacrypto.load_private_key(path, password, format)
def disable_clock(self, val: bool = True):
"""
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment