From 5a3ef2ab804c337ba4d3fc06f343f0fd7202e619 Mon Sep 17 00:00:00 2001 From: discomethod Date: Tue, 15 Apr 2025 15:58:07 -0400 Subject: [PATCH 1/2] Update totp.py Clean up typing hint and subsequent null-checking logic --- src/pyotp/totp.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/pyotp/totp.py b/src/pyotp/totp.py index 9908d55..56bd0cf 100644 --- a/src/pyotp/totp.py +++ b/src/pyotp/totp.py @@ -65,7 +65,7 @@ def now(self) -> str: """ return self.generate_otp(self.timecode(datetime.datetime.now())) - def verify(self, otp: str, for_time: Optional[datetime.datetime] = None, valid_window: int = 0) -> bool: + def verify(self, otp: str, for_time: Optional[datetime.datetime] = None, valid_window: Optional[int] = 0) -> bool: """ Verifies the OTP passed in against the current time OTP. @@ -76,14 +76,11 @@ def verify(self, otp: str, for_time: Optional[datetime.datetime] = None, valid_w """ if for_time is None: for_time = datetime.datetime.now() - - if valid_window: - for i in range(-valid_window, valid_window + 1): - if utils.strings_equal(str(otp), str(self.at(for_time, i))): - return True - return False - - return utils.strings_equal(str(otp), str(self.at(for_time))) + + for i in range(-valid_window, valid_window + 1): + if utils.strings_equal(str(otp), str(self.at(for_time, i))): + return True + return False def provisioning_uri(self, name: Optional[str] = None, issuer_name: Optional[str] = None, **kwargs) -> str: """ From 8a1e9a0ba0efba8048e7a5c26030d8de066e3d32 Mon Sep 17 00:00:00 2001 From: discomethod Date: Tue, 15 Apr 2025 16:40:26 -0400 Subject: [PATCH 2/2] Update totp.py --- src/pyotp/totp.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/pyotp/totp.py b/src/pyotp/totp.py index 56bd0cf..383251e 100644 --- a/src/pyotp/totp.py +++ b/src/pyotp/totp.py @@ -76,7 +76,10 @@ def verify(self, otp: str, for_time: Optional[datetime.datetime] = None, valid_w """ if for_time is None: for_time = datetime.datetime.now() - + + if not valid_window: + valid_window = 0 + for i in range(-valid_window, valid_window + 1): if utils.strings_equal(str(otp), str(self.at(for_time, i))): return True