mirror of
https://gitea.osmocom.org/sim-card/pysim.git
synced 2026-03-22 05:18:33 +03:00
global_platform: fix usage of the Key Version Number (kvn)
The kvn parameter is used to select a keyset when establishin a secure channel. At the moment this is a mandatory parameter and it must be within a certain range. However GPC_SPE_034 explicitly defines a reserved kvn value 0, that always refers to the first available key. That effectively makes it an optional parameter and the commandline interface should have the --key-ver parameter as an optional parameter. The ranges also have to be extended to allow 0 as kvn value. We also have to put a range to support the sysmoUSIM-SJS1, which uses kvn value 1, which is a non standard value. Related: OS#6679 Change-Id: I42be2438c7f199b238f2ec7a9434cec5393210a7
This commit is contained in:
@@ -795,7 +795,7 @@ class ADF_SD(CardADF):
|
||||
return self._cmd.lchan.scc.send_apdu_checksw(cmd_hex)
|
||||
|
||||
est_scp02_parser = argparse.ArgumentParser()
|
||||
est_scp02_parser.add_argument('--key-ver', type=auto_uint8, required=True, help='Key Version Number (KVN)')
|
||||
est_scp02_parser.add_argument('--key-ver', type=auto_uint8, default=0, help='Key Version Number (KVN)')
|
||||
est_scp02_parser.add_argument('--host-challenge', type=is_hexstr,
|
||||
help='Hard-code the host challenge; default: random')
|
||||
est_scp02_parser.add_argument('--security-level', type=auto_uint8, default=0x01,
|
||||
@@ -900,7 +900,9 @@ class CardApplicationISD(CardApplicationSD):
|
||||
class GpCardKeyset:
|
||||
"""A single set of GlobalPlatform card keys and the associated KVN."""
|
||||
def __init__(self, kvn: int, enc: bytes, mac: bytes, dek: bytes):
|
||||
assert 0 < kvn < 256
|
||||
# The Key Version Number is an 8 bit integer number, where 0 refers to the first available key,
|
||||
# see also: GPC_SPE_034, section E.5.1.3
|
||||
assert 0 <= kvn < 256
|
||||
assert len(enc) == len(mac) == len(dek)
|
||||
self.kvn = kvn
|
||||
self.enc = enc
|
||||
|
||||
Reference in New Issue
Block a user