コード例 #1
0
 def test_generate_otp(self):
     self.assertEqual("1798492015", generate_otp(otp_expiry=30,
                                                 otp_secret="hello",
                                                 coefficient=1234))
     self.assertEqual("855156820", generate_otp(otp_expiry=30,
                                                otp_secret="hello123",
                                                coefficient=0))
     self.assertTrue(isinstance(generate_otp(otp_expiry=30,
                                             otp_secret="hello",
                                             coefficient=1234), str))
コード例 #2
0
def validate_otp(device_id, received_otp):
    otp_config = get_device_info(device_id)
    generated_otp = truncate_otp(
        otp=generate_otp(otp_expiry=otp_config.expiry,
                         otp_secret=otp_config.secret),
        expected_length=otp_config.length)
    return generated_otp == received_otp
コード例 #3
0
ファイル: test_controller.py プロジェクト: one2nc/tdd-2fa
 def test_validate_otp(self):
     otp = truncate_otp(otp=generate_otp(
         otp_expiry=30, otp_secret=self.response.json.get("secret")))
     response = self.app.get("/validate/{}".format(self.device_id),
                             json={"OTP": otp})
     self.assertEqual(True, response.json.get("is_valid"))
     self.assertEqual(200, response.status_code)
コード例 #4
0
ファイル: device.py プロジェクト: one2nc/tdd-2fa
def generate_device_otp(otp_secret, coefficient=None):
    device_otp = generate_otp(otp_secret=otp_secret, coefficient=coefficient)
    return truncate_otp(otp=device_otp)
コード例 #5
0
ファイル: device.py プロジェクト: one2nc/tdd-2fa
def is_registered(url, device_id):
    return requests.get(url="{}/is_registered/{}".format(url, device_id))


def generate_device_otp(otp_secret, coefficient=None):
    device_otp = generate_otp(otp_secret=otp_secret, coefficient=coefficient)
    return truncate_otp(otp=device_otp)


def get_parser():
    parser = argparse.ArgumentParser()
    parser.add_argument('--device-id', type=int, action='store', required=True,
                        help='id of the device')
    parser.add_argument('--server-addr', type=str, action='store',
                        help='server address', default="http://127.0.0.1:5000")
    return parser


if __name__ == '__main__':
    args_parse = get_parser().parse_args()
    is_device_registered = is_registered(url=args_parse.server_addr,
                                         device_id=args_parse.device_id)
    if not is_device_registered.json().get("is_registered"):
        register_device = register(url=args_parse.server_addr,
                                   device_id=args_parse.device_id)
        secret = register_device.json().get("secret")
    else:
        secret = get_device_secret(url=args_parse.server_addr,
                                   device_id=args_parse.device_id)
    print(truncate_otp(otp=generate_otp(otp_secret=secret)))