'Retrieve a number of one-time keys for a user
Args:
user_id(str): id of user to get keys for
device_id(str): id of device to get keys for
key_ids(list[str]): list of key ids (excluding algorithm) to
retrieve
Returns:
deferred resolving to Dict[(str, str), str]: map from (algorithm,
key_id) to json string for key'

@defer.inlineCallbacks
def get_e2e_one_time_keys(self, user_id, device_id, key_ids):

    rows = (yield self._simple_select_many_batch(table='e2e_one_time_keys_json', column='key_id', iterable=key_ids, retcols=('algorithm', 'key_id', 'key_json'), keyvalues={'user_id': user_id, 'device_id': device_id}, desc='add_e2e_one_time_keys_check'))
    defer.returnValue({(row['algorithm'], row['key_id']): row['key_json'] for row in rows})
