diff options
| author | Simeon Simeonov | 2024-12-28 20:13:43 +0100 |
|---|---|---|
| committer | Simeon Simeonov | 2024-12-28 20:13:43 +0100 |
| commit | 82ef6adec6e59f9cc9dc9fa1a13a2b43e534bada (patch) | |
| tree | 5921f91387f8b4567f810c20570f458547e6ae64 /src/otp2289/__main__.py | |
| parent | e3a82c195f8e18fbd9691845ff4e6121986e13ea (diff) | |
Rename *Exception to *Error and do some general linting
Diffstat (limited to 'src/otp2289/__main__.py')
| -rw-r--r-- | src/otp2289/__main__.py | 46 |
1 files changed, 18 insertions, 28 deletions
diff --git a/src/otp2289/__main__.py b/src/otp2289/__main__.py index d267b1b..9f1aab8 100644 --- a/src/otp2289/__main__.py +++ b/src/otp2289/__main__.py | |||
| @@ -1,7 +1,6 @@ | |||
| 1 | # -*- coding: utf-8 -*- | ||
| 2 | # SPDX-License-Identifier: BSD-2-Clause-FreeBSD | 1 | # SPDX-License-Identifier: BSD-2-Clause-FreeBSD |
| 3 | # | 2 | # |
| 4 | # Copyright (c) 2020-2023 Simeon Simeonov | 3 | # Copyright (c) 2020-2025 Simeon Simeonov |
| 5 | # All rights reserved. | 4 | # All rights reserved. |
| 6 | # | 5 | # |
| 7 | # Redistribution and use in source and binary forms, with or without | 6 | # Redistribution and use in source and binary forms, with or without |
| @@ -32,10 +31,10 @@ python -m otp2289 --initiate-new-sequence -s TesT | |||
| 32 | python -m otp2289 --generate-otp-response -c "otp-md5 499 TesT " -f token | 31 | python -m otp2289 --generate-otp-response -c "otp-md5 499 TesT " -f token |
| 33 | python -m otp2289 --generate-otp-response -s TesT -i 499 -f token | 32 | python -m otp2289 --generate-otp-response -s TesT -i 499 -f token |
| 34 | """ | 33 | """ |
| 34 | |||
| 35 | import argparse | 35 | import argparse |
| 36 | import errno | 36 | import errno |
| 37 | import getpass | 37 | import getpass |
| 38 | import io | ||
| 39 | import os | 38 | import os |
| 40 | import secrets | 39 | import secrets |
| 41 | import string | 40 | import string |
| @@ -56,17 +55,15 @@ def generate_otp_response(args: argparse.Namespace) -> str: | |||
| 56 | :param args: The arguments assigned from argparse | 55 | :param args: The arguments assigned from argparse |
| 57 | :type args: argparse.Namespace | 56 | :type args: argparse.Namespace |
| 58 | 57 | ||
| 59 | :raises otp2289.OTPChallengeException: If the challenge is invalid | 58 | :raises otp2289.OTPChallengeError: If the challenge is invalid |
| 60 | 59 | ||
| 61 | :raises otp2289.OTPGeneratorException: If generator parameters are wrong | 60 | :raises otp2289.OTPGeneratorError: If generator parameters are wrong |
| 62 | 61 | ||
| 63 | :return: The response string | 62 | :return: The response string |
| 64 | :rtype: str | 63 | :rtype: str |
| 65 | """ | 64 | """ |
| 66 | generator = otp2289.generator.OTPGenerator( | 65 | generator = otp2289.generator.OTPGenerator( |
| 67 | args.password.encode(), | 66 | args.password.encode(), args.seed, args.hash_algo |
| 68 | args.seed, | ||
| 69 | args.hash_algo, | ||
| 70 | ) | 67 | ) |
| 71 | if args.challenge_string: | 68 | if args.challenge_string: |
| 72 | if args.output_format == 'token': | 69 | if args.output_format == 'token': |
| @@ -95,27 +92,26 @@ def generate_otp_range(args: argparse.Namespace) -> str: | |||
| 95 | :param args: The arguments assigned from argparse | 92 | :param args: The arguments assigned from argparse |
| 96 | :type args: argparse.Namespace | 93 | :type args: argparse.Namespace |
| 97 | 94 | ||
| 98 | :raises otp2289.OTPChallengeException: If the challenge is invalid | 95 | :raises otp2289.OTPChallengeError: If the challenge is invalid |
| 99 | 96 | ||
| 100 | :raises otp2289.OTPGeneratorException: If generator parameters are wrong | 97 | :raises otp2289.OTPGeneratorError: If generator parameters are wrong |
| 101 | 98 | ||
| 102 | :return: The responses string | 99 | :return: The responses string |
| 103 | :rtype: str | 100 | :rtype: str |
| 104 | """ | 101 | """ |
| 105 | generator = otp2289.generator.OTPGenerator( | 102 | generator = otp2289.generator.OTPGenerator( |
| 106 | args.password.encode(), | 103 | args.password.encode(), args.seed, args.hash_algo |
| 107 | args.seed, | ||
| 108 | args.hash_algo, | ||
| 109 | ) | 104 | ) |
| 110 | if args.output_format == 'token': | 105 | if args.output_format == 'token': |
| 111 | method = generator.generate_otp_words | 106 | method = generator.generate_otp_words |
| 112 | else: | 107 | else: |
| 113 | method = generator.generate_otp_hexdigest | 108 | method = generator.generate_otp_hexdigest |
| 109 | |||
| 114 | # handle most cases explicitly | 110 | # handle most cases explicitly |
| 115 | if args.range == 1: | 111 | if args.range == 1: |
| 116 | return f'{args.step}: ' + method(args.step) | 112 | return f'{args.step}: ' + method(args.step) |
| 117 | if args.range > args.step + 1: | 113 | args.range = min(args.range, args.step + 1) |
| 118 | args.range = args.step + 1 | 114 | |
| 119 | # any need for quiet? | 115 | # any need for quiet? |
| 120 | header = '' | 116 | header = '' |
| 121 | if not args.quiet: | 117 | if not args.quiet: |
| @@ -126,11 +122,7 @@ def generate_otp_range(args: argparse.Namespace) -> str: | |||
| 126 | return header + os.linesep.join( | 122 | return header + os.linesep.join( |
| 127 | [ | 123 | [ |
| 128 | f'{step}: ' + method(step) | 124 | f'{step}: ' + method(step) |
| 129 | for step in range( | 125 | for step in range(args.step, args.step - args.range, -1) |
| 130 | args.step, | ||
| 131 | args.step - args.range, | ||
| 132 | -1, | ||
| 133 | ) | ||
| 134 | ] | 126 | ] |
| 135 | ) | 127 | ) |
| 136 | 128 | ||
| @@ -171,7 +163,7 @@ def get_password(args: argparse.Namespace) -> str: | |||
| 171 | return password | 163 | return password |
| 172 | 164 | ||
| 173 | if os.path.isfile(args.password): | 165 | if os.path.isfile(args.password): |
| 174 | with io.open(args.password, 'r', encoding='utf-8') as fp: | 166 | with open(args.password, encoding='utf-8') as fp: |
| 175 | return fp.readline().strip() | 167 | return fp.readline().strip() |
| 176 | 168 | ||
| 177 | return args.password | 169 | return args.password |
| @@ -196,9 +188,9 @@ def initiate_new_sequence(args: argparse.Namespace) -> str: | |||
| 196 | :param args: The arguments assigned from argparse | 188 | :param args: The arguments assigned from argparse |
| 197 | :type args: argparse.Namespace | 189 | :type args: argparse.Namespace |
| 198 | 190 | ||
| 199 | :raises otp2289.OTPChallengeException: If the challenge is invalid | 191 | :raises otp2289.OTPChallengeError: If the challenge is invalid |
| 200 | 192 | ||
| 201 | :raises otp2289.OTPGeneratorException: If generator parameters are wrong | 193 | :raises otp2289.OTPGeneratorError: If generator parameters are wrong |
| 202 | 194 | ||
| 203 | :return: The response string | 195 | :return: The response string |
| 204 | :rtype: str | 196 | :rtype: str |
| @@ -212,9 +204,7 @@ def initiate_new_sequence(args: argparse.Namespace) -> str: | |||
| 212 | f'Hash: {args.hash_algo}{os.linesep}' | 204 | f'Hash: {args.hash_algo}{os.linesep}' |
| 213 | ) | 205 | ) |
| 214 | generator = otp2289.generator.OTPGenerator( | 206 | generator = otp2289.generator.OTPGenerator( |
| 215 | args.password.encode(), | 207 | args.password.encode(), args.seed, args.hash_algo |
| 216 | args.seed, | ||
| 217 | args.hash_algo, | ||
| 218 | ) | 208 | ) |
| 219 | if args.challenge_string: | 209 | if args.challenge_string: |
| 220 | return header + generator.generate_otp_hexdigest_from_challenge( | 210 | return header + generator.generate_otp_hexdigest_from_challenge( |
| @@ -372,9 +362,9 @@ def main(args=None): | |||
| 372 | if args.generate_otp_response: | 362 | if args.generate_otp_response: |
| 373 | print(generate_otp_response(args)) | 363 | print(generate_otp_response(args)) |
| 374 | sys.exit(0) | 364 | sys.exit(0) |
| 375 | except otp2289.generator.OTPGeneratorException as exp: | 365 | except otp2289.generator.OTPGeneratorError as exp: |
| 376 | eprint(f'GeneratorException: {exp}') | 366 | eprint(f'GeneratorException: {exp}') |
| 377 | except otp2289.generator.OTPChallengeException as exp: | 367 | except otp2289.generator.OTPChallengeError as exp: |
| 378 | eprint(f'ChallengeException: {exp}') | 368 | eprint(f'ChallengeException: {exp}') |
| 379 | except Exception as exp: | 369 | except Exception as exp: |
| 380 | eprint(f'Unknown error: {exp}') | 370 | eprint(f'Unknown error: {exp}') |
