def assert_credentials_match(self, verifier, authc_token, account):
cred_type = authc_token.token_info['<STR_LIT>']<EOL>try:<EOL><INDENT>verifier.verify_credentials(authc_token, account['<STR_LIT>'])<EOL><DEDENT>except IncorrectCredentialsException:<EOL><INDENT>updated_account = self.update_failed_attempt(authc_token, account)<EOL>failed_attempts = updated_account['<STR_LIT>'][cred_type].get('<STR_LIT>', [])<EOL>raise IncorrectCredentialsException(failed_attempts)<EOL><DEDENT>except ConsumedTOTPToken:<EOL><INDENT>account['<STR_LIT>'][cred_type]['<STR_LIT>'] = authc_token.credentials<EOL>self.cache_handler.set(domain='<STR_LIT>' + self.name,<EOL>identifier=authc_token.identifier,<EOL>value=account)<EOL><DEDENT>
:type verifier: authc_abcs.CredentialsVerifier
:type authc_token: authc_abcs.AuthenticationToken
:type account:  account_abcs.Account
:returns: account_abcs.Account
:raises IncorrectCredentialsException:  when authentication fails,
                                        including unix epoch timestamps
                                        of recently failed attempts