class PasswordVault: storage_file = "/home/pi/password-vault-server/vault.json" if not debug.isDebug( ) else "vault.json" storage = None encryption = None main_menu = None def __init__(self): self.storage = Storage(self.storage_file) def startDisplay(self): self.main_menu = MainMenu() self.main_menu.init() self.main_menu.secretsCallback = self.listSecrets self.main_menu.secretCallback = self.retrieveSecret self.main_menu.saltCallback = self.initEncryption self.main_menu.display() def initEncryption(self, salt): self.encryption = Encryption(salt) # Validation secrets = self.storage.read() keys = list(secrets) if len(keys) > 0: return self.encryption.validate(secrets[keys[0]]) return False def addSecret(self, key, secret): encoded_secret = self.encryption.encode(secret) secrets = self.storage.read() secrets[key] = encoded_secret self.storage.save(secrets) def listSecrets(self): secrets = self.storage.read() return list(secrets.keys()) def retrieveSecret(self, key): secrets = self.storage.read() hashed_secret = secrets[key] decoded_secret = self.encryption.decode(hashed_secret) return decoded_secret
def __init__(self): self.config_dir = self.config_dir + "/" def read_properties(self, config_file): with open(self.config_dir + config_file) as lines: properties = json.load(lines) return properties # get database connectivity properties = Config().read_properties("database.json") database_uri_prefix = properties["database_uri_prefix"] user = properties["user"] pwd = properties["pwd"] pwd = Encryption().decrypt(pwd.encode()) hostname = properties["hostname"] port = properties["port"] service_name = properties["service_name"] print("hostname: " + hostname + " - port: " + port + " - user: "******" - service_name: " + service_name) # The SQLAlchemy connection string. # SQLALCHEMY_DATABASE_URI = "sqlite:///" + os.path.join(basedir, "app.db") # SQLALCHEMY_DATABASE_URI = 'mysql://myapp@localhost/myapp' # SQLALCHEMY_DATABASE_URI = 'postgresql://*****:*****@localhost/myapp' SQLALCHEMY_DATABASE_URI = database_uri_prefix + user + ":" + pwd + "@" + hostname + ":" + port + "/" + service_name # Flask-WTF flag for CSRF CSRF_ENABLED = True
def encode_file(filename): ba = Encryption.encode('images/key.png', filename) Pixels.create_image(Pixels.get_img(ba), display=True, save='images/enc.png')