From 012b0f8f75e7f327a96e0d116468a3028fa9f83c Mon Sep 17 00:00:00 2001 From: Maximilian Deubel Date: Wed, 8 Jul 2026 13:42:08 +0200 Subject: [PATCH 1/3] chore: update nrfcredstore Signed-off-by: Maximilian Deubel --- poetry.lock | 10 +++++----- pyproject.toml | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/poetry.lock b/poetry.lock index 3b33d38..e59e611 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.3.4 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.3.2 and should not be changed by hand. [[package]] name = "ansicon" @@ -1149,14 +1149,14 @@ files = [ [[package]] name = "nrfcredstore" -version = "2.0.9" +version = "2.1.0" description = "Manage credentials stored in Nordic Semiconductor modems." optional = false python-versions = "<4.0,>=3.10" groups = ["main"] files = [ - {file = "nrfcredstore-2.0.9-py3-none-any.whl", hash = "sha256:9dfbbdd678763f77a1ad7eaa05bc7bc307e9fe2f3b3c26acd59e9156ebde843e"}, - {file = "nrfcredstore-2.0.9.tar.gz", hash = "sha256:dffb31d84c4a15478beccc27cdbc515db9a3dc0901738501cf4f942fc2bd6db5"}, + {file = "nrfcredstore-2.1.0-py3-none-any.whl", hash = "sha256:fe0fc755f3fc8fc4c731ebd25324cb8577716cce63e021ef06318ae3883ae62a"}, + {file = "nrfcredstore-2.1.0.tar.gz", hash = "sha256:4b5c72117b096dbff9c33798ef3a2e5d4046f32d2dd07cc631eb49bf00dd672b"}, ] [package.dependencies] @@ -2070,4 +2070,4 @@ cffi = ["cffi (>=1.17,<2.0) ; platform_python_implementation != \"PyPy\" and pyt [metadata] lock-version = "2.1" python-versions = ">=3.10,<4.0" -content-hash = "ec36c38077a6328b5edd7cea048e40a8b7bda26d22a54ee4e4afa3701045313e" +content-hash = "cb6f42086540e20b9e4a3acc0f33279cdb09da51c97a5e9686765b8e1b5ad552" diff --git a/pyproject.toml b/pyproject.toml index ffcab25..208cb20 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,7 +21,7 @@ dependencies = [ "semver>=3.0.0", "pyjwt>=2.3.0", "inquirer>=3.4.0", - "nrfcredstore>=2.0.9", + "nrfcredstore>=2.1.0", ] [project.urls] From bcd92a0b0b2b117863ed6740aadb531e03a80203 Mon Sep 17 00:00:00 2001 From: Maximilian Deubel Date: Wed, 8 Jul 2026 13:50:17 +0200 Subject: [PATCH 2/3] chore: update urllib Signed-off-by: Maximilian Deubel --- poetry.lock | 34 +++++++++++++++++----------------- pyproject.toml | 4 ++-- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/poetry.lock b/poetry.lock index e59e611..d34432d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.3.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.4.1 and should not be changed by hand. [[package]] name = "ansicon" @@ -1243,14 +1243,14 @@ testing = ["coverage", "pytest", "pytest-benchmark"] [[package]] name = "poetry" -version = "2.3.4" +version = "2.4.1" description = "Python dependency management and packaging made easy." optional = false python-versions = "<4.0,>=3.10" groups = ["dev"] files = [ - {file = "poetry-2.3.4-py3-none-any.whl", hash = "sha256:2755806ed8a9f31340ea1b5f0e507da54c96437647ebf2873b6ca349be04e231"}, - {file = "poetry-2.3.4.tar.gz", hash = "sha256:b293572d366569360c79d7caa6980c9b404d2b89530ed451a5b4570d248de3af"}, + {file = "poetry-2.4.1-py3-none-any.whl", hash = "sha256:a91f13279a3c9add0d12c5ca5c7cb173622930a5c8272fee68c751cb5c72f951"}, + {file = "poetry-2.4.1.tar.gz", hash = "sha256:189399b80347ecf908244b2564a7b1d92b648fa1fe2a204888f94a472fec0cac"}, ] [package.dependencies] @@ -1259,14 +1259,14 @@ cachecontrol = {version = ">=0.14.0,<0.15.0", extras = ["filecache"]} cleo = ">=2.1.0,<3.0.0" dulwich = ">=0.25.0,<2" fastjsonschema = ">=2.18.0,<3.0.0" -findpython = ">=0.6.2,<0.8.0" -installer = ">=0.7.0,<0.8.0" +findpython = ">=0.6.2,<0.9.0" +installer = ">=0.7.0,<2.0.0" keyring = ">=25.1.0,<26.0.0" packaging = ">=24.2" pbs-installer = {version = ">=2025.6.10", extras = ["download", "install"]} pkginfo = ">=1.12,<2.0" platformdirs = ">=3.0.0,<5" -poetry-core = "2.3.2" +poetry-core = "2.4.0" pyproject-hooks = ">=1.0.0,<2.0.0" requests = ">=2.26,<3.0" requests-toolbelt = ">=1.0.0,<2.0.0" @@ -1279,14 +1279,14 @@ xattr = {version = ">=1.0.0,<2.0.0", markers = "sys_platform == \"darwin\""} [[package]] name = "poetry-core" -version = "2.3.2" +version = "2.4.0" description = "Poetry PEP 517 Build Backend" optional = false python-versions = "<4.0,>=3.10" groups = ["dev"] files = [ - {file = "poetry_core-2.3.2-py3-none-any.whl", hash = "sha256:23df641b64f87fbb4ce1873c1915a4d4bb1b7d808c596e4307edc073e68d7234"}, - {file = "poetry_core-2.3.2.tar.gz", hash = "sha256:20cb71be27b774628da9f384effd9183dfceb53bcef84063248a8672aa47031f"}, + {file = "poetry_core-2.4.0-py3-none-any.whl", hash = "sha256:4305848477da00272bebd3f615bbec87f64bd117cdb858ab660b626a06a9d96c"}, + {file = "poetry_core-2.4.0.tar.gz", hash = "sha256:4e8c7496cf797998ffc493f2e23eba4b038c894c08eadacdcdf688945de6b43a"}, ] [[package]] @@ -1765,21 +1765,21 @@ markers = {main = "python_version == \"3.10\"", dev = "python_version < \"3.13\" [[package]] name = "urllib3" -version = "2.5.0" +version = "2.7.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["main", "dev"] files = [ - {file = "urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc"}, - {file = "urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760"}, + {file = "urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897"}, + {file = "urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c"}, ] [package.extras] -brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] +brotli = ["brotli (>=1.2.0) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=1.2.0.0) ; platform_python_implementation != \"CPython\""] h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] +zstd = ["backports-zstd (>=1.0.0) ; python_version < \"3.14\""] [[package]] name = "virtualenv" @@ -2070,4 +2070,4 @@ cffi = ["cffi (>=1.17,<2.0) ; platform_python_implementation != \"PyPy\" and pyt [metadata] lock-version = "2.1" python-versions = ">=3.10,<4.0" -content-hash = "cb6f42086540e20b9e4a3acc0f33279cdb09da51c97a5e9686765b8e1b5ad552" +content-hash = "4187edc2d7750ab487dadfad2b322dff805c2a0dd19497bf0cb496b88ecae3d4" diff --git a/pyproject.toml b/pyproject.toml index 208cb20..c42ad03 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,7 +17,7 @@ dependencies = [ "cryptography>=46.0.5", "cffi>=2.0.0", "requests>=2.32.0", - "urllib3>=2.2.2", + "urllib3>=2.7.0", "semver>=3.0.0", "pyjwt>=2.3.0", "inquirer>=3.4.0", @@ -46,7 +46,7 @@ dev = [ "pytest>=7.3.1", "pytest-cov>=4.0.0", "pytest-watch>=4.2.0", - "poetry (>=2.3.4,<3.0.0)", # used for development today. might be migrated to uv in the future. + "poetry (>=2.4.1,<3.0.0)", # used for development today. might be migrated to uv in the future. ] [tool.poetry] From f10782ebe661ee1d0b9020a7ba005785fefa3e28 Mon Sep 17 00:00:00 2001 From: Maximilian Deubel Date: Wed, 8 Jul 2026 13:53:56 +0200 Subject: [PATCH 3/3] fix: name csr less strict Signed-off-by: Maximilian Deubel --- tests/test_modem_credentials_parser.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/test_modem_credentials_parser.py b/tests/test_modem_credentials_parser.py index 9075f03..3fc7618 100644 --- a/tests/test_modem_credentials_parser.py +++ b/tests/test_modem_credentials_parser.py @@ -9,6 +9,7 @@ KEYGEN_CSR = "MIIBCjCBrwIBADAvMS0wKwYDVQQDDCQ1MDM2MzE1NC0zOTMxLTQ0ZjAtODAyMi0xMjFiNjQwMTYyN2QwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQqD6pNfa29o_EXnw62bnQWr8-JqsNh_HZxS3k3bMD4KZ8-qxnvgeoiqQ5zAycEP_Wcmzqypvwyf3qWMrZ2VB5aoB4wHAYJKoZIhvcNAQkOMQ8wDTALBgNVHQ8EBAMCA-gwDAYIKoZIzj0EAwIFAANIADBFAiEAv7OLZ_dXbszfhhjcLMUT72wTmw-z6GlgWxVhyWgR27ACIAvY_lPu3yfYZY5AL6uYTkUFp4GQkbSOUC_lsHyCxOuG.0oRDoQEmoQRBIVhL2dn3hQlQUDYxVDkxRPCAIhIbZAFifUERWCBwKj1W8FsvclMdZQgl4gBB4unZMYw0toU6uQZuXHLoDFAbhyLuHetYFWbiyxNZsnzSWEDUiTl7wwFt0hEsCiEQsxj-hCtpBk8Za8UXfdAycpx2faCOPJIrkfmiSS8-Y6_2tTAoAMN1BiWiTOimY1wZE3Ud" KEYGEN_CSR_DATA = { "CSR_PEM": b'-----BEGIN CERTIFICATE REQUEST-----\nMIIBCDCBrwIBADAvMS0wKwYDVQQDDCQ1MDM2MzE1NC0zOTMxLTQ0ZjAtODAyMi0x\nMjFiNjQwMTYyN2QwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQqD6pNfa29o/EX\nnw62bnQWr8+JqsNh/HZxS3k3bMD4KZ8+qxnvgeoiqQ5zAycEP/Wcmzqypvwyf3qW\nMrZ2VB5aoB4wHAYJKoZIhvcNAQkOMQ8wDTALBgNVHQ8EBAMCA+gwCgYIKoZIzj0E\nAwIDSAAwRQIhAL+zi2f3V27M34YY3CzFE+9sE5sPs+hpYFsVYcloEduwAiAL2P5T\n7t8n2GWOQC+rmE5FBaeBkJG0jlAv5bB8gsTrhg==\n-----END CERTIFICATE REQUEST-----\n', + "CSR_PEM_NORMALIZED": b'-----BEGIN CERTIFICATE REQUEST-----\nMIIBCjCBrwIBADAvMS0wKwYDVQQDDCQ1MDM2MzE1NC0zOTMxLTQ0ZjAtODAyMi0x\nMjFiNjQwMTYyN2QwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQqD6pNfa29o/EX\nnw62bnQWr8+JqsNh/HZxS3k3bMD4KZ8+qxnvgeoiqQ5zAycEP/Wcmzqypvwyf3qW\nMrZ2VB5aoB4wHAYJKoZIhvcNAQkOMQ8wDTALBgNVHQ8EBAMCA+gwDAYIKoZIzj0E\nAwIFAANIADBFAiEAv7OLZ/dXbszfhhjcLMUT72wTmw+z6GlgWxVhyWgR27ACIAvY\n/lPu3yfYZY5AL6uYTkUFp4GQkbSOUC/lsHyCxOuG\n-----END CERTIFICATE REQUEST-----\n', "PUB_PEM" : b'-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKg+qTX2tvaPxF58Otm50Fq/PiarD\nYfx2cUt5N2zA+CmfPqsZ74HqIqkOcwMnBD/1nJs6sqb8Mn96ljK2dlQeWg==\n-----END PUBLIC KEY-----\n', "UUID" : "50363154-3931-44f0-8022-121b6401627d", "SEC_TAG" : "17", @@ -32,7 +33,7 @@ class TestModemCredentialsParser: def test_parse_keygen_output_csr(self): csr_pem_bytes, pub_key_bytes, dev_uuid_hex_str, sec_tag_str = \ modem_credentials_parser.parse_keygen_output(KEYGEN_CSR) - assert csr_pem_bytes == KEYGEN_CSR_DATA["CSR_PEM"] + assert csr_pem_bytes == KEYGEN_CSR_DATA["CSR_PEM"] or KEYGEN_CSR_DATA["CSR_PEM_NORMALIZED"] assert pub_key_bytes == KEYGEN_CSR_DATA["PUB_PEM"] assert dev_uuid_hex_str == KEYGEN_CSR_DATA["UUID"] assert sec_tag_str == KEYGEN_CSR_DATA["SEC_TAG"]