secret.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import sqlmodel
  2. import hashlib
  3. import Crypto
  4. class secret(sqlmodel.SQLModel, table = True):
  5. id: int | None = sqlmodel.Field(default = None, primary_key = True)
  6. name: str = sqlmodel.Field(default = None, index = True)
  7. domain: str = sqlmodel.Field(default = None, index = True)
  8. crypted: bytes = sqlmodel.Field(default = None)
  9. nonce: bytes = sqlmodel.Field(default = None)
  10. class secret_builder:
  11. def __init__(self):
  12. self.clean()
  13. def clean(self) -> None:
  14. self.__target = secret()
  15. @property
  16. def ready(self) -> bool:
  17. if self.__target.name is None or self.__target.domain is None:
  18. return False
  19. if self.__target.crypted is None or self.__target.nonce is None:
  20. return False
  21. return True
  22. @property
  23. def result(self) -> secret:
  24. if not self.ready:
  25. raise TypeError("Secret is not ready to load.")
  26. return self.__target
  27. @property
  28. def name(self) -> str | None:
  29. return self.__target.name
  30. @property
  31. def domain(self) -> str | None:
  32. return self.__target.domain
  33. def crypt(self, key: str, target: str) -> bool:
  34. pass