<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def verify_keys(app_req, required_keys, issuer=None):
 """ Verify all JWT object keys listed in required_keys. Each required key is specified as a dot-separated path. The key values are returned as a list ordered by how you specified them. Take this JWT for example:: { "request": { "pricePoint": 1, } } You could verify the presence of all keys and retrieve their values like this:: iss, aud, price = verify_keys(jwt_dict, ('iss', 'aud', 'request.pricePoint')) Do you see how the comma separated assigned variables match the keys that were extracted? The order is important. """

    if not issuer:
        issuer = _get_issuer(app_req=app_req)
    key_vals = []
    for key_path in required_keys:
        parent = app_req
        for kp in key_path.split('.'):
            if not isinstance(parent, dict):
                raise InvalidJWT('JWT is missing %r: %s is not a dict'
                                 % (key_path, kp), issuer=issuer)
            val = parent.get(kp, None)
            if not val:
                raise InvalidJWT('JWT is missing %r: %s is not a valid key'
                                 % (key_path, kp), issuer=issuer)
            parent = val
        key_vals.append(parent)  # last value of key_path
    return key_vals