(self, counter: int)
| 68 | self._algorithm = algorithm |
| 69 | |
| 70 | def generate(self, counter: int) -> bytes: |
| 71 | if not isinstance(counter, int): |
| 72 | raise TypeError("Counter parameter must be an integer type.") |
| 73 | |
| 74 | truncated_value = self._dynamic_truncate(counter) |
| 75 | hotp = truncated_value % (10**self._length) |
| 76 | return "{0:0{1}}".format(hotp, self._length).encode() |
| 77 | |
| 78 | def verify(self, hotp: bytes, counter: int) -> None: |
| 79 | if not constant_time.bytes_eq(self.generate(counter), hotp): |