diff --git a/pySim/global_platform/__init__.py b/pySim/global_platform/__init__.py index 6793f711..25b0d02f 100644 --- a/pySim/global_platform/__init__.py +++ b/pySim/global_platform/__init__.py @@ -501,9 +501,9 @@ class ADF_SD(CardADF): return data put_key_parser = argparse.ArgumentParser() - put_key_parser.add_argument('--old-key-version-nr', type=auto_int, default=0, help='Old Key Version Number') - put_key_parser.add_argument('--key-version-nr', type=auto_int, required=True, help='Key Version Number') - put_key_parser.add_argument('--key-id', type=auto_int, required=True, help='Key Identifier (base)') + put_key_parser.add_argument('--old-key-version-nr', type=auto_uint8, default=0, help='Old Key Version Number') + put_key_parser.add_argument('--key-version-nr', type=auto_uint8, required=True, help='Key Version Number') + put_key_parser.add_argument('--key-id', type=auto_uint7, required=True, help='Key Identifier (base)') put_key_parser.add_argument('--key-type', choices=KeyType.ksymapping.values(), action='append', required=True, help='Key Type') put_key_parser.add_argument('--key-data', type=is_hexstr, action='append', required=True, help='Key Data Block') put_key_parser.add_argument('--key-check', type=is_hexstr, action='append', help='Key Check Value') diff --git a/pySim/utils.py b/pySim/utils.py index cf95dab6..a31fbe0e 100644 --- a/pySim/utils.py +++ b/pySim/utils.py @@ -7,6 +7,7 @@ import json import abc import string import datetime +import argparse from io import BytesIO from typing import Optional, List, Dict, Any, Tuple, NewType @@ -913,6 +914,18 @@ def auto_int(x): """Helper function for argparse to accept hexadecimal integers.""" return int(x, 0) +def _auto_uint(x, max_val: int): + """Helper function for argparse to accept hexadecimal or decimal integers.""" + ret = int(x, 0) + if ret < 0 or ret > max_val: + raise argparse.ArgumentTypeError('Number exceeds permited value range (0, %u)' % max_val) + return ret + +def auto_uint7(x): + return _auto_uint(x, 127) + +def auto_uint8(x): + return _auto_uint(x, 255) def expand_hex(hexstring, length): """Expand a given hexstring to a specified length by replacing "." or ".."