lists.osmocom.org
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

gerrit-log

Thread Start a new thread
Download
Threads by month
  • ----- 2026 -----
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2025 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
gerrit-log@lists.osmocom.org

November 2023

  • 1 participants
  • 1508 discussions
[S] Change in pysim[master]: docs: shell: By now we have encoders/decoders for most files
by pespin 02 Nov '23

02 Nov '23
Attention is currently required from: laforge. pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/pysim/+/34936?usp=email ) Change subject: docs: shell: By now we have encoders/decoders for most files ...................................................................... Patch Set 1: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/c/pysim/+/34936?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: pysim Gerrit-Branch: master Gerrit-Change-Id: Ia771f9969ae7eb0094d1768af3f7f54cc9d0d581 Gerrit-Change-Number: 34936 Gerrit-PatchSet: 1 Gerrit-Owner: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: laforge <laforge(a)osmocom.org> Gerrit-Comment-Date: Thu, 02 Nov 2023 09:11:09 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 0
0 0
[S] Change in osmo-ttcn3-hacks[master]: PCUIF: upgrade to PCUIF v12
by pespin 02 Nov '23

02 Nov '23
Attention is currently required from: dexter. pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/34934?usp=email ) Change subject: PCUIF: upgrade to PCUIF v12 ...................................................................... Patch Set 4: Code-Review+1 -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/34934?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: Ib1516e66c70f021adee49f41bd707803fc06f9cf Gerrit-Change-Number: 34934 Gerrit-PatchSet: 4 Gerrit-Owner: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: dexter <pmaier(a)sysmocom.de> Gerrit-Comment-Date: Thu, 02 Nov 2023 09:10:21 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 0
0 0
[M] Change in osmo-bts[master]: pcuif_proto: signal BTS model via PCUIF
by pespin 02 Nov '23

02 Nov '23
Attention is currently required from: dexter, osmith. pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-bts/+/34648?usp=email ) Change subject: pcuif_proto: signal BTS model via PCUIF ...................................................................... Patch Set 8: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/34648?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Change-Id: Ib51238a0e09d4484a539a7f822864189872698b6 Gerrit-Change-Number: 34648 Gerrit-PatchSet: 8 Gerrit-Owner: dexter <pmaier(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-CC: osmith <osmith(a)sysmocom.de> Gerrit-Attention: osmith <osmith(a)sysmocom.de> Gerrit-Attention: dexter <pmaier(a)sysmocom.de> Gerrit-Comment-Date: Thu, 02 Nov 2023 09:08:45 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes Gerrit-MessageType: comment
1 0
0 0
[M] Change in ...osmo-epdg[master]: s2b: Implement GTPv2C DeleteBearerReq
by pespin 02 Nov '23

02 Nov '23
pespin has submitted this change. ( https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/34896?usp=email ) Change subject: s2b: Implement GTPv2C DeleteBearerReq ...................................................................... s2b: Implement GTPv2C DeleteBearerReq Sessions are now stored/kept upon CreateSession time until deleted through DeleteBearerReq. Related: OS#6046 Change-Id: I1e5af1ead17385d2e494f4c90ffe6455aee850da --- M src/epdg_gtpc_s2b.erl 1 file changed, 137 insertions(+), 26 deletions(-) Approvals: Jenkins Builder: Verified laforge: Looks good to me, approved diff --git a/src/epdg_gtpc_s2b.erl b/src/epdg_gtpc_s2b.erl index 82985a5..a5658f1 100644 --- a/src/epdg_gtpc_s2b.erl +++ b/src/epdg_gtpc_s2b.erl @@ -70,7 +70,9 @@ rport :: non_neg_integer(), restart_counter :: 0..255, seq_no :: 0..16#ffffffff, - sess_list %% TODO: fill it, list of gtp_session + next_local_control_tei = 1 :: 0..16#ffffffff, + next_local_data_tei = 1 :: 0..16#ffffffff, + sessions = sets:new() }). -record(gtp_bearer, { @@ -134,36 +136,45 @@ gen_server:call(?SERVER, {gtpc_create_session_req, {Imsi}}). -handle_call({gtpc_create_session_req, {Imsi}}, _From, State) -> - Sess = new_gtp_session(Imsi, State), - Req = gen_create_session_request(Sess, State), +handle_call({gtpc_create_session_req, {Imsi}}, _From, State0) -> + {Sess0, State1} = find_or_new_gtp_session(Imsi, State0), + Req = gen_create_session_request(Sess0, State1), %TODO: increment State.seq_no. - tx_gtp(Req, State), + tx_gtp(Req, State1), lager:debug("Waiting for CreateSessionResponse~n", []), receive {udp, _Socket, IP, InPortNo, RxMsg} -> try Resp = gtp_packet:decode(RxMsg), - logger:info("s2b: Rx from IP ~p port ~n ~p~n", [IP, InPortNo, Resp]), - %% TODO: store Sess in State. - {reply, {ok, Resp}, State} + lager:info("s2b: Rx from IP ~p port ~p ~p~n", [IP, InPortNo, Resp]), + Sess1 = update_gtp_session_from_create_session_response(Resp, Sess0), + lager:info("s2b: Updated Session after create_session_response: ~p~n", [Sess1]), + State2 = update_gtp_session(Sess0, Sess1, State1), + {reply, {ok, Resp}, State2} catch Any -> - logger:error("Error sending message to receiver, ERROR: ~p~n", [Any]), - {reply, {error, decode_failure}, State} + lager:error("Error sending message to receiver, ERROR: ~p~n", [Any]), + {reply, {error, decode_failure}, State1} end after 5000 -> - logger:error("Timeout waiting for CreateSessionResponse for ~p~n", [Req]), - {reply, timeout, State} + lager:error("Timeout waiting for CreateSessionResponse for ~p~n", [Req]), + {reply, timeout, State1} end. %% @callback gen_server handle_cast(stop, State) -> {stop, normal, State}; -handle_cast(_Req, State) -> +handle_cast(Req, State) -> + lager:info("S2b handle_cast: ~p ~n", [Req]), {noreply, State}. %% @callback gen_server -handle_info(_Info, State) -> +handle_info({udp, _Socket, IP, InPortNo, RxMsg}, State) -> + lager:info("S2b: Rx from IP ~p port ~p: ~p~n", [IP, InPortNo, RxMsg]), + Req = gtp_packet:decode(RxMsg), + lager:info("S2b: Rx from IP ~p port ~p: ~p~n", [IP, InPortNo, Req]), + rx_gtp(Req, State); +handle_info(Info, State) -> + lager:info("S2b handle_info: ~p ~n", [Info]), {noreply, State}. %% @callback gen_server @@ -185,6 +196,76 @@ %% Internal Function Definitions %% ------------------------------------------------------------------ +new_gtp_session(Imsi, State) -> + % TODO: find non-used local TEI inside State + Bearer = #gtp_bearer{ + ebi = 5, + local_data_tei = State#gtp_state.next_local_data_tei + }, + Sess = #gtp_session{imsi = Imsi, + apn = ?APN, + local_control_tei = State#gtp_state.next_local_control_tei, + bearer = Bearer + }, + NewSt = State#gtp_state{next_local_control_tei = State#gtp_state.next_local_control_tei + 1, + next_local_data_tei = State#gtp_state.next_local_data_tei + 1, + sessions = sets:add_element(Sess, State#gtp_state.sessions)}, + {Sess, NewSt}. + +% returns Sess if found, undefined it not +find_gtp_session_by_imsi(Imsi, State) -> + sets:fold( + fun(SessIt = #gtp_session{imsi = Imsi}, _AccIn) -> SessIt; + (_, AccIn) -> AccIn + end, + undefined, + State#gtp_state.sessions). + +find_or_new_gtp_session(Imsi, State) -> + Sess = find_gtp_session_by_imsi(Imsi, State), + case Sess of + #gtp_session{imsi = Imsi} -> + {Sess, State}; + undefined -> + new_gtp_session(Imsi, State) + end. + +update_gtp_session(OldSess, NewSess, State) -> + SetRemoved = sets:del_element(OldSess, State#gtp_state.sessions), + SetUpdated = sets:add_element(NewSess, SetRemoved), + State#gtp_state{sessions = SetUpdated}. + +delete_gtp_session(Sess, State) -> + SetRemoved = sets:del_element(Sess, State#gtp_state.sessions), + State#gtp_state{sessions = SetRemoved}. + +update_gtp_session_from_create_session_response_ie(none, Sess) -> + Sess; +update_gtp_session_from_create_session_response_ie({_, + #v2_fully_qualified_tunnel_endpoint_identifier{ + interface_type = _Interface, + key = TEI, ipv4 = _IP4, ipv6 = _IP6}, + Next}, Sess) -> + update_gtp_session_from_create_session_response_ie(maps:next(Next), Sess#gtp_session{remote_control_tei = TEI}); +update_gtp_session_from_create_session_response_ie({_, _, Next}, + Sess) -> + update_gtp_session_from_create_session_response_ie(maps:next(Next), Sess). + +update_gtp_session_from_create_session_response_ies(#gtp{ie = IEs}, Sess) -> + update_gtp_session_from_create_session_response_ie(maps:next(maps:iterator(IEs)), Sess). + +update_gtp_session_from_create_session_response(Resp = #gtp{version = v2, type = create_session_response}, Sess) -> + update_gtp_session_from_create_session_response_ies(#gtp{ie = Resp#gtp.ie}, Sess). + +% returns Sess if found, undefined it not +find_gtp_session_by_local_teic(LocalControlTei, State) -> + sets:fold( + fun(SessIt = #gtp_session{local_control_tei = LocalControlTei}, _AccIn) -> SessIt; + (_, AccIn) -> AccIn + end, + undefined, + State#gtp_state.sessions). + %% connect/2 connect(Name, {Socket, RemoteAddr, RemotePort}) -> lager:info("~s connecting to IP ~s port ~p~n", [Name, RemoteAddr, RemotePort]), @@ -193,23 +274,27 @@ connect(Address) -> connect(?SVC_NAME, Address). +rx_gtp(Req = #gtp{version = v2, type = delete_bearer_request}, State) -> + Sess = find_gtp_session_by_local_teic(Req#gtp.tei, State), + case Sess of + undefined -> + lager:error("Rx unknown TEI ~p: ~p~n", [Req#gtp.tei, Req]), + {noreply, State}; + Sess -> + Resp = gen_delete_bearer_response(Req, Sess, request_accepted, State), + tx_gtp(Resp, State), + State1 = delete_gtp_session(Sess, State), + {noreply, State1} + end; +rx_gtp(Req, State) -> + lager:error("S2b: UNIMPLEMENTED Rx: ~p~n", [Req]), + {noreply, State}. + tx_gtp(Req, State) -> lager:info("s2b: Tx ~p~n", [Req]), Msg = gtp_packet:encode(Req), gen_udp:send(State#gtp_state.socket, State#gtp_state.raddr, State#gtp_state.rport, Msg). -new_gtp_session(Imsi, _State) -> - % TODO: find non-used local TEI inside State - Bearer = #gtp_bearer{ - ebi = 5, - local_data_tei = 1 - }, - #gtp_session{imsi = Imsi, - apn = ?APN, - local_control_tei = 0, - bearer = Bearer - }. - %% 7.2.1 Create Session Request gen_create_session_request(#gtp_session{imsi = Imsi, apn = Apn, @@ -249,4 +334,17 @@ ], #gtp{version = v2, type = create_session_request, tei = 0, seq_no = SeqNo, ie = IEs}. +gen_delete_bearer_response(Req = #gtp{version = v2, type = delete_bearer_request}, + Sess = #gtp_session{remote_control_tei = RemoteCtlTEI}, + GtpCause, + #gtp_state{restart_counter = RCnt}) -> + IEs = [#v2_recovery{restart_counter = RCnt}, + #v2_cause{v2_cause = GtpCause} + ], + #gtp{version = v2, + type = delete_bearer_response, + tei = RemoteCtlTEI, + seq_no = Req#gtp.seq_no, + ie = IEs}. + -- To view, visit https://gerrit.osmocom.org/c/erlang/osmo-epdg/+/34896?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: erlang/osmo-epdg Gerrit-Branch: master Gerrit-Change-Id: I1e5af1ead17385d2e494f4c90ffe6455aee850da Gerrit-Change-Number: 34896 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: lynxis lazus <lynxis(a)fe80.eu> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-MessageType: merged
1 0
0 0
[M] Change in pysim[master]: sysmocom_sja2: Add some de/encode test vectors
by laforge 02 Nov '23

02 Nov '23
laforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/34949?usp=email ) Change subject: sysmocom_sja2: Add some de/encode test vectors ...................................................................... sysmocom_sja2: Add some de/encode test vectors This increases test coverage and also shows where we so far only have decoders but no encoders yet Change-Id: I7932bab7c81a2314c1b9477f50b82a46f24d074e --- M pySim/sysmocom_sja2.py 1 file changed, 56 insertions(+), 19 deletions(-) git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/49/34949/1 diff --git a/pySim/sysmocom_sja2.py b/pySim/sysmocom_sja2.py index bfd0ff5..bd9e8a8 100644 --- a/pySim/sysmocom_sja2.py +++ b/pySim/sysmocom_sja2.py @@ -70,18 +70,20 @@ class EF_MILENAGE_CFG(TransparentEF): + _test_de_encode = [ + ( '40002040600000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000020000000000000000000000000000000400000000000000000000000000000008', + {"r1": 64, "r2": 0, "r3": 32, "r4": 64, "r5": 96, "c1": "00000000000000000000000000000000", "c2": + "00000000000000000000000000000001", "c3": "00000000000000000000000000000002", "c4": + "00000000000000000000000000000004", "c5": "00000000000000000000000000000008"} ), + ] def __init__(self, fid='6f21', name='EF.MILENAGE_CFG', desc='Milenage connfiguration'): super().__init__(fid, name=name, desc=desc) - - def _decode_bin(self, raw_bin_data): - u = unpack('!BBBBB16s16s16s16s16s', raw_bin_data) - return {'r1': u[0], 'r2': u[1], 'r3': u[2], 'r4': u[3], 'r5': u[4], - 'c1': u[5].hex(), - 'c2': u[6].hex(), - 'c3': u[7].hex(), - 'c4': u[8].hex(), - 'c5': u[9].hex(), - } + self._construct = Struct('r1'/Int8ub, 'r2'/Int8ub, 'r3'/Int8ub, 'r4'/Int8ub, 'r5'/Int8ub, + 'c1'/HexAdapter(Bytes(16)), + 'c2'/HexAdapter(Bytes(16)), + 'c3'/HexAdapter(Bytes(16)), + 'c4'/HexAdapter(Bytes(16)), + 'c5'/HexAdapter(Bytes(16))) class EF_0348_KEY(LinFixedEF): @@ -99,12 +101,14 @@ class EF_0348_COUNT(LinFixedEF): + _test_de_encode = [ + ( 'fe010000000000', {"sec_domain": 254, "key_set_version": 1, "counter": "0000000000"} ), + ] def __init__(self, fid='6f23', name='EF.0348_COUNT', desc='TS 03.48 OTA Counters'): super().__init__(fid, name=name, desc=desc, rec_len=(7, 7)) - - def _decode_record_bin(self, raw_bin_data, **kwargs): - u = unpack('!BB5s', raw_bin_data) - return {'sec_domain': u[0], 'key_set_version': u[1], 'counter': u[2]} + self._construct = Struct('sec_domain'/Int8ub, + 'key_set_version'/Int8ub, + 'counter'/HexAdapter(Bytes(5))) class EF_SIM_AUTH_COUNTER(TransparentEF): @@ -114,13 +118,15 @@ class EF_GP_COUNT(LinFixedEF): + _test_de_encode = [ + ( '0070000000', {"sec_domain": 0, "key_set_version": 112, "counter": 0, "rfu": 0} ), + ] def __init__(self, fid='6f26', name='EF.GP_COUNT', desc='GP SCP02 Counters'): super().__init__(fid, name=name, desc=desc, rec_len=(5, 5)) - - def _decode_record_bin(self, raw_bin_data, **kwargs): - u = unpack('!BBHB', raw_bin_data) - return {'sec_domain': u[0], 'key_set_version': u[1], 'counter': u[2], 'rfu': u[3]} - + self._construct = Struct('sec_domain'/Int8ub, + 'key_set_version'/Int8ub, + 'counter'/Int16ub, + 'rfu'/Int8ub) class EF_GP_DIV_DATA(LinFixedEF): def __init__(self, fid='6f27', name='EF.GP_DIV_DATA', desc='GP SCP02 key diversification data'): @@ -132,6 +138,11 @@ class EF_SIM_AUTH_KEY(TransparentEF): + _test_de_encode = [ + ( '14000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f', + {"cfg": {"use_sres_deriv_func_2": 0, "use_opc_instead_of_op": 1, "algorithm": "milenage"}, "key": + "000102030405060708090a0b0c0d0e0f", "op_opc": "101112131415161718191a1b1c1d1e1f"} ), + ] def __init__(self, fid='6f20', name='EF.SIM_AUTH_KEY'): super().__init__(fid, name=name, desc='USIM authentication key') CfgByte = BitStruct(Padding(2), @@ -168,6 +179,14 @@ class EF_USIM_SQN(TransparentEF): + _test_de_encode = [ + ( 'd503000200000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', + {"flag1": {"skip_next_sqn_check": 1, "delta_max_check": 1, "age_limit_check": 0, "sqn_check": 1, + "ind_len": 5}, "flag2": {"rfu": 0, "dont_clear_amf_for_macs": 0, "aus_concealed": 1, + "autn_concealed": 1}, "delta_max": 8589934592, "age_limit": + 8589934592, "freshness": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0]} ), + ] def __init__(self, fid='af30', name='EF.USIM_SQN'): super().__init__(fid, name=name, desc='SQN parameters for AKA') Flag1 = BitStruct('skip_next_sqn_check'/Bit, 'delta_max_check'/Bit, @@ -224,6 +243,12 @@ class EF_USIM_AUTH_KEY_2G(TransparentEF): + _test_de_encode = [ + ( '14000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f', + {"cfg": {"only_4bytes_res_in_3g": 0, "use_sres_deriv_func_2_in_3g": 0, "use_opc_instead_of_op": 1, + "algorithm": "milenage"}, "key": "000102030405060708090a0b0c0d0e0f", "op_opc": + "101112131415161718191a1b1c1d1e1f"} ), + ] def __init__(self, fid='af22', name='EF.USIM_AUTH_KEY_2G'): super().__init__(fid, name=name, desc='USIM authentication key in 2G context') CfgByte = BitStruct(Padding(1), 'only_4bytes_res_in_3g'/Bit, -- To view, visit https://gerrit.osmocom.org/c/pysim/+/34949?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: pysim Gerrit-Branch: master Gerrit-Change-Id: I7932bab7c81a2314c1b9477f50b82a46f24d074e Gerrit-Change-Number: 34949 Gerrit-PatchSet: 1 Gerrit-Owner: laforge <laforge(a)osmocom.org> Gerrit-MessageType: newchange
1 0
0 0
[S] Change in pysim[master]: pySim-shell: permit string with spaces for 'echo' command
by laforge 01 Nov '23

01 Nov '23
laforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/34947?usp=email ) Change subject: pySim-shell: permit string with spaces for 'echo' command ...................................................................... pySim-shell: permit string with spaces for 'echo' command before this patch: pySIM-shell (00:MF)> echo foo bar baz usage: echo [-h] string echo: error: unrecognized arguments: bar baz after this patch: pySIM-shell (00:MF)> echo foo bar baz foo bar baz Change-Id: I1369bc3aa975865e3a8a574c132e469813a9f6b9 --- M pySim-shell.py 1 file changed, 22 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/47/34947/1 diff --git a/pySim-shell.py b/pySim-shell.py index d9c9f8c..306dd40 100755 --- a/pySim-shell.py +++ b/pySim-shell.py @@ -510,13 +510,13 @@ first = False echo_parser = argparse.ArgumentParser() - echo_parser.add_argument('string', help="string to echo on the shell") + echo_parser.add_argument('string', help="string to echo on the shell", nargs='+') @cmd2.with_argparser(echo_parser) @cmd2.with_category(CUSTOM_CATEGORY) def do_echo(self, opts): """Echo (print) a string on the console""" - self.poutput(opts.string) + self.poutput(' '.join(opts.string)) @cmd2.with_category(CUSTOM_CATEGORY) def do_version(self, opts): -- To view, visit https://gerrit.osmocom.org/c/pysim/+/34947?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: pysim Gerrit-Branch: master Gerrit-Change-Id: I1369bc3aa975865e3a8a574c132e469813a9f6b9 Gerrit-Change-Number: 34947 Gerrit-PatchSet: 1 Gerrit-Owner: laforge <laforge(a)osmocom.org> Gerrit-MessageType: newchange
1 0
0 0
[S] Change in pysim[master]: pySim-shell: Validate that argument to 'apdu' command is proper hexstr
by laforge 01 Nov '23

01 Nov '23
laforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/34946?usp=email ) Change subject: pySim-shell: Validate that argument to 'apdu' command is proper hexstr ...................................................................... pySim-shell: Validate that argument to 'apdu' command is proper hexstr Let's not even send anything to the card if it's not an even number of hexadecimal digits Change-Id: I58465244101cc1a976e5a17af2aceea1cf9f9b54 --- M pySim-shell.py M pySim/utils.py 2 files changed, 23 insertions(+), 2 deletions(-) git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/46/34946/1 diff --git a/pySim-shell.py b/pySim-shell.py index c2bb15c..d9c9f8c 100755 --- a/pySim-shell.py +++ b/pySim-shell.py @@ -53,7 +53,7 @@ from pySim.cards import card_detect, SimCardBase, UiccCardBase from pySim.utils import h2b, b2h, i2h, swap_nibbles, rpad, JsonEncoder, bertlv_parse_one, sw_match from pySim.utils import sanitize_pin_adm, tabulate_str_list, boxed_heading_str, Hexstr, dec_iccid -from pySim.utils import is_hexstr_or_decimal +from pySim.utils import is_hexstr_or_decimal, is_hexstr from pySim.card_handler import CardHandler, CardHandlerAuto from pySim.filesystem import CardDF, CardADF, CardModel, CardApplication @@ -322,7 +322,7 @@ self.equip(card, rs) apdu_cmd_parser = argparse.ArgumentParser() - apdu_cmd_parser.add_argument('APDU', type=str, help='APDU as hex string') + apdu_cmd_parser.add_argument('APDU', type=is_hexstr, help='APDU as hex string') apdu_cmd_parser.add_argument('--expect-sw', help='expect a specified status word', type=str, default=None) @cmd2.with_argparser(apdu_cmd_parser) diff --git a/pySim/utils.py b/pySim/utils.py index 92bf70f..ea1c9e6 100644 --- a/pySim/utils.py +++ b/pySim/utils.py @@ -1478,3 +1478,12 @@ if len(instr) & 1: raise ValueError('Input has un-even number of hex digits') return instr + +def is_hexstr(instr: str) -> str: + """Method that can be used as 'type' in argparse.add_argument() to validate the value consists of + an even sequence of hexadecimal digits only.""" + if not all(c in string.hexdigits for c in instr): + raise ValueError('Input must be hexadecimal') + if len(instr) & 1: + raise ValueError('Input has un-even number of hex digits') + return instr -- To view, visit https://gerrit.osmocom.org/c/pysim/+/34946?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: pysim Gerrit-Branch: master Gerrit-Change-Id: I58465244101cc1a976e5a17af2aceea1cf9f9b54 Gerrit-Change-Number: 34946 Gerrit-PatchSet: 1 Gerrit-Owner: laforge <laforge(a)osmocom.org> Gerrit-MessageType: newchange
1 0
0 0
[S] Change in pysim[master]: pySim-shell: Improved argument validation for verify_adm argument
by laforge 01 Nov '23

01 Nov '23
Hello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/c/pysim/+/34945?usp=email to look at the new patch set (#2). The following approvals got outdated and were removed: Verified+1 by Jenkins Builder Change subject: pySim-shell: Improved argument validation for verify_adm argument ...................................................................... pySim-shell: Improved argument validation for verify_adm argument Let's make sure we don't even bother to ask the card to verify anything as ADM1 pin which is not either a sequence of decimal digits or an even number of hex digits (even number of bytes). Change-Id: I4a193a3cf63462fad73d145ab1481070ddf767ca --- M pySim-shell.py M pySim/utils.py 2 files changed, 26 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/45/34945/2 -- To view, visit https://gerrit.osmocom.org/c/pysim/+/34945?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: pysim Gerrit-Branch: master Gerrit-Change-Id: I4a193a3cf63462fad73d145ab1481070ddf767ca Gerrit-Change-Number: 34945 Gerrit-PatchSet: 2 Gerrit-Owner: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: Jenkins Builder Gerrit-MessageType: newpatchset
1 0
0 0
[S] Change in pysim[master]: pySim-shell: Reject any non-decimal PIN values
by laforge 01 Nov '23

01 Nov '23
laforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/34948?usp=email ) Change subject: pySim-shell: Reject any non-decimal PIN values ...................................................................... pySim-shell: Reject any non-decimal PIN values Don't even send any non-decimal PIN values to the card, but reject them when parsing the command arguments. Change-Id: Icec1698851471af7f76f20201dcdcfcd48ddf365 --- M pySim-shell.py M pySim/utils.py 2 files changed, 27 insertions(+), 8 deletions(-) git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/48/34948/1 diff --git a/pySim-shell.py b/pySim-shell.py index 306dd40..0c559f9 100755 --- a/pySim-shell.py +++ b/pySim-shell.py @@ -53,7 +53,7 @@ from pySim.cards import card_detect, SimCardBase, UiccCardBase from pySim.utils import h2b, b2h, i2h, swap_nibbles, rpad, JsonEncoder, bertlv_parse_one, sw_match from pySim.utils import sanitize_pin_adm, tabulate_str_list, boxed_heading_str, Hexstr, dec_iccid -from pySim.utils import is_hexstr_or_decimal, is_hexstr +from pySim.utils import is_hexstr_or_decimal, is_hexstr, is_decimal from pySim.card_handler import CardHandler, CardHandlerAuto from pySim.filesystem import CardDF, CardADF, CardModel, CardApplication @@ -864,7 +864,7 @@ verify_chv_parser.add_argument( '--pin-nr', type=int, default=1, help='PIN Number, 1=PIN1, 2=PIN2 or custom value (decimal)') verify_chv_parser.add_argument( - 'pin_code', type=str, help='PIN code digits, \"PIN1\" or \"PIN2\" to get PIN code from external data source') + 'pin_code', type=is_decimal, help='PIN code digits, \"PIN1\" or \"PIN2\" to get PIN code from external data source') @cmd2.with_argparser(verify_chv_parser) def do_verify_chv(self, opts): @@ -879,9 +879,9 @@ unblock_chv_parser.add_argument( '--pin-nr', type=int, default=1, help='PUK Number, 1=PIN1, 2=PIN2 or custom value (decimal)') unblock_chv_parser.add_argument( - 'puk_code', type=str, help='PUK code digits \"PUK1\" or \"PUK2\" to get PUK code from external data source') + 'puk_code', type=is_decimal, help='PUK code digits \"PUK1\" or \"PUK2\" to get PUK code from external data source') unblock_chv_parser.add_argument( - 'new_pin_code', type=str, help='PIN code digits \"PIN1\" or \"PIN2\" to get PIN code from external data source') + 'new_pin_code', type=is_decimal, help='PIN code digits \"PIN1\" or \"PIN2\" to get PIN code from external data source') @cmd2.with_argparser(unblock_chv_parser) def do_unblock_chv(self, opts): @@ -896,9 +896,9 @@ change_chv_parser.add_argument( '--pin-nr', type=int, default=1, help='PUK Number, 1=PIN1, 2=PIN2 or custom value (decimal)') change_chv_parser.add_argument( - 'pin_code', type=str, help='PIN code digits \"PIN1\" or \"PIN2\" to get PIN code from external data source') + 'pin_code', type=is_decimal, help='PIN code digits \"PIN1\" or \"PIN2\" to get PIN code from external data source') change_chv_parser.add_argument( - 'new_pin_code', type=str, help='PIN code digits \"PIN1\" or \"PIN2\" to get PIN code from external data source') + 'new_pin_code', type=is_decimal, help='PIN code digits \"PIN1\" or \"PIN2\" to get PIN code from external data source') @cmd2.with_argparser(change_chv_parser) def do_change_chv(self, opts): @@ -913,7 +913,7 @@ disable_chv_parser.add_argument( '--pin-nr', type=int, default=1, help='PIN Number, 1=PIN1, 2=PIN2 or custom value (decimal)') disable_chv_parser.add_argument( - 'pin_code', type=str, help='PIN code digits, \"PIN1\" or \"PIN2\" to get PIN code from external data source') + 'pin_code', type=is_decimal, help='PIN code digits, \"PIN1\" or \"PIN2\" to get PIN code from external data source') @cmd2.with_argparser(disable_chv_parser) def do_disable_chv(self, opts): @@ -926,7 +926,7 @@ enable_chv_parser.add_argument( '--pin-nr', type=int, default=1, help='PIN Number, 1=PIN1, 2=PIN2 or custom value (decimal)') enable_chv_parser.add_argument( - 'pin_code', type=str, help='PIN code digits, \"PIN1\" or \"PIN2\" to get PIN code from external data source') + 'pin_code', type=is_decimal, help='PIN code digits, \"PIN1\" or \"PIN2\" to get PIN code from external data source') @cmd2.with_argparser(enable_chv_parser) def do_enable_chv(self, opts): diff --git a/pySim/utils.py b/pySim/utils.py index ea1c9e6..44800fb 100644 --- a/pySim/utils.py +++ b/pySim/utils.py @@ -1487,3 +1487,10 @@ if len(instr) & 1: raise ValueError('Input has un-even number of hex digits') return instr + +def is_decimal(instr: str) -> str: + """Method that can be used as 'type' in argparse.add_argument() to validate the value consists of + an even sequence of decimal digits only.""" + if not instr.isdecimal(): + raise ValueError('Input must decimal') + return instr -- To view, visit https://gerrit.osmocom.org/c/pysim/+/34948?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: pysim Gerrit-Branch: master Gerrit-Change-Id: Icec1698851471af7f76f20201dcdcfcd48ddf365 Gerrit-Change-Number: 34948 Gerrit-PatchSet: 1 Gerrit-Owner: laforge <laforge(a)osmocom.org> Gerrit-MessageType: newchange
1 0
0 0
[S] Change in pysim[master]: pySim-shell: Improved argument validation for verify_adm argument
by laforge 01 Nov '23

01 Nov '23
laforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/34945?usp=email ) Change subject: pySim-shell: Improved argument validation for verify_adm argument ...................................................................... pySim-shell: Improved argument validation for verify_adm argument Let's make sure we don't even bother to ask the card to verify anything as ADM1 pin which is not either a sequence of decimal digits or an even number of hex digits (even number of bytes). Change-Id: I4a193a3cf63462fad73d145ab1481070ddf767ca --- M pySim-shell.py M pySim/utils.py 2 files changed, 26 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/45/34945/1 diff --git a/pySim-shell.py b/pySim-shell.py index 7aaa234..c59d18b 100755 --- a/pySim-shell.py +++ b/pySim-shell.py @@ -53,6 +53,7 @@ from pySim.cards import card_detect, SimCardBase, UiccCardBase from pySim.utils import h2b, b2h, i2h, swap_nibbles, rpad, JsonEncoder, bertlv_parse_one, sw_match from pySim.utils import sanitize_pin_adm, tabulate_str_list, boxed_heading_str, Hexstr, dec_iccid +from pySim.utils import hexstr_or_decimal from pySim.card_handler import CardHandler, CardHandlerAuto from pySim.filesystem import CardDF, CardADF, CardModel, CardApplication @@ -777,7 +778,7 @@ self._cmd.poutput("no description available") verify_adm_parser = argparse.ArgumentParser() - verify_adm_parser.add_argument('ADM1', nargs='?', type=str, + verify_adm_parser.add_argument('ADM1', nargs='?', type=hexstr_or_decimal, help='ADM1 pin value. If none given, CSV file will be queried') @cmd2.with_argparser(verify_adm_parser) diff --git a/pySim/utils.py b/pySim/utils.py index 7459a3f..e6a6d2d 100644 --- a/pySim/utils.py +++ b/pySim/utils.py @@ -1467,3 +1467,14 @@ def all_subclasses(cls) -> set: """Recursively get all subclasses of a specified class""" return set(cls.__subclasses__()).union([s for c in cls.__subclasses__() for s in all_subclasses(c)]) + +def hexstr_or_decimal(instr: str): + """Method that can be used as 'type' in argparse.add_argument() to validate the value consists of + [hexa]decimal digits only.""" + if instr.isdecimal(): + return instr + if not all(c in string.hexdigits for c in instr): + raise ValueError('Input must be [hexa]decimal') + if len(instr) & 1: + raise ValueError('Input has un-even number of hex digits') + return instr -- To view, visit https://gerrit.osmocom.org/c/pysim/+/34945?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: pysim Gerrit-Branch: master Gerrit-Change-Id: I4a193a3cf63462fad73d145ab1481070ddf767ca Gerrit-Change-Number: 34945 Gerrit-PatchSet: 1 Gerrit-Owner: laforge <laforge(a)osmocom.org> Gerrit-MessageType: newchange
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • ...
  • 151
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.