forked from public/pysim
sysmocom_sjs1: CardModel for the sysmoUSIM-SJS1
SJS1 model lifted off the the legacy SysmoUSIMSJS1.program(), ADM is ADM1 with CHV 0x0a, already used by the generic UiccCardBase default. Change-Id: I32b011c68de5f990e709718b313b6f28a31ca78b
This commit is contained in:
+4
-3
@@ -30,10 +30,11 @@ from pySim.log import PySimLogger
|
|||||||
|
|
||||||
log = PySimLogger.get(__name__)
|
log = PySimLogger.get(__name__)
|
||||||
|
|
||||||
# we need to import this module so that the SysmocomSJA2 sub-class of
|
# we need to import these modules so that the SysmocomSJA2 / SysmocomSJS1
|
||||||
# CardModel is created, which will add the ATR-based matching and
|
# sub-classes of CardModel are created, which will add the ATR-based matching
|
||||||
# calling of SysmocomSJA2.add_files. See CardModel.apply_matching_models
|
# and calling of their add_files. See CardModel.apply_matching_models
|
||||||
import pySim.sysmocom_sja2
|
import pySim.sysmocom_sja2
|
||||||
|
import pySim.sysmocom_sjs1
|
||||||
|
|
||||||
# we need to import these modules so that the various sub-classes of
|
# we need to import these modules so that the various sub-classes of
|
||||||
# CardProfile are created, which will be used in init_card() to iterate
|
# CardProfile are created, which will be used in init_card() to iterate
|
||||||
|
|||||||
@@ -0,0 +1,61 @@
|
|||||||
|
# coding=utf-8
|
||||||
|
"""Utilities / Functions related to sysmocom sysmoUSIM-SJS1 cards
|
||||||
|
|
||||||
|
(C) 2026 by sysmocom - s.f.m.c. GmbH
|
||||||
|
All Rights Reserved
|
||||||
|
|
||||||
|
Author: Eric Wild <ewild@sysmocom.de>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from construct import Struct, Bytes, Flag
|
||||||
|
from osmocom.utils import *
|
||||||
|
from osmocom.construct import *
|
||||||
|
|
||||||
|
from pySim.filesystem import *
|
||||||
|
from pySim.runtime import RuntimeState
|
||||||
|
|
||||||
|
|
||||||
|
class EF_Ki(TransparentEF):
|
||||||
|
_test_de_encode = [
|
||||||
|
('000102030405060708090a0b0c0d0e0f',
|
||||||
|
{'key': h2b('000102030405060708090a0b0c0d0e0f')}),
|
||||||
|
]
|
||||||
|
|
||||||
|
def __init__(self, fid='00ff', name='EF.Ki'):
|
||||||
|
super().__init__(fid, name=name, desc='K/Ki authentication key', size=(16, 16))
|
||||||
|
self._construct = Struct('key'/Bytes(16))
|
||||||
|
|
||||||
|
|
||||||
|
class EF_OPc(TransparentEF):
|
||||||
|
_test_de_encode = [
|
||||||
|
('016ca53d7a0a804561646816d7b0c702fb',
|
||||||
|
{'use_opc_instead_of_op': True, 'op_opc': h2b('6ca53d7a0a804561646816d7b0c702fb')}),
|
||||||
|
]
|
||||||
|
|
||||||
|
def __init__(self, fid='00f7', name='EF.OPc'):
|
||||||
|
super().__init__(fid, name=name, desc='OP/OPc for milenage', size=(17, 17))
|
||||||
|
self._construct = Struct('use_opc_instead_of_op'/Flag, 'op_opc'/Bytes(16))
|
||||||
|
|
||||||
|
|
||||||
|
class SysmoUSIMSJS1(CardModel):
|
||||||
|
_atrs = ["3b9f96801fc78031a073be21136743200718000001a5"]
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def add_files(cls, rs: RuntimeState):
|
||||||
|
"""Add sysmoUSIM-SJS1 specific files to given RuntimeState."""
|
||||||
|
# the key material lives in DF.GSM shared with ADF.USIM
|
||||||
|
if '7f20' in rs.mf.children:
|
||||||
|
rs.mf.children['7f20'].add_files([EF_Ki(), EF_OPc()])
|
||||||
@@ -27,6 +27,7 @@ import pySim.ts_31_102
|
|||||||
import pySim.ts_31_103
|
import pySim.ts_31_103
|
||||||
import pySim.ts_51_011
|
import pySim.ts_51_011
|
||||||
import pySim.sysmocom_sja2
|
import pySim.sysmocom_sja2
|
||||||
|
import pySim.sysmocom_sjs1
|
||||||
import pySim.gsm_r
|
import pySim.gsm_r
|
||||||
import pySim.cdma_ruim
|
import pySim.cdma_ruim
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user