def load(self, origin_passphrase, keys=None, key_file=None):
<EOL>self._assert_valid_stash()<EOL>if not (bool(keys) ^ bool(key_file)):<EOL><INDENT>raise GhostError(<EOL>'<STR_LIT>'<EOL>'<STR_LIT>')<EOL><DEDENT>if key_file:<EOL><INDENT>with open(key_file) as stash_file:<EOL><INDENT>keys = json.loads(stash_file.read())<EOL><DEDENT><DEDENT>decrypt = origin_passphrase != self.passphrase<EOL>if decrypt:<EOL><INDENT>stub = Stash(TinyDBStorage('<STR_LIT>'), origin_passphrase)<EOL><DEDENT>for key in keys:<EOL><INDENT>self.put(<EOL>name=key['<STR_LIT:name>'],<EOL>value=stub._decrypt(key['<STR_LIT:value>']) if decrypt else key['<STR_LIT:value>'],<EOL>metadata=key['<STR_LIT>'],<EOL>description=key['<STR_LIT:description>'],<EOL>lock=key.get('<STR_LIT>'),<EOL>key_type=key.get('<STR_LIT:type>'),<EOL>encrypt=decrypt)<EOL><DEDENT>
Import keys to the stash from either a list of keys or a file

        `keys` is a list of dictionaries created by `self.export`
        `stash_path` is a path to a file created by `self.export`