示例#1
0
 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)
示例#3
0
 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