python-nss-ng 1.2.1__tar.gz → 1.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- python_nss_ng-1.2.2/.git_archival.txt +4 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/PKG-INFO +1 -1
- python_nss_ng-1.2.2/_version.txt +1 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/pyproject.toml +0 -6
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/src/__init__.py +2 -1
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/src/nss_context.py +2 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/src/secure_logging.py +1 -6
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/uv.lock +0 -4
- python_nss_ng-1.2.1/.git_archival.txt +0 -4
- python_nss_ng-1.2.1/_version.txt +0 -1
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/.clangd +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/CONTRIBUTING.md +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/LICENSE +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/LICENSE.gpl +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/LICENSE.lgpl +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/LICENSE.mpl +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/LICENSES/Apache-2.0.txt +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/LICENSES/MPL-2.0.txt +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/MANIFEST.in +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/Makefile +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/QUICKSTART.md +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/README.md +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/REUSE.toml +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/SECURITY.md +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/doc/ChangeLog +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/doc/MAKEFILE_MIGRATION.md +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/doc/MANYLINUX_CONFIG.md +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/doc/MIGRATION.md +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/doc/MUTATION_TESTING.md +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/doc/TESTING.md +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/doc/examples/cert_dump.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/doc/examples/cert_trust.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/doc/examples/httplib_example.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/doc/examples/pbkdf2_example.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/doc/examples/ssl_cipher_info.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/doc/examples/ssl_example.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/doc/examples/ssl_version_range.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/doc/examples/verify_cert.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/doc/examples/verify_server.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/doc/get_api +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/meson.build +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/pyrightconfig.json +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/scripts/README.md +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/scripts/meson-version.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/scripts/run-all-tests.sh +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/src/NSPRerrs.h +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/src/SECerrs.h +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/src/SSLerrs.h +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/src/deprecations.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/src/io.pyi +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/src/nss.pyi +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/src/py_nspr_common.h +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/src/py_nspr_error.c +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/src/py_nspr_error.h +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/src/py_nspr_io.c +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/src/py_nspr_io.h +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/src/py_nss.c +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/src/py_nss.h +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/src/py_shared_doc.h +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/src/py_ssl.c +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/src/py_ssl.h +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/src/py_traceback.h +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/src/ssl.pyi +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/conftest.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/exceptions.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/run_tests +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/setup_certs.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/test_cert_components.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/test_cert_request.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/test_certificate_advanced.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/test_cipher.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/test_client_server.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/test_deprecations.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/test_digest.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/test_documentation_accuracy.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/test_examples.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/test_misc.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/test_performance.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/test_pkcs12.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/test_platform_specific.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/test_property_based.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/test_secure_logging.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/test_security.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/test_thread_safety.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/test_type_hints.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/test_util.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/test_zzz_error_messages.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/test_zzz_integration.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/test_zzz_nonexistent_certs.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/test_zzz_nss_context.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/test_zzz_ocsp.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/test/util.py +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/typings/nss/__init__.pyi +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/typings/nss/error.pyi +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/typings/nss/io.pyi +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/typings/nss/nss.pyi +0 -0
- {python_nss_ng-1.2.1 → python_nss_ng-1.2.2}/typings/nss/ssl.pyi +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-nss-ng
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.2
|
|
4
4
|
Summary: Python bindings for Network Security Services (NSS) and Netscape Portable Runtime (NSPR)
|
|
5
5
|
Keywords: nss,nspr,cryptography,ssl,tls,pki,x509,security
|
|
6
6
|
Author-Email: John Dennis <jdennis@redhat.com>, Matthew Watkins <mwatkins@linuxfoundation.org>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.2.2
|
|
@@ -319,9 +319,3 @@ before-all = "yum install -y nss-devel nspr-devel pkg-config || apt-get update &
|
|
|
319
319
|
|
|
320
320
|
[tool.cibuildwheel.macos]
|
|
321
321
|
before-all = "brew install nss nspr pkg-config"
|
|
322
|
-
|
|
323
|
-
[tool.uv]
|
|
324
|
-
# Supply-chain cooldown: do not resolve anything published in the last
|
|
325
|
-
# 7 days (rolling window; uv records it as a relative span in uv.lock).
|
|
326
|
-
# Requires uv >= 0.9.17 for the relative-duration ("7 days") form.
|
|
327
|
-
exclude-newer = "7 days"
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
# SPDX-License-Identifier: MPL-2.0
|
|
5
5
|
# SPDX-FileCopyrightText: Copyright (c) 2010-2025 python-nss-ng contributors
|
|
6
6
|
|
|
7
|
+
# aislop-ignore-file ai-slop/unused-import -- "import" lines flagged here are RST code examples inside a documentation string, not real imports (ruff F401 validates the real ones)
|
|
8
|
+
|
|
7
9
|
import sys
|
|
8
10
|
from importlib.metadata import PackageNotFoundError
|
|
9
11
|
from importlib.metadata import version as _pkg_version
|
|
@@ -154,7 +156,6 @@ Things All NSS programs must do
|
|
|
154
156
|
|
|
155
157
|
- Import the NSS/NSPR modules::
|
|
156
158
|
|
|
157
|
-
from nss.error import NSPRError
|
|
158
159
|
import nss.io as io
|
|
159
160
|
import nss.nss as nss
|
|
160
161
|
import nss.ssl as ssl
|
|
@@ -29,6 +29,8 @@ import logging
|
|
|
29
29
|
from collections.abc import Callable, Generator
|
|
30
30
|
from typing import Any
|
|
31
31
|
|
|
32
|
+
# aislop-ignore-file ai-slop/hallucinated-import -- "nss" is this package's own compiled C-extension module (built from py_nss.c)
|
|
33
|
+
|
|
32
34
|
logger = logging.getLogger(__name__)
|
|
33
35
|
|
|
34
36
|
|
|
@@ -127,7 +127,6 @@ def check_message_safety(message: str) -> LogSensitivity:
|
|
|
127
127
|
"""
|
|
128
128
|
message_lower = message.lower()
|
|
129
129
|
|
|
130
|
-
# Check for forbidden patterns
|
|
131
130
|
for pattern in FORBIDDEN_LOG_PATTERNS:
|
|
132
131
|
if pattern in message_lower:
|
|
133
132
|
return LogSensitivity.SENSITIVE
|
|
@@ -272,7 +271,6 @@ def log_exception_safely(
|
|
|
272
271
|
# Log only the exception type and context
|
|
273
272
|
msg = f"{context}: {exc_type} occurred (details redacted for security)"
|
|
274
273
|
elif sensitivity == LogSensitivity.REDACTED:
|
|
275
|
-
# Log with redaction
|
|
276
274
|
msg = f"{context}: {exc_type}: {redact_message(exc_message)}"
|
|
277
275
|
else:
|
|
278
276
|
# Safe to log
|
|
@@ -329,23 +327,20 @@ class SecureExceptionHandler:
|
|
|
329
327
|
|
|
330
328
|
def __exit__(self, exc_type, exc_val, exc_tb):
|
|
331
329
|
if exc_type is not None:
|
|
332
|
-
|
|
330
|
+
|
|
333
331
|
def logger_fn(msg: str) -> None:
|
|
334
332
|
self.logger.log(self.log_level, msg)
|
|
335
333
|
|
|
336
334
|
log_exception_safely(logger_fn, exc_val, self.context)
|
|
337
335
|
|
|
338
|
-
# Return False to re-raise, True to suppress
|
|
339
336
|
return not self.reraise
|
|
340
337
|
return None
|
|
341
338
|
|
|
342
339
|
|
|
343
340
|
# Example usage patterns
|
|
344
341
|
if __name__ == "__main__":
|
|
345
|
-
# Configure logging
|
|
346
342
|
logging.basicConfig(level=logging.DEBUG)
|
|
347
343
|
|
|
348
|
-
# Create secure logger
|
|
349
344
|
logger = get_secure_logger(__name__)
|
|
350
345
|
|
|
351
346
|
# Safe logging
|
|
@@ -9,10 +9,6 @@ resolution-markers = [
|
|
|
9
9
|
"python_full_version < '3.12'",
|
|
10
10
|
]
|
|
11
11
|
|
|
12
|
-
[options]
|
|
13
|
-
exclude-newer = "0001-01-01T00:00:00Z" # This has no effect and is included for backwards compatibility when using relative exclude-newer values.
|
|
14
|
-
exclude-newer-span = "P7D"
|
|
15
|
-
|
|
16
12
|
[[package]]
|
|
17
13
|
name = "ast-serialize"
|
|
18
14
|
version = "0.3.0"
|
python_nss_ng-1.2.1/_version.txt
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1.2.1
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|