| 
					
				 | 
			
			
				@@ -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 
			 |