Attention is currently required from: neels.
fixeria has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/36988?usp=email )
Change subject: err log: output sigtran prim name instead of number
......................................................................
Patch Set 1: Code-Review+1
--
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/36988?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: I14eb92a6c6d391873f0d6fc7d61205a13e635e6e
Gerrit-Change-Number: 36988
Gerrit-PatchSet: 1
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Comment-Date: Tue, 04 Jun 2024 07:11:26 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment
laforge has submitted this change. ( https://gerrit.osmocom.org/c/pysim/+/36970?usp=email )
Change subject: esim.bsp: Fix a bug in demac_only_one()
......................................................................
esim.bsp: Fix a bug in demac_only_one()
When de-MAC-ing at the recipient side, we must increment the cipher(!)
block number even if no ciphering is done at all.
We did this correctly for MAC (sender) case, but not on the de-MAC
(receiver) case.
Change-Id: I97993f9e8357b36401d435aaa15558d1c7e411eb
---
M pySim/esim/bsp.py
1 file changed, 17 insertions(+), 0 deletions(-)
Approvals:
Jenkins Builder: Verified
laforge: Looks good to me, approved
lynxis lazus: Looks good to me, but someone else must approve
osmith: Looks good to me, but someone else must approve
diff --git a/pySim/esim/bsp.py b/pySim/esim/bsp.py
index 2afbd46..81fe092 100644
--- a/pySim/esim/bsp.py
+++ b/pySim/esim/bsp.py
@@ -287,6 +287,8 @@
def demac_only_one(self, ciphertext: bytes) -> bytes:
payload = self.m_algo.verify(ciphertext)
_tdict, _l, val, _remain = bertlv_parse_one(payload)
+ # The data block counter for ICV caluclation is incremented also for each segment with C-MAC only.
+ self.c_algo.block_nr += 1
return val
def demac_only(self, ciphertext_list: List[bytes]) -> bytes:
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/36970?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: I97993f9e8357b36401d435aaa15558d1c7e411eb
Gerrit-Change-Number: 36970
Gerrit-PatchSet: 2
Gerrit-Owner: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: lynxis lazus <lynxis(a)fe80.eu>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-MessageType: merged
laforge has submitted this change. ( https://gerrit.osmocom.org/c/pysim/+/36969?usp=email )
Change subject: utils: Introduce BER-TLV parsers that return raw tag or even raw TLV
......................................................................
utils: Introduce BER-TLV parsers that return raw tag or even raw TLV
In the eSIM RSP univers there are some rather ugly layering violatoins
where ASN.1 cannot be parsed but we have to mess with raw TLVs and the
details of DER encoding. Let's add two funtions that make it more
convenient to work with this: They return the raw tag as integer, or
even the entire encoded TLV rather than the value part only.
Change-Id: I1e68a4003b833e86e9282c77325afa86ce144b98
---
M pySim/esim/rsp.py
M pySim/utils.py
2 files changed, 56 insertions(+), 21 deletions(-)
Approvals:
osmith: Looks good to me, but someone else must approve
Jenkins Builder: Verified
laforge: Looks good to me, approved
diff --git a/pySim/esim/rsp.py b/pySim/esim/rsp.py
index 85dacee..c2a163b 100644
--- a/pySim/esim/rsp.py
+++ b/pySim/esim/rsp.py
@@ -24,7 +24,7 @@
from cryptography.hazmat.primitives.serialization import Encoding
from cryptography import x509
-from pySim.utils import bertlv_parse_one, bertlv_encode_tag, bertlv_encode_len, b2h
+from pySim.utils import bertlv_parse_one_rawtag, bertlv_return_one_rawtlv, b2h
from pySim.esim import compile_asn1_subdir
asn1 = compile_asn1_subdir('rsp')
@@ -101,37 +101,31 @@
def extract_euiccSigned1(authenticateServerResponse: bytes) -> bytes:
"""Extract the raw, DER-encoded binary euiccSigned1 field from the given AuthenticateServerResponse. This
is needed due to the very peculiar SGP.22 notion of signing sections of DER-encoded ASN.1 objects."""
- tdict, l, v, remainder = bertlv_parse_one(authenticateServerResponse)
- rawtag = bertlv_encode_tag(tdict)
+ rawtag, l, v, remainder = bertlv_parse_one_rawtag(authenticateServerResponse)
if len(remainder):
raise ValueError('Excess data at end of TLV')
- if b2h(rawtag) != 'bf38':
+ if rawtag != 0xbf38:
raise ValueError('Unexpected outer tag: %s' % b2h(rawtag))
- tdict, l, v1, remainder = bertlv_parse_one(v)
- rawtag = bertlv_encode_tag(tdict)
- if b2h(rawtag) != 'a0':
+ rawtag, l, v1, remainder = bertlv_parse_one_rawtag(v)
+ if rawtag != 0xa0:
raise ValueError('Unexpected tag where CHOICE was expected')
- tdict, l, v2, remainder = bertlv_parse_one(v1)
- rawtag = bertlv_encode_tag(tdict)
- if b2h(rawtag) != '30':
+ rawtag, l, tlv2, remainder = bertlv_return_one_rawtlv(v1)
+ if rawtag != 0x30:
raise ValueError('Unexpected tag where SEQUENCE was expected')
- return rawtag + bertlv_encode_len(l) + v2
+ return tlv2
def extract_euiccSigned2(prepareDownloadResponse: bytes) -> bytes:
"""Extract the raw, DER-encoded binary euiccSigned2 field from the given prepareDownloadrResponse. This is
needed due to the very peculiar SGP.22 notion of signing sections of DER-encoded ASN.1 objects."""
- tdict, l, v, remainder = bertlv_parse_one(prepareDownloadResponse)
- rawtag = bertlv_encode_tag(tdict)
+ rawtag, l, v, remainder = bertlv_parse_one_rawtag(prepareDownloadResponse)
if len(remainder):
raise ValueError('Excess data at end of TLV')
- if b2h(rawtag) != 'bf21':
+ if rawtag != 0xbf21:
raise ValueError('Unexpected outer tag: %s' % b2h(rawtag))
- tdict, l, v1, remainder = bertlv_parse_one(v)
- rawtag = bertlv_encode_tag(tdict)
- if b2h(rawtag) != 'a0':
+ rawtag, l, v1, remainder = bertlv_parse_one_rawtag(v)
+ if rawtag != 0xa0:
raise ValueError('Unexpected tag where CHOICE was expected')
- tdict, l, v2, remainder = bertlv_parse_one(v1)
- rawtag = bertlv_encode_tag(tdict)
- if b2h(rawtag) != '30':
+ rawtag, l, tlv2, remainder = bertlv_return_one_rawtlv(v1)
+ if rawtag != 0x30:
raise ValueError('Unexpected tag where SEQUENCE was expected')
- return rawtag + bertlv_encode_len(l) + v2
+ return tlv2
diff --git a/pySim/utils.py b/pySim/utils.py
index afa476b..2362b59 100644
--- a/pySim/utils.py
+++ b/pySim/utils.py
@@ -359,6 +359,32 @@
remainder = remainder[length:]
return (tagdict, length, value, remainder)
+def bertlv_parse_one_rawtag(binary: bytes) -> Tuple[int, int, bytes, bytes]:
+ """Parse a single TLV IE at the start of the given binary data; return tag as raw integer.
+ Args:
+ binary : binary input data of BER-TLV length field
+ Returns:
+ Tuple of (tag:int, len:int, remainder:bytes)
+ """
+ (tag, remainder) = bertlv_parse_tag_raw(binary)
+ (length, remainder) = bertlv_parse_len(remainder)
+ value = remainder[:length]
+ remainder = remainder[length:]
+ return (tag, length, value, remainder)
+
+def bertlv_return_one_rawtlv(binary: bytes) -> Tuple[int, int, bytes, bytes]:
+ """Return one single [encoded] TLV IE at the start of the given binary data.
+ Args:
+ binary : binary input data of BER-TLV length field
+ Returns:
+ Tuple of (tag:int, len:int, tlv:bytes, remainder:bytes)
+ """
+ (tag, remainder) = bertlv_parse_tag_raw(binary)
+ (length, remainder) = bertlv_parse_len(remainder)
+ tl_length = len(binary) - len(remainder)
+ value = binary[:tl_length] + remainder[:length]
+ remainder = remainder[length:]
+ return (tag, length, value, remainder)
def dgi_parse_tag_raw(binary: bytes) -> Tuple[int, bytes]:
# In absence of any clear spec guidance we assume it's always 16 bit
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/36969?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: I1e68a4003b833e86e9282c77325afa86ce144b98
Gerrit-Change-Number: 36969
Gerrit-PatchSet: 2
Gerrit-Owner: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-MessageType: merged
laforge has posted comments on this change. ( https://gerrit.osmocom.org/c/pysim/+/36969?usp=email )
Change subject: utils: Introduce BER-TLV parsers that return raw tag or even raw TLV
......................................................................
Patch Set 1: Code-Review+2
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/36969?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: I1e68a4003b833e86e9282c77325afa86ce144b98
Gerrit-Change-Number: 36969
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 03 Jun 2024 16:07:41 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment
Attention is currently required from: laforge.
falconia has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmo-abis/+/36975?usp=email )
Change subject: build config: add --disable-ortp option
......................................................................
Patch Set 1:
(1 comment)
Patchset:
PS1:
> I actually consider it a bug that only osmo-bts is using libortp; all other RTP endpoints [in my pla […]
In order to make ortp optional in OsmoBTS, we will need to provide an alternative implementation of the required jitter buffer facility. I have plans to implement one (please see OS#6474), but in terms of work schedule, I am probably still many months away from it.
However, allowing ortp to be disabled in libosmo-abis prior to those distant-plans OsmoBTS changes will significantly lower the pain for Slackware network servers builds. OsmoBTS does not run on MSC/BSC/etc servers, it runs on the sysmoBTS embedded box, while a more conventional x86 server machine (or many such machines in larger networks) runs everything from OsmoBSC up to OsmoHLR. This ortp dependency is a major pain point for non-Debian minimalist distros, and when I realized that it is not actually needed, the situation becomes a bug in need of a fix.
--
To view, visit https://gerrit.osmocom.org/c/libosmo-abis/+/36975?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmo-abis
Gerrit-Branch: master
Gerrit-Change-Id: I554260483b94d812ac3a957c969a902870f53883
Gerrit-Change-Number: 36975
Gerrit-PatchSet: 1
Gerrit-Owner: falconia <falcon(a)freecalypso.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-CC: laforge <laforge(a)osmocom.org>
Gerrit-Attention: laforge <laforge(a)osmocom.org>
Gerrit-Comment-Date: Mon, 03 Jun 2024 15:23:19 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: laforge <laforge(a)osmocom.org>
Gerrit-MessageType: comment
Attention is currently required from: falconia.
laforge has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmo-abis/+/36975?usp=email )
Change subject: build config: add --disable-ortp option
......................................................................
Patch Set 1:
(1 comment)
Patchset:
PS1:
I actually consider it a bug that only osmo-bts is using libortp; all other RTP endpoints [in my plans so far] should also use it.
I may of course be convinced otherwise.
In any case, I'm not sure if it's wise to allow disabling ortp while we still have osmo-bts requiring it. I'm not fundamentally opposed, but it sounds a bit premature to me?
--
To view, visit https://gerrit.osmocom.org/c/libosmo-abis/+/36975?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmo-abis
Gerrit-Branch: master
Gerrit-Change-Id: I554260483b94d812ac3a957c969a902870f53883
Gerrit-Change-Number: 36975
Gerrit-PatchSet: 1
Gerrit-Owner: falconia <falcon(a)freecalypso.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-CC: laforge <laforge(a)osmocom.org>
Gerrit-Attention: falconia <falcon(a)freecalypso.org>
Gerrit-Comment-Date: Mon, 03 Jun 2024 14:36:27 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment