pax_global_header 0000666 0000000 0000000 00000000064 15067467423 0014530 g ustar 00root root 0000000 0000000 52 comment=4c0a0c403d51dd637d98343b5df2cb295b225026 m2crypto-0.46.2/ 0000775 0000000 0000000 00000000000 15067467423 0013400 5 ustar 00root root 0000000 0000000 m2crypto-0.46.2/.builds/ 0000775 0000000 0000000 00000000000 15067467423 0014740 5 ustar 00root root 0000000 0000000 m2crypto-0.46.2/.builds/fedora.yml 0000664 0000000 0000000 00000004046 15067467423 0016727 0 ustar 00root root 0000000 0000000 image: fedora/rawhide oauth: git.sr.ht/REPOSITORIES:RW git.sr.ht/PROFILE:RO packages: - hut - swig - python3 - python3-devel - python3-pip - openssl-devel - openssl-devel-engine - openssl - python3-setuptools - python3-twisted - python3-irc - python3-docutils - python3-mypy environment: CFLAGS: -pthread -Wno-unused-result -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -D_GNU_SOURCE -fwrapv sources: - https://git.sr.ht/~mcepl/m2crypto secrets: - nickserv_pass tasks: - build: | cd m2crypto export PATH=$PATH:$HOME/.local/bin python3 -mpip install --user -r dev-requirements.txt python3 -mpip wheel --verbose --no-cache-dir --no-clean --no-build-isolation --wheel-dir dist/ --editable . find . -name \*.c find . -name \*.whl -o -name \*.tar.gz mkdir -p shadowing/sys && touch shadowing/sys/types.h python3 -mpip install -v --upgrade --target $(readlink -f build/lib.*) --no-compile --ignore-installed --no-deps --no-index dist/[mM]2[cC]rypto*.whl - mypy: | cd m2crypto PYTHONPATH=$(readlink -f build/lib.*) python3 -mmypy --no-color-output -p M2Crypto - test: | cd m2crypto PYTHONPATH=$(readlink -f build/lib.*) python3 -munittest -b -v tests.alltests.suite [ -n "$GIT_REF" ] && REASON="$JOB_ID ($GIT_REF)" [ -n "$PATCHSET_URL" ] && REASON="$JOB_ID ($PATCHSET_URL)" echo "Sourcehut build $BUILD_REASON finished with the result $? ($JOB_URL)." \ | .builds/irc-send irc.ergo.chat commit-bot mcepl "#m2crypto" - readme: | cd m2crypto printf "GIT_REF: %s\n" "${GIT_REF}" python3 -mdocutils --strict README.rst >/dev/null case $GIT_REF in *master*) python3 -mdocutils README.rst \ | sed -n '1,/
/d;/<\/body>/q;p' \ |hut git -r m2crypto update --readme - ;; esac artifacts: - m2crypto/src/SWIG/_m2crypto_wrap.c # https://is.gd/Z5VJlI # - pygn/dist/pygn-*.tar.gz # - pygn/dist/pygn-*.whl m2crypto-0.46.2/.builds/irc-send 0000775 0000000 0000000 00000011022 15067467423 0016366 0 ustar 00root root 0000000 0000000 #! /usr/bin/env python3 # # IRC Cat script using irc.client.SimpleIRCClient with SASL and SSL/TLS. # # IMPORTANT: sasl_login must equal your nickserv account name # # Adapted to read configuration from CLI and password from ~/.irc_pass. import logging import functools import ssl import sys import os import argparse import irc.client import irc.connection import functools import ssl import sys import os import argparse import irc.client import irc.connection class IRCCat(irc.client.SimpleIRCClient): # Simplified __init__ for demonstration def __init__(self, target): irc.client.SimpleIRCClient.__init__(self) self.target = target def on_welcome(self, connection, event): # The library handles SASL negotiation automatically before this event, # but joining is often safe here if SASL fails/isn't supported. # Note: For strict SASL-only connection, you might wait for a 'logged_in' event if available. if irc.client.is_channel(self.target): connection.join(self.target) else: self.send_it() def on_login_failed(self, connection, event): # A specific event handler for login failure (e.g., SASL failed) logging.error(f"Login failed: {event.arguments[0]}") # Note: Depending on the server, you might get a standard DISCONNECT event instead. def on_join(self, connection, event): self.send_it() def on_disconnect(self, connection, event): logging.debug(f"Disconnected: {event.arguments[0]}") sys.exit(0) def send_it(self): # Reads from stdin and sends as PRIVMSG while 1: try: line = sys.stdin.readline().strip() except EOFError: break if not line: break self.connection.privmsg(self.target, line) quit_message = "Using irc.client.py (SASL-SSL)" self.connection.quit(quit_message) # Stop the reactor immediately after sending QUIT. # This prevents the client from waiting for and reacting to the # server's final QUIT/ERROR sequence, which causes the peer reset message. self.connection.reactor.disconnect_all() def read_password_from_file(): """Reads and strips the password from the ~/.irc_pass file.""" password_file_path = os.path.expanduser("~/.irc_pass") try: with open(password_file_path, "r") as f: # Read and strip leading/trailing whitespace, including EOL password = f.read().strip() if not password: raise ValueError("Password file is empty.") return password except FileNotFoundError: logging.error( f"Error: Password file not found at {password_file_path}" ) sys.exit(1) except Exception as e: logging.error(f"Error reading password file: {e}") sys.exit(1) def get_args(): parser = argparse.ArgumentParser( description="IRC Cat client with SASL and SSL/TLS." ) parser.add_argument("server", help="IRC server hostname (e.g., irc.ergo.chat)") parser.add_argument("nickname", help="IRC nickname to use") parser.add_argument( "account", help="SASL account name (usually your NickServ name)" ) parser.add_argument("target", help="A nickname or channel (e.g., #mychannel)") parser.add_argument( "-p", "--port", default=6697, type=int, help="Port number (default 6697 for TLS)", ) return parser.parse_args() def main(): logging.basicConfig( format="%(levelname)s:%(funcName)s:%(message)s", level=logging.INFO ) args = get_args() password = read_password_from_file() context = ssl.create_default_context() context.load_default_certs(ssl.Purpose.SERVER_AUTH) # Ensure system CAs are loaded wrapper = functools.partial(context.wrap_socket, server_hostname=args.server) c = IRCCat(args.target) try: c.connect( args.server, args.port, args.nickname, password, # <-- IRC PASS (Used for SASL PLAIN) sasl_login=args.account, # <-- SASL Account Name username=args.account, # Use account name as ident user connect_factory=irc.connection.Factory(wrapper=wrapper), ) logging.debug("Connection initiated successfully.") except irc.client.ServerConnectionError as x: logging.error(f"Connection Error: {x}") sys.exit(1) c.start() if __name__ == "__main__": main() m2crypto-0.46.2/.editorconfig 0000664 0000000 0000000 00000000331 15067467423 0016052 0 ustar 00root root 0000000 0000000 root = true [*.{py,pyi,c,cpp,h,rst,md,yml,yaml,json,test}] trim_trailing_whitespace = true insert_final_newline = true indent_style = space [*.{py,pyi,c,h,json,test}] indent_size = 4 [*.{yml,yaml}] indent_size = 2 m2crypto-0.46.2/.git-blame-ignore-revs 0000664 0000000 0000000 00000000173 15067467423 0017501 0 ustar 00root root 0000000 0000000 # Blackening of the whole tree 69c02442aedd8239e13678ced5cdcbc6f52f111c # hinting 0f7ba2a62522076fa42c79fb09a6b40aa0c0a047 m2crypto-0.46.2/.gitignore 0000664 0000000 0000000 00000000342 15067467423 0015367 0 ustar 00root root 0000000 0000000 *.pyc *.txt *~ /build /dist /src/M2Crypto/*_m2crypto*.so M2Crypto.egg-info /.eggs/ /EGG-INFO /tests/randpool.dat /tests/sig.p7 /tests/sig.p7s /tests/tmpcert.der MANIFEST *.tap src/SWIG/_m2crypto_wrap.c !*requirements.txt .env m2crypto-0.46.2/.gitlab-ci-windows.yml 0000664 0000000 0000000 00000005463 15067467423 0017534 0 ustar 00root root 0000000 0000000 # Common steps that install Python, OpenSSL and Swig .setup_script: &setup_script # Install Python and Swig - $CHOCOLATEY_PYTHON_OPTIONS = If ($ARCH -eq "32") {"--forcex86"} Else {""} # Used to force the installation of 32-bit Python - choco install --limitoutput --yes $CHOCOLATEY_PYTHON_OPTIONS python$PYTHON_VERSION - choco install --limitoutput --yes swig # Reload the profile so that the binaries are available in the path - Import-Module $env:ChocolateyInstall\helpers\chocolateyProfile.psm1 - refreshenv # Print information for debugging - echo "Python version and architecture:" - python --version - python -c 'import struct; print(struct.calcsize(''P'') * 8)' - echo "Install OpenSSL" - curl.exe -o "c:\\$OPENSSL_INSTALLER" -fsSL "https://slproweb.com/download/$OPENSSL_INSTALLER" - Start-Process -FilePath "c:\\$OPENSSL_INSTALLER" -ArgumentList "/silent /verysilent /DIR=$OPENSSL_PATH" -NoNewWindow -Wait - echo "Install pywin32"; python -m pip install pywin32 # Print information for debugging - ls "$OPENSSL_PATH" - echo "Installed SDKs:"; if (Test-Path "C:/Program Files/Microsoft SDKs/Windows") { ls "C:/Program Files/Microsoft SDKs/Windows" } - echo "Installed OpenSSL version:" - Start-Process -FilePath "$OPENSSL_PATH\\bin\\openssl.exe" -ArgumentList "version" -Wait -NoNewWindow - echo "Python OpenSSL version:"; python -c 'import ssl; print(getattr(ssl, ''OPENSSL_VERSION'', None))' # Install Python dependencies and OpenSSL - echo "Install dev dependencies"; python -m pip install -r dev-requirements.txt build-test-windows: stage: build parallel: matrix: - ARCH: ["32", "64"] PYTHON_VERSION: [ "310", "311", "312", "313" ] variables: OPENSSL_INSTALLER: "Win${ARCH}OpenSSL-1_1_1w.exe" OPENSSL_PATH: "C:\\OpenSSL-1-1-Win${ARCH}" BUNDLEDLLS: 1 tags: - saas-windows-medium-amd64 artifacts: paths: - "dist/*" script: # Setup environment (Python, Swig, OpenSSL, etc) - *setup_script # Build wheel - echo "BUNDLEDLLS is set to $env:BUNDLEDLLS" - python -m pip wheel --verbose --no-build-isolation --no-deps --wheel-dir .\\dist --editable . - ls ".\\dist" # Install wheel - $env:PYTHONPATH_DIR = If ($ARCH -eq "32") {"win32-cpython-$PYTHON_VERSION"} Else {"win-amd64-cpython-$PYTHON_VERSION"} - python -m pip install -v --upgrade --target build/lib.$PYTHONPATH_DIR --no-compile --ignore-installed --no-deps --no-index --find-links dist m2crypto # Run tests - $env:PYTHONPATH = "build/lib.$PYTHONPATH_DIR"; python -m unittest -b -v tests.alltests.suite rules: - if: ($CI_COMMIT_BRANCH == "master" || $CI_COMMIT_BRANCH =~ /^windows.*/) # Run for all changes to master or branches starting with "windows" - if: $CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+$/ # Also run when pushing tags for versions, e.g: 0.40.1 m2crypto-0.46.2/.gitlab-ci.yml 0000664 0000000 0000000 00000030237 15067467423 0016041 0 ustar 00root root 0000000 0000000 stages: - build - deploy include: '/.gitlab-ci-windows.yml' python39: image: python:3.9-alpine when: always stage: build script: - apk update - apk add --no-interactive swig gcc git musl-dev python3-dev python3 py3-pip openssl-dev openssl py3-setuptools py3-twisted py3-docutils py3-wheel - mkdir -p $HOME/.local/bin - ls $HOME/.local/bin - export PATH=$PATH:$HOME/.local/bin - python3 -mpip install --break-system-packages --user -r dev-requirements.txt - ls $HOME/.local/bin - python3 -mpip wheel --verbose --no-cache-dir --no-clean --no-build-isolation --wheel-dir dist/ --editable . - python3 -mpip install --break-system-packages -v --upgrade --target $(readlink -f build/lib.*) --no-compile --ignore-installed --no-deps --no-index dist/[mM]2[cC]rypto*.whl - PYTHONPATH=$(readlink -f build/lib.*) python3 -munittest -b -v tests.alltests.suite - echo "$PYTHONPATH" ; python3 -c 'import sys; print(sys.path)' python3: image: python:3 when: always stage: build script: - apt-get update -q -y - apt-get install -y swig libssl-dev python3-dev python3-pip openssl python3-setuptools python3-twisted python3-pip python3-irc - mkdir -p $HOME/.local/bin - ls $HOME/.local/bin - export PATH=$PATH:$HOME/.local/bin - python3 -mpip install --break-system-packages --user -r dev-requirements.txt - ls $HOME/.local/bin - python3 -mpip wheel --verbose --no-cache-dir --no-clean --no-build-isolation --wheel-dir dist/ --editable . - python3 -mpip install --break-system-packages -v --upgrade --target $(readlink -f build/lib.*) --no-compile --ignore-installed --no-deps --no-index dist/[mM]2[cC]rypto*.whl - PYTHONPATH=$(readlink -f build/lib.*) python3 -munittest -b -v tests.alltests.suite - echo "$PYTHONPATH" ; python3 -c 'import sys; print(sys.path)' alpine-32bit: image: name: i386/alpine entrypoint: ["linux32"] when: always stage: build script: - apk update - apk add --no-interactive swig gcc git musl-dev python3-dev python3 py3-pip openssl-dev openssl py3-setuptools py3-twisted py3-docutils py3-wheel - mkdir -p $HOME/.local/bin - ls $HOME/.local/bin - export PATH=$PATH:$HOME/.local/bin - python3 -mpip install --break-system-packages --user -r dev-requirements.txt - ls $HOME/.local/bin - python3 -mpip wheel --verbose --no-cache-dir --no-clean --no-build-isolation --wheel-dir dist/ --editable . - python3 -mpip install --break-system-packages -v --upgrade --target $(readlink -f build/lib.*) --no-compile --ignore-installed --no-deps --no-index dist/[mM]2[cC]rypto*.whl - PYTHONPATH=$(readlink -f build/lib.*) python3 -munittest -b -v tests.alltests.suite - echo "$PYTHONPATH" ; python3 -c 'import sys; print(sys.path)' - echo "$IRC_PASS" > ~/.irc_pass && chmod 600 ~/.irc_pass - echo "GitLab build task $CI_JOB_NAME for $REASON finished with the result $? ($CI_JOB_URL)." | .builds/irc-send irc.ergo.chat commit-bot mcepl "#m2crypto" python3-32bit: image: name: i386/debian entrypoint: ["linux32"] when: always stage: build script: - apt-get update -q -y - apt-get install -y swig gcc git libc6-dev python3-dev python3 python3-pip libssl-dev openssl python3-setuptools python3-twisted python3-docutils python3-wheel - mkdir -p $HOME/.local/bin - ls $HOME/.local/bin - export PATH=$PATH:$HOME/.local/bin - python3 -mpip install --break-system-packages --user -r dev-requirements.txt - ls $HOME/.local/bin - python3 -mpip wheel --verbose --no-cache-dir --no-clean --no-build-isolation --wheel-dir dist/ --editable . - python3 -mpip install --break-system-packages -v --upgrade --target $(readlink -f build/lib.*) --no-compile --ignore-installed --no-deps --no-index dist/[mM]2[cC]rypto*.whl - PYTHONPATH=$(readlink -f build/lib.*) python3 -munittest -b -v tests.alltests.suite - echo "$PYTHONPATH" ; python3 -c 'import sys; print(sys.path)' - echo "$IRC_PASS" > ~/.irc_pass && chmod 600 ~/.irc_pass - echo "GitLab build task $CI_JOB_NAME for $REASON finished with the result $? ($CI_JOB_URL)." | .builds/irc-send irc.ergo.chat commit-bot mcepl "#m2crypto" python3-doctest: image: python:3 when: always stage: build script: - apt-get update -q -y - apt-get install -y swig libssl-dev python3-dev python3-pip openssl python3-setuptools python3-twisted python3-pip python3-irc - mkdir -p $HOME/.local/bin - ls $HOME/.local/bin - export PATH=$PATH:$HOME/.local/bin - python3 -mpip install --break-system-packages --user -r dev-requirements.txt - python3 -mpip install --break-system-packages --user -r doc/requirements.txt - ls $HOME/.local/bin - python3 -mpip wheel --verbose --no-cache-dir --no-clean --no-build-isolation --wheel-dir dist/ --editable . - python3 -mpip install --break-system-packages -v --upgrade --target $(readlink -f build/lib.*) --no-compile --ignore-installed --no-deps --no-index dist/[mM]2[cC]rypto*.whl - PYTHONPATH=$(readlink -f build/lib.*) make -C doc/ doctest - echo "$PYTHONPATH" ; python3 -c 'import sys; print(sys.path)' - echo "$IRC_PASS" > ~/.irc_pass && chmod 600 ~/.irc_pass - echo "GitLab build task $CI_JOB_NAME for $REASON finished with the result $? ($CI_JOB_URL)." | .builds/irc-send irc.ergo.chat commit-bot mcepl "#m2crypto" fedora: image: quay.io/fedora/fedora:latest when: always stage: build script: - dnf makecache - dnf install -y @development-tools fedora-packager rpmdevtools - dnf install -y swig python3-devel python3-pip openssl-devel openssl python3-setuptools python3-twisted openssl-devel-engine python3-irc - mkdir -p $HOME/.local/bin - ls $HOME/.local/bin - export PATH=$PATH:$HOME/.local/bin - python3 -mpip install --user -r dev-requirements.txt - ls $HOME/.local/bin - python3 -mpip wheel --verbose --no-cache-dir --no-clean --no-build-isolation --wheel-dir dist/ --editable . - python3 -mpip install -v --upgrade --target $(readlink -f build/lib.*) --no-compile --ignore-installed --no-deps --no-index dist/[mM]2[cC]rypto*.whl - PYTHONPATH=$(readlink -f build/lib.*) python3 -munittest -b -v tests.alltests.suite - echo "$PYTHONPATH" ; python3 -c 'import sys; print(sys.path)' - echo "$IRC_PASS" > ~/.irc_pass && chmod 600 ~/.irc_pass - echo "GitLab build task $CI_JOB_NAME for $REASON finished with the result $? ($CI_JOB_URL)." | .builds/irc-send irc.ergo.chat commit-bot mcepl "#m2crypto" fedora-rawhide: image: quay.io/fedora/fedora:rawhide when: always stage: build script: - dnf makecache - dnf install -y @development-tools fedora-packager rpmdevtools - dnf install -y swig python3-devel python3-pip openssl-devel openssl python3-setuptools python3-twisted openssl-devel-engine - mkdir -p $HOME/.local/bin - ls $HOME/.local/bin - export PATH=$PATH:$HOME/.local/bin - python3 -mpip install --break-system-packages --user -r dev-requirements.txt - ls $HOME/.local/bin - python3 -mpip wheel --verbose --no-cache-dir --no-clean --no-build-isolation --wheel-dir dist/ --editable . - python3 -mpip install --break-system-packages -v --upgrade --target $(readlink -f build/lib.*) --no-compile --ignore-installed --no-deps --no-index dist/[mM]2[cC]rypto*.whl - PYTHONPATH=$(readlink -f build/lib.*) python3 -munittest -b -v tests.alltests.suite - echo "$PYTHONPATH" ; python3 -c 'import sys; print(sys.path)' - echo "$IRC_PASS" > ~/.irc_pass && chmod 600 ~/.irc_pass - echo "GitLab build task $CI_JOB_NAME for $REASON finished with the result $? ($CI_JOB_URL)." | .builds/irc-send irc.ergo.chat commit-bot mcepl "#m2crypto" allow_failure: true leap: # image: registry.suse.com/bci/bci-base:latest image: opensuse/leap when: always stage: build artifacts: paths: - "src/SWIG/*.c" script: - zypper refresh - zypper install -y pattern:devel_rpm_build pattern:devel_C_C++ osc - zypper install -y swig python3-devel python3-pip libopenssl-devel openssl python3-service_identity python3-setuptools python3-Twisted - mkdir -p $HOME/.local/bin - ls $HOME/.local/bin - export PATH=$PATH:$HOME/.local/bin - python3 -mpip --disable-pip-version-check install --user --upgrade-strategy only-if-needed -r dev-requirements.txt - ls $HOME/.local/bin - python3 -mpip --disable-pip-version-check wheel --verbose --no-cache-dir --no-clean --no-build-isolation --wheel-dir dist/ --editable . - find . -name \*.c -ls - python3 -mpip --disable-pip-version-check install -v --upgrade --target $(readlink -f build/lib.*) --no-compile --ignore-installed --no-deps --no-index dist/M2Crypto*.whl - PYTHONPATH=$(readlink -f build/lib.*) python3 -munittest -b -v tests.alltests.suite - echo "$PYTHONPATH" ; python3 -c 'import sys; print(sys.path)' opensuse: image: opensuse/tumbleweed when: always stage: build script: - zypper refresh - zypper install -y --force-resolution pattern:devel_rpm_build pattern:devel_C_C++ osc - zypper install -y --force-resolution swig python3-devel python3-pip libopenssl-devel openssl python3-service_identity python3-setuptools python3-Twisted python3-irc - mkdir -p $HOME/.local/bin - ls $HOME/.local/bin - export PATH=$PATH:$HOME/.local/bin - python3 -mpip install --user --break-system-packages -r dev-requirements.txt - ls $HOME/.local/bin - python3 -mpip wheel --verbose --no-cache-dir --no-clean --no-build-isolation --wheel-dir dist/ --editable . - python3 -mpip install -v --upgrade --target $(readlink -f build/lib.*) --no-compile --ignore-installed --no-deps --no-index dist/[mM]2[cC]rypto*.whl - PYTHONPATH=$(readlink -f build/lib.*) python3 -munittest -b -v tests.alltests.suite - echo "$PYTHONPATH" ; python3 -c 'import sys; print(sys.path)' - echo "$IRC_PASS" > ~/.irc_pass && chmod 600 ~/.irc_pass - echo "GitLab build task $CI_JOB_NAME for $REASON finished with the result $? ($CI_JOB_URL)." | .builds/irc-send irc.ergo.chat commit-bot mcepl "#m2crypto" build-sdist: image: python:3 when: always stage: build artifacts: paths: - "dist/*.tar.gz" script: - apt-get update -q -y - apt-get install -y swig libssl-dev python3-dev python3-pip openssl python3-setuptools python3-twisted python3-pip - mkdir -p $HOME/.local/bin - ls $HOME/.local/bin - export PATH=$PATH:$HOME/.local/bin - python3 -mpip install --break-system-packages --user -r dev-requirements.txt - ls $HOME/.local/bin - python3 -mbuild . --sdist - echo "$PYTHONPATH" ; python3 -c 'import sys; print(sys.path)' - echo "$IRC_PASS" > ~/.irc_pass && chmod 600 ~/.irc_pass - echo "GitLab build task $CI_JOB_NAME for $REASON finished with the result $? ($CI_JOB_URL)." | .builds/irc-send irc.ergo.chat commit-bot mcepl "#m2crypto" release-pypi: stage: deploy image: python:latest dependencies: - build-test-windows - build-sdist id_tokens: PYPI_ID_TOKEN: aud: pypi script: - echo "Built artifacts:" - ls dist/ # Install dependencies - apt update && apt install -y jq - python -m pip install -U twine id # Retrieve the OIDC token from GitLab CI/CD, and exchange it for a PyPI API token - oidc_token=$(python -m id PYPI) - resp=$(curl -X POST https://pypi.org/_/oidc/mint-token -d "{\"token\":\"${oidc_token}\"}") - api_token=$(jq --raw-output '.token' <<< "${resp}") # Upload wheel to PyPI authenticating via the newly-minted token - twine upload -u __token__ -p "${api_token}" dist/* rules: - if: $CI_COMMIT_TAG =~ /^\d+\.\d+\.\d+$/ # Job enabled only when pushing tags for versions, e.g: 0.40.1 when: manual # Can only be triggered manually m2crypto-0.46.2/.keys/ 0000775 0000000 0000000 00000000000 15067467423 0014431 5 ustar 00root root 0000000 0000000 m2crypto-0.46.2/.keys/openpgp/ 0000775 0000000 0000000 00000000000 15067467423 0016101 5 ustar 00root root 0000000 0000000 m2crypto-0.46.2/.keys/openpgp/cepl.eu/ 0000775 0000000 0000000 00000000000 15067467423 0017434 5 ustar 00root root 0000000 0000000 m2crypto-0.46.2/.keys/openpgp/cepl.eu/mcepl/ 0000775 0000000 0000000 00000000000 15067467423 0020534 5 ustar 00root root 0000000 0000000 m2crypto-0.46.2/.keys/openpgp/cepl.eu/mcepl/default 0000664 0000000 0000000 00000021424 15067467423 0022106 0 ustar 00root root 0000000 0000000 -----BEGIN PGP PUBLIC KEY BLOCK----- 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 =/S9/ -----END PGP PUBLIC KEY BLOCK----- m2crypto-0.46.2/.readthedocs.yaml 0000664 0000000 0000000 00000000717 15067467423 0016634 0 ustar 00root root 0000000 0000000 version: 2 build: os: ubuntu-22.04 apt_packages: - swig tools: python: "3.12" sphinx: configuration: doc/conf.py python: install: - requirements: doc/requirements.txt # The autodoc generation needs to be able to import the M2Crypto module. # Since this is only possible when M2Crypto is fully installed (after # the swig bindings have been generated), we manually install it here. - method: pip path: . m2crypto-0.46.2/CHANGES 0000664 0000000 0000000 00000114671 15067467423 0014405 0 ustar 00root root 0000000 0000000 0.46.2 - 2025-10-02 ------------------- - fix[m2xmlrpclib]: make the module compatible with Python 3.6 0.46.1 - 2025-10-02 ------------------- - Correct license to BSD-2-Clause and update references - Specify in setup.cfg that we require Python >= 3.6 0.46.0 - 2025-10-01 ------------------- (Tested on Pythons between 3.6 and 3.14.0~rc3) - M2Crypto closes SSL connection on closing HTTPS Connection, and some other related issues (#203, #278) - Modernize C API by eliminating use of deprecated PyBytes_AsStringAndSize and related functions with Python Buffer Protocol (#375) - Whole project is completely covered with type hints and is checked by mypy (also while doing that, the whole project was blackened) (#344) - Add logging support to C extension code sending messages to the Python logging - Introducing first efforts to support Engine object (#229) - Reworked and fixed M2Crypto.m2xmlrpclib module (#163) - Reverted removal of demo/ subdirectory - Improve SMIME documentation (#377) - Some other minor bugs, improvements, and removal of dead code 0.45.1 - 2025-04-23 ------------------- - ci: switch from using sha1 to sha256. - ci(keys): regenerate rsa*.pem keys as well - fix: make the package compatible with OpenSSL >= 3.4 (don’t rely on LEGACY crypto-policies) - chore: package also system_shadowing directory to make builds more reliable 0.45.0 - 2025-04-17 ------------------- - chore: preparing 0.45.0 release - fix(lib,ssl): rewrite ssl_accept, ssl_{read,write}_nbio for better error handling - fix: replace m2_PyBuffer_Release with native PyBuffer_Release - chore: build Windows builds with Python 3.13 as well - fix: remove support for Engine - chore: mark actual license of the project BSD-2-Clause instead of wrong MIT - ci(Debian): make M2Crypto buildable on Debian - swig: Workaround for reading sys/select.h ending with wrong types. - ci: bump required setuptools version because of change in naming strategy - fix: add fix for build with older GCC - fix: remove AnyStr and Any types - chore: add .git-blame-ignore-revs - chore: blacken everything 0.44.0 - 2025-02-17 ------------------- - fix(RSA): introduce internal cache for RSA.check_key() - fix[AuthCookie]: modernize the module - fix(_lib): add missing #include for Windows - ci: the same relaxing of crypto policies for tests on GitLab. - ci: relax Fedora crypto policy to LEGACY. - Enhance setup.py for macOS compatibility - Prefer packaging.version over distutils.version - Fix segfault with OpenSSL 3.4.0 - fix[EC]: raise IOError instead when load_key_bio() cannot read the file. - doc: update installation instructions for Windows. - Fix setting X509.verify_* variables - Fix building against OpenSSL in non-standard location - test_x509: Use only X509_VERSION_1 (0) as version for CSR. - fix: remove support for Engine 0.43.0 - 2024-10-30 ------------------- - feat[m2]: add m2.time_t_bits to checking for 32bitness. - fix[tests]: Use only X509_VERSION_1 (0) as version for CSR. - fix[EC]: raise ValueError when load_key_bio() cannot read the file. - ci: use -mpip wheel instead of -mbuild - fix: use PyMem_Malloc() instead of malloc() - fix[hints]: more work on conversion of type hints to the py3k ones - fix: make the package build even on Python 3.6 - ci[local]: skip freezing local tests - fix[hints]: remove AnyStr type - test: add suggested test for RSA.{get,set}_ex_data - fix: implement interfaces for RSA_{get,set}_ex_new_{data,index} - fix: generate src/SWIG/x509_v_flag.h to overcome weaknesses of swig - fix: replace literal enumeration of all VERIFY_ constants by a cycle - test: unify various test cases in test_ssl related to ftpslib - fix: replace deprecated url keyword in setup.cfg with complete project_urls map 0.42.0 - 2024-08-10 ------------------- - allow ASN1_{Integer,String} be initialized directly - minimal infrastructure for type hints for a C extension and some type hints for some basic modules - time_t on 32bit Linux is 32bit (integer) not 64bit (long) - EOS for CentOS 7 - correct checking for OpenSSL version number on Windows - make compatible with Python 3.13 (replace PyEval_CallObject with PyObject_CallObject) - fix typo in extern function signature (and proper type of engine_ctrl_cmd_string()) - move the package to Sorucehut - setup CI to use Sourcehut CI - setup CI on GitLab for Windows as well (remove Appveyor) - initial draft of documentation for migration to pyca/cryptography - fix Read the Docs configuration (contributed kindly by Facundo Tuesca) 0.41.0 - 2024-02-13 ------------------- - fix: test/smime: Rewind BIO before repeadetly invoking verify. - feat: React to the possible error when calling BIO_set_cipher(3). - Return M2Crypto.version_info - Revert 957df43e (workaround for the problem in OpenSSL, which is not needed any more) - Fix Windows builds (fix #319) - feat: Remove py2k constructs in setup.py - Fix mkpath call (compatibility with Python >= 3.2) - Remove generated files from sources - feat!: Remove six and make whole project Py3k only (see #328) - Don't use setup.py commands anymore. - 32bit Python actually has Y2K38 problem, because time_t is long int (see #341) - From TAP back to the standard unittest (gh#python-tap/tappy#136) 0.40.1 - 2023-10-25 ------------------- - Whoops! The problem with ASN1_Time is not a problem of Windows, but of all 32bit architectures. 0.40.0 - 2023-10-24 ------------------- - OK, SO NOT THIS RELEASE, BUT IN THE NEXT RELEASE PYTHON2 WILL TRULY GO! - BREAKING CHANGES: - There are no SWIG generated files (src/SWIG/_m2crytpo_wrap.c) included anymore, so swig must be installed, no exceptions! Also, for compatibility with Python 3.12+, swig 4.0+ is required. - All support for asyncore has been removed, as it has been removed in Python 3.12 as well (which means also removal of contrib/dispatcher.py, M2Crypto/SSL/ssl_dispatcher.py, ZServerSSL). - All use of distutils (including the bundled ones in setuptools) has been removed, so `setup.py clean` is no more. - Excessively complicated and error-prone __init__py has been cleaned and `import M2Crypto` doesn’t include everything anymore. Imports should specified as for example with `from M2Crypto import foo`. - ASN1_Time handling has been mostly rewritten and it almost works even on Windows. - All tests in Gitlab CI (with exceptions of some skipped tests especially on Windows) are now green, tests of Python 2.7 on CentOS 7 have been included. - Introduce m2.err_clear_error() - Make X509_verify_cert() accessible as m2.x509_verify_cert 0.39.0 - 2023-07-04 ------------------- - SUPPORT FOR PYTHON 2 HAS BEEN DEPRECATED AND IT WILL BE COMPLETELY REMOVED IN THE NEXT RELEASE. - Remove dependency on parameterized and use unittest.subTest instead. - Upgrade embedded six.py module to 1.16.0 (really tiny inconsequential changes). - Make tests working on MacOS again (test_bio_membuf: Use fork) - Use OpenSSL_version_num() instead of unrealiable parsing of .h file. - Mitigate the Bleichenbacher timing attacks in the RSA decryption API (CVE-2020-25657) - Add functionality to extract EC key from public key + Update tests - Worked around compatibility issues with OpenSSL 3.* - Support for Twisted has been deprecated (they have their own SSL support anyway). - Generate TAP while testing. - Stop using GitHub for testing. - Accept a small deviation from time in the testsuite (for systems with non-standard HZ kernel parameter). - Use the default BIO.__del__ rather tha overriding in BIO.File (avoid a memleak). - Resolve "X509_Name.as_der() method from X509.py -> class X509_Name caused segmentation fault" 0.38.0 - 2021-06-14 ------------------- - Remove the last use of setup.py test idiom. - Use m2_PyObject_AsReadBuffer instead of PyObject_AsReadBuffer. - Add support for arm64 big endianA GuardedFile is a Zope File that is accessible by proxy only.
When a GuardedFile is created, all acquired permissions are unset. A proxy role is created in its container with the sole permission "View".
When the GuardedFile is deleted, its associated proxy role is also removed.
In all other aspects a GuardedFile behaves exactly like a File.
You can create a new
Go directly to the Zope Management Interface if you'd like to start working with Zope right away. NOTE: Some versions of Microsoft Internet Explorer, (specifically IE 5.01 and early versions of IE 5.5) may have problems displaying Zope management pages. If you cannot view the management pages, try upgrading your IE installation to the latest release version, or use a different browser.
Find out about Zope Corporation, the publishers of Zope.