|
|
@@ -0,0 +1,45 @@
|
|
|
+import sqlmodel
|
|
|
+import hashlib
|
|
|
+import Crypto
|
|
|
+
|
|
|
+class secret(sqlmodel.SQLModel, table = True):
|
|
|
+ id: int | None = sqlmodel.Field(default = None, primary_key = True)
|
|
|
+ name: str = sqlmodel.Field(default = None, index = True)
|
|
|
+ domain: str = sqlmodel.Field(default = None, index = True)
|
|
|
+ crypted: bytes = sqlmodel.Field(default = None)
|
|
|
+ nonce: bytes = sqlmodel.Field(default = None)
|
|
|
+
|
|
|
+class secret_builder:
|
|
|
+ def __init__(self):
|
|
|
+ self.clean()
|
|
|
+
|
|
|
+ def clean(self) -> None:
|
|
|
+ self.__target = secret()
|
|
|
+
|
|
|
+ @property
|
|
|
+ def ready(self) -> bool:
|
|
|
+ if self.__target.name is None or self.__target.domain is None:
|
|
|
+ return False
|
|
|
+
|
|
|
+ if self.__target.crypted is None or self.__target.nonce is None:
|
|
|
+ return False
|
|
|
+
|
|
|
+ return True
|
|
|
+
|
|
|
+ @property
|
|
|
+ def result(self) -> secret:
|
|
|
+ if not self.ready:
|
|
|
+ raise TypeError("Secret is not ready to load.")
|
|
|
+
|
|
|
+ return self.__target
|
|
|
+
|
|
|
+ @property
|
|
|
+ def name(self) -> str | None:
|
|
|
+ return self.__target.name
|
|
|
+
|
|
|
+ @property
|
|
|
+ def domain(self) -> str | None:
|
|
|
+ return self.__target.domain
|
|
|
+
|
|
|
+ def crypt(self, key: str, target: str) -> bool:
|
|
|
+ pass
|