Added identity here

This commit is contained in:
BarsTiger
2023-07-17 14:58:02 +03:00
parent 90c8cbb4a1
commit 362d767e97
2 changed files with 29 additions and 0 deletions

View File

@@ -0,0 +1 @@
pass

View File

@@ -0,0 +1,28 @@
from attrs import define
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives import serialization
import base64
@define
class Identity:
"""
Valid identity has fields
username - in most cases same as filename, represents identity's username
private_key - key to decrypt incoming messages and get public key,
shouldn't be sent anywhere, generated via generate function
"""
username: str
private_key: rsa.RSAPrivateKey = None
def generate(self):
self.private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=4096
)
def public_key(self):
return base64.urlsafe_b64encode(self.private_key.public_key().public_bytes(
encoding=serialization.Encoding.DER,
format=serialization.PublicFormat.PKCS1
))