code: def _validate(claims, validate_claims, expiry_seconds):
      
      if not validate_claims:
          return
  
      now = time()
  
      # TODO: implement support for clock skew
  
      # The exp (expiration time) claim identifies the expiration time on or
      # after which the JWT MUST NOT be accepted for processing. The
      # processing of the exp claim requires that the current date/time MUST
      # be before the expiration date/time listed in the exp claim.
      try:
          expiration_time = claims[CLAIM_EXPIRATION_TIME]
      except KeyError:
          pass
      else:
          _check_expiration_time(now, expiration_time)
  
      # The iat (issued at) claim identifies the time at which the JWT was
      # issued. This claim can be used to determine the age of the JWT.
      # If expiry_seconds is provided, and the iat claims is present,
      # determine the age of the token and check if it has expired.
      try:
          issued_at = claims[CLAIM_ISSUED_AT]
      except KeyError:
          pass
      else:
          if expiry_seconds is not None:
              _check_expiration_time(now, issued_at + expiry_seconds)
  
      # The nbf (not before) claim identifies the time before which the JWT
      # MUST NOT be accepted for processing. The processing of the nbf claim
      # requires that the current date/time MUST be after or equal to the
      # not-before date/time listed in the nbf claim.
      try:
          not_before = claims[CLAIM_NOT_BEFORE]
      except KeyError:
          pass
      else:
          _check_not_before(now, not_before)
docs: Validate expiry related claims.
  
      If validate_claims is False, do nothing.
  
      Otherwise, validate the exp and nbf claims if they are present, and
      validate the iat claim if expiry_seconds is provided.