def otp_calculate(self, slot, digits, credential, timestamp): valid_from = timestamp - (timestamp % 30) valid_to = valid_from + 30 code, _ = self._otp_get_code_or_touch(slot, digits, timestamp, wait_for_touch=True) return success({ 'credential': credential, 'code': code_to_dict(Code(code, valid_from, valid_to)) })
def _read_slot_code(self, slot, digits, timestamp, wait_for_touch): dev = self._descriptor.open_device(TRANSPORT.OTP) code = dev.driver.calculate( slot, challenge=timestamp, totp=True, digits=int(digits), wait_for_touch=wait_for_touch) valid_from = timestamp - (timestamp % 30) valid_to = valid_from + 30 return Code(code, valid_from, valid_to)
def calc(slot, digits, label): try: code, touch = self._otp_get_code_or_touch( slot, digits, timestamp) entries.append({ 'credential': cred_to_dict( Credential(label.encode(), OATH_TYPE.TOTP, touch)), 'code': code_to_dict( Code(code, valid_from, valid_to)) if code else None }) except YkpersError as e: if e.errno == 4: pass else: raise
def calculate_slot_mode(self, slot, digits, timestamp): try: dev = self._descriptor.open_device(TRANSPORT.OTP) code = dev.driver.calculate( slot, challenge=timestamp, totp=True, digits=int(digits), wait_for_touch=True) except Exception as e: logger.error('Failed to calculate code in slot mode', exc_info=e) return None valid_from = timestamp - (timestamp % 30) valid_to = valid_from + 30 code = Code(code, valid_from, valid_to) return pair_to_dict(Credential(self._slot_name(slot), OATH_TYPE.TOTP, True), code)
def _read_slot_cred(self, slot, digits, timestamp): try: dev = self._descriptor.open_device(TRANSPORT.OTP) code = dev.driver.calculate( slot, challenge=timestamp, totp=True, digits=int(digits), wait_for_touch=False) valid_from = timestamp - (timestamp % 30) valid_to = valid_from + 30 code = Code(code, valid_from, valid_to) return (Credential(self._slot_name(slot), OATH_TYPE.TOTP, False), code) except YkpersError as e: if e.errno == 11: return (Credential(self._slot_name(slot), OATH_TYPE.TOTP, True ), None) except Exception as e: return (Credential(str(e).encode(), OATH_TYPE.TOTP, True), None) return None