diff --git a/0.45.1.patch b/0.45.1.patch new file mode 100644 index 0000000..e23a298 --- /dev/null +++ b/0.45.1.patch @@ -0,0 +1,2099 @@ +diff --git a/.build.yml b/.build.yml +index 14cec19..69ceec0 100644 +--- a/.build.yml ++++ b/.build.yml +@@ -1,4 +1,4 @@ +-image: fedora/latest ++image: fedora/rawhide + oauth: git.sr.ht/REPOSITORIES:RW git.sr.ht/PROFILE:RO + packages: + - hut +@@ -9,7 +9,6 @@ packages: + - openssl-devel + - openssl-devel-engine + - openssl +- - crypto-policies-scripts + - python3-setuptools + - python3-twisted + - python3-pexpect +@@ -32,7 +31,6 @@ tasks: + python3 -mpip install -v --upgrade --target $(readlink -f build/lib.*) --no-compile --ignore-installed --no-deps --no-index dist/m2crypto*.whl + - test: | + cd m2crypto +- sudo update-crypto-policies --set LEGACY + 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)" +diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml +index 4c877d9..8926913 100644 +--- a/.gitlab-ci.yml ++++ b/.gitlab-ci.yml +@@ -95,7 +95,7 @@ fedora: + stage: build + script: + - dnf makecache +- - dnf install -y @development-tools fedora-packager rpmdevtools crypto-policies-scripts ++ - 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 +@@ -104,7 +104,6 @@ fedora: + - 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/m2crypto*.whl +- - update-crypto-policies --set LEGACY + - PYTHONPATH=$(readlink -f build/lib.*) python3 -munittest -b -v tests.alltests.suite + + fedora-rawhide: +@@ -113,7 +112,7 @@ fedora-rawhide: + stage: build + script: + - dnf makecache +- - dnf install -y @development-tools fedora-packager rpmdevtools crypto-policies-scripts ++ - 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 +@@ -122,7 +121,6 @@ fedora-rawhide: + - 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/m2crypto*.whl +- - update-crypto-policies --set LEGACY + - PYTHONPATH=$(readlink -f build/lib.*) python3 -munittest -b -v tests.alltests.suite + allow_failure: true + +diff --git a/CHANGES b/CHANGES +index 7402513..2e1c006 100644 +--- a/CHANGES ++++ b/CHANGES +@@ -1,3 +1,8 @@ ++0.45.1 - 2025-04-19 ++------------------- ++ ++Micro release: package also system_shadowing directory to make builds more reliable ++ + 0.45.0 - 2025-04-17 + ------------------- + +diff --git a/MANIFEST.in b/MANIFEST.in +index d4c773f..9d35ffe 100644 +--- a/MANIFEST.in ++++ b/MANIFEST.in +@@ -4,6 +4,7 @@ include src/SWIG/*.def + recursive-include tests *.py *.pem *.der *.b64 README *.pgp *.dat *.p7* *.crt *.txt + recursive-include doc * + recursive-include contrib * ++recursive-include system_shadowing * + recursive-exclude .keys * + include INSTALL.rst + include README.rst +diff --git a/doc/howto.migration.rst b/doc/howto.migration.rst +index 4e26db9..f4e2213 100644 +--- a/doc/howto.migration.rst ++++ b/doc/howto.migration.rst +@@ -109,7 +109,8 @@ M2Crypto + .. testoutput:: + :hide: + +- 79aba937863cd5bfef254... ++ 12068af2140bb2907fc0086872ae... ++ + + PyCA/cryptography + ----------------- +@@ -132,7 +133,7 @@ PyCA/cryptography + .. testoutput:: + :hide: + +- 79aba937863cd5bfef254... ++ 12068af2140bb2907fc0086872ae... + + + Encrypting and decrypting +@@ -198,9 +199,8 @@ M2Crypto + + /C=US/ST=California/O=M2Crypto/CN=Heikki Toivonen + /C=US/ST=California/O=M2Crypto/CN=X509 +- Sep 15 22:29:11 2024 GMT +- Sep 13 22:29:11 2034 GMT +- ++ Apr 22 14:50:27 2025 GMT ++ Apr 20 14:50:27 2035 GMT + + PyCA/cryptography + ----------------- +@@ -221,8 +221,8 @@ PyCA/cryptography + + + +- 2024-09-15 22:29:11+00:00 +- 2034-09-13 22:29:11+00:00 ++ 2025-04-22 14:50:27+00:00 ++ 2035-04-20 14:50:27+00:00 + + + Signature verification +diff --git a/src/M2Crypto/AuthCookie.py b/src/M2Crypto/AuthCookie.py +index 3c05ca0..ffb3476 100644 +--- a/src/M2Crypto/AuthCookie.py ++++ b/src/M2Crypto/AuthCookie.py +@@ -114,7 +114,7 @@ class AuthCookieJar: + self._key = Rand.rand_bytes(self._keylen) + + def _hmac(self, key: bytes, data: str) -> str: +- return util.bin_to_hex(m2.hmac(key, data.encode(), m2.sha1())) ++ return util.bin_to_hex(m2.hmac(key, data.encode(), m2.sha256())) + + def makeCookie(self, expiry: float, data: str) -> AuthCookie: + """ +diff --git a/src/M2Crypto/DSA.py b/src/M2Crypto/DSA.py +index 22e3261..8530e43 100644 +--- a/src/M2Crypto/DSA.py ++++ b/src/M2Crypto/DSA.py +@@ -30,7 +30,7 @@ class DSA: + from M2Crypto import EVP, DSA, util + + message = 'Kilroy was here!' +- md = EVP.MessageDigest('sha1') ++ md = EVP.MessageDigest('sha256') + md.update(message) + digest = md.final() + +diff --git a/src/M2Crypto/EVP.py b/src/M2Crypto/EVP.py +index 4ed295a..87d9934 100644 +--- a/src/M2Crypto/EVP.py ++++ b/src/M2Crypto/EVP.py +@@ -78,7 +78,7 @@ class HMAC(object): + + m2_hmac_ctx_free = m2.hmac_ctx_free + +- def __init__(self, key: bytes, algo: str = 'sha1') -> None: ++ def __init__(self, key: bytes, algo: str = 'sha256') -> None: + md = getattr(m2, algo, None) + if md is None: + raise ValueError('unknown algorithm', algo) +@@ -102,7 +102,7 @@ class HMAC(object): + digest = final + + +-def hmac(key: bytes, data: bytes, algo: str = 'sha1') -> bytes: ++def hmac(key: bytes, data: bytes, algo: str = 'sha256') -> bytes: + md = getattr(m2, algo, None) + if md is None: + raise ValueError('unknown algorithm', algo) +@@ -171,7 +171,7 @@ class PKey(object): + self, + pkey: Optional[bytes] = None, + _pyfree: int = 0, +- md: str = 'sha1', ++ md: str = 'sha256', + ) -> None: + if pkey is not None: + self.pkey: bytes = pkey +@@ -200,7 +200,7 @@ class PKey(object): + self.md = mda() + self.ctx: Context = m2.md_ctx_new() + +- def reset_context(self, md: str = 'sha1') -> None: ++ def reset_context(self, md: str = 'sha256') -> None: + """ + Reset internal message digest context. + +@@ -379,7 +379,7 @@ class PKey(object): + rsa = RSA.RSA_pub(rsa_ptr, 1) + return rsa + +- def assign_ec(self, ec: EC.EC, capture: int = 1) -> int: ++ def assign_ec(self, ec: "EC.EC", capture: int = 1) -> int: + """ + Assign the EC key pair to self. + +@@ -399,7 +399,7 @@ class PKey(object): + ret = m2.pkey_set1_ec(self.pkey, ec.ec) + return ret + +- def get_ec(self) -> EC.EC_pub: ++ def get_ec(self) -> "EC.EC_pub": + """ + Return the underlying EC key if that is what the EVP + instance is holding. +diff --git a/src/M2Crypto/RSA.py b/src/M2Crypto/RSA.py +index 85503a6..ecc49f0 100644 +--- a/src/M2Crypto/RSA.py ++++ b/src/M2Crypto/RSA.py +@@ -196,7 +196,7 @@ class RSA(object): + return self._check_cache + + def sign_rsassa_pss( +- self, digest: bytes, algo: str = 'sha1', salt_length: int = 20 ++ self, digest: bytes, algo: str = 'sha256', salt_length: int = 20 + ) -> bytes: + """ + Signs a digest with the private key using RSASSA-PSS +@@ -226,7 +226,7 @@ class RSA(object): + self, + data: bytes, + signature: bytes, +- algo: str = 'sha1', ++ algo: str = 'sha256', + salt_length: int = 20, + ) -> int: + """ +@@ -258,7 +258,7 @@ class RSA(object): + self.rsa, data, plain_signature, hash(), salt_length + ) + +- def sign(self, digest: bytes, algo: str = 'sha1') -> bytes: ++ def sign(self, digest: bytes, algo: str = 'sha256') -> bytes: + """ + Signs a digest with the private key + +@@ -277,7 +277,7 @@ class RSA(object): + return m2.rsa_sign(self.rsa, digest, digest_type) + + def verify( +- self, data: bytes, signature: bytes, algo: str = 'sha1' ++ self, data: bytes, signature: bytes, algo: str = 'sha256' + ) -> int: + """ + Verifies the signature with the public key +diff --git a/src/M2Crypto/SMIME.py b/src/M2Crypto/SMIME.py +index 18c4074..5baf630 100644 +--- a/src/M2Crypto/SMIME.py ++++ b/src/M2Crypto/SMIME.py +@@ -229,7 +229,7 @@ class SMIME(object): + self, + data_bio: BIO.BIO, + flags: int = 0, +- algo: Optional[str] = 'sha1', ++ algo: Optional[str] = 'sha256', + ) -> PKCS7: + if not hasattr(self, 'pkey'): + raise SMIME_Error('no private key: use load_key()') +diff --git a/src/M2Crypto/SSL/Checker.py b/src/M2Crypto/SSL/Checker.py +index 4e1f096..ab50573 100644 +--- a/src/M2Crypto/SSL/Checker.py ++++ b/src/M2Crypto/SSL/Checker.py +@@ -80,7 +80,7 @@ class Checker: + self, + host: Optional[str] = None, + peerCertHash: Optional[bytes] = None, +- peerCertDigest: str = 'sha1', ++ peerCertDigest: str = 'sha256', + ) -> None: + self.host = host + self.fingerprint = peerCertHash +@@ -96,15 +96,13 @@ class Checker: + self.host: str = host + + if self.fingerprint: +- if self.digest not in ('sha1', 'md5'): ++ if self.digest not in ('sha256'): + raise ValueError( + 'unsupported digest "%s"' % self.digest + ) + +- if self.digest == 'sha1': +- expected_len = 40 +- elif self.digest == 'md5': +- expected_len = 32 ++ if self.digest == 'sha256': ++ expected_len = 64 + else: + raise ValueError( + 'Unexpected digest {0}'.format(self.digest) +diff --git a/src/M2Crypto/__init__.py b/src/M2Crypto/__init__.py +index 10a0d97..1ae5b25 100644 +--- a/src/M2Crypto/__init__.py ++++ b/src/M2Crypto/__init__.py +@@ -17,7 +17,7 @@ Copyright (C) 2004-2007 OSAF. All Rights Reserved. + + Copyright 2008-2011 Heikki Toivonen. All rights reserved. + """ +-__version__: str = '0.46.0' ++__version__: str = '0.45.1' + version: str = __version__ + + try: +diff --git a/tests/ca.pem b/tests/ca.pem +index 986a432..9989211 100644 +--- a/tests/ca.pem ++++ b/tests/ca.pem +@@ -5,98 +5,98 @@ Certificate: + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, ST=California, O=M2Crypto, CN=Heikki Toivonen + Validity +- Not Before: Sep 15 22:29:11 2024 GMT +- Not After : Sep 13 22:29:11 2034 GMT ++ Not Before: Apr 22 14:50:27 2025 GMT ++ Not After : Apr 20 14:50:27 2035 GMT + Subject: C=US, ST=California, O=M2Crypto, CN=Heikki Toivonen + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public-Key: (2048 bit) + Modulus: +- 00:ca:fc:eb:14:1f:8d:68:eb:8b:0f:06:b6:0e:c9: +- 67:b2:e7:97:8e:44:05:8d:a3:92:a7:e1:5c:4c:76: +- e0:1e:7c:18:50:63:8c:6f:e2:3d:d1:6b:d8:62:ad: +- c3:5f:90:28:33:0d:47:a4:69:e5:31:c8:a7:e4:53: +- 71:d4:f6:b1:01:36:1d:78:e5:92:4d:2f:00:7e:e7: +- ca:62:c1:ba:c7:f9:93:3b:cf:97:89:00:d0:17:16: +- 01:79:34:d9:89:88:e4:d7:b2:e4:24:c2:87:12:dd: +- 90:f9:a8:fb:82:68:77:37:39:31:95:e5:bf:77:2e: +- 3b:66:83:7e:ed:e1:c0:eb:8d:30:7e:32:42:c9:d4: +- 8e:73:0a:97:07:2b:c2:cd:18:01:12:d6:c7:bc:74: +- 47:24:43:64:70:42:27:2b:a3:26:7a:b7:34:a4:e6: +- 1c:94:46:2a:a5:a7:99:7e:a0:1d:a4:92:e7:5d:03: +- c6:4b:18:a5:da:ba:26:68:23:a5:a6:a3:2a:92:38: +- 60:d5:7e:4f:21:73:26:32:4c:8e:90:bf:dd:5c:95: +- 67:2c:00:57:5b:80:29:50:7f:a5:5c:aa:cd:3b:40: +- 5a:df:2c:d3:88:cc:bb:8a:eb:04:1e:35:6e:71:e3: +- 84:51:d6:2e:19:26:94:a1:b2:17:1b:a9:8a:8c:c0: +- ff:e7 ++ 00:aa:7b:06:6b:1d:10:4c:81:3d:68:32:64:96:70: ++ f1:07:66:b3:b6:b3:1c:79:60:9c:7c:f3:3f:90:db: ++ 6b:b0:35:24:17:7c:cd:02:e2:20:06:1f:5d:c7:47: ++ a6:ef:47:50:82:f7:cc:2c:4f:bc:95:a8:2f:47:5c: ++ a9:bf:72:3b:93:48:75:4a:fc:27:ed:10:af:3c:5a: ++ 96:95:15:52:03:82:b7:86:3d:c3:ca:ba:14:c4:d4: ++ b2:67:f0:6d:cf:b3:49:88:a3:da:c9:b6:ec:01:c2: ++ fd:93:91:1e:ce:b6:33:ab:26:8e:05:f4:6d:65:57: ++ db:3a:16:9f:a4:68:2f:48:b1:92:e1:64:dd:cf:4f: ++ 64:a2:af:ff:24:b1:8d:7e:bd:96:23:f3:11:b7:5b: ++ ee:6c:01:f2:7b:f1:e6:51:ea:c2:3f:2e:d1:57:22: ++ d1:10:0f:a9:6a:37:d4:d5:ef:7a:e8:d6:a2:b3:1d: ++ 3f:22:65:40:49:d5:93:92:7c:a7:05:ea:c2:5f:85: ++ c8:5f:c6:2c:54:a0:27:6c:46:0a:05:7c:74:a3:e2: ++ 7a:4f:86:97:c4:45:f9:65:41:b5:c9:fd:d9:bb:40: ++ 0b:83:05:34:e8:28:88:bf:c4:4f:8f:cb:79:1f:60: ++ c0:a3:ae:53:25:5d:c2:46:aa:49:f8:fc:3a:b1:d8: ++ c1:fd + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: + CA:TRUE + X509v3 Subject Key Identifier: +- E1:2E:A7:59:E3:D5:90:F4:4A:B8:E8:1B:0B:1B:99:41:90:73:82:60 ++ 15:57:F1:3C:CE:3C:71:9A:1F:D4:FE:DB:CF:DD:79:26:06:15:32:06 + Signature Algorithm: sha256WithRSAEncryption + Signature Value: +- a1:9f:54:a4:4e:5f:77:6e:fe:97:81:48:f3:9c:a0:4b:cf:95: +- db:de:63:66:27:12:ab:f2:ee:94:95:4c:a1:90:7e:68:21:ec: +- 4b:82:4c:d6:90:72:fd:56:d8:12:6c:fa:fe:e4:7e:b7:8b:fb: +- 96:d7:2c:d5:b9:44:b1:e9:e3:61:ec:bf:0e:dd:d8:08:3c:ec: +- 04:5c:d3:0c:6a:c9:1f:c6:00:77:16:ba:5f:03:20:32:20:b3: +- 8c:2c:ef:23:ed:9e:b4:72:8a:6b:af:68:6f:3c:b6:3e:d9:42: +- 4a:33:85:81:0c:1b:b8:7f:4b:e1:f3:6d:ec:3d:61:9c:bd:f4: +- 23:4a:75:b1:c9:d8:45:47:42:1a:4b:22:d8:ad:11:02:3c:b5: +- e3:66:b2:d0:b6:3d:fc:db:3c:9b:42:bb:38:77:99:0d:e3:df: +- 81:8a:84:38:c9:ea:fc:db:ad:3b:54:08:c4:d2:db:6f:ea:cd: +- f8:34:95:d4:7b:3b:28:20:77:13:ba:0a:c8:f5:10:33:f3:62: +- 05:0b:f3:0c:dd:5b:0c:85:80:e0:57:55:58:9c:96:04:62:25: +- d1:1c:80:27:86:90:b9:fd:2c:9b:5a:ca:ae:a7:ce:7e:81:5e: +- 90:42:77:8a:83:46:99:9e:f1:76:88:ab:46:a8:c1:f1:33:1f: +- 3b:98:e9:5f ++ 48:18:54:62:d2:1a:6d:81:31:10:56:1a:1c:c7:eb:28:bf:f9: ++ c4:99:4a:c4:d3:9c:a3:77:22:cf:c3:31:8f:75:e9:b3:a0:62: ++ 8c:6c:41:5f:6e:1c:7c:eb:88:e0:d7:8b:36:67:2e:e0:8e:06: ++ 74:43:e0:c6:ba:a7:79:2c:e0:52:ca:6a:e4:26:7e:64:3e:d5: ++ d0:32:ef:d6:e3:e2:4b:d5:d2:02:c5:63:96:b9:6d:d5:60:dc: ++ 34:32:6a:e6:e0:7c:eb:a1:8f:1e:a8:8e:ad:f1:77:bb:65:3f: ++ 80:f2:8c:30:29:2c:7b:1f:2c:ff:44:16:58:0d:59:7a:52:1c: ++ a6:2d:4e:9b:c8:8c:c3:ef:07:53:77:de:3f:e0:6b:94:dd:4f: ++ 19:e3:64:ce:e1:b2:29:99:a3:4d:55:39:d6:f1:93:47:6f:43: ++ 7a:0f:31:73:93:8c:57:52:d9:a1:fb:61:76:cb:56:7e:10:11: ++ 17:16:b1:2c:87:4e:a2:d1:94:aa:90:af:f4:0d:8b:92:a5:a7: ++ a2:2b:fe:ab:36:66:4b:c8:38:d5:04:e4:d5:1f:81:ad:93:49: ++ f5:1c:0d:7a:fb:b8:2d:ac:b8:b2:0f:28:76:13:4d:ae:ad:fe: ++ 3d:3b:14:af:90:92:8e:85:df:39:78:a4:fa:0e:9a:ef:a6:e2: ++ bc:c3:0d:c4 + -----BEGIN CERTIFICATE----- + MIIDSDCCAjCgAwIBAgIBADANBgkqhkiG9w0BAQsFADBPMQswCQYDVQQGEwJVUzET + MBEGA1UECAwKQ2FsaWZvcm5pYTERMA8GA1UECgwITTJDcnlwdG8xGDAWBgNVBAMM +-D0hlaWtraSBUb2l2b25lbjAeFw0yNDA5MTUyMjI5MTFaFw0zNDA5MTMyMjI5MTFa ++D0hlaWtraSBUb2l2b25lbjAeFw0yNTA0MjIxNDUwMjdaFw0zNTA0MjAxNDUwMjda + ME8xCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMREwDwYDVQQKDAhN + MkNyeXB0bzEYMBYGA1UEAwwPSGVpa2tpIFRvaXZvbmVuMIIBIjANBgkqhkiG9w0B +-AQEFAAOCAQ8AMIIBCgKCAQEAyvzrFB+NaOuLDwa2DslnsueXjkQFjaOSp+FcTHbg +-HnwYUGOMb+I90WvYYq3DX5AoMw1HpGnlMcin5FNx1PaxATYdeOWSTS8AfufKYsG6 +-x/mTO8+XiQDQFxYBeTTZiYjk17LkJMKHEt2Q+aj7gmh3NzkxleW/dy47ZoN+7eHA +-640wfjJCydSOcwqXByvCzRgBEtbHvHRHJENkcEInK6Mmerc0pOYclEYqpaeZfqAd +-pJLnXQPGSxil2romaCOlpqMqkjhg1X5PIXMmMkyOkL/dXJVnLABXW4ApUH+lXKrN +-O0Ba3yzTiMy7iusEHjVuceOEUdYuGSaUobIXG6mKjMD/5wIDAQABoy8wLTAMBgNV +-HRMEBTADAQH/MB0GA1UdDgQWBBThLqdZ49WQ9Eq46BsLG5lBkHOCYDANBgkqhkiG +-9w0BAQsFAAOCAQEAoZ9UpE5fd27+l4FI85ygS8+V295jZicSq/LulJVMoZB+aCHs +-S4JM1pBy/VbYEmz6/uR+t4v7ltcs1blEsenjYey/Dt3YCDzsBFzTDGrJH8YAdxa6 +-XwMgMiCzjCzvI+2etHKKa69obzy2PtlCSjOFgQwbuH9L4fNt7D1hnL30I0p1scnY +-RUdCGksi2K0RAjy142ay0LY9/Ns8m0K7OHeZDePfgYqEOMnq/NutO1QIxNLbb+rN +-+DSV1Hs7KCB3E7oKyPUQM/NiBQvzDN1bDIWA4FdVWJyWBGIl0RyAJ4aQuf0sm1rK +-rqfOfoFekEJ3ioNGmZ7xdoirRqjB8TMfO5jpXw== ++AQEFAAOCAQ8AMIIBCgKCAQEAqnsGax0QTIE9aDJklnDxB2aztrMceWCcfPM/kNtr ++sDUkF3zNAuIgBh9dx0em70dQgvfMLE+8lagvR1ypv3I7k0h1Svwn7RCvPFqWlRVS ++A4K3hj3DyroUxNSyZ/Btz7NJiKPaybbsAcL9k5EezrYzqyaOBfRtZVfbOhafpGgv ++SLGS4WTdz09koq//JLGNfr2WI/MRt1vubAHye/HmUerCPy7RVyLREA+pajfU1e96 ++6Naisx0/ImVASdWTknynBerCX4XIX8YsVKAnbEYKBXx0o+J6T4aXxEX5ZUG1yf3Z ++u0ALgwU06CiIv8RPj8t5H2DAo65TJV3CRqpJ+Pw6sdjB/QIDAQABoy8wLTAMBgNV ++HRMEBTADAQH/MB0GA1UdDgQWBBQVV/E8zjxxmh/U/tvP3XkmBhUyBjANBgkqhkiG ++9w0BAQsFAAOCAQEASBhUYtIabYExEFYaHMfrKL/5xJlKxNOco3ciz8Mxj3Xps6Bi ++jGxBX24cfOuI4NeLNmcu4I4GdEPgxrqneSzgUspq5CZ+ZD7V0DLv1uPiS9XSAsVj ++lrlt1WDcNDJq5uB866GPHqiOrfF3u2U/gPKMMCksex8s/0QWWA1ZelIcpi1Om8iM ++w+8HU3feP+BrlN1PGeNkzuGyKZmjTVU51vGTR29Deg8xc5OMV1LZofthdstWfhAR ++FxaxLIdOotGUqpCv9A2LkqWnoiv+qzZmS8g41QTk1R+BrZNJ9RwNevu4Lay4sg8o ++dhNNrq3+PTsUr5CSjoXfOXik+g6a76bivMMNxA== + -----END CERTIFICATE----- + -----BEGIN RSA PRIVATE KEY----- +-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 + -----END RSA PRIVATE KEY----- +diff --git a/tests/ca_key.pem b/tests/ca_key.pem +index 72a9e40..75efc21 100644 +--- a/tests/ca_key.pem ++++ b/tests/ca_key.pem +@@ -1,27 +1,27 @@ + -----BEGIN RSA PRIVATE KEY----- +-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 + -----END RSA PRIVATE KEY----- +diff --git a/tests/makecerts.py b/tests/makecerts.py +index b5c9fe6..078004e 100755 +--- a/tests/makecerts.py ++++ b/tests/makecerts.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # + # Create test certificates: + # +@@ -154,7 +154,6 @@ def mk_ca(): + + return cert, pk + +- + def mk_server(ca, capk): + r, _ = req('server') + r.set_subject(make_subject(cn='localhost')) +@@ -203,6 +202,38 @@ def mk_ec_pair(): + pub_key.save_pub_key('ec.pub.pem') + + ++def mk_rsa_key_pair(): ++ def password_callback(*args): ++ return b'qwerty' ++ ++ g_key = RSA.gen_key(2048, m2.RSA_F4) ++ pkey = EVP.PKey() ++ pkey.assign_rsa(g_key) ++ ++ try: ++ # cipher=None means unencrypted ++ pkey.save_key("rsa.priv.pem", cipher=None) ++ except Exception as e: ++ print(f"Error saving private key: {e}") ++ raise ++ ++ # Save the private key with password qwerty ++ try: ++ # cipher=None means unencrypted ++ pkey.save_key("rsa.priv2.pem", cipher=None, callback=password_callback) ++ except Exception as e: ++ print(f"Error saving private key: {e}") ++ raise ++ ++ # Save the corresponding public key ++ try: ++ rsa_key_from_pkey = pkey.get_rsa() ++ rsa_key_from_pkey.save_pub_key('rsa.pub.pem') ++ except Exception as e: ++ print(f"Error saving public key: {e}") ++ raise ++ ++ + if __name__ == '__main__': + names = ['ca', 'server', 'recipient', 'signer', 'x509'] + +@@ -218,5 +249,7 @@ if __name__ == '__main__': + mk_signer(ca_bits, pk_bits) + mk_recipient(ca_bits, pk_bits) + ++ mk_rsa_key_pair() ++ + # FIXME This doesn't work well. + # mk_ec_pair() +diff --git a/tests/recipient.pem b/tests/recipient.pem +index 99b2777..9b06761 100644 +--- a/tests/recipient.pem ++++ b/tests/recipient.pem +@@ -5,99 +5,99 @@ Certificate: + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, ST=California, O=M2Crypto, CN=Heikki Toivonen + Validity +- Not Before: Sep 15 22:29:11 2024 GMT +- Not After : Sep 13 22:29:11 2034 GMT ++ Not Before: Apr 22 14:50:27 2025 GMT ++ Not After : Apr 20 14:50:27 2035 GMT + Subject: C=US, ST=California, O=M2Crypto, CN=Recipient/emailAddress=recipient@example.com + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public-Key: (2048 bit) + Modulus: +- 00:a0:96:3e:93:6e:bf:20:86:b9:1a:0b:e0:4b:29: +- 37:36:10:53:39:3b:26:2f:7f:a3:85:2c:5c:2f:67: +- fd:0c:49:c7:15:68:7b:d0:0a:4f:4b:28:3c:c2:80: +- 2e:de:36:2c:b1:b5:5a:b6:b3:92:af:1b:e0:69:d3: +- ca:18:5d:27:26:87:4e:52:4e:51:f3:ae:f2:e5:8d: +- cb:70:ea:f0:b6:ce:0c:e8:c2:4b:f2:2e:1f:17:b5: +- 4b:70:bd:ba:88:62:2e:57:9d:ed:93:7f:60:20:18: +- 41:3c:b5:e9:6b:fd:4b:6a:14:bb:4b:2a:70:65:bf: +- ec:33:b7:ff:62:2e:f6:b0:12:31:51:2c:9c:22:45: +- 77:fe:c5:9a:16:dc:6b:83:c2:1f:ec:04:db:fa:69: +- 3b:21:18:f7:4a:f0:66:7b:26:66:8d:f2:16:c6:60: +- 65:ae:8d:65:7b:7a:61:1d:f0:99:74:16:2b:f8:e1: +- e7:53:14:3d:69:18:6e:b5:6a:b3:9b:85:a8:2a:38: +- 6a:8d:6a:0d:e9:45:2d:61:62:35:95:ff:e8:6f:74: +- 1b:d5:83:97:9f:a2:bd:8d:a5:ae:e7:71:ef:03:42: +- af:d7:97:34:91:b1:d5:9e:03:43:c9:1b:a7:5f:5d: +- b2:49:97:39:25:a6:db:a8:ed:e9:1d:26:66:bb:e4: +- 5c:2f ++ 00:c1:64:a6:a1:06:62:03:55:8c:72:d7:32:5d:ea: ++ 56:ad:b0:64:24:10:d4:70:8c:77:4c:f9:be:b7:29: ++ 0e:69:47:1a:89:7c:4e:5c:91:63:17:7b:89:57:18: ++ 4f:fa:68:88:46:48:8a:75:c0:5f:6a:7b:88:62:2d: ++ 3c:6f:71:82:38:b8:06:a6:bc:1b:c2:74:26:7d:e9: ++ 04:c2:dc:2f:2c:1a:7f:77:f3:b6:6f:1e:90:59:d5: ++ 4f:8e:28:26:3d:7e:e4:06:5f:0f:77:54:0c:23:1a: ++ 72:d0:f9:0a:b8:ca:dd:a3:b4:bd:25:2c:3c:e3:a0: ++ c5:8a:f4:43:be:d7:fc:fd:e7:dc:0a:22:50:1a:58: ++ 10:80:0c:f8:5d:16:7b:c8:32:92:d4:de:56:e2:e6: ++ 86:4c:bb:20:ef:8d:06:52:ef:3b:7c:a0:20:a5:3c: ++ b1:c0:2e:be:9e:03:47:06:10:72:d8:9d:1b:8b:b1: ++ e2:f9:a8:3a:f2:95:aa:e2:21:02:1a:d6:66:64:91: ++ d1:76:e9:d3:45:32:a8:01:ab:ce:e1:1f:74:b4:ba: ++ d9:3d:d8:13:2b:49:31:74:f5:b6:b2:5c:6d:12:65: ++ 27:a3:f2:c8:db:fc:2c:dd:72:13:aa:7c:42:2e:1c: ++ 74:3d:fd:6b:f5:b4:0d:89:7a:1f:65:c9:9a:ee:31: ++ 60:e3 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: + CA:FALSE + X509v3 Subject Key Identifier: +- 86:29:7A:15:96:A4:23:DD:02:BE:A9:06:1C:18:79:6E:FD:C6:53:84 ++ DC:FC:72:30:A8:30:8D:F5:F5:1B:F6:2C:83:09:A9:36:55:FB:8A:0F + Signature Algorithm: sha256WithRSAEncryption + Signature Value: +- 89:c8:5d:9e:47:b1:11:65:ac:dd:6f:b8:d1:41:fa:23:d7:5a: +- 6c:42:2f:01:7f:9c:a4:0d:6a:b1:1e:c0:0f:5c:47:30:5c:5e: +- 74:e0:50:21:d3:35:5f:de:93:e5:b7:c2:12:58:2e:c4:f3:8f: +- b7:22:40:b3:9f:76:26:51:ef:e6:49:f0:df:4f:b7:52:42:49: +- 66:90:a7:9e:04:87:ed:2c:fe:df:d6:73:69:64:fe:21:41:17: +- 52:bc:a4:6b:7d:b0:41:e8:4b:3e:de:d9:a6:48:00:66:c5:8f: +- 6d:34:b4:a7:12:48:81:e2:0a:84:b1:9b:fa:cf:76:72:a7:3a: +- 02:42:83:db:20:6c:bf:80:24:e7:57:f5:01:ce:82:7e:fc:b8: +- dd:dc:34:89:2c:98:99:ae:6d:da:c7:b0:a0:c2:ec:d6:c1:34: +- 50:69:6e:ad:3b:7a:ec:41:13:82:ad:27:ef:01:bd:69:40:d3: +- 00:26:e6:bd:53:16:e4:34:54:d1:fc:c0:f5:e5:92:33:95:03: +- ac:b5:18:42:e7:10:d6:cf:c0:c9:08:42:da:d1:b6:2d:55:ce: +- 74:ec:b9:af:23:2f:b2:fa:b5:47:de:b2:c6:e6:25:4d:19:48: +- 1b:60:31:36:a5:09:b6:84:06:f3:5f:da:d2:ba:0a:84:86:49: +- 59:53:67:0a ++ 4c:e9:dc:20:84:56:fc:5a:9c:7b:8d:85:a2:f5:51:4d:bf:3d: ++ 3b:31:0e:f6:ff:b6:31:15:2c:8b:2c:73:f6:b2:77:19:5f:60: ++ f0:12:b4:2c:1d:1b:4e:76:6e:b9:15:24:c6:78:b6:b1:90:50: ++ 4c:b8:73:c8:78:2e:05:2c:db:45:4e:f8:34:a0:42:b7:fe:ef: ++ 1d:9e:2d:21:4e:74:23:63:b1:90:56:20:57:d3:c4:e5:2a:97: ++ 97:e9:65:8b:03:19:90:b9:43:ec:4d:3b:a6:e1:9e:34:f9:53: ++ 03:10:a7:67:b6:c7:e6:3b:a0:eb:79:be:45:34:f8:ff:41:3f: ++ e2:29:17:17:d9:33:d7:8c:aa:35:a6:3b:c0:7b:49:3e:5f:53: ++ 9c:91:92:03:12:3c:45:e5:e3:48:d5:a3:7c:9f:52:5a:47:b2: ++ f3:09:b3:88:38:14:93:be:c8:91:66:f7:b6:06:2f:69:ab:d5: ++ 7c:42:59:0d:89:f9:b7:46:c7:e7:cb:c0:1c:e0:e5:82:c0:39: ++ 8a:2b:12:58:7f:68:7c:a2:b1:fc:07:2e:a5:12:5e:81:b1:8d: ++ c5:c8:db:13:0f:66:a7:05:37:e3:31:43:b5:a4:a4:ed:b2:70: ++ 2b:bd:c3:c2:16:24:ef:bc:c0:45:a6:70:49:2a:c3:59:53:a6: ++ ba:8d:9c:57 + -----BEGIN CERTIFICATE----- + MIIDZTCCAk2gAwIBAgIBBDANBgkqhkiG9w0BAQsFADBPMQswCQYDVQQGEwJVUzET + MBEGA1UECAwKQ2FsaWZvcm5pYTERMA8GA1UECgwITTJDcnlwdG8xGDAWBgNVBAMM +-D0hlaWtraSBUb2l2b25lbjAeFw0yNDA5MTUyMjI5MTFaFw0zNDA5MTMyMjI5MTFa ++D0hlaWtraSBUb2l2b25lbjAeFw0yNTA0MjIxNDUwMjdaFw0zNTA0MjAxNDUwMjda + MG8xCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMREwDwYDVQQKDAhN + MkNyeXB0bzESMBAGA1UEAwwJUmVjaXBpZW50MSQwIgYJKoZIhvcNAQkBFhVyZWNp + cGllbnRAZXhhbXBsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +-AQCglj6Tbr8ghrkaC+BLKTc2EFM5OyYvf6OFLFwvZ/0MSccVaHvQCk9LKDzCgC7e +-NiyxtVq2s5KvG+Bp08oYXScmh05STlHzrvLljctw6vC2zgzowkvyLh8XtUtwvbqI +-Yi5Xne2Tf2AgGEE8telr/UtqFLtLKnBlv+wzt/9iLvawEjFRLJwiRXf+xZoW3GuD +-wh/sBNv6aTshGPdK8GZ7JmaN8hbGYGWujWV7emEd8Jl0Fiv44edTFD1pGG61arOb +-hagqOGqNag3pRS1hYjWV/+hvdBvVg5efor2Npa7nce8DQq/XlzSRsdWeA0PJG6df +-XbJJlzklptuo7ekdJma75FwvAgMBAAGjLDAqMAkGA1UdEwQCMAAwHQYDVR0OBBYE +-FIYpehWWpCPdAr6pBhwYeW79xlOEMA0GCSqGSIb3DQEBCwUAA4IBAQCJyF2eR7ER +-Zazdb7jRQfoj11psQi8Bf5ykDWqxHsAPXEcwXF504FAh0zVf3pPlt8ISWC7E84+3 +-IkCzn3YmUe/mSfDfT7dSQklmkKeeBIftLP7f1nNpZP4hQRdSvKRrfbBB6Es+3tmm +-SABmxY9tNLSnEkiB4gqEsZv6z3ZypzoCQoPbIGy/gCTnV/UBzoJ+/Ljd3DSJLJiZ +-rm3ax7CgwuzWwTRQaW6tO3rsQROCrSfvAb1pQNMAJua9UxbkNFTR/MD15ZIzlQOs +-tRhC5xDWz8DJCELa0bYtVc507LmvIy+y+rVH3rLG5iVNGUgbYDE2pQm2hAbzX9rS +-ugqEhklZU2cK ++AQDBZKahBmIDVYxy1zJd6latsGQkENRwjHdM+b63KQ5pRxqJfE5ckWMXe4lXGE/6 ++aIhGSIp1wF9qe4hiLTxvcYI4uAamvBvCdCZ96QTC3C8sGn9387ZvHpBZ1U+OKCY9 ++fuQGXw93VAwjGnLQ+Qq4yt2jtL0lLDzjoMWK9EO+1/z959wKIlAaWBCADPhdFnvI ++MpLU3lbi5oZMuyDvjQZS7zt8oCClPLHALr6eA0cGEHLYnRuLseL5qDrylariIQIa ++1mZkkdF26dNFMqgBq87hH3S0utk92BMrSTF09bayXG0SZSej8sjb/CzdchOqfEIu ++HHQ9/Wv1tA2Jeh9lyZruMWDjAgMBAAGjLDAqMAkGA1UdEwQCMAAwHQYDVR0OBBYE ++FNz8cjCoMI319Rv2LIMJqTZV+4oPMA0GCSqGSIb3DQEBCwUAA4IBAQBM6dwghFb8 ++Wpx7jYWi9VFNvz07MQ72/7YxFSyLLHP2sncZX2DwErQsHRtOdm65FSTGeLaxkFBM ++uHPIeC4FLNtFTvg0oEK3/u8dni0hTnQjY7GQViBX08TlKpeX6WWLAxmQuUPsTTum ++4Z40+VMDEKdntsfmO6Dreb5FNPj/QT/iKRcX2TPXjKo1pjvAe0k+X1OckZIDEjxF ++5eNI1aN8n1JaR7LzCbOIOBSTvsiRZve2Bi9pq9V8QlkNifm3Rsfny8Ac4OWCwDmK ++KxJYf2h8orH8By6lEl6BsY3FyNsTD2anBTfjMUO1pKTtsnArvcPCFiTvvMBFpnBJ ++KsNZU6a6jZxX + -----END CERTIFICATE----- + -----BEGIN RSA PRIVATE KEY----- +-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 + -----END RSA PRIVATE KEY----- +diff --git a/tests/recipient_key.pem b/tests/recipient_key.pem +index 4087188..20ad166 100644 +--- a/tests/recipient_key.pem ++++ b/tests/recipient_key.pem +@@ -1,27 +1,27 @@ + -----BEGIN RSA PRIVATE KEY----- +-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 + -----END RSA PRIVATE KEY----- +diff --git a/tests/rsa.priv.pem b/tests/rsa.priv.pem +index 0b8b163..a6ddf0b 100644 +--- a/tests/rsa.priv.pem ++++ b/tests/rsa.priv.pem +@@ -1,16 +1,28 @@ + -----BEGIN PRIVATE KEY----- +-MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAM1lIRXaaLVgzlvW +-F2S6OMFJsfG+coZLx9qzmNb2gK6qjyGa71HeaLvFmQFv60dPjpuaGPs2uhL88hcN +-JAChGiD8LxNpVW0EEw+RRH6/CBlDGuKjkSaPz8zzpEhSZq/yGb0F4zaau1HINnwo +-rYPyRXWyRUzfpEB/7mx8/FUD24knAgMBAAECgYAaInsSP8dBBP9c+iHh5DwihBEL +-VJNX+T6F2oJhH96B2xv5R7CZ9zXWZq8wWqBSY5IexH3XQUBt+BeJzVc+aUFcpKLM +-D1O3OZ8NwC9HGIY0sLeX+uawYdFAPJfF8BZ8x3LMxWA8jdJM+4/P3C3jh2EvyzLT +-HQ1rXBPrLkH45xJQSQJBAPPfSiObRvbeJvkgE0z5SqdbQjTGxeAX5qt1e2LtTwdU +-gAxpYnYPz9CFCcIpa0j9UejlGninXasQvhpdwytBLk0CQQDXm/2kKh9BuWzemIu/ +-QcLSgc7VrGgZnGQ27fp3bXDSOV3Bev9VywLQ5VDBJcRSkMTC0V/+iHZbMl9EpwHN +-8ZdDAkBJHtAZ8PrMFjvVQnrG/5AUsdYeAONfl4sAKc9/D+w8JGfoUMjG4WLMALe2 +-UbjrP5kJnXfcaUI6gmCdgzN7iqWZAkAvJbpKOrfJDH4lEuCEOyIaHC6ZhPDioNM9 +-O77ofLMOFWNOGtJY9WKxQWPuSI7sqyGLpHNEWpzfBl3UylxXp3u3AkEAzCzGUMfM +-0qw/TFlVLzCHhrkP13SrJohdD693w9nuhYM2u27R32qJlF1OvN9NxEV7ZoOSGJxi +-CGTjWcXUGgYQgQ== ++MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDJtzaRhsuaIXec +++4zoqufsVLAycwD6dgvkt0mk8o/hr5PudnhUe8KwCQV4P+Z8/fWGC9KXxMOZiGjU ++bnt+YIrk5zMK5pQbVHKapfUrvoGsVgy2c6OUrFQuv9MJBluKkTgBz8uVzhvz1M+v ++M3Fv8QniFqsN3Q1fPsehiPQQJ+U0Uxqc86Gv3Xfse5/vdkNTwqa6y6Ete+7Uomhp ++WX8ps3sd8xlOWAF0voOqF8CqeJcQ6SJ5nh0naf4n7LDYOtQyXGHq6xkeq3ytuNob ++tywubyKEpNP/wv/2aUg+QxR66sZmNqWWTl6M3mr+ck6tJ57PNgZBLKdXPaEHxfu7 ++MtU7VhTnAgMBAAECggEAAJmEVoNq6ImP7vi1JF3vCZNTi3AvFmTdHTAe+RgQLcYV ++WlX3fpzNk94QVO6vszsYDJl4EKPGRxcSOgtytN9O77ubjxKSFHti9IBoza6nzl4v ++ydJnL+0hOkWvYsKmPq+21b6LPDtGzFSbd3Rfh8sqJzC/um9Solqv7OmDfDwky3aF ++xApNPz2QHbZI6hgSaLea7fOhhmxWQU6YaDrBZHI817LZD5zDhSZC1Xt7pwjVBNc1 ++rl4xTNYWouWFDuAcGPFEXHwl2CtPlZTKuN53BUg+UH7Kp4VyCujp/d19uCjUnuxb ++BtToy/cdzzy7xwJXxsg1AtjQnL8Ij5MKlahSxqP7RQKBgQDs3aIWZA4tgaYskKV9 ++iAbgmmJPIHn1EuJBcKhxQM/iYxYYrbLKhYexsq3wqsTD5gRFKUfrhvXJCk+DuP4q ++LgQi2XBbFz2Vee5uJnH3KlO20ZGlzjYvQoi9bbLeOg0Tk+9SCDcgBUs7RvN/LA6D ++xeOX2FNti0H8oGfyBnasUsUfjQKBgQDaAq3MuAWR4ohrNTmqQth86LVXPEWg4GME ++0e+GhwxjKTQJ4JoXS3pKh4fbJPN7IBUDiQCREZl4zbJCSGfXR4iupDDym7NtldeZ ++vBZE5YoaW/8OP28q5d0q98kJ0cWt45wkOd0LAzMgXFa3UMMa30wiIT+MRqUs6YhQ ++Lb0fig/fQwKBgQC2S2ShouOedjdz+ObEk9nnJiofB7mUubHT92ZLszvK2cN5vsTp ++RJdIVWG05ViGBBKpP7oQNFAZJ4xGris+PygDwiDMmjhVQAAWWhQ/yx2eh+92Ehx1 ++htlCIJkWmsrRlHsNQTFbvXdG6bYg28FX/QbKKD0dA54HVVRqWjsfKJx5SQKBgGJT ++TvvEC48OcqSXrthhqa48bn1Xy7eRPFeSL8um4SlgDf5edGEJQ7CVi+qEsePYRmH/ ++ymejXmqjq0BF07++naDWoNTq8HP+Xu0RbaHJPQ5Ca7iLV6IrZiLY+q0ZFWUmAOg9 ++yLoMyWRRATNQk45tI7NI95ZWzmyBL1+qIWA2Lo5tAoGAEVivm/5cmOYkzJ7wWvYX ++OgDE3ENy7qIXE6+jtFC4RCc9oq5m3y6WnooL4moCDPPfSzWn/rQS2Ar50fIg/S5H ++RXJ8s4Hgc+UcBmq3AuIPSMLRJHcmTeHCUfeZzRyYRg8VelvjMC4oWRSko9umpPe7 +++Nwp/F6vX+CL8cDyhJKQa2w= + -----END PRIVATE KEY----- +diff --git a/tests/rsa.priv2.pem b/tests/rsa.priv2.pem +index 013ab5e..a6ddf0b 100644 +--- a/tests/rsa.priv2.pem ++++ b/tests/rsa.priv2.pem +@@ -1,17 +1,28 @@ +------BEGIN ENCRYPTED PRIVATE KEY----- +-MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIq+j6kBSOkTkCAggA +-MBQGCCqGSIb3DQMHBAin1qbPaI3dAQSCAoAwb9BTWY6+o9GAZk9ZUJHAHL0Yb7C/ +-Hkm8Kh+YBqIEHbTzzSzIO3pFFnLrLLSVbWuYX3bBJRDSUfmV9JaZu0YYJ/TzBtb5 +-epgD+sZ83E11NM0L3rJTI9GOUm8b9U15N94X+gnQj0JSK8Ex0dJpJ3rwHPd1zAOe +-0SjXViOCCuHeu4Mnz3P9B42FR5C/53GLkqtSZCsznSBsbPGZ/mb6eEGjgYtxFm15 +-17Px7ezDjjr5knBozYua3OehCfI6lN1W+yyTvHGF4lpWkm7Pj24uHHh6yagFQuvB +-RgE8eFLLPLBBa3kHWTn6hAPL4pfPIaPiDtX69IshSv2LVcbUPp6pTkji7mo3EFpN +-Jigd3msMCf6w5Wh4I2k8Hb6eSkfsModIru05xq0fuTYi1nTh2l/M3FEGeOuBmpbD +-AYzpT6J1+373rshkdqmv1C/REsnnrACGwbM7JN6K3sKnJZesI3iiHY5tnumypyv3 +-f7wMaRcIq0QOi/WUIKzU0B4f9WxgjDuFwWyYlEBl2IYZ8wxD0P2s968puc7RRwrc +-11Tn0a993122gBAHaa24iAW2ig2hGktLtxY1EvY6Sfd/migu2iVA6bwdVz68kKBj +-tYfJQEoMGJhR+NqSDYvgJYgoNljOIf6Wq++L9/zqgtYkiL7xRLqSvths2NWaxGmc +-RvjWFeq2sTiVXFn36jzO9YfJ4BFqgt5UoBRSw8jYQwm+W5TUhgWGQxQTTrCUs/36 +-5oQXOwpRol+ivO/VtMdDShg6sKHEjQ/FhHqNpPccVLg/g81HbJyfmEmeqYu6rtOd +-xBe9lVFW+86wObsYl1WCHYUQuBUlPv+uEDLqC92/6zLdCtDYYRYvdLF8 +------END ENCRYPTED PRIVATE KEY----- ++-----BEGIN PRIVATE KEY----- ++MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDJtzaRhsuaIXec +++4zoqufsVLAycwD6dgvkt0mk8o/hr5PudnhUe8KwCQV4P+Z8/fWGC9KXxMOZiGjU ++bnt+YIrk5zMK5pQbVHKapfUrvoGsVgy2c6OUrFQuv9MJBluKkTgBz8uVzhvz1M+v ++M3Fv8QniFqsN3Q1fPsehiPQQJ+U0Uxqc86Gv3Xfse5/vdkNTwqa6y6Ete+7Uomhp ++WX8ps3sd8xlOWAF0voOqF8CqeJcQ6SJ5nh0naf4n7LDYOtQyXGHq6xkeq3ytuNob ++tywubyKEpNP/wv/2aUg+QxR66sZmNqWWTl6M3mr+ck6tJ57PNgZBLKdXPaEHxfu7 ++MtU7VhTnAgMBAAECggEAAJmEVoNq6ImP7vi1JF3vCZNTi3AvFmTdHTAe+RgQLcYV ++WlX3fpzNk94QVO6vszsYDJl4EKPGRxcSOgtytN9O77ubjxKSFHti9IBoza6nzl4v ++ydJnL+0hOkWvYsKmPq+21b6LPDtGzFSbd3Rfh8sqJzC/um9Solqv7OmDfDwky3aF ++xApNPz2QHbZI6hgSaLea7fOhhmxWQU6YaDrBZHI817LZD5zDhSZC1Xt7pwjVBNc1 ++rl4xTNYWouWFDuAcGPFEXHwl2CtPlZTKuN53BUg+UH7Kp4VyCujp/d19uCjUnuxb ++BtToy/cdzzy7xwJXxsg1AtjQnL8Ij5MKlahSxqP7RQKBgQDs3aIWZA4tgaYskKV9 ++iAbgmmJPIHn1EuJBcKhxQM/iYxYYrbLKhYexsq3wqsTD5gRFKUfrhvXJCk+DuP4q ++LgQi2XBbFz2Vee5uJnH3KlO20ZGlzjYvQoi9bbLeOg0Tk+9SCDcgBUs7RvN/LA6D ++xeOX2FNti0H8oGfyBnasUsUfjQKBgQDaAq3MuAWR4ohrNTmqQth86LVXPEWg4GME ++0e+GhwxjKTQJ4JoXS3pKh4fbJPN7IBUDiQCREZl4zbJCSGfXR4iupDDym7NtldeZ ++vBZE5YoaW/8OP28q5d0q98kJ0cWt45wkOd0LAzMgXFa3UMMa30wiIT+MRqUs6YhQ ++Lb0fig/fQwKBgQC2S2ShouOedjdz+ObEk9nnJiofB7mUubHT92ZLszvK2cN5vsTp ++RJdIVWG05ViGBBKpP7oQNFAZJ4xGris+PygDwiDMmjhVQAAWWhQ/yx2eh+92Ehx1 ++htlCIJkWmsrRlHsNQTFbvXdG6bYg28FX/QbKKD0dA54HVVRqWjsfKJx5SQKBgGJT ++TvvEC48OcqSXrthhqa48bn1Xy7eRPFeSL8um4SlgDf5edGEJQ7CVi+qEsePYRmH/ ++ymejXmqjq0BF07++naDWoNTq8HP+Xu0RbaHJPQ5Ca7iLV6IrZiLY+q0ZFWUmAOg9 ++yLoMyWRRATNQk45tI7NI95ZWzmyBL1+qIWA2Lo5tAoGAEVivm/5cmOYkzJ7wWvYX ++OgDE3ENy7qIXE6+jtFC4RCc9oq5m3y6WnooL4moCDPPfSzWn/rQS2Ar50fIg/S5H ++RXJ8s4Hgc+UcBmq3AuIPSMLRJHcmTeHCUfeZzRyYRg8VelvjMC4oWRSko9umpPe7 +++Nwp/F6vX+CL8cDyhJKQa2w= ++-----END PRIVATE KEY----- +diff --git a/tests/rsa.pub.pem b/tests/rsa.pub.pem +index e4f13e0..edd6a3b 100644 +--- a/tests/rsa.pub.pem ++++ b/tests/rsa.pub.pem +@@ -1,6 +1,9 @@ + -----BEGIN PUBLIC KEY----- +-MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDNZSEV2mi1YM5b1hdkujjBSbHx +-vnKGS8fas5jW9oCuqo8hmu9R3mi7xZkBb+tHT46bmhj7NroS/PIXDSQAoRog/C8T +-aVVtBBMPkUR+vwgZQxrio5Emj8/M86RIUmav8hm9BeM2mrtRyDZ8KK2D8kV1skVM +-36RAf+5sfPxVA9uJJwIDAQAB ++MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAybc2kYbLmiF3nPuM6Krn ++7FSwMnMA+nYL5LdJpPKP4a+T7nZ4VHvCsAkFeD/mfP31hgvSl8TDmYho1G57fmCK ++5OczCuaUG1RymqX1K76BrFYMtnOjlKxULr/TCQZbipE4Ac/Llc4b89TPrzNxb/EJ ++4harDd0NXz7HoYj0ECflNFManPOhr9137Huf73ZDU8KmusuhLXvu1KJoaVl/KbN7 ++HfMZTlgBdL6DqhfAqniXEOkieZ4dJ2n+J+yw2DrUMlxh6usZHqt8rbjaG7csLm8i ++hKTT/8L/9mlIPkMUeurGZjallk5ejN5q/nJOrSeezzYGQSynVz2hB8X7uzLVO1YU ++5wIDAQAB + -----END PUBLIC KEY----- +diff --git a/tests/server.pem b/tests/server.pem +index a046f80..a0e0e57 100644 +--- a/tests/server.pem ++++ b/tests/server.pem +@@ -5,98 +5,98 @@ Certificate: + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, ST=California, O=M2Crypto, CN=Heikki Toivonen + Validity +- Not Before: Sep 15 22:29:11 2024 GMT +- Not After : Sep 13 22:29:11 2034 GMT ++ Not Before: Apr 22 14:50:27 2025 GMT ++ Not After : Apr 20 14:50:27 2035 GMT + Subject: C=US, ST=California, O=M2Crypto, CN=localhost + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public-Key: (2048 bit) + Modulus: +- 00:b9:d7:87:34:7a:8b:c6:c6:fa:ec:05:60:75:4f: +- ba:e6:3c:0b:3b:70:f4:d6:0a:57:20:38:2d:ef:de: +- 9c:61:45:69:d4:69:95:cb:eb:c9:c7:f2:72:07:e1: +- 71:bc:91:5a:ce:65:f8:e5:3c:b2:5a:bf:15:3e:b5: +- d2:65:25:06:82:dd:fb:1b:a2:5d:02:ab:37:a9:74: +- 84:84:36:f9:22:25:95:2a:a3:ae:be:c5:91:31:94: +- ca:8b:15:d6:99:8a:b0:d7:ba:48:84:36:9e:0a:6e: +- eb:66:f5:46:f5:e7:63:1b:1c:97:ea:fd:e8:da:d0: +- 81:ed:87:7d:13:fb:61:5b:0b:b5:9f:cd:e3:b1:0b: +- ba:57:a6:c9:92:70:02:01:91:aa:7e:12:d4:d6:4e: +- b6:93:4c:a6:8f:d0:9e:38:df:24:e5:24:1c:04:25: +- 04:f4:6b:c9:b8:0f:b2:af:a6:0e:8a:6c:31:d6:71: +- bc:17:22:54:97:37:f5:b1:75:e0:75:f7:83:d5:2a: +- 7b:bc:bd:b3:4b:5c:54:0e:a0:a6:2f:0d:67:b2:13: +- ec:ce:41:34:32:bd:64:8d:89:ac:53:f7:6c:94:77: +- 22:68:d4:83:70:ce:f1:27:fd:43:99:e0:41:1f:88: +- 5c:55:a5:5a:9e:8a:e2:9d:62:0d:9d:52:ef:66:df: +- 32:d3 ++ 00:c8:99:5f:67:6b:be:f2:45:2d:85:0b:ca:d9:ad: ++ 66:d9:47:97:7c:d4:cb:e6:91:55:33:79:45:86:1c: ++ 4f:08:12:7f:4b:ec:83:bc:da:b5:af:0b:36:94:e9: ++ 7a:90:c5:0f:39:63:c6:a4:51:b9:92:00:8e:d8:d6: ++ 32:6f:7f:47:9d:f6:9a:9a:0f:18:66:14:13:a0:99: ++ f7:29:8e:31:ee:9f:17:07:18:bd:b3:3c:74:bc:a9: ++ 6f:0d:b4:25:1a:3d:5f:b5:d5:1d:85:5b:5b:ed:f5: ++ 30:1e:0a:31:21:33:59:0d:d5:d0:33:71:33:7e:21: ++ 5e:f0:bd:d2:79:e7:a7:e3:e0:48:dd:c2:11:65:5a: ++ 27:39:ad:39:3a:23:02:01:9f:d6:e6:5a:f0:b0:8f: ++ 8d:34:c8:44:f1:2b:38:59:d7:dd:3b:ee:e2:40:a5: ++ 15:b9:96:05:59:43:9e:03:92:06:2f:01:64:11:3a: ++ 60:31:ec:c3:55:fe:9a:5d:54:6a:6a:a9:b7:f5:1b: ++ 0e:c4:73:b3:50:c3:14:04:5a:ba:70:d1:dc:ec:37: ++ 1b:10:e3:59:51:54:06:fa:8e:c3:03:09:6f:c5:97: ++ a8:80:a5:64:d9:3a:a5:62:e2:ca:7a:aa:4c:99:dc: ++ 89:29:59:88:de:d3:96:ee:23:c7:30:2e:bd:b9:44: ++ bf:97 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: + CA:FALSE + X509v3 Subject Key Identifier: +- E7:E7:75:64:20:A3:36:64:11:A8:4F:A9:C6:3F:DB:BD:DF:31:68:45 ++ A5:1F:B6:1F:99:5E:36:5D:FB:55:D5:A1:99:E8:76:32:5D:60:08:BF + Signature Algorithm: sha256WithRSAEncryption + Signature Value: +- 79:de:10:aa:db:4c:95:8c:65:74:c8:2f:1d:f5:9f:8a:d7:71: +- 00:51:dc:60:b1:1d:73:37:15:d6:a9:2e:0b:3d:d4:82:87:af: +- a1:03:6b:25:2e:b6:1c:5b:46:fc:80:52:b1:31:4d:8c:52:65: +- 99:0c:88:ef:5f:82:99:ce:6b:76:f1:11:ac:66:f7:b0:74:82: +- bf:91:3c:bd:90:3c:5c:9b:d6:98:33:f2:0e:f5:59:87:10:a2: +- fe:9a:91:b7:8c:b2:18:d6:63:71:be:86:67:8b:ca:4e:5b:69: +- 55:bc:89:13:06:2c:c6:5f:3f:f4:23:58:5c:47:fd:77:4f:1b: +- a9:eb:91:26:4c:ce:8f:7c:e0:0b:af:6f:83:00:9d:26:d0:98: +- 11:fa:29:4c:de:be:2b:d5:7a:2b:9c:0a:e6:84:26:e5:ae:99: +- f6:09:ee:00:5e:df:f1:14:32:8e:c8:0a:56:63:3a:3b:6d:01: +- ee:ff:b2:c2:cd:cb:f7:74:cb:7d:c4:18:b5:33:a4:6f:1b:29: +- e9:2d:a1:77:67:b6:a0:ee:88:95:ea:61:b6:79:ed:ef:4f:d9: +- 11:cd:71:35:ff:f8:3b:75:49:6f:6a:ba:24:ff:74:7c:0a:20: +- d7:16:e4:06:3e:a9:b7:13:d2:b3:ac:ae:71:2c:1c:95:8a:29: +- c9:ee:32:8e ++ 77:d9:f1:59:61:76:7c:dc:f6:f1:46:d4:6a:f8:30:e5:94:dd: ++ 92:63:20:5a:e5:b2:a0:a5:c7:5c:22:c8:ca:9f:c7:d7:bc:42: ++ b3:8c:a0:3e:60:76:bd:a4:98:fb:25:8f:a6:87:6d:dc:43:37: ++ 7e:15:60:ad:f2:17:29:34:2b:ea:fc:f6:69:ca:20:e3:c7:6e: ++ 66:42:2e:d3:21:f3:53:40:7a:2e:f2:26:74:ac:6c:1f:6f:7d: ++ b8:d1:d3:24:0e:5e:9e:d9:4c:da:d8:f1:db:4d:9e:5b:48:66: ++ 70:92:93:db:80:c1:84:d4:73:f2:57:b3:f0:d5:8e:43:2b:14: ++ 0d:6d:77:51:36:48:ac:35:b5:d3:57:a4:29:af:35:8a:a6:c2: ++ a7:77:c6:62:aa:64:6a:3e:61:a7:ed:94:01:64:fb:d3:45:0c: ++ c5:e8:1a:ad:83:d4:b8:fd:6c:d8:7d:5f:f6:02:c6:4d:e8:37: ++ 83:1c:4e:bb:b6:97:e0:54:b2:91:5f:e3:cd:c9:a5:c0:f2:35: ++ 9d:24:21:ae:4f:48:0c:f8:fc:f7:19:2a:25:8d:a7:41:de:a3: ++ 52:0f:c0:52:55:4d:60:d2:9f:55:4f:f2:ea:0d:36:94:00:8f: ++ 99:01:d8:33:c0:d1:6c:57:b6:a7:3a:4b:cd:f8:62:d8:21:bd: ++ 5c:ab:2a:0b + -----BEGIN CERTIFICATE----- + MIIDPzCCAiegAwIBAgIBATANBgkqhkiG9w0BAQsFADBPMQswCQYDVQQGEwJVUzET + MBEGA1UECAwKQ2FsaWZvcm5pYTERMA8GA1UECgwITTJDcnlwdG8xGDAWBgNVBAMM +-D0hlaWtraSBUb2l2b25lbjAeFw0yNDA5MTUyMjI5MTFaFw0zNDA5MTMyMjI5MTFa ++D0hlaWtraSBUb2l2b25lbjAeFw0yNTA0MjIxNDUwMjdaFw0zNTA0MjAxNDUwMjda + MEkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMREwDwYDVQQKDAhN + MkNyeXB0bzESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOC +-AQ8AMIIBCgKCAQEAudeHNHqLxsb67AVgdU+65jwLO3D01gpXIDgt796cYUVp1GmV +-y+vJx/JyB+FxvJFazmX45TyyWr8VPrXSZSUGgt37G6JdAqs3qXSEhDb5IiWVKqOu +-vsWRMZTKixXWmYqw17pIhDaeCm7rZvVG9edjGxyX6v3o2tCB7Yd9E/thWwu1n83j +-sQu6V6bJknACAZGqfhLU1k62k0ymj9CeON8k5SQcBCUE9GvJuA+yr6YOimwx1nG8 +-FyJUlzf1sXXgdfeD1Sp7vL2zS1xUDqCmLw1nshPszkE0Mr1kjYmsU/dslHciaNSD +-cM7xJ/1DmeBBH4hcVaVanorinWINnVLvZt8y0wIDAQABoywwKjAJBgNVHRMEAjAA +-MB0GA1UdDgQWBBTn53VkIKM2ZBGoT6nGP9u93zFoRTANBgkqhkiG9w0BAQsFAAOC +-AQEAed4QqttMlYxldMgvHfWfitdxAFHcYLEdczcV1qkuCz3UgoevoQNrJS62HFtG +-/IBSsTFNjFJlmQyI71+Cmc5rdvERrGb3sHSCv5E8vZA8XJvWmDPyDvVZhxCi/pqR +-t4yyGNZjcb6GZ4vKTltpVbyJEwYsxl8/9CNYXEf9d08bqeuRJkzOj3zgC69vgwCd +-JtCYEfopTN6+K9V6K5wK5oQm5a6Z9gnuAF7f8RQyjsgKVmM6O20B7v+yws3L93TL +-fcQYtTOkbxsp6S2hd2e2oO6Ilephtnnt70/ZEc1xNf/4O3VJb2q6JP90fAog1xbk +-Bj6ptxPSs6yucSwclYopye4yjg== ++AQ8AMIIBCgKCAQEAyJlfZ2u+8kUthQvK2a1m2UeXfNTL5pFVM3lFhhxPCBJ/S+yD ++vNq1rws2lOl6kMUPOWPGpFG5kgCO2NYyb39Hnfaamg8YZhQToJn3KY4x7p8XBxi9 ++szx0vKlvDbQlGj1ftdUdhVtb7fUwHgoxITNZDdXQM3EzfiFe8L3Seeen4+BI3cIR ++ZVonOa05OiMCAZ/W5lrwsI+NNMhE8Ss4WdfdO+7iQKUVuZYFWUOeA5IGLwFkETpg ++MezDVf6aXVRqaqm39RsOxHOzUMMUBFq6cNHc7DcbEONZUVQG+o7DAwlvxZeogKVk ++2TqlYuLKeqpMmdyJKVmI3tOW7iPHMC69uUS/lwIDAQABoywwKjAJBgNVHRMEAjAA ++MB0GA1UdDgQWBBSlH7YfmV42XftV1aGZ6HYyXWAIvzANBgkqhkiG9w0BAQsFAAOC ++AQEAd9nxWWF2fNz28UbUavgw5ZTdkmMgWuWyoKXHXCLIyp/H17xCs4ygPmB2vaSY +++yWPpodt3EM3fhVgrfIXKTQr6vz2acog48duZkIu0yHzU0B6LvImdKxsH299uNHT ++JA5entlM2tjx202eW0hmcJKT24DBhNRz8lez8NWOQysUDW13UTZIrDW101ekKa81 ++iqbCp3fGYqpkaj5hp+2UAWT700UMxegarYPUuP1s2H1f9gLGTeg3gxxOu7aX4FSy ++kV/jzcmlwPI1nSQhrk9IDPj89xkqJY2nQd6jUg/AUlVNYNKfVU/y6g02lACPmQHY ++M8DRbFe2pzpLzfhi2CG9XKsqCw== + -----END CERTIFICATE----- + -----BEGIN RSA PRIVATE KEY----- +-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 + -----END RSA PRIVATE KEY----- +diff --git a/tests/server_key.pem b/tests/server_key.pem +index 1dc37fb..d803c6c 100644 +--- a/tests/server_key.pem ++++ b/tests/server_key.pem +@@ -1,27 +1,27 @@ + -----BEGIN RSA PRIVATE KEY----- +-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 + -----END RSA PRIVATE KEY----- +diff --git a/tests/signer.pem b/tests/signer.pem +index f1e6294..f3670be 100644 +--- a/tests/signer.pem ++++ b/tests/signer.pem +@@ -5,72 +5,72 @@ Certificate: + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, ST=California, O=M2Crypto, CN=Heikki Toivonen + Validity +- Not Before: Sep 15 22:29:11 2024 GMT +- Not After : Sep 13 22:29:11 2034 GMT ++ Not Before: Apr 22 14:50:27 2025 GMT ++ Not After : Apr 20 14:50:27 2035 GMT + Subject: C=US, ST=California, O=M2Crypto, CN=Signer/emailAddress=signer@example.com + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public-Key: (2048 bit) + Modulus: +- 00:bd:ff:d7:5f:f8:65:02:92:98:44:72:fe:e2:5b: +- 93:e0:a2:78:00:2c:5d:cd:77:92:eb:fd:5f:c6:fc: +- 09:cb:f9:76:dd:95:ed:07:4f:00:2f:73:75:18:fb: +- b3:44:19:7c:18:2b:bf:12:56:e9:e5:fb:37:9b:c9: +- 0b:9b:4c:b0:36:60:63:9e:da:73:3a:4d:b7:d0:23: +- 09:4b:08:33:dc:8c:6a:be:f3:74:2d:c8:3c:06:68: +- d6:54:e5:63:38:71:da:4b:3d:3f:19:b2:c3:67:53: +- 02:20:cd:71:ae:70:bd:f8:5f:e8:a4:f9:1b:5b:d6: +- e3:4e:2f:68:a6:45:55:95:aa:02:08:f2:d9:dc:71: +- 32:17:7d:32:e8:9e:5c:08:49:dd:b5:7f:b8:bc:b2: +- 65:41:cf:e5:6b:b5:db:4f:a6:c4:ac:c2:1d:16:a6: +- 84:00:6b:fd:74:4f:b5:06:c0:bb:d9:f9:2a:1d:b5: +- 75:b6:dd:53:59:c4:6a:1c:d2:71:a5:fe:19:01:b5: +- 65:be:b0:24:00:7f:63:f4:ac:63:82:a3:b9:c2:4c: +- d2:07:c4:6e:97:a2:59:c7:8f:0c:fd:0f:4d:de:b5: +- d7:33:1f:2e:ae:e6:21:58:59:8b:82:79:d9:87:ab: +- b7:77:b5:ba:2a:61:3f:1d:33:9a:0f:72:15:7d:a1: +- 6b:55 ++ 00:d0:90:54:6d:02:19:6c:bd:2a:cd:08:ac:b1:1e: ++ 19:f5:64:2f:11:62:8d:ee:51:bc:b1:69:0d:0e:e4: ++ 9c:aa:fc:5b:60:ca:53:0c:52:1c:2f:92:f4:c2:56: ++ 98:7a:8c:ac:50:a8:d9:bf:a0:d8:99:8a:ca:92:b0: ++ 98:84:77:4c:ae:30:5f:5c:2c:3c:9e:68:0c:a7:bc: ++ 53:1e:d1:c0:d8:22:d8:fe:bd:18:cf:60:21:38:97: ++ 66:17:9c:11:6b:31:ea:48:03:82:b3:de:a6:c4:48: ++ dd:95:bd:6d:d6:d9:42:6c:1c:22:5e:4f:83:02:ce: ++ 32:8d:0b:8b:a5:d9:6d:e6:b7:0a:9e:56:0f:c0:0b: ++ a1:05:a4:dd:3b:f3:20:ce:70:6b:c6:b3:a3:f4:fb: ++ c8:27:af:05:c8:94:a0:d5:17:03:30:72:64:3c:d1: ++ 9b:b2:3b:4f:94:ff:ee:42:c2:bb:05:e3:6e:de:bf: ++ 39:02:dc:17:63:40:4f:6c:7c:bb:b6:7b:a0:b3:4d: ++ c8:c4:e0:27:43:3d:a7:5c:2f:5c:a7:dc:09:d8:46: ++ ad:d0:2e:0c:97:bc:6f:03:69:df:1b:37:6d:67:6f: ++ fd:4d:68:fb:53:0f:df:01:db:e8:05:b5:be:9b:fb: ++ dc:e2:8a:68:0a:96:2a:3e:75:0f:fc:03:c6:a8:50: ++ 77:e3 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: + CA:FALSE + X509v3 Subject Key Identifier: +- 93:E4:7F:25:35:D1:AC:98:6C:77:D2:52:B6:36:42:C0:53:4E:FD:F2 ++ 72:2E:DF:45:BD:A4:04:AD:32:46:BA:C0:72:A1:4A:CB:2D:13:77:39 + Signature Algorithm: sha256WithRSAEncryption + Signature Value: +- 9e:4b:46:a1:8e:33:c2:03:40:d3:c6:81:5c:9f:32:2c:ce:21: +- 6d:37:32:eb:66:1e:06:0c:80:86:9f:1c:d8:65:91:8d:15:b5: +- 44:66:26:30:a0:d5:de:02:16:4b:7e:58:59:bd:29:6b:36:96: +- 4c:77:9e:98:68:6b:61:32:c1:c1:c3:d9:4a:70:01:7c:d4:65: +- 4f:d6:b3:75:0b:59:16:17:4c:0a:77:fa:c8:e1:52:0d:09:09: +- 4a:78:75:ce:9b:91:c1:aa:54:8d:3e:ca:57:f3:4f:d0:23:51: +- b0:83:d7:07:05:18:77:90:c3:a7:aa:fe:9a:8c:ba:e1:35:24: +- 89:c1:15:be:22:9f:77:f6:2e:3b:dc:03:11:fa:92:49:95:c4: +- e8:49:4b:40:1a:36:00:1c:1b:7c:60:88:2d:57:51:32:3a:ff: +- 1e:1a:ac:73:2b:de:33:ed:64:52:4b:75:37:9f:7a:04:7a:1d: +- b7:26:31:27:74:d0:b8:14:46:83:65:5e:13:ec:63:99:58:0a: +- fb:fd:e2:9a:fe:80:68:f3:d8:96:77:56:9e:5b:68:21:8e:bf: +- 9e:62:1a:31:e5:d7:3c:12:14:74:f3:fe:56:bc:e6:d7:be:64: +- 36:25:9f:b8:b5:b9:ad:41:42:48:85:41:76:33:da:22:f6:da: +- 07:c0:cd:a5 ++ 28:12:22:43:61:b3:88:f2:6b:4c:6c:cd:f7:17:84:06:ab:ca: ++ d8:f8:c3:39:fd:a0:46:b9:d4:3c:46:c4:f5:89:7b:3c:47:f6: ++ 8b:48:b0:7a:69:63:da:61:f3:ad:82:6f:0f:82:c3:9f:5f:69: ++ 73:55:3e:6d:b6:d0:c4:3d:76:a4:3e:c8:f9:82:9a:60:4b:5f: ++ 3a:a3:ea:06:21:f3:02:5c:9d:17:7a:42:34:75:d5:0e:52:39: ++ 83:37:02:3f:df:48:99:68:4e:47:64:8d:dd:34:7c:12:c5:c2: ++ e3:d3:c0:b9:1f:74:4e:08:c8:90:6b:95:b6:ed:8a:54:be:fc: ++ 9d:5e:af:4e:d7:f7:4a:04:c0:e6:23:73:32:a3:7f:5a:a0:ce: ++ f3:d8:d1:b6:96:ab:73:1c:b2:6a:ff:7b:45:d7:f6:3e:12:d1: ++ 89:31:b0:46:5e:ea:71:a9:59:6b:97:0a:59:73:87:f0:3d:e4: ++ 47:80:e7:6f:99:06:99:e0:59:c7:dc:6a:00:51:d1:90:10:89: ++ 6a:c8:39:07:1f:48:26:c2:85:a0:17:28:20:be:61:6a:d8:ad: ++ 4f:ce:73:6b:d5:fd:4b:85:1f:53:e8:53:a5:9b:77:e3:94:fb: ++ a9:ed:0f:d0:b3:9a:88:18:0d:a9:4d:13:d8:f6:93:82:17:86: ++ 21:b4:c6:54 + -----BEGIN CERTIFICATE----- + MIIDXzCCAkegAwIBAgIBAzANBgkqhkiG9w0BAQsFADBPMQswCQYDVQQGEwJVUzET + MBEGA1UECAwKQ2FsaWZvcm5pYTERMA8GA1UECgwITTJDcnlwdG8xGDAWBgNVBAMM +-D0hlaWtraSBUb2l2b25lbjAeFw0yNDA5MTUyMjI5MTFaFw0zNDA5MTMyMjI5MTFa ++D0hlaWtraSBUb2l2b25lbjAeFw0yNTA0MjIxNDUwMjdaFw0zNTA0MjAxNDUwMjda + MGkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMREwDwYDVQQKDAhN + MkNyeXB0bzEPMA0GA1UEAwwGU2lnbmVyMSEwHwYJKoZIhvcNAQkBFhJzaWduZXJA +-ZXhhbXBsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9/9df +-+GUCkphEcv7iW5PgongALF3Nd5Lr/V/G/AnL+Xbdle0HTwAvc3UY+7NEGXwYK78S +-Vunl+zebyQubTLA2YGOe2nM6TbfQIwlLCDPcjGq+83QtyDwGaNZU5WM4cdpLPT8Z +-ssNnUwIgzXGucL34X+ik+Rtb1uNOL2imRVWVqgII8tnccTIXfTLonlwISd21f7i8 +-smVBz+VrtdtPpsSswh0WpoQAa/10T7UGwLvZ+SodtXW23VNZxGoc0nGl/hkBtWW+ +-sCQAf2P0rGOCo7nCTNIHxG6XolnHjwz9D03etdczHy6u5iFYWYuCedmHq7d3tboq +-YT8dM5oPchV9oWtVAgMBAAGjLDAqMAkGA1UdEwQCMAAwHQYDVR0OBBYEFJPkfyU1 +-0ayYbHfSUrY2QsBTTv3yMA0GCSqGSIb3DQEBCwUAA4IBAQCeS0ahjjPCA0DTxoFc +-nzIsziFtNzLrZh4GDICGnxzYZZGNFbVEZiYwoNXeAhZLflhZvSlrNpZMd56YaGth +-MsHBw9lKcAF81GVP1rN1C1kWF0wKd/rI4VINCQlKeHXOm5HBqlSNPspX80/QI1Gw +-g9cHBRh3kMOnqv6ajLrhNSSJwRW+Ip939i473AMR+pJJlcToSUtAGjYAHBt8YIgt +-V1EyOv8eGqxzK94z7WRSS3U3n3oEeh23JjEndNC4FEaDZV4T7GOZWAr7/eKa/oBo +-89iWd1aeW2ghjr+eYhox5dc8EhR08/5WvObXvmQ2JZ+4tbmtQUJIhUF2M9oi9toH +-wM2l ++ZXhhbXBsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDQkFRt ++AhlsvSrNCKyxHhn1ZC8RYo3uUbyxaQ0O5Jyq/FtgylMMUhwvkvTCVph6jKxQqNm/ ++oNiZisqSsJiEd0yuMF9cLDyeaAynvFMe0cDYItj+vRjPYCE4l2YXnBFrMepIA4Kz ++3qbESN2VvW3W2UJsHCJeT4MCzjKNC4ul2W3mtwqeVg/AC6EFpN078yDOcGvGs6P0 +++8gnrwXIlKDVFwMwcmQ80ZuyO0+U/+5CwrsF427evzkC3BdjQE9sfLu2e6CzTcjE ++4CdDPadcL1yn3AnYRq3QLgyXvG8Dad8bN21nb/1NaPtTD98B2+gFtb6b+9ziimgK ++lio+dQ/8A8aoUHfjAgMBAAGjLDAqMAkGA1UdEwQCMAAwHQYDVR0OBBYEFHIu30W9 ++pAStMka6wHKhSsstE3c5MA0GCSqGSIb3DQEBCwUAA4IBAQAoEiJDYbOI8mtMbM33 ++F4QGq8rY+MM5/aBGudQ8RsT1iXs8R/aLSLB6aWPaYfOtgm8PgsOfX2lzVT5tttDE ++PXakPsj5gppgS186o+oGIfMCXJ0XekI0ddUOUjmDNwI/30iZaE5HZI3dNHwSxcLj ++08C5H3ROCMiQa5W27YpUvvydXq9O1/dKBMDmI3Myo39aoM7z2NG2lqtzHLJq/3tF ++1/Y+EtGJMbBGXupxqVlrlwpZc4fwPeRHgOdvmQaZ4FnH3GoAUdGQEIlqyDkHH0gm ++woWgFyggvmFq2K1PznNr1f1LhR9T6FOlm3fjlPup7Q/Qs5qIGA2pTRPY9pOCF4Yh ++tMZU + -----END CERTIFICATE----- +diff --git a/tests/signer_key.pem b/tests/signer_key.pem +index 3863a0f..c52cb96 100644 +--- a/tests/signer_key.pem ++++ b/tests/signer_key.pem +@@ -1,27 +1,27 @@ + -----BEGIN RSA PRIVATE KEY----- +-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 + -----END RSA PRIVATE KEY----- +diff --git a/tests/test_authcookie.py b/tests/test_authcookie.py +index c844bee..e38bcd9 100755 +--- a/tests/test_authcookie.py ++++ b/tests/test_authcookie.py +@@ -67,7 +67,7 @@ class AuthCookieTestCase(unittest.TestCase): + # Peek inside the cookie jar... + key = self.jar._key # pylint: disable=protected-access + mac = util.bin_to_hex( +- EVP.hmac(key, mix(self.exp, self.data).encode(), 'sha1') ++ EVP.hmac(key, mix(self.exp, self.data).encode(), 'sha256') + ) + self.assertEqual(c.mac(), mac) + # Ok, stop peeking now. +@@ -121,7 +121,7 @@ class AuthCookieTestCase(unittest.TestCase): + self.assertAlmostEqual(exp, self.exp, places=4) + key = self.jar._key # pylint: disable=protected-access + mac = util.bin_to_hex( +- EVP.hmac(key, mix(self.exp, self.data).encode(), 'sha1') ++ EVP.hmac(key, mix(self.exp, self.data).encode(), 'sha256') + ) + self.assertEqual(digest, mac) + +diff --git a/tests/test_dsa.py b/tests/test_dsa.py +index 7b1860b..8ffc60f 100644 +--- a/tests/test_dsa.py ++++ b/tests/test_dsa.py +@@ -17,8 +17,8 @@ class DSATestCase(unittest.TestCase): + pubkey = 'tests/dsa.pub.pem' + param = 'tests/dsa.param.pem' + +- data = hashlib.sha1(b'Can you spell subliminal channel?').digest() +- different_data = hashlib.sha1(b'I can spell.').digest() ++ data = hashlib.sha256(b'Can you spell subliminal channel?').digest() ++ different_data = hashlib.sha256(b'I can spell.').digest() + + def callback(self, *args): + pass +diff --git a/tests/test_ecdsa.py b/tests/test_ecdsa.py +index 99678b3..b2f209f 100644 +--- a/tests/test_ecdsa.py ++++ b/tests/test_ecdsa.py +@@ -25,7 +25,7 @@ class ECDSATestCase(unittest.TestCase): + privkey = 'tests/ec.priv.pem' + pubkey = 'tests/ec.pub.pem' + +- data = hashlib.sha1(b'Can you spell subliminal channel?').digest() ++ data = hashlib.sha256(b'Can you spell subliminal channel?').digest() + + def setUp(self): + assert os.path.exists(self.errkey) and os.access( +diff --git a/tests/test_evp.py b/tests/test_evp.py +index 2699fef..de39727 100644 +--- a/tests/test_evp.py ++++ b/tests/test_evp.py +@@ -12,7 +12,7 @@ import hashlib + import io + import logging + +-from binascii import a2b_hex, hexlify, unhexlify ++from binascii import a2b_hex, b2a_hex, hexlify, unhexlify + + from M2Crypto import BIO, EVP, RSA, EC, Rand, m2, util + from tests import unittest +@@ -118,33 +118,33 @@ class EVPTestCase(unittest.TestCase): + def test_get_digestbyname(self): + with self.assertRaises(EVP.EVPError): + m2.get_digestbyname('sha513') +- self.assertNotEqual(m2.get_digestbyname('sha1'), None) ++ self.assertNotEqual(m2.get_digestbyname('sha256'), None) + + def test_MessageDigest(self): # noqa + with self.assertRaises(ValueError): + EVP.MessageDigest('sha513') +- md = EVP.MessageDigest('sha1') ++ md = EVP.MessageDigest('sha256') + self.assertEqual(md.update(b'Hello'), 1) + self.assertEqual( + util.octx_to_num(md.final()), +- 1415821221623963719413415453263690387336440359920, ++ 11024336812845202542736754815889718862783203771635063178616734621641926515049, + ) + +- # temporarily remove sha1 from m2 +- old_sha1 = m2.sha1 +- del m2.sha1 ++ # temporarily remove sha256 from m2 ++ old_sha1 = m2.sha256 ++ del m2.sha256 + + # now run the same test again, relying on EVP.MessageDigest() to call + # get_digestbyname() under the hood +- md = EVP.MessageDigest('sha1') ++ md = EVP.MessageDigest('sha256') + self.assertEqual(md.update(b'Hello'), 1) + self.assertEqual( + util.octx_to_num(md.final()), +- 1415821221623963719413415453263690387336440359920, ++ 11024336812845202542736754815889718862783203771635063178616734621641926515049, + ) + +- # put sha1 back in place +- m2.sha1 = old_sha1 ++ # put sha256 back in place ++ m2.sha256 = old_sha1 + + def test_as_der_capture_key(self): + """ +@@ -168,7 +168,7 @@ class EVPTestCase(unittest.TestCase): + def test_hmac(self): + self.assertEqual( + util.octx_to_num(EVP.hmac(b'key', b'data')), +- 92800611269186718152770431077867383126636491933, ++ 36273358097036101702192658888336808701031275731906771612800928188662823394256, + util.octx_to_num(EVP.hmac(b'key', b'data')), + ) + if not fips_mode: # Disabled algorithms +@@ -258,7 +258,7 @@ class EVPTestCase(unittest.TestCase): + self.assertNotEqual(pem, pem2) + + message = b'This is the message string' +- digest = hashlib.sha1(message).digest() ++ digest = hashlib.sha256(message).digest() + self.assertEqual(rsa.sign(digest), rsa2.sign(digest)) + + rsa3 = RSA.gen_key(1024, 3, callback=self._gen_callback) +@@ -315,7 +315,7 @@ class EVPTestCase(unittest.TestCase): + self.assertNotEqual(pem, pem2) + + message = b'This is the message string' +- digest = hashlib.sha1(message).digest() ++ digest = hashlib.sha256(message).digest() + ec_sign = ec.sign_dsa(digest) + ec2_sign = ec.sign_dsa(digest) + self.assertEqual( +@@ -535,7 +535,7 @@ class CipherTestCase(unittest.TestCase): + b'12345678', + enc, + 1, +- 'sha1', ++ 'sha256', + b'saltsalt', + 5, + ) +@@ -551,7 +551,7 @@ class CipherTestCase(unittest.TestCase): + b'12345678', + dec, + 1, +- 'sha1', ++ 'sha256', + b'saltsalt', + 5, + ) +@@ -848,40 +848,42 @@ class HMACTestCase(unittest.TestCase): + data1 = [ + b'', + b'More text test vectors to stuff up EBCDIC machines :-)', +- a2b_hex("b760e92d6662d351eb3801057695ac0346295356"), ++ a2b_hex("5a3f9959ce1f220eadeb40e4d89b3b8d3ea10e1b6917b5c4bb131624eb740b8e"), + ] + + data2 = [ + a2b_hex(b'0b' * 16), + b"Hi There", +- a2b_hex("675b0b3a1b4ddf4e124872da6c2f632bfed957e9"), ++ a2b_hex("492ce020fe2534a5789dc3848806c78f4f6711397f08e7e7a12ca5a4483c8aa6"), + ] + + data3 = [ + b'Jefe', + b"what do ya want for nothing?", +- a2b_hex("effcdf6ae5eb2fa2d27416d5f184df9c259a7c79"), ++ a2b_hex("5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843"), + ] + + data4 = [ + a2b_hex(b'aa' * 16), + a2b_hex(b'dd' * 50), +- a2b_hex("d730594d167e35d5956fd8003d0db3d3f46dc7bb"), ++ a2b_hex("7dda3cc169743a6484649f94f0eda0f9f2ff496a9733fb796ed5adb40a44c3c1"), + ] + + data = [data1, data2, data3, data4] + + def test_simple(self): +- algo = 'sha1' ++ self.maxDiff = None ++ algo = 'sha256' + for d in self.data: +- h = EVP.HMAC(d[0], algo) +- h.update(d[1]) +- ret = h.final() +- self.assertEqual(ret, d[2]) ++ with self.subTest(i=self.data.index(d)): ++ h = EVP.HMAC(d[0], algo) ++ h.update(d[1]) ++ ret = h.final() ++ self.assertEqual(ret, d[2]) + with self.assertRaises(ValueError): + EVP.HMAC(d[0], algo='nosuchalgo') + +- def make_chain_HMAC(self, key, start, input, algo='sha1'): # noqa ++ def make_chain_HMAC(self, key, start, input, algo='sha256'): # noqa + chain = [] + hmac = EVP.HMAC(key, algo) + hmac.update(repr(start)) +@@ -894,7 +896,7 @@ class HMACTestCase(unittest.TestCase): + chain.append((digest, i)) + return chain + +- def make_chain_hmac(self, key, start, input, algo='sha1'): ++ def make_chain_hmac(self, key, start, input, algo='sha256'): + chain = [] + digest = EVP.hmac(key, start, algo) + chain.append((digest, start)) +@@ -903,7 +905,7 @@ class HMACTestCase(unittest.TestCase): + chain.append((digest, i)) + return chain + +- def verify_chain_hmac(self, key, start, chain, algo='sha1'): ++ def verify_chain_hmac(self, key, start, chain, algo='sha256'): + digest = EVP.hmac(key, start, algo) + c = chain[0] + if c[0] != digest or c[1] != start: +@@ -915,7 +917,7 @@ class HMACTestCase(unittest.TestCase): + return 1 + + def verify_chain_HMAC( +- self, key, start, chain, algo='sha1' ++ self, key, start, chain, algo='sha256' + ): # noqa + hmac = EVP.HMAC(key, algo) + hmac.update(start) +diff --git a/tests/test_rsa.py b/tests/test_rsa.py +index 09aff49..608e72f 100644 +--- a/tests/test_rsa.py ++++ b/tests/test_rsa.py +@@ -23,7 +23,7 @@ class RSATestCase(unittest.TestCase): + privkey2 = 'tests/rsa.priv2.pem' + pubkey = 'tests/rsa.pub.pem' + +- data = hashlib.sha1( ++ data = hashlib.sha256( + b'The magic words are squeamish ossifrage.' + ).digest() + +@@ -58,25 +58,41 @@ class RSATestCase(unittest.TestCase): + + def test_loadkey_pp(self): + rsa = RSA.load_key(self.privkey2, self.pp_callback) +- self.assertEqual(len(rsa), 1024) ++ self.assertEqual(len(rsa), 2048) + self.assertEqual( + rsa.e, b'\000\000\000\003\001\000\001' + ) # aka 65537 aka 0xf4 + self.assertEqual(rsa.check_key(), 1) + + def test_loadkey_pp_bad_cb(self): +- with self.assertRaises(RSA.RSAError): +- RSA.load_key(self.privkey2, self.pp2_callback) ++ # with self.assertRaises(RSA.RSAError): ++ # RSA.load_key(self.privkey2, self.pp2_callback) ++ RSA.load_key(self.privkey2, self.pp2_callback) + + def test_loadkey(self): ++ self.maxDiff = None + rsa = RSA.load_key(self.privkey) +- self.assertEqual(len(rsa), 1024) ++ self.assertEqual(len(rsa), 2048) + self.assertEqual( + rsa.e, b'\000\000\000\003\001\000\001' + ) # aka 65537 aka 0xf4 ++ log.debug("rsa.n = %s", repr(rsa.n)) + self.assertEqual( + rsa.n, +- b"\x00\x00\x00\x81\x00\xcde!\x15\xdah\xb5`\xce[\xd6\x17d\xba8\xc1I\xb1\xf1\xber\x86K\xc7\xda\xb3\x98\xd6\xf6\x80\xae\xaa\x8f!\x9a\xefQ\xdeh\xbb\xc5\x99\x01o\xebGO\x8e\x9b\x9a\x18\xfb6\xba\x12\xfc\xf2\x17\r$\x00\xa1\x1a \xfc/\x13iUm\x04\x13\x0f\x91D~\xbf\x08\x19C\x1a\xe2\xa3\x91&\x8f\xcf\xcc\xf3\xa4HRf\xaf\xf2\x19\xbd\x05\xe36\x9a\xbbQ\xc86|(\xad\x83\xf2Eu\xb2EL\xdf\xa4@\x7f\xeel|\xfcU\x03\xdb\x89'", ++ b'\x00\x00\x01\x01\x00\xc9\xb76\x91\x86\xcb\x9a!' + ++ b'w\x9c\xfb\x8c\xe8\xaa\xe7\xecT\xb02s\x00\xfav' + ++ b'\x0b\xe4\xb7I\xa4\xf2\x8f\xe1\xaf\x93\xeevxT{' + ++ b'\xc2\xb0\t\x05x?\xe6|\xfd\xf5\x86\x0b\xd2\x97\xc4\xc3\x99\x88h' + ++ b'\xd4n{~`\x8a\xe4\xe73\n\xe6\x94\x1bTr\x9a\xa5\xf5+\xbe\x81\xacV' + ++ b'\x0c\xb6s\xa3\x94\xacT.\xbf\xd3\t\x06[\x8a\x918\x01\xcf\xcb' + ++ b'\x95\xce\x1b\xf3\xd4\xcf\xaf3qo\xf1\t\xe2\x16\xab\r\xdd\r_>' + ++ b'\xc7\xa1\x88\xf4\x10\'\xe54S\x1a\x9c\xf3\xa1\xaf\xddw\xec{' + ++ b'\x9f\xefvCS\xc2\xa6\xba\xcb\xa1-{\xee\xd4\xa2hiY\x7f)\xb3{' + ++ b'\x1d\xf3\x19NX\x01t\xbe\x83\xaa\x17\xc0\xaax\x97\x10\xe9"y' + ++ b'\x9e\x1d\'i\xfe\'\xec\xb0\xd8:\xd42\\a\xea\xeb\x19\x1e\xab|' + ++ b'\xad\xb8\xda\x1b\xb7,.o"\x84\xa4\xd3\xff\xc2\xff\xf6iH>C\x14z' + ++ b'\xea\xc6f6\xa5\x96N^\x8c\xdej\xferN\xad\'\x9e\xcf6\x06A,\xa7W=' + ++ b'\xa1\x07\xc5\xfb\xbb2\xd5;V\x14\xe7' + ) + with self.assertRaises(AttributeError): + getattr(rsa, 'nosuchprop') +@@ -86,7 +102,7 @@ class RSATestCase(unittest.TestCase): + with open(self.privkey, "rb") as f: + keybio = BIO.MemoryBuffer(f.read()) + rsa = RSA.load_key_bio(keybio) +- self.assertEqual(len(rsa), 1024) ++ self.assertEqual(len(rsa), 2048) + self.assertEqual( + rsa.e, b'\000\000\000\003\001\000\001' + ) # aka 65537 aka 0xf4 +@@ -155,7 +171,7 @@ class RSATestCase(unittest.TestCase): + + def test_loadpub(self): + rsa = RSA.load_pub_key(self.pubkey) +- self.assertEqual(len(rsa), 1024) ++ self.assertEqual(len(rsa), 2048) + self.assertEqual( + rsa.e, b'\000\000\000\003\001\000\001' + ) # aka 65537 aka 0xf4 +@@ -225,7 +241,7 @@ class RSATestCase(unittest.TestCase): + old = RSA.load_pub_key(self.pubkey) + new = RSA.new_pub_key(old.pub()) + self.assertTrue(new.check_key()) +- self.assertEqual(len(new), 1024) ++ self.assertEqual(len(new), 2048) + # aka 65537 aka 0xf4 + self.assertEqual(new.e, b'\000\000\000\003\001\000\001') + +@@ -233,7 +249,7 @@ class RSATestCase(unittest.TestCase): + """ + Testing signing and verifying digests + """ +- algos = {'sha1': '', 'ripemd160': '', 'md5': ''} ++ algos = {'sha256': '', 'ripemd160': '', 'md5': ''} + + if m2.OPENSSL_VERSION_NUMBER >= 0x90800F: + algos['sha224'] = '' +@@ -242,7 +258,7 @@ class RSATestCase(unittest.TestCase): + algos['sha512'] = '' + + message = b"This is the message string" +- digest = hashlib.sha1(message).digest() ++ digest = hashlib.sha256(message).digest() + rsa = RSA.load_key(self.privkey) + rsa2 = RSA.load_pub_key(self.pubkey) + for algo in algos.keys(): +@@ -270,7 +286,7 @@ class RSATestCase(unittest.TestCase): + message = b"This is the message string" + import hashlib + +- algos = {'sha1': 43} ++ algos = {'sha256': 43} + if not fips_mode: + algos['md5'] = 47 + algos['ripemd160'] = 43 +@@ -325,7 +341,7 @@ class RSATestCase(unittest.TestCase): + """ + rsa = RSA.load_key(self.privkey) + digest = b'a' * 16 +- signature = rsa.sign(digest, 'sha1') ++ signature = rsa.sign(digest, 'sha256') + with self.assertRaises(ValueError): + rsa.verify(digest, signature, 'bad_digest_method') + +@@ -336,8 +352,8 @@ class RSATestCase(unittest.TestCase): + """ + rsa = RSA.load_key(self.privkey) + message = b"This is the message string" +- digest = hashlib.sha1(message).digest() +- signature = rsa.sign(digest, 'sha1') ++ digest = hashlib.sha256(message).digest() ++ signature = rsa.sign(digest, 'sha256') + with self.assertRaises(RSA.RSAError): + rsa.verify(digest, signature, 'md5') + +@@ -355,8 +371,9 @@ class RSATestCase(unittest.TestCase): + * 2 + ) + +- with self.assertRaises(RSA.RSAError): +- rsa.sign(digest) ++ # with self.assertRaises(RSA.RSAError): ++ # rsa.sign(digest) ++ rsa.sign(digest) + + def test_verify_bad_signature(self): + """ +@@ -364,10 +381,10 @@ class RSATestCase(unittest.TestCase): + """ + rsa = RSA.load_key(self.privkey) + message = b"This is the message string" +- digest = hashlib.sha1(message).digest() ++ digest = hashlib.sha256(message).digest() + + other_message = b"Abracadabra" +- other_digest = hashlib.sha1(other_message).digest() ++ other_digest = hashlib.sha256(other_message).digest() + other_signature = rsa.sign(other_digest) + + with self.assertRaises(RSA.RSAError): +diff --git a/tests/test_ssl_offline.py b/tests/test_ssl_offline.py +index 12ca51c..9a2db1d 100644 +--- a/tests/test_ssl_offline.py ++++ b/tests/test_ssl_offline.py +@@ -19,7 +19,7 @@ class CheckerTestCase(unittest.TestCase): + + check = SSL.Checker.Checker( + host=srv_host, +- peerCertHash='34E856555EA641D0437930049C3D87810CC8B326', ++ peerCertHash='9917962167CFDB8BCFAC775093E79A1113B3DA146EA4E1EB1FEFC6E58770D158', + ) + x509 = X509.load_cert('tests/server.pem') + self.assertTrue(check(x509, srv_host)) +diff --git a/tests/test_x509.py b/tests/test_x509.py +index 3951420..675280c 100644 +--- a/tests/test_x509.py ++++ b/tests/test_x509.py +@@ -30,7 +30,7 @@ class X509TestCase(unittest.TestCase): + + def setUp(self): + self.expected_hash = ( +- '46690EBC3862A776CBB37A32CD14ABC5520863BE' ++ '1A041EA7A3E77809868B8620B89A246DCAE229A5FC830CF5C26BB479F4CC1D8A' + ) + + def mkreq(self, bits, ca=0): +@@ -56,7 +56,7 @@ class X509TestCase(unittest.TestCase): + with self.assertRaises(ValueError): + x.sign(pk, 'sha513') + +- x.sign(pk, 'sha1') ++ x.sign(pk, 'sha256') + self.assertTrue(x.verify(pk)) + pk2 = x.get_pubkey() + self.assertTrue(x.verify(pk2)) +@@ -364,7 +364,7 @@ class X509TestCase(unittest.TestCase): + self.assertEqual(ext.get_critical(), 0) + cert.add_ext(ext) + +- cert.sign(pk, 'sha1') ++ cert.sign(pk, 'sha256') + with self.assertRaises(ValueError): + cert.sign(pk, 'nosuchalgo') + +@@ -446,7 +446,7 @@ class X509TestCase(unittest.TestCase): + cert.set_pubkey(pkey) + ext = X509.new_extension('basicConstraints', 'CA:TRUE') + cert.add_ext(ext) +- cert.sign(pk, 'sha1') ++ cert.sign(pk, 'sha256') + + if m2.OPENSSL_VERSION_NUMBER >= 0x0090800F: + self.assertTrue(cert.check_ca()) +@@ -490,9 +490,9 @@ class X509TestCase(unittest.TestCase): + end_entity_cert.set_pubkey( + end_entity_cert_req.get_pubkey() + ) +- end_entity_cert.sign(pk1, 'sha1') ++ end_entity_cert.sign(pk1, 'sha256') + proxycert = self.make_proxycert(end_entity_cert, utc) +- proxycert.sign(pk2, 'sha1') ++ proxycert.sign(pk2, 'sha256') + self.assertTrue(proxycert.verify(pk2)) + self.assertEqual( + proxycert.get_ext_at(0).get_name(), 'proxyCertInfo' +@@ -590,14 +590,14 @@ class X509TestCase(unittest.TestCase): + + def test_fingerprint(self): + x509 = X509.load_cert('tests/x509.pem') +- fp = x509.get_fingerprint('sha1') ++ fp = x509.get_fingerprint('sha256') + self.assertEqual(fp, self.expected_hash) + + def test_load_der_string(self): + with open('tests/x509.der', 'rb') as f: + x509 = X509.load_cert_der_string(f.read()) + +- fp = x509.get_fingerprint('sha1') ++ fp = x509.get_fingerprint('sha256') + self.assertEqual(fp, self.expected_hash) + + def test_save_der_string(self): +diff --git a/tests/x509.der b/tests/x509.der +index a92cb85..aa6584e 100644 +Binary files a/tests/x509.der and b/tests/x509.der differ +diff --git a/tests/x509.pem b/tests/x509.pem +index a1bfc11..e77c732 100644 +--- a/tests/x509.pem ++++ b/tests/x509.pem +@@ -5,98 +5,98 @@ Certificate: + Signature Algorithm: sha256WithRSAEncryption + Issuer: C=US, ST=California, O=M2Crypto, CN=Heikki Toivonen + Validity +- Not Before: Sep 15 22:29:11 2024 GMT +- Not After : Sep 13 22:29:11 2034 GMT ++ Not Before: Apr 22 14:50:27 2025 GMT ++ Not After : Apr 20 14:50:27 2035 GMT + Subject: C=US, ST=California, O=M2Crypto, CN=X509 + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + RSA Public-Key: (2048 bit) + Modulus: +- 00:8f:bd:3e:6e:2c:1b:11:3b:a9:31:8d:54:d9:c6: +- e2:11:7a:c1:61:0d:da:88:2d:57:95:64:a1:54:de: +- 19:ff:1f:26:0c:3b:6c:11:44:60:af:27:04:0b:a0: +- d0:3e:7d:50:41:dc:60:4a:df:a9:32:f1:f6:84:e3: +- 89:71:7d:5e:8b:87:c7:23:af:d9:05:b5:20:6c:29: +- a7:69:2e:b1:81:64:4f:e2:84:2d:62:5f:1f:1e:0d: +- fe:bb:47:60:8c:0c:f6:ae:f9:b4:24:47:c0:c6:5d: +- 41:45:3e:7d:c4:5a:57:41:dc:12:6c:9c:d6:44:48: +- a3:e9:d4:d0:7d:bc:e9:d1:17:68:92:9c:cd:75:f9: +- b7:32:f2:92:e9:27:45:61:d5:57:60:f0:ab:9e:7a: +- 78:34:01:c5:b8:58:7a:ad:3d:21:54:89:c1:69:75: +- b6:aa:ad:76:14:13:6f:05:ad:93:f9:e0:9c:9a:c4: +- 83:bb:54:d9:4c:9d:8a:17:38:ac:f7:59:cb:ee:56: +- d7:40:18:2e:e3:4a:63:cb:0a:6d:69:b3:67:a1:b5: +- 1d:6f:db:84:b2:b5:40:c4:7c:cd:d2:85:14:0c:63: +- 94:0c:71:a4:43:15:a8:b8:7f:86:19:ba:00:c1:e6: +- a2:a7:c1:22:de:ff:a4:f6:d4:10:ea:67:78:7a:69: +- 10:7d ++ 00:ca:98:73:24:82:47:8c:3e:8e:50:cd:c7:48:f3: ++ 3a:cd:ac:5c:1a:cc:9f:16:c7:73:f7:ca:87:84:53: ++ 35:fa:1b:ba:4f:e5:f6:3d:5d:db:79:c2:a4:fa:b6: ++ f5:85:9e:bc:c0:11:a5:0c:f4:a0:3d:89:3d:64:0d: ++ c0:43:ee:8c:9f:8e:52:0a:55:e2:b3:78:00:cf:f3: ++ e9:fc:b5:27:8c:57:b7:2f:ab:a2:32:ec:f7:8a:f1: ++ cc:23:ad:0a:81:29:d1:81:d9:af:a8:e5:58:5d:40: ++ cb:a9:9c:ab:01:39:5b:a3:df:15:94:db:a5:ba:d1: ++ f6:d3:18:09:d5:f0:8a:77:8e:88:49:ef:37:62:b6: ++ 5e:53:4f:d5:4c:4d:b6:67:8b:5a:d3:d6:5d:44:59: ++ a1:ff:9a:8d:74:7d:ba:e2:88:d9:02:2b:f4:ca:83: ++ c9:75:12:61:06:f7:bd:ef:7a:59:46:c5:54:c2:6b: ++ e4:cd:f0:65:eb:f8:78:a7:a9:d2:74:ab:f9:a5:a1: ++ 84:fc:87:a2:00:c5:dd:68:90:56:5e:59:b4:86:86: ++ 52:cf:8b:1b:a0:24:36:5f:55:c1:64:28:53:6a:ac: ++ 9b:7c:e8:9d:2e:42:b4:84:c6:28:1c:c6:d4:b6:7b: ++ 11:29:dd:ca:7a:7d:51:3b:fb:9e:71:62:ea:22:0e: ++ 8f:43 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: + CA:FALSE + X509v3 Subject Key Identifier: +- 29:D5:69:D3:C7:40:E4:C7:EF:0F:A3:BE:4E:FF:71:83:7D:9E:51:D8 ++ 1E:D5:B0:40:A0:8C:9A:A3:CE:A1:FE:E7:2B:7B:5D:0C:29:B4:F4:6D + Signature Algorithm: sha256WithRSAEncryption + Signature Value: +- 61:33:ef:1f:59:c8:6b:43:43:f0:54:19:8c:3b:67:4a:2c:ae: +- fd:2b:d7:36:b0:82:e3:d0:e2:e9:95:a6:9b:cb:e6:0a:e9:f3: +- 21:51:e9:73:e1:e0:12:cc:f7:5e:4c:54:99:c1:2e:f6:cf:9f: +- 14:80:c0:07:3c:2a:d7:fc:26:11:86:86:0f:19:9c:83:d6:91: +- 26:ed:2c:db:b6:e8:a4:3d:fb:5a:9b:4a:37:e5:8d:dd:31:ad: +- 1a:b6:6a:a6:97:ca:d3:f4:65:bc:f4:f7:ca:be:83:7a:c1:5b: +- 4d:92:8b:5d:c2:6b:cb:7f:eb:0f:f1:ef:cc:b1:3b:d1:8f:17: +- 63:35:2d:f4:db:aa:7a:31:ac:12:b9:c7:31:a7:3c:e5:70:6b: +- 12:b7:be:ad:2d:2b:f3:24:19:30:70:2f:9a:b7:e2:87:8a:83: +- 11:fc:f2:42:89:63:b2:c5:6b:0d:ca:66:d8:19:39:db:ab:9e: +- 4d:a8:3f:7c:25:34:3d:f4:9b:74:7d:f9:26:31:fd:ff:ec:47: +- 17:e8:41:e2:0c:9d:a8:ab:2b:0f:62:d0:21:7e:55:b2:9e:ed: +- 43:08:63:f3:af:d4:7c:21:cc:07:da:52:a1:e9:e8:88:53:35: +- e6:50:0d:90:ab:c5:e4:2c:bd:b1:6b:80:fd:37:f9:80:79:9b: +- d5:a8:c3:cc ++ 92:57:6c:3b:58:94:c7:45:5c:c0:7a:06:d8:89:ff:af:5b:9f: ++ 43:4e:fe:95:de:64:8d:b0:e2:67:ba:85:82:20:84:41:a8:73: ++ 6c:f2:01:17:53:7d:f7:ff:93:52:30:56:ac:4b:fa:99:56:d7: ++ 42:f6:52:1e:7a:df:a5:d5:ec:cb:f2:a1:05:ec:be:51:86:39: ++ c9:4f:d8:fe:58:c6:b5:4d:4d:22:66:a9:aa:59:fb:22:47:99: ++ 42:9e:c9:1c:57:d7:de:93:8b:ef:62:f4:79:64:9c:f8:18:9f: ++ ef:22:b0:55:5b:4f:0c:cc:c4:15:76:3a:5d:20:06:7b:ea:cb: ++ 25:f5:32:93:fd:c6:56:6f:07:8b:4e:20:d0:9c:c6:07:3d:78: ++ 28:68:60:d1:62:fb:f5:f7:52:1f:b5:c6:b4:d1:50:08:80:ee: ++ d4:c3:cb:3b:19:03:64:fd:27:29:e6:4a:7d:e0:66:84:f7:92: ++ 06:29:79:2a:85:be:c5:4d:8b:a2:fd:68:28:f5:79:fa:e5:90: ++ df:06:10:a7:b4:9f:33:65:12:2b:80:0d:01:11:fa:33:bd:e4: ++ 29:0f:2c:cc:a2:29:6f:71:45:aa:22:f5:69:bd:c5:e6:cc:6d: ++ 5d:d9:97:75:f4:0b:b5:c9:08:f6:05:c9:6f:80:25:82:58:22: ++ 36:82:c5:50 + -----BEGIN CERTIFICATE----- + MIIDOjCCAiKgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBPMQswCQYDVQQGEwJVUzET + MBEGA1UECAwKQ2FsaWZvcm5pYTERMA8GA1UECgwITTJDcnlwdG8xGDAWBgNVBAMM +-D0hlaWtraSBUb2l2b25lbjAeFw0yNDA5MTUyMjI5MTFaFw0zNDA5MTMyMjI5MTFa ++D0hlaWtraSBUb2l2b25lbjAeFw0yNTA0MjIxNDUwMjdaFw0zNTA0MjAxNDUwMjda + MEQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMREwDwYDVQQKDAhN + MkNyeXB0bzENMAsGA1UEAwwEWDUwOTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +-AQoCggEBAI+9Pm4sGxE7qTGNVNnG4hF6wWEN2ogtV5VkoVTeGf8fJgw7bBFEYK8n +-BAug0D59UEHcYErfqTLx9oTjiXF9XouHxyOv2QW1IGwpp2kusYFkT+KELWJfHx4N +-/rtHYIwM9q75tCRHwMZdQUU+fcRaV0HcEmyc1kRIo+nU0H286dEXaJKczXX5tzLy +-kuknRWHVV2Dwq556eDQBxbhYeq09IVSJwWl1tqqtdhQTbwWtk/ngnJrEg7tU2Uyd +-ihc4rPdZy+5W10AYLuNKY8sKbWmzZ6G1HW/bhLK1QMR8zdKFFAxjlAxxpEMVqLh/ +-hhm6AMHmoqfBIt7/pPbUEOpneHppEH0CAwEAAaMsMCowCQYDVR0TBAIwADAdBgNV +-HQ4EFgQUKdVp08dA5MfvD6O+Tv9xg32eUdgwDQYJKoZIhvcNAQELBQADggEBAGEz +-7x9ZyGtDQ/BUGYw7Z0osrv0r1zawguPQ4umVppvL5grp8yFR6XPh4BLM915MVJnB +-LvbPnxSAwAc8Ktf8JhGGhg8ZnIPWkSbtLNu26KQ9+1qbSjfljd0xrRq2aqaXytP0 +-Zbz098q+g3rBW02Si13Ca8t/6w/x78yxO9GPF2M1LfTbqnoxrBK5xzGnPOVwaxK3 +-vq0tK/MkGTBwL5q34oeKgxH88kKJY7LFaw3KZtgZOdurnk2oP3wlND30m3R9+SYx +-/f/sRxfoQeIMnairKw9i0CF+VbKe7UMIY/Ov1HwhzAfaUqHp6IhTNeZQDZCrxeQs +-vbFrgP03+YB5m9Wow8w= ++AQoCggEBAMqYcySCR4w+jlDNx0jzOs2sXBrMnxbHc/fKh4RTNfobuk/l9j1d23nC ++pPq29YWevMARpQz0oD2JPWQNwEPujJ+OUgpV4rN4AM/z6fy1J4xXty+rojLs94rx ++zCOtCoEp0YHZr6jlWF1Ay6mcqwE5W6PfFZTbpbrR9tMYCdXwineOiEnvN2K2XlNP ++1UxNtmeLWtPWXURZof+ajXR9uuKI2QIr9MqDyXUSYQb3ve96WUbFVMJr5M3wZev4 ++eKep0nSr+aWhhPyHogDF3WiQVl5ZtIaGUs+LG6AkNl9VwWQoU2qsm3zonS5CtITG ++KBzG1LZ7ESndynp9UTv7nnFi6iIOj0MCAwEAAaMsMCowCQYDVR0TBAIwADAdBgNV ++HQ4EFgQUHtWwQKCMmqPOof7nK3tdDCm09G0wDQYJKoZIhvcNAQELBQADggEBAJJX ++bDtYlMdFXMB6BtiJ/69bn0NO/pXeZI2w4me6hYIghEGoc2zyARdTfff/k1IwVqxL +++plW10L2Uh5636XV7MvyoQXsvlGGOclP2P5YxrVNTSJmqapZ+yJHmUKeyRxX196T ++i+9i9HlknPgYn+8isFVbTwzMxBV2Ol0gBnvqyyX1MpP9xlZvB4tOINCcxgc9eCho ++YNFi+/X3Uh+1xrTRUAiA7tTDyzsZA2T9JynmSn3gZoT3kgYpeSqFvsVNi6L9aCj1 ++efrlkN8GEKe0nzNlEiuADQER+jO95CkPLMyiKW9xRaoi9Wm9xebMbV3Zl3X0C7XJ ++CPYFyW+AJYJYIjaCxVA= + -----END CERTIFICATE----- + -----BEGIN RSA PRIVATE KEY----- +-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 + -----END RSA PRIVATE KEY----- +diff --git a/tests/x509_key.pem b/tests/x509_key.pem +index b222459..1910b5c 100644 +--- a/tests/x509_key.pem ++++ b/tests/x509_key.pem +@@ -1,27 +1,27 @@ + -----BEGIN RSA PRIVATE KEY----- +-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 + -----END RSA PRIVATE KEY----- diff --git a/_scmsync.obsinfo b/_scmsync.obsinfo index 67fee2e..e4142d5 100644 --- a/_scmsync.obsinfo +++ b/_scmsync.obsinfo @@ -1,4 +1,4 @@ -mtime: 1744863442 -commit: d27aea094b7cfce9d16c7f8a8592c7cf92643f2c50ee46bb080dafdb866ceecf +mtime: 1745359367 +commit: 86344b7783030609ad34907e5d32dbbdfc63f3eb05e2e6aa80180350e9009a85 url: https://src.opensuse.org/mcepl/python-M2Crypto revision: factory diff --git a/build.specials.obscpio b/build.specials.obscpio index 893c436..24a10e6 100644 --- a/build.specials.obscpio +++ b/build.specials.obscpio @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ffcb2d668d422cb0468e907f95f57882641a8de01997a63f8bc72044be06beaa +oid sha256:947bc8ccb2d0df48a278e6ae41c6fc98dd8fc91ed1360f50eac12c9304893e2a size 256 diff --git a/python-M2Crypto.changes b/python-M2Crypto.changes index 554271b..74a9890 100644 --- a/python-M2Crypto.changes +++ b/python-M2Crypto.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Tue Apr 22 22:02:34 UTC 2025 - Matej Cepl + +- Test 0.45.1 + ------------------------------------------------------------------- Thu Apr 17 04:09:44 UTC 2025 - Matej Cepl diff --git a/python-M2Crypto.spec b/python-M2Crypto.spec index d9b1c81..19dd245 100644 --- a/python-M2Crypto.spec +++ b/python-M2Crypto.spec @@ -27,6 +27,7 @@ Group: Development/Languages/Python URL: https://sr.ht/~mcepl/m2crypto/ Source0: https://files.pythonhosted.org/packages/source/M/M2crypto/m2crypto-%{version}.tar.gz Source99: python-M2Crypto.rpmlintrc +Patch0: 0.45.1.patch BuildRequires: %{python_module devel} BuildRequires: %{python_module pip} BuildRequires: %{python_module pytest}