def write(self, filename=None): '''' Write out DB to given filename with optional master key. If no master key is given, the one used to create this DB is used. ''' import hashlib outfilename = filename or self.filename self.header.ngroups = len(self.groups) self.header.nentries = len(self.entries) header = DBHDR(self.header.encode()) # fixme: should regenerate encryption_iv, master_seed, # master_seed2 and allow for the number of rounds to change payload = self.encode_payload() header.contents_hash = hashlib.sha256(payload).digest() # finalkey = self.final_key(masterkey = masterkey or self.masterkey, # masterseed = self.header.master_seed, # masterseed2 = self.header.master_seed2, # rounds = self.header.key_enc_rounds) payload = self.encrypt_payload(payload, self.final_key(), header.encryption_type(), header.encryption_iv) fp = open(outfilename, 'w') fp.write(header.encode()) fp.write(payload) fp.close() return
def write(self,filename,masterkey=""): '''' Write out DB to given filename with optional master key. If no master key is given, the one used to create this DB is used. ''' import hashlib self.header.ngroups = len(self.groups) self.header.nentries = len(self.entries) header = DBHDR(self.header.encode()) # fixme: should regenerate encryption_iv, master_seed, # master_seed2 and allow for the number of rounds to change payload = self.encode_payload() header.contents_hash = hashlib.sha256(payload).digest() finalkey = self.final_key(masterkey = masterkey or self.masterkey, masterseed = self.header.master_seed, masterseed2 = self.header.master_seed2, rounds = self.header.key_enc_rounds) payload = self.encrypt_payload(payload, finalkey, header.encryption_type(), header.encryption_iv) fp = open(filename,'w') fp.write(header.encode()) fp.write(payload) fp.close() return
def write(self, filename=None): '''' Write out DB to given filename with optional master key. If no master key is given, the one used to create this DB is used. ''' import hashlib outfilename = filename or self.filename self.header.ngroups = len(self.groups) self.header.nentries = len(self.entries) self.header.final_master_seed = get_random_bytes(16) self.header.encryption_iv = get_random_bytes(16) self.header.transform_seed = get_random_bytes(32) header = DBHDR(self.header.encode()) # fixme: should regenerate encryption_iv, master_seed, # master_seed2 and allow for the number of rounds to change payload = self.encode_payload() header.contents_hash = hashlib.sha256(payload).digest() payload = self.encrypt_payload(payload, self.final_key(), header.encryption_type(), header.encryption_iv) fp = open(outfilename,'w') fp.write(header.encode()) fp.write(payload) fp.close() return