summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeikki Toivonen <heikki@heikkitoivonen.net>2006-12-14 22:07:09 +0000
committerHeikki Toivonen <heikki@heikkitoivonen.net>2006-12-14 22:07:09 +0000
commit0deed6ec87356f20be71ab41e992289436a7420b (patch)
tree0f8f252cf395b9da4972a8da3ce9a7dc8fbf881d
parent86dafb3622ed33efad5dfa02c1de6fcfaa51a9c7 (diff)
downloadm2crypto-0deed6ec87356f20be71ab41e992289436a7420b.tar.gz
Merge from trunk r499.
git-svn-id: http://svn.osafoundation.org/m2crypto/branches/0.17@500 2715db39-9adf-0310-9c64-84f055769b4b
-rw-r--r--CHANGES13
-rw-r--r--INSTALL44
-rw-r--r--M2Crypto/EC.py11
-rw-r--r--M2Crypto/Err.py3
-rw-r--r--M2Crypto/SSL/Connection.py2
-rw-r--r--M2Crypto/X509.py5
-rw-r--r--SWIG/_lib.i2
-rw-r--r--SWIG/_x509.i2
-rw-r--r--demo/ec/ecdsa_bench.py11
-rw-r--r--setup.py16
-rw-r--r--tests/README20
-rw-r--r--tests/alltests.py66
-rw-r--r--tests/ca.pem74
-rw-r--r--tests/recipient.pem75
-rw-r--r--tests/recipient_key.pem26
-rw-r--r--tests/server.pem100
-rw-r--r--tests/signer.pem77
-rw-r--r--tests/signer_key.pem26
-rw-r--r--tests/test_bio_ssl.py4
-rw-r--r--tests/test_dh.py6
-rw-r--r--tests/test_dsa.py8
-rw-r--r--tests/test_ec_curves.py34
-rw-r--r--tests/test_ecdh.py2
-rw-r--r--tests/test_ecdsa.py6
-rw-r--r--tests/test_rand.py8
-rw-r--r--tests/test_rsa.py8
-rw-r--r--tests/test_smime.py34
-rw-r--r--tests/test_ssl.py89
-rw-r--r--tests/test_ssl_win.py16
-rw-r--r--tests/test_x509.py28
-rw-r--r--tests/x509.pem100
31 files changed, 524 insertions, 392 deletions
diff --git a/CHANGES b/CHANGES
index fb3c0e8..31c1048 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,9 +1,12 @@
0.17
----
+- setup.py has new test command to run unit tests (requires setuptools)
- Added m2urllib2, by James Bowes (python 2.4 and later, at least for now)
- Added CONNECT proxy for httpslib and m2urllib2, by James Bowes
- Added PKey.get_modulus, X509.get_fingerprint, X509_Name.as_der and
m2.bn_to_hex, by Thomas Uram
+- Prevent Connection.makefile from freeing bio redundantly, by Thomas Uram
+- Added Err.peek_error_code, by Thomas Uram
- Fixed m2urllib.open_https to return the response headers, otherwise code
that relied on that would break (for example msnlib-3.5), by Arno bakker
- Fixed twisted wrapper to work with >16kb BIO buffers, by Martin Paljak
@@ -15,9 +18,11 @@
- smime_read_pkcs7 was changed to automatically call BIO_set_mem_eof_return
on memory BIOs because otherwise the read would fail with
"SMIME_Error: not enough data"
+- X509.new_extension('subjectKeyIdentifier', 'hash') raises ValueError instead
+ of crashing Python
-0.16
-----
+0.16 - 2006-07-05
+-----------------
- Minimum requirements updated: Python 2.3+, OpenSSL 0.9.7+, SWIG 1.3.24+
- Optional features from OpenSSL 0.9.8 and newer
- Enhancements to EVP and X509 to allow proxy certificate handling,
@@ -71,8 +76,8 @@
- More and better Epydoc formatted docstrings
- More than doubled the number of unit tests, also made many demos into tests
-0.15
-----
+0.15 - 2005-08-17
+-----------------
- Support OpenSSL 0.9.8, Python 2.4.1, SWIG 1.3.24
- Fixed multiple memory leaks
- Twisted integration
diff --git a/INSTALL b/INSTALL
index bc14a95..a43304d 100644
--- a/INSTALL
+++ b/INSTALL
@@ -27,8 +27,10 @@ Installing on Unix-like systems, including Cygwin
$ cd m2crypto-0.17
$ python setup.py build
$ python setup.py install
- $ cd tests
- $ python alltests.py
+
+If you have installed setuptools you can also optionally run tests like this:
+
+ $ python setup.py test
This assumes OpenSSL is installed in /usr. You can provide an alternate
OpenSSL prefix location with --openssl option to build command. Other
@@ -44,6 +46,10 @@ files are in ``c:\pkg\openssl\include``, and the import libraries
in ``c:\pkg\openssl\lib``. As with other platforms, you can specify a different
OpenSSL location with --openssl option.
+Using OpenSSL 0.9.8 on Windows requires Python be built with applink.c
+(add an include statement in python.c). This is not a requirement for
+Linux or MacOSX. (applink.c is provided by OpenSSL.)
+
MSVC++
~~~~~~~~
@@ -84,8 +90,6 @@ Build M2Crypto:
python setup.py build -cmingw32
python setup.py install
- cd tests
- python alltests.py
BC++
@@ -118,5 +122,33 @@ Then,
::
python setup.py install
- cd tests
- python alltests.py
+
+
+MacOSX
+------
+
+Follow the standard instructions to build and install M2Crypto.
+However, should you encounter difficulties, you may want to consider
+the following possibilities.
+
+ - Distutils for Python 2.5 now provides support for universal
+ builds (ppc and i386) and Distutils requires a recent version
+ of Xcode. See http://developer.apple.com/tools/download/
+
+ - OpenSSL 0.9.7l gets installed in /usr with Apple's Security
+ Update 2006-007. If you need features in OpenSSL 0.9.8, you
+ should consider installing 0.9.8 in /usr/local. The commands
+ are:
+
+ OpenSSL:
+ ./config shared --prefix=/usr/local
+ make
+ make test
+ sudo make install [or... install_sw]
+
+ M2Crypto:
+ python setup.py build --openssl=/usr/local
+ sudo python setup.py install --openssl=/usr/local
+
+
+
diff --git a/M2Crypto/EC.py b/M2Crypto/EC.py
index 2661ebf..7b57fb0 100644
--- a/M2Crypto/EC.py
+++ b/M2Crypto/EC.py
@@ -83,8 +83,15 @@ NID_wap_wsg_idm_ecid_wtls10 = m2.NID_wap_wsg_idm_ecid_wtls10
NID_wap_wsg_idm_ecid_wtls11 = m2.NID_wap_wsg_idm_ecid_wtls11
NID_wap_wsg_idm_ecid_wtls12 = m2.NID_wap_wsg_idm_ecid_wtls12
-NID_ipsec3 = m2.NID_ipsec3
-NID_ipsec4 = m2.NID_ipsec4
+# The following two curves, according to OpenSSL, have a
+# "Questionable extension field!" and are not supported by
+# the OpenSSL inverse function. ECError: no inverse.
+# As such they cannot be used for signing. They might,
+# however, be usable for encryption but that has not
+# been tested. Until thir usefulness can be established,
+# they are not supported at this time.
+# NID_ipsec3 = m2.NID_ipsec3
+# NID_ipsec4 = m2.NID_ipsec4
class EC:
diff --git a/M2Crypto/Err.py b/M2Crypto/Err.py
index a1e5956..3588f76 100644
--- a/M2Crypto/Err.py
+++ b/M2Crypto/Err.py
@@ -13,6 +13,9 @@ def get_error():
def get_error_code():
return m2.err_get_error()
+def peek_error_code():
+ return m2.err_peek_error()
+
def get_error_lib(err):
return m2.err_lib_error_string(err)
diff --git a/M2Crypto/SSL/Connection.py b/M2Crypto/SSL/Connection.py
index 1d53074..4098fac 100644
--- a/M2Crypto/SSL/Connection.py
+++ b/M2Crypto/SSL/Connection.py
@@ -288,7 +288,7 @@ class Connection:
# XXX Need to dup().
bio = BIO.BIO(self.sslbio, _close_cb=self.close)
m2.bio_do_handshake(bio._ptr())
- return BIO.IOBuffer(bio, m2mode)
+ return BIO.IOBuffer(bio, m2mode, _pyfree=0)
def getsockname(self):
return self.socket.getsockname()
diff --git a/M2Crypto/X509.py b/M2Crypto/X509.py
index 176267e..408972e 100644
--- a/M2Crypto/X509.py
+++ b/M2Crypto/X509.py
@@ -21,6 +21,9 @@ def new_extension(name, value, critical=0, _pyfree=1):
"""
Create new X509_Extension instance.
"""
+ if name == 'subjectKeyIdentifier' and \
+ value.strip('0123456789abcdefABCDEF:') is not '':
+ raise ValueError('value must be precomputed hash')
lhash = m2.x509v3_lhash()
ctx = m2.x509v3_set_conf_lhash(lhash)
x509_ext_ptr = m2.x509v3_ext_conf(lhash, ctx, name, value)
@@ -521,7 +524,7 @@ class X509:
md = EVP.MessageDigest(md)
md.update(der)
digest = md.final()
- return hex(util.octx_to_num(digest))
+ return hex(util.octx_to_num(digest))[2:-1].upper()
def load_cert(file):
"""
diff --git a/SWIG/_lib.i b/SWIG/_lib.i
index 6d96c8d..c7e0ab0 100644
--- a/SWIG/_lib.i
+++ b/SWIG/_lib.i
@@ -441,6 +441,8 @@ extern void ERR_print_errors_fp(FILE *);
extern void ERR_print_errors(BIO *);
%rename(err_get_error) ERR_get_error;
extern unsigned long ERR_get_error(void);
+%rename(err_peek_error) ERR_peek_error;
+extern unsigned long ERR_peek_error(void);
%rename(err_lib_error_string) ERR_lib_error_string;
extern const char *ERR_lib_error_string(unsigned long);
%rename(err_func_error_string) ERR_func_error_string;
diff --git a/SWIG/_x509.i b/SWIG/_x509.i
index 8e2d328..4fbc8aa 100644
--- a/SWIG/_x509.i
+++ b/SWIG/_x509.i
@@ -134,6 +134,8 @@ extern int X509_NAME_add_entry_by_NID(X509_NAME *, int, int, unsigned char *, in
extern int X509_NAME_print_ex(BIO *, X509_NAME *, int, unsigned long);
%rename(x509_name_print_ex_fp) X509_NAME_print_ex_fp;
extern int X509_NAME_print_ex_fp(FILE *, X509_NAME *, int, unsigned long);
+%rename(x509_name_hash) X509_NAME_hash;
+extern unsigned long X509_NAME_hash(X509_NAME *);
%rename(x509_name_entry_new) X509_NAME_ENTRY_new;
extern X509_NAME_ENTRY *X509_NAME_ENTRY_new( void );
diff --git a/demo/ec/ecdsa_bench.py b/demo/ec/ecdsa_bench.py
index 2277124..bafceb1 100644
--- a/demo/ec/ecdsa_bench.py
+++ b/demo/ec/ecdsa_bench.py
@@ -101,10 +101,13 @@ curves = ['secp112r1',
'wap_wsg_idm_ecid_wtls12',
]
-# the following two curves are supported in OpenSSL and
-# M2Crypto but not for ECDSA use. (It seems they want an
-# inverse function.) The curves may be used for EC encryption
-# except that OpenSSL does not yet support EC enceyption.
+# The following two curves, according to OpenSSL, have a
+# "Questionable extension field!" and are not supported by
+# the OpenSSL inverse function. ECError: no inverse.
+# As such they cannot be used for signing. They might,
+# however, be usable for encryption but that has not
+# been tested. Until thir usefulness can be established,
+# they are not supported at this time.
#
# Oakley-EC2N-3:
# IPSec/IKE/Oakley curve #3 over a 155 bit binary field.
diff --git a/setup.py b/setup.py
index 7fa6b5f..826c274 100644
--- a/setup.py
+++ b/setup.py
@@ -10,6 +10,12 @@ Copyright (C) 2004-2006 OSAF. All Rights Reserved.
"""
import os, sys
+
+try:
+ import setuptools # Must import setuptools before distutils
+except ImportError:
+ pass # test command not available
+
from distutils.core import setup, Extension
from distutils.command import build_ext
@@ -20,7 +26,7 @@ def parse_args(option_dict):
option_dict['openssl_prefix'] = arg.split("=")[1]
sys.argv.remove(arg)
break
-
+
if os.name == 'nt':
libraries = ['ssleay32', 'libeay32']
option_dict = {'openssl_prefix': 'c:\\pkg'}
@@ -98,8 +104,7 @@ if sys.version_info < (2,4):
build_ext.build_ext.swig_sources = swig_sources
-
-m2crypto = Extension(name = '__m2crypto',
+m2crypto = Extension(name='M2Crypto.__m2crypto',
sources = ['SWIG/_m2crypto.i'],
include_dirs = include_dirs,
library_dirs = library_dirs,
@@ -121,7 +126,6 @@ setup(name = 'M2Crypto',
maintainer_email = 'heikki@osafoundation.org',
url = 'http://wiki.osafoundation.org/bin/view/Projects/MeTooCrypto',
packages = ['M2Crypto', 'M2Crypto.SSL', 'M2Crypto.PGP'],
- ext_package = 'M2Crypto',
- ext_modules = [m2crypto]
+ ext_modules = [m2crypto],
+ test_suite='tests.alltests.suite',
)
-
diff --git a/tests/README b/tests/README
index 395e3ad..6f5813c 100644
--- a/tests/README
+++ b/tests/README
@@ -1,10 +1,14 @@
This directory contains unit tests for M2Crypto.
-You must first install M2Crypto, then cd into this directory, and
-run the tests.
+To run all tests, make sure you have installed setuptools and then issue the
+following command from the M2Crypto root directory:
+
+python setup.py test
+
+To run tests in a single file, for example test_ssl.py, do this:
+
+python setup.py test --test-suite=tests.test_ssl
-Invoke 'alltests.py' to execute all tests. Each test can also be run
-individually.
Look also in the demo directory for other samples.
@@ -27,14 +31,14 @@ field is localhost.
CA.sh -newreq
CA.sh -sign
cp newcert.pem ../server.pem
-openssl rsa <newkey.pem >>server.pem
+openssl rsa <newkey.pem >>../server.pem
Making the x509 certificate and key.
CA.sh -newreq
CA.sh -sign
cp newcert.pem ../x509.pem
-openssl rsa <newkey.pem >>x509.pem
+openssl rsa <newkey.pem >>../x509.pem
Making the signer certificate. Make sure the email address is
signer@example.com.
@@ -42,7 +46,7 @@ signer@example.com.
CA.sh -newreq
CA.sh -sign
cp newcert.pem ../signer.pem
-openssl rsa <newkey.pem >signer_key.pem
+openssl rsa <newkey.pem >../signer_key.pem
Making the recipient certificate. Make sure the email address is
recipient@example.com.
@@ -50,4 +54,4 @@ recipient@example.com.
CA.sh -newreq
CA.sh -sign
cp newcert.pem ../recipient.pem
-openssl rsa <newkey.pem >recipient_key.pem
+openssl rsa <newkey.pem >../recipient_key.pem
diff --git a/tests/alltests.py b/tests/alltests.py
index 9d703d1..528aa85 100644
--- a/tests/alltests.py
+++ b/tests/alltests.py
@@ -2,33 +2,43 @@
def suite():
from M2Crypto import m2
+ import os, sys
+ import unittest
+ def my_import(name):
+ # See http://docs.python.org/lib/built-in-funcs.html#l2h-6
+ mod = __import__(name)
+ components = name.split('.')
+ for comp in components[1:]:
+ mod = getattr(mod, comp)
+ return mod
+
modules_to_test = [
- 'test_asn1',
- 'test_bio',
- 'test_bio_membuf',
- 'test_bio_file',
- 'test_bio_iobuf',
- 'test_bio_ssl',
- 'test_bn',
- 'test_authcookie',
- 'test_dh',
- 'test_dsa',
- 'test_evp',
- 'test_rand',
- 'test_rsa',
- 'test_smime',
- 'test_x509']
+ 'tests.test_asn1',
+ 'tests.test_bio',
+ 'tests.test_bio_membuf',
+ 'tests.test_bio_file',
+ 'tests.test_bio_iobuf',
+ 'tests.test_bio_ssl',
+ 'tests.test_bn',
+ 'tests.test_authcookie',
+ 'tests.test_dh',
+ 'tests.test_dsa',
+ 'tests.test_evp',
+ 'tests.test_rand',
+ 'tests.test_rsa',
+ 'tests.test_smime',
+ 'tests.test_x509']
if os.name == 'posix':
- modules_to_test.append('test_ssl')
+ modules_to_test.append('tests.test_ssl')
elif os.name == 'nt':
- modules_to_test.append('test_ssl_win')
+ modules_to_test.append('tests.test_ssl_win')
if m2.OPENSSL_VERSION_NUMBER >= 0x90800F and m2.OPENSSL_NO_EC == 0:
- modules_to_test.append('test_ecdh')
- modules_to_test.append('test_ecdsa')
- modules_to_test.append('test_ec_curves')
+ modules_to_test.append('tests.test_ecdh')
+ modules_to_test.append('tests.test_ecdsa')
+ modules_to_test.append('tests.test_ec_curves')
alltests = unittest.TestSuite()
- for module in map(__import__, modules_to_test):
+ for module in map(my_import, modules_to_test):
alltests.addTest(module.suite())
return alltests
@@ -47,12 +57,12 @@ def dump_garbage():
print 'There were %d leaks.' % len(gc.garbage)
else:
- print 'Python garabge collector did not detect any leaks.'
+ print 'Python garbage collector did not detect any leaks.'
print 'However, it is still possible there are leaks in the C code.'
-if __name__ == '__main__':
- report_leaks = 0
+def runall(report_leaks=0):
+ report_leaks = report_leaks
if report_leaks:
import gc
@@ -63,9 +73,9 @@ if __name__ == '__main__':
from M2Crypto import Rand
try:
- Rand.load_file('randpool.dat', -1)
+ Rand.load_file('tests/randpool.dat', -1)
unittest.TextTestRunner().run(suite())
- Rand.save_file('randpool.dat')
+ Rand.save_file('tests/randpool.dat')
finally:
if os.name == 'posix':
from test_ssl import zap_servers
@@ -73,3 +83,7 @@ if __name__ == '__main__':
if report_leaks:
dump_garbage()
+
+
+if __name__ == '__main__':
+ runall()
diff --git a/tests/ca.pem b/tests/ca.pem
index d8ba0d3..62a4907 100644
--- a/tests/ca.pem
+++ b/tests/ca.pem
@@ -3,24 +3,24 @@ Certificate:
Version: 3 (0x2)
Serial Number: 0 (0x0)
Signature Algorithm: sha1WithRSAEncryption
- Issuer: C=US, ST=CA, O=M2Crypto CA, CN=localhost
+ Issuer: C=US, ST=CA, O=M2Crypto, CN=localhost
Validity
- Not Before: Apr 22 04:35:56 2006 GMT
- Not After : Apr 21 04:35:56 2009 GMT
- Subject: C=US, ST=CA, O=M2Crypto CA, CN=localhost
+ Not Before: Dec 14 03:22:06 2006 GMT
+ Not After : Dec 13 03:22:06 2009 GMT
+ Subject: C=US, ST=CA, O=M2Crypto, CN=localhost
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
- 00:d8:80:02:8f:b5:7d:9f:9b:79:76:67:a5:66:64:
- c0:30:0c:71:65:f1:c6:78:01:a0:29:d4:3a:2c:e5:
- ee:58:4d:db:53:c5:74:6e:4e:f7:b6:a5:8e:ef:ab:
- e8:7c:f5:5d:2d:18:ba:95:b8:15:43:6e:5a:78:c2:
- 91:05:08:b2:7e:cf:c4:d3:bb:ac:c7:43:27:fb:8f:
- 43:0d:7b:d0:d1:32:51:86:11:6e:3e:aa:68:19:88:
- b9:cf:d5:72:f0:a4:73:d1:69:c4:65:14:0e:12:64:
- 7e:1f:df:18:09:0b:6a:4b:cd:bf:ae:59:82:15:1c:
- 90:0f:c3:e5:cb:b3:ed:86:4d
+ 00:c8:ee:96:31:80:55:c0:24:cf:e8:95:22:86:ac:
+ 23:86:1a:5a:44:1c:c8:1d:99:5a:9b:5a:8f:4b:08:
+ 6d:c1:c7:5b:16:b1:92:70:1c:a4:d3:d5:9e:8d:b8:
+ ae:03:79:ae:1d:a4:6e:4b:ef:06:16:68:0d:79:a6:
+ dc:7b:fc:a8:7c:f4:4c:fb:3a:e0:c9:8b:01:be:be:
+ 32:0f:b4:b7:55:32:fc:70:a5:0d:17:3d:5c:f8:50:
+ 8d:9a:44:3c:12:06:72:58:98:5f:3a:54:6c:90:82:
+ 15:76:c9:16:1c:13:b7:31:7e:65:f0:d0:75:23:cf:
+ eb:ba:d5:64:16:2a:a5:13:bf
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
@@ -28,32 +28,32 @@ Certificate:
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
- 5C:F9:C5:9B:B0:02:37:3C:66:73:4D:0E:CB:5A:3D:BB:3A:46:22:DD
+ CD:06:38:23:C3:50:0C:F6:A8:5A:F0:A7:DB:51:03:21:00:41:DB:37
X509v3 Authority Key Identifier:
- keyid:5C:F9:C5:9B:B0:02:37:3C:66:73:4D:0E:CB:5A:3D:BB:3A:46:22:DD
+ keyid:CD:06:38:23:C3:50:0C:F6:A8:5A:F0:A7:DB:51:03:21:00:41:DB:37
Signature Algorithm: sha1WithRSAEncryption
- 6b:9e:71:4a:ad:d2:1c:b7:58:1a:6e:8b:89:92:8d:4e:62:61:
- 06:2e:e8:11:f8:9c:a0:e2:11:7c:b6:e2:be:ef:b9:b1:35:20:
- d1:81:62:c5:ca:3c:4f:c9:88:72:f7:50:d8:e8:e0:06:43:ee:
- c5:5c:38:9b:e7:24:46:a6:ee:8d:b0:70:4e:75:96:00:db:d6:
- 59:f9:58:74:67:9f:ca:9c:12:fc:77:a7:0e:5a:38:22:5b:de:
- c9:33:35:bd:d0:4c:9f:6a:0f:71:7b:db:cb:fd:da:bc:39:4f:
- 23:1e:74:5b:ff:8d:73:72:16:a9:9f:57:54:96:3e:2c:f0:65:
- af:df
+ 9c:6a:71:13:dc:41:5e:dc:27:c4:aa:d8:76:bb:ac:f7:3e:d6:
+ 02:d1:55:c0:b0:8b:07:c3:5e:4d:0d:c0:3b:dc:a9:98:04:e5:
+ 23:fe:61:8a:16:93:d8:d3:bf:30:f1:ca:fb:ba:33:78:58:cf:
+ d6:8d:49:94:cc:66:01:42:61:27:79:95:f5:36:89:bb:9a:a5:
+ 1d:e4:ac:fa:d3:53:50:10:58:40:90:1d:b7:ca:9e:0e:cb:16:
+ a1:49:5c:46:85:13:5a:61:39:44:c2:7c:7e:b2:d6:96:5c:3a:
+ bd:07:03:24:f2:9b:87:ec:f4:00:a5:11:50:a7:73:3c:96:34:
+ 3b:01
-----BEGIN CERTIFICATE-----
-MIICfDCCAeWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEL
-MAkGA1UECBMCQ0ExFDASBgNVBAoTC00yQ3J5cHRvIENBMRIwEAYDVQQDEwlsb2Nh
-bGhvc3QwHhcNMDYwNDIyMDQzNTU2WhcNMDkwNDIxMDQzNTU2WjBEMQswCQYDVQQG
-EwJVUzELMAkGA1UECBMCQ0ExFDASBgNVBAoTC00yQ3J5cHRvIENBMRIwEAYDVQQD
-Ewlsb2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANiAAo+1fZ+b
-eXZnpWZkwDAMcWXxxngBoCnUOizl7lhN21PFdG5O97alju+r6Hz1XS0YupW4FUNu
-WnjCkQUIsn7PxNO7rMdDJ/uPQw170NEyUYYRbj6qaBmIuc/VcvCkc9FpxGUUDhJk
-fh/fGAkLakvNv65ZghUckA/D5cuz7YZNAgMBAAGjfjB8MAwGA1UdEwQFMAMBAf8w
-LAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0G
-A1UdDgQWBBRc+cWbsAI3PGZzTQ7LWj27OkYi3TAfBgNVHSMEGDAWgBRc+cWbsAI3
-PGZzTQ7LWj27OkYi3TANBgkqhkiG9w0BAQUFAAOBgQBrnnFKrdIct1gabouJko1O
-YmEGLugR+Jyg4hF8tuK+77mxNSDRgWLFyjxPyYhy91DY6OAGQ+7FXDib5yRGpu6N
-sHBOdZYA29ZZ+Vh0Z5/KnBL8d6cOWjgiW97JMzW90Eyfag9xe9vL/dq8OU8jHnRb
-/41zchapn1dUlj4s8GWv3w==
+MIICdjCCAd+gAwIBAgIBADANBgkqhkiG9w0BAQUFADBBMQswCQYDVQQGEwJVUzEL
+MAkGA1UECBMCQ0ExETAPBgNVBAoTCE0yQ3J5cHRvMRIwEAYDVQQDEwlsb2NhbGhv
+c3QwHhcNMDYxMjE0MDMyMjA2WhcNMDkxMjEzMDMyMjA2WjBBMQswCQYDVQQGEwJV
+UzELMAkGA1UECBMCQ0ExETAPBgNVBAoTCE0yQ3J5cHRvMRIwEAYDVQQDEwlsb2Nh
+bGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMjuljGAVcAkz+iVIoas
+I4YaWkQcyB2ZWptaj0sIbcHHWxaxknAcpNPVno24rgN5rh2kbkvvBhZoDXmm3Hv8
+qHz0TPs64MmLAb6+Mg+0t1Uy/HClDRc9XPhQjZpEPBIGcliYXzpUbJCCFXbJFhwT
+tzF+ZfDQdSPP67rVZBYqpRO/AgMBAAGjfjB8MAwGA1UdEwQFMAMBAf8wLAYJYIZI
+AYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQW
+BBTNBjgjw1AM9qha8KfbUQMhAEHbNzAfBgNVHSMEGDAWgBTNBjgjw1AM9qha8Kfb
+UQMhAEHbNzANBgkqhkiG9w0BAQUFAAOBgQCcanET3EFe3CfEqth2u6z3PtYC0VXA
+sIsHw15NDcA73KmYBOUj/mGKFpPY078w8cr7ujN4WM/WjUmUzGYBQmEneZX1Nom7
+mqUd5Kz601NQEFhAkB23yp4OyxahSVxGhRNaYTlEwnx+staWXDq9BwMk8puH7PQA
+pRFQp3M8ljQ7AQ==
-----END CERTIFICATE-----
diff --git a/tests/recipient.pem b/tests/recipient.pem
index 1fb9968..8f59e59 100644
--- a/tests/recipient.pem
+++ b/tests/recipient.pem
@@ -3,24 +3,24 @@ Certificate:
Version: 3 (0x2)
Serial Number: 4 (0x4)
Signature Algorithm: sha1WithRSAEncryption
- Issuer: C=US, ST=CA, O=M2Crypto CA, CN=localhost
+ Issuer: C=US, ST=CA, O=M2Crypto, CN=localhost
Validity
- Not Before: Apr 22 04:42:04 2006 GMT
- Not After : Apr 22 04:42:04 2007 GMT
- Subject: C=US, ST=CA, O=M2Crypto Recipient, CN=localhost/emailAddress=recipient@example.com
+ Not Before: Dec 14 03:47:02 2006 GMT
+ Not After : Dec 13 03:47:02 2009 GMT
+ Subject: C=US, ST=CA, O=M2Crypto, CN=localhost/emailAddress=recipient@example.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
- 00:e3:5a:12:73:eb:fb:e3:4e:ba:8c:fb:68:af:bc:
- 87:ee:65:2d:20:d4:80:7d:87:c9:0b:81:a0:32:35:
- 0d:33:52:4b:45:87:d8:02:de:54:c5:e5:7a:70:bd:
- 66:08:6c:a7:4d:da:e5:20:d1:a8:08:e2:22:5e:b4:
- f2:c8:42:6c:68:96:5b:61:ec:74:e7:99:65:c1:be:
- a0:a2:df:a9:06:ec:5c:ff:27:88:04:45:f0:af:a2:
- ea:73:cc:e4:05:cf:c9:39:4c:c4:bd:0b:67:09:6b:
- 45:b9:e5:fd:19:6e:b0:81:fa:f4:ed:69:b4:40:b1:
- 54:e5:f5:35:a6:eb:4f:33:11
+ 00:cd:6c:81:f5:c3:3c:d7:3f:d9:40:27:93:73:93:
+ 1a:c3:0c:37:32:12:31:89:da:4a:ae:da:7d:2f:b3:
+ 78:95:ac:35:6d:33:3d:3b:5a:a8:7e:d9:cf:39:26:
+ 6a:80:49:06:06:fd:f7:fa:4c:71:4a:c4:ef:05:6e:
+ 05:03:36:14:27:12:75:65:6b:b3:a8:7b:69:fb:2a:
+ 4e:e1:ec:65:6e:01:ff:05:98:ad:04:73:73:08:8b:
+ 58:5d:70:b3:8b:f7:cf:10:8d:d2:79:2a:e3:4b:8d:
+ 79:e0:52:bf:9c:75:92:17:8b:ee:18:5b:3a:73:4b:
+ 0e:ea:4a:fa:e7:f4:f6:40:2f
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
@@ -28,33 +28,32 @@ Certificate:
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
- 6B:76:75:DA:A2:DA:DC:41:7B:8E:76:A2:65:BC:BF:AD:6E:18:03:C4
+ F4:33:02:B5:35:2D:52:7B:51:1C:F9:08:C7:D2:A8:8D:BE:CF:13:9E
X509v3 Authority Key Identifier:
- keyid:5C:F9:C5:9B:B0:02:37:3C:66:73:4D:0E:CB:5A:3D:BB:3A:46:22:DD
+ keyid:CD:06:38:23:C3:50:0C:F6:A8:5A:F0:A7:DB:51:03:21:00:41:DB:37
Signature Algorithm: sha1WithRSAEncryption
- 0b:e8:23:ff:71:df:0a:bd:db:26:9c:84:5f:98:85:6c:2a:07:
- ad:e8:19:aa:8a:ae:99:8f:5b:1b:cf:df:9e:04:f1:9e:f7:51:
- 01:7a:ce:1c:ce:2b:ea:81:58:41:f8:53:06:6e:ba:1f:77:41:
- 51:a1:16:e8:53:08:e1:5a:6f:68:e2:18:43:c3:b1:06:25:16:
- f8:5c:d0:39:2b:5b:1d:9a:dc:f3:9a:26:d2:11:09:a1:52:f0:
- 32:0a:b4:39:82:08:a8:90:be:d7:43:16:d4:ad:c7:48:39:37:
- dd:17:7a:4f:a6:e0:5b:9c:63:42:bf:65:d9:2e:ca:99:b7:dc:
- e4:04
+ 69:61:e1:72:56:64:75:30:7c:a2:7a:cb:ef:02:f9:6d:cd:41:
+ d4:1d:a2:7b:14:bc:02:d3:d1:09:40:15:fc:08:ae:22:aa:73:
+ 1f:85:de:41:a2:f9:90:23:e9:17:76:e8:a6:e8:13:b9:7f:67:
+ bb:f9:63:dc:b2:f0:e9:b0:eb:75:57:e5:b1:9e:18:93:e2:58:
+ 32:e4:1a:f1:6b:7a:7e:e8:c7:50:a0:08:68:b7:b6:83:6f:c1:
+ d6:af:91:e6:65:b3:c2:d3:12:a8:aa:6f:be:ea:da:e4:2b:5c:
+ 60:34:93:4e:e3:74:0e:d2:0e:9b:3e:0e:4a:37:e6:70:83:c2:
+ d7:c9
-----BEGIN CERTIFICATE-----
-MIICpjCCAg+gAwIBAgIBBDANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEL
-MAkGA1UECBMCQ0ExFDASBgNVBAoTC00yQ3J5cHRvIENBMRIwEAYDVQQDEwlsb2Nh
-bGhvc3QwHhcNMDYwNDIyMDQ0MjA0WhcNMDcwNDIyMDQ0MjA0WjBxMQswCQYDVQQG
-EwJVUzELMAkGA1UECBMCQ0ExGzAZBgNVBAoTEk0yQ3J5cHRvIFJlY2lwaWVudDES
-MBAGA1UEAxMJbG9jYWxob3N0MSQwIgYJKoZIhvcNAQkBFhVyZWNpcGllbnRAZXhh
-bXBsZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAONaEnPr++NOuoz7
-aK+8h+5lLSDUgH2HyQuBoDI1DTNSS0WH2ALeVMXlenC9Zghsp03a5SDRqAjiIl60
-8shCbGiWW2HsdOeZZcG+oKLfqQbsXP8niARF8K+i6nPM5AXPyTlMxL0LZwlrRbnl
-/RlusIH69O1ptECxVOX1NabrTzMRAgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJYIZI
-AYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQW
-BBRrdnXaotrcQXuOdqJlvL+tbhgDxDAfBgNVHSMEGDAWgBRc+cWbsAI3PGZzTQ7L
-Wj27OkYi3TANBgkqhkiG9w0BAQUFAAOBgQAL6CP/cd8KvdsmnIRfmIVsKget6Bmq
-iq6Zj1sbz9+eBPGe91EBes4czivqgVhB+FMGbrofd0FRoRboUwjhWm9o4hhDw7EG
-JRb4XNA5K1sdmtzzmibSEQmhUvAyCrQ5ggiokL7XQxbUrcdIOTfdF3pPpuBbnGNC
-v2XZLsqZt9zkBA==
+MIICmTCCAgKgAwIBAgIBBDANBgkqhkiG9w0BAQUFADBBMQswCQYDVQQGEwJVUzEL
+MAkGA1UECBMCQ0ExETAPBgNVBAoTCE0yQ3J5cHRvMRIwEAYDVQQDEwlsb2NhbGhv
+c3QwHhcNMDYxMjE0MDM0NzAyWhcNMDkxMjEzMDM0NzAyWjBnMQswCQYDVQQGEwJV
+UzELMAkGA1UECBMCQ0ExETAPBgNVBAoTCE0yQ3J5cHRvMRIwEAYDVQQDEwlsb2Nh
+bGhvc3QxJDAiBgkqhkiG9w0BCQEWFXJlY2lwaWVudEBleGFtcGxlLmNvbTCBnzAN
+BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAzWyB9cM81z/ZQCeTc5Mawww3MhIxidpK
+rtp9L7N4law1bTM9O1qoftnPOSZqgEkGBv33+kxxSsTvBW4FAzYUJxJ1ZWuzqHtp
++ypO4exlbgH/BZitBHNzCItYXXCzi/fPEI3SeSrjS4154FK/nHWSF4vuGFs6c0sO
+6kr65/T2QC8CAwEAAaN7MHkwCQYDVR0TBAIwADAsBglghkgBhvhCAQ0EHxYdT3Bl
+blNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFPQzArU1LVJ7URz5
+CMfSqI2+zxOeMB8GA1UdIwQYMBaAFM0GOCPDUAz2qFrwp9tRAyEAQds3MA0GCSqG
+SIb3DQEBBQUAA4GBAGlh4XJWZHUwfKJ6y+8C+W3NQdQdonsUvALT0QlAFfwIriKq
+cx+F3kGi+ZAj6Rd26KboE7l/Z7v5Y9yy8Omw63VX5bGeGJPiWDLkGvFren7ox1Cg
+CGi3toNvwdavkeZls8LTEqiqb77q2uQrXGA0k07jdA7SDps+Dko35nCDwtfJ
-----END CERTIFICATE-----
diff --git a/tests/recipient_key.pem b/tests/recipient_key.pem
index 5f9ca2f..8ee65b1 100644
--- a/tests/recipient_key.pem
+++ b/tests/recipient_key.pem
@@ -1,15 +1,15 @@
-----BEGIN RSA PRIVATE KEY-----
-MIICXgIBAAKBgQDjWhJz6/vjTrqM+2ivvIfuZS0g1IB9h8kLgaAyNQ0zUktFh9gC
-3lTF5XpwvWYIbKdN2uUg0agI4iJetPLIQmxollth7HTnmWXBvqCi36kG7Fz/J4gE
-RfCvoupzzOQFz8k5TMS9C2cJa0W55f0ZbrCB+vTtabRAsVTl9TWm608zEQIDAQAB
-AoGBANDx6/mbzRC4P1zoherU4zymwdXlVv2HeK7ZgCgEd9BN9p29XjosqU6DO4c3
-mfluGkjEP0ZtSPh5E8tkk6iW21d8PPhqN84awQpMW65rfUZRdM0tJKq3ObZek/4H
-GMdYOi14PAlCZGHwtInJ4ndGB8xbTPlAI+hUxppZZfcq6weRAkEA8mpZ82MuGHpm
-AifapoWQg0leH043GF/HitJuDICJEbu0ZCJopEhzei16wigQTRDgTRnChIKhMDms
-tps0stw4tQJBAPAXnwGzXuszqySXcMSrNI2bhok13K79facNHixiqSzPKg1wh/Lb
-s5dtpEHTUnbGGXKvriyFkZyGe9WDYsitlm0CQQDJChhFN/iPhlq46PJ1bYl2x87O
-KaCZjz0+TNvFdIe4dDHbZYngzNEv/y2yfWVfdGKArp9aI7en9fzdiAQBXY+NAkAS
-oPKQcjdyLm8gBrQUPmh0eFXG/avi0/5U4NqvfPQ9atGLe2jA+jUEEdjF1ry2RIai
-9GiiQbbbmz+ugGRAx989AkEAwfz5R8/+veZN4grMPqTMqO2V7AcXbJTYgxO+GDfm
-/n8gv9WmQtSqNa0xfdV0ERmKLrWx8sib+hf74aWxV2de3A==
+MIICXAIBAAKBgQDNbIH1wzzXP9lAJ5NzkxrDDDcyEjGJ2kqu2n0vs3iVrDVtMz07
+Wqh+2c85JmqASQYG/ff6THFKxO8FbgUDNhQnEnVla7Ooe2n7Kk7h7GVuAf8FmK0E
+c3MIi1hdcLOL988QjdJ5KuNLjXngUr+cdZIXi+4YWzpzSw7qSvrn9PZALwIDAQAB
+AoGAEBel/qiyxXH9BOeUx4MIn6r/T+7Y7qGpJBV9pRT8J018Sfevnky10mohr6pw
+wWf3DukqWfNPFLpktxotTlkYLutzmRz5LhQQp9zyC5dzZKleoIbpAsq4l16+CI44
+usNVc+C/qs4AOvOsEJou9gCQ0L+9Fru/nEZqtFL0z0XrcjECQQDr7QvSbIjE8o2L
+eyUC8S0jiImHArzwIqvio3n5zRlGqp+jP/3bD35q6/6DazJgH91V4E+0amBfqHdF
+PzX/ppt1AkEA3ucQEjuAyPqsROCs+w6Go9vQD/4qNNv5w0OImaQUi9VliY9pk7Cm
+WI5EbYTfYv5HWPdr3Qwbyz05mKy5gEuMkwJAQu+0ZPVKMKaopiRAMf9/UQ+SBW4v
+cOpFXj4Hg2o/e585P7YOLjLNKUTfpyWo20DvKUhFFOkBguJnRIxUo73/aQJBAKn8
+toHhBO7AVD3WxbRUOJOfn4WCxDc5hrjFuNfKjKyzGdMVHmO2NLWWEVMgIKfC2TBc
+x9J0WIHe+ByZpIHVm6cCQDes1zGfpZKQFbA9xOTZr+FjPfQtSDxY+l5AXNDi+neC
+8DR/4UYE+3tsT0DyZWaO3mQW7mh1QG6B3/OlpnvGGqc=
-----END RSA PRIVATE KEY-----
diff --git a/tests/server.pem b/tests/server.pem
index bcd826c..eac419d 100644
--- a/tests/server.pem
+++ b/tests/server.pem
@@ -3,24 +3,24 @@ Certificate:
Version: 3 (0x2)
Serial Number: 1 (0x1)
Signature Algorithm: sha1WithRSAEncryption
- Issuer: C=US, ST=CA, O=M2Crypto CA, CN=localhost
+ Issuer: C=US, ST=CA, O=M2Crypto, CN=localhost
Validity
- Not Before: Apr 22 04:36:56 2006 GMT
- Not After : Apr 22 04:36:56 2007 GMT
- Subject: C=US, ST=CA, O=M2Crypto Server, CN=localhost
+ Not Before: Dec 14 03:24:08 2006 GMT
+ Not After : Dec 13 03:24:08 2009 GMT
+ Subject: C=US, ST=CA, O=M2Crypto, CN=localhost
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
- 00:a5:cc:39:ad:ba:81:3d:bd:05:f4:61:50:9f:9c:
- f6:ad:ec:29:d9:78:1e:24:61:f7:1b:36:bf:69:d8:
- b3:45:ae:6f:3a:4c:4f:d6:13:6d:60:8d:f2:bb:2a:
- c4:1b:79:fd:e2:f8:d6:3c:56:53:3b:27:f7:3f:70:
- a4:64:99:63:46:2e:3f:ef:52:da:a9:04:5b:6e:d4:
- 40:57:c5:59:61:d3:3f:7d:b8:03:c1:9b:65:46:2a:
- c5:9d:70:b7:ca:79:6e:dd:e4:3f:c2:f4:2f:2e:81:
- 32:c8:e9:a6:b6:a8:c8:1f:48:be:7a:66:56:98:fc:
- 3c:25:fc:d9:3d:73:07:30:71
+ 00:d4:a9:64:75:ed:bb:14:c5:7b:30:f2:f3:3e:3a:
+ 38:87:18:f7:f0:89:2e:94:1d:1f:76:22:c5:91:dd:
+ 55:87:ba:2d:e3:15:a3:bd:a6:bc:b2:6c:44:b1:dd:
+ ff:96:b3:f8:72:3f:3a:41:3e:92:5d:fd:ca:67:e5:
+ 92:d6:8a:9f:5d:87:dc:35:ab:84:24:4c:f0:fb:9e:
+ 38:e0:25:14:09:ac:cd:62:5b:52:c4:15:dd:81:60:
+ 10:ed:84:3f:8e:72:41:64:95:2f:be:14:b6:88:ab:
+ 95:4f:ea:d7:71:73:93:fd:51:13:23:88:95:7c:7c:
+ 2a:ea:58:31:b1:a0:b9:7d:cf
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
@@ -28,47 +28,47 @@ Certificate:
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
- F0:48:3A:32:88:8C:80:D7:22:AB:56:F8:86:B3:04:47:10:76:37:BE
+ FE:0E:47:67:E7:BC:3B:95:FF:98:93:97:C8:97:BC:E8:6C:17:7F:50
X509v3 Authority Key Identifier:
- keyid:5C:F9:C5:9B:B0:02:37:3C:66:73:4D:0E:CB:5A:3D:BB:3A:46:22:DD
+ keyid:CD:06:38:23:C3:50:0C:F6:A8:5A:F0:A7:DB:51:03:21:00:41:DB:37
Signature Algorithm: sha1WithRSAEncryption
- 39:47:95:5c:ea:7e:db:b8:e0:80:f6:e5:d4:9f:83:bc:41:89:
- 31:97:c8:a4:95:0d:5d:6d:cc:64:8d:19:71:17:75:4b:7f:fb:
- 35:88:bf:68:e2:a2:be:c5:71:71:56:2a:92:31:25:2a:4b:98:
- 4e:77:42:45:78:45:21:a5:76:99:92:39:32:7d:a2:4c:38:b0:
- f1:db:7f:d1:4d:23:99:35:1e:0e:a1:59:a3:ff:9c:51:ef:4c:
- 11:c9:32:61:38:11:7d:57:2a:81:9a:96:1f:b3:88:f7:ab:5b:
- 58:f7:79:9b:a8:e3:b7:09:90:8e:c9:7d:44:4f:af:85:dc:c8:
- 29:4d
+ 95:0f:12:23:a0:59:d0:23:7e:f5:a0:e9:78:7e:29:89:51:15:
+ d6:5f:76:2d:50:3c:0a:93:46:b2:7f:8b:b7:8e:7d:56:18:1a:
+ a2:af:f6:9c:13:be:01:f7:28:7b:b9:93:6e:21:d3:e8:ea:fb:
+ aa:0b:68:b9:77:32:6f:8b:2d:86:c8:30:80:9c:ea:53:86:0d:
+ 27:7e:09:41:d0:98:13:e3:5e:49:77:fa:fa:ed:2e:c8:d9:7f:
+ 0d:9f:a7:01:a1:1c:1a:b4:83:6d:af:8b:cc:43:85:f4:65:73:
+ 2d:b3:23:d8:fb:24:2b:f1:36:7f:2b:38:2c:d0:65:95:01:b8:
+ f3:dc
-----BEGIN CERTIFICATE-----
-MIICfTCCAeagAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEL
-MAkGA1UECBMCQ0ExFDASBgNVBAoTC00yQ3J5cHRvIENBMRIwEAYDVQQDEwlsb2Nh
-bGhvc3QwHhcNMDYwNDIyMDQzNjU2WhcNMDcwNDIyMDQzNjU2WjBIMQswCQYDVQQG
-EwJVUzELMAkGA1UECBMCQ0ExGDAWBgNVBAoTD00yQ3J5cHRvIFNlcnZlcjESMBAG
-A1UEAxMJbG9jYWxob3N0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQClzDmt
-uoE9vQX0YVCfnPat7CnZeB4kYfcbNr9p2LNFrm86TE/WE21gjfK7KsQbef3i+NY8
-VlM7J/c/cKRkmWNGLj/vUtqpBFtu1EBXxVlh0z99uAPBm2VGKsWdcLfKeW7d5D/C
-9C8ugTLI6aa2qMgfSL56ZlaY/Dwl/Nk9cwcwcQIDAQABo3sweTAJBgNVHRMEAjAA
-MCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAd
-BgNVHQ4EFgQU8Eg6MoiMgNciq1b4hrMERxB2N74wHwYDVR0jBBgwFoAUXPnFm7AC
-Nzxmc00Oy1o9uzpGIt0wDQYJKoZIhvcNAQEFBQADgYEAOUeVXOp+27jggPbl1J+D
-vEGJMZfIpJUNXW3MZI0ZcRd1S3/7NYi/aOKivsVxcVYqkjElKkuYTndCRXhFIaV2
-mZI5Mn2iTDiw8dt/0U0jmTUeDqFZo/+cUe9MEckyYTgRfVcqgZqWH7OI96tbWPd5
-m6jjtwmQjsl9RE+vhdzIKU0=
+MIICczCCAdygAwIBAgIBATANBgkqhkiG9w0BAQUFADBBMQswCQYDVQQGEwJVUzEL
+MAkGA1UECBMCQ0ExETAPBgNVBAoTCE0yQ3J5cHRvMRIwEAYDVQQDEwlsb2NhbGhv
+c3QwHhcNMDYxMjE0MDMyNDA4WhcNMDkxMjEzMDMyNDA4WjBBMQswCQYDVQQGEwJV
+UzELMAkGA1UECBMCQ0ExETAPBgNVBAoTCE0yQ3J5cHRvMRIwEAYDVQQDEwlsb2Nh
+bGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANSpZHXtuxTFezDy8z46
+OIcY9/CJLpQdH3YixZHdVYe6LeMVo72mvLJsRLHd/5az+HI/OkE+kl39ymflktaK
+n12H3DWrhCRM8PueOOAlFAmszWJbUsQV3YFgEO2EP45yQWSVL74UtoirlU/q13Fz
+k/1REyOIlXx8KupYMbGguX3PAgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4
+QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBT+
+Dkdn57w7lf+Yk5fIl7zobBd/UDAfBgNVHSMEGDAWgBTNBjgjw1AM9qha8KfbUQMh
+AEHbNzANBgkqhkiG9w0BAQUFAAOBgQCVDxIjoFnQI371oOl4fimJURXWX3YtUDwK
+k0ayf4u3jn1WGBqir/acE74B9yh7uZNuIdPo6vuqC2i5dzJviy2GyDCAnOpThg0n
+fglB0JgT415Jd/r67S7I2X8Nn6cBoRwatINtr4vMQ4X0ZXMtsyPY+yQr8TZ/Kzgs
+0GWVAbjz3A==
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
-MIICXQIBAAKBgQClzDmtuoE9vQX0YVCfnPat7CnZeB4kYfcbNr9p2LNFrm86TE/W
-E21gjfK7KsQbef3i+NY8VlM7J/c/cKRkmWNGLj/vUtqpBFtu1EBXxVlh0z99uAPB
-m2VGKsWdcLfKeW7d5D/C9C8ugTLI6aa2qMgfSL56ZlaY/Dwl/Nk9cwcwcQIDAQAB
-AoGBAIwzbZbePsnxXOaxoBbJCcQ7D4yJSZvkh6womKauC7Lh9carn1tc5EIg5uCl
-Il5Fw466c5dkPE+q1SZ9X1Z+avYh4ypHjpcr1Lfvwo0wfOBx5MBj6ppMdwgrMXuo
-jRChK3gBZXmKaIH19h/sGp/lZRW2HiX63aN11KDmtfwo6Bq9AkEA2OftYJUqceK3
-/E8q6OE1oQLm+oK6CPZ29A5TRNOadRu1opDR/y59GcUQ5ebJNH8DXyF82lSi3DKt
-SNoSOF32cwJBAMOuKGUAwnq1yH3q+MAF7CZjGou7Ar6VRseyLnD5nttynT85QRW8
-N/WCosKLhV7wi9kKJmHGUJfRAqdo14D8IIsCQQCVjrU6FyABDpZVvjCUClT0BBBH
-QsQLUgWLGiWIG28wuD5xLPHexas0jZCtNIgfTkSA35I66Iiy065vwQ03GHLJAkAG
-eGC/jjngAtjBSR62grufPVGoYyOhF6CCg+LDO43EJdMLPyJmzJVxGcO1+RUM4ZlO
-MOa5/uu1SWT0EiRmEHAnAkBusVcHcd6d4uaoiCybIhF4hL4GsbKoImIciakNlteA
-c1RZZHc2jzO/Ihoz50H1njXwY86YbjncOXw8shtayd8j
+MIICWwIBAAKBgQDUqWR17bsUxXsw8vM+OjiHGPfwiS6UHR92IsWR3VWHui3jFaO9
+pryybESx3f+Ws/hyPzpBPpJd/cpn5ZLWip9dh9w1q4QkTPD7njjgJRQJrM1iW1LE
+Fd2BYBDthD+OckFklS++FLaIq5VP6tdxc5P9URMjiJV8fCrqWDGxoLl9zwIDAQAB
+AoGAJyCLhU8aLrYu9lCdBIP9xo2HgNAcq8+37Cp1o2LPy8srii5/E/PLoCBfe0JX
+NkkimxKbC0oR8A0z4m3Q2Hxk2aCb51nDrLOPkQ2ZBD8MhOQBIh1hZlALGPSk4I6p
+LGxPuX6JcZA6N85Zi8dlPMf2vj6m1oRgYSPxG9hYRds8a0ECQQD2LLlqkyg+P5QJ
+h/K7Oo+gkbVNGO4lxp59b2G72ZnPNt2JXIhKm9jjN4DXMxZ3a2iCWg5Jl1GYNGms
+PZQRtgfxAkEA3SZAOGKEP1kdP6OuyA4hVbDd9dImwPhAF/dVyBtT7mgzmppaJLi6
+N1T5ZArag35Dl3Upjy73SwLyxvTgIJuhvwJAEKXVpC9veUYzbLGU6LR9Ig64hA47
+jLJx5Wmy4lFE5Y6ATNnFHcaMVFFclTEPQ+QvnSEZ9kAVdIWW398KNGhrAQJAHG7Q
+ju9LpYFlm0sGK751VrkYsIRGa0T/qJUqOEIbNmm7SMNTl6kQeBC6x7wFgCZ5tj1g
+DIKzVLeaUy4kqsyXrQJAG3gKIjrQ2GBFZMLp7TVln0+sN98BKYGqJHbkJferE4jm
+ioFZLk5ow5LytUroMIDAORj7B0V7mnsDzvr0kMIoaQ==
-----END RSA PRIVATE KEY-----
diff --git a/tests/signer.pem b/tests/signer.pem
index f0c1391..904b3f7 100644
--- a/tests/signer.pem
+++ b/tests/signer.pem
@@ -1,26 +1,26 @@
Certificate:
Data:
Version: 3 (0x2)
- Serial Number: 3 (0x3)
+ Serial Number: 5 (0x5)
Signature Algorithm: sha1WithRSAEncryption
- Issuer: C=US, ST=CA, O=M2Crypto CA, CN=localhost
+ Issuer: C=US, ST=CA, O=M2Crypto, CN=localhost
Validity
- Not Before: Apr 22 04:40:51 2006 GMT
- Not After : Apr 22 04:40:51 2007 GMT
- Subject: C=US, ST=CA, O=M2Crypto Signer, CN=localhost/emailAddress=signer@example.com
+ Not Before: Dec 14 03:48:03 2006 GMT
+ Not After : Dec 13 03:48:03 2009 GMT
+ Subject: C=US, ST=CA, O=M2Crypto, CN=localhost/emailAddress=signer@example.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
- 00:cb:a8:b2:14:0b:d9:4a:d6:19:a6:1a:bf:b0:5e:
- cb:7c:90:c3:b4:60:5f:f6:97:14:81:e3:c8:12:a0:
- 03:39:57:a2:f6:63:66:7d:14:04:9a:f1:d3:b8:d8:
- 72:f0:70:6e:ee:b2:ff:f1:5c:b9:ba:45:1a:cf:d4:
- 66:7c:72:04:86:8f:cf:19:e4:22:ab:c4:c0:23:9d:
- 15:f6:1c:79:bf:0a:25:5d:1b:02:82:68:5e:27:2b:
- af:24:cc:d2:17:79:ad:58:30:e0:42:79:6b:1a:12:
- 03:03:83:d2:b9:1a:a7:aa:ff:6a:fc:c3:33:6d:77:
- 18:84:b9:86:f9:07:3d:3d:b3
+ 00:d1:85:16:87:28:14:0d:3e:39:fd:75:10:37:1d:
+ a5:fd:ca:69:e5:36:03:93:0f:a6:9b:15:fd:f7:fa:
+ c2:b7:3f:7b:26:1b:c5:02:93:95:29:a2:94:2c:38:
+ e1:fa:5a:29:ad:0e:c7:f2:0e:7e:ac:4f:9d:09:00:
+ 64:e6:2e:60:7f:89:97:62:36:c4:10:49:2e:ef:4b:
+ 4f:e2:db:8e:69:2c:81:6c:62:b0:fa:39:4a:0d:bf:
+ 32:f3:41:45:cc:3d:5c:18:2c:ae:51:6d:e3:70:0a:
+ 62:33:5d:7e:62:31:72:cc:1e:d5:5c:19:31:5a:60:
+ 3a:1e:5e:18:66:6a:dc:89:95
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
@@ -28,33 +28,32 @@ Certificate:
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
- BB:63:CA:27:FC:2D:53:8A:8D:DB:26:E8:8B:AE:2D:5C:85:3D:01:29
+ F9:92:29:8C:8C:DC:8D:1F:BA:F6:66:FA:93:EE:F0:4D:C4:06:7E:99
X509v3 Authority Key Identifier:
- keyid:5C:F9:C5:9B:B0:02:37:3C:66:73:4D:0E:CB:5A:3D:BB:3A:46:22:DD
+ keyid:CD:06:38:23:C3:50:0C:F6:A8:5A:F0:A7:DB:51:03:21:00:41:DB:37
Signature Algorithm: sha1WithRSAEncryption
- 2e:42:66:64:c5:21:dc:6c:2b:b7:4d:2a:a0:8a:2c:72:b2:89:
- 7d:55:3f:85:9f:57:2e:3d:59:5b:f6:8b:7a:11:e1:fc:d6:c8:
- 77:d5:1b:ff:65:51:98:93:f4:08:d0:9b:80:2d:df:b4:65:59:
- 28:ec:e4:ba:1e:e0:41:99:b6:1c:b0:48:19:00:fd:ae:da:61:
- 7c:24:81:ec:d5:bd:1a:c3:6c:43:b3:09:ae:40:0a:75:ae:a0:
- fd:a0:57:96:96:ac:b6:c0:56:db:7b:15:41:93:8e:10:cf:8c:
- 26:35:4d:2c:03:89:5d:e5:5c:7f:c3:dd:a5:97:a5:ae:c6:e6:
- 1c:8b
+ 98:4e:8e:77:f6:48:c1:b4:e2:43:43:02:32:c0:62:9b:65:c8:
+ 46:bb:01:1d:02:7e:67:0d:a6:96:86:11:0e:fe:8b:96:ff:d2:
+ a5:a1:90:ea:c0:2d:4d:c6:fe:92:82:e8:5d:76:97:2c:1e:3e:
+ d5:30:0e:91:61:03:7e:a4:18:5c:67:97:f5:4b:ae:61:b4:73:
+ 4b:95:9b:ae:a4:3d:dc:7e:9b:e1:21:cd:f2:ed:6f:99:46:99:
+ ea:8d:36:fe:84:f6:90:d9:46:c9:df:5c:55:26:28:04:60:f5:
+ b9:18:19:ed:37:57:b9:dc:9c:9d:7c:51:2d:79:23:89:f3:53:
+ b7:b5
-----BEGIN CERTIFICATE-----
-MIICoDCCAgmgAwIBAgIBAzANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEL
-MAkGA1UECBMCQ0ExFDASBgNVBAoTC00yQ3J5cHRvIENBMRIwEAYDVQQDEwlsb2Nh
-bGhvc3QwHhcNMDYwNDIyMDQ0MDUxWhcNMDcwNDIyMDQ0MDUxWjBrMQswCQYDVQQG
-EwJVUzELMAkGA1UECBMCQ0ExGDAWBgNVBAoTD00yQ3J5cHRvIFNpZ25lcjESMBAG
-A1UEAxMJbG9jYWxob3N0MSEwHwYJKoZIhvcNAQkBFhJzaWduZXJAZXhhbXBsZS5j
-b20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMuoshQL2UrWGaYav7Bey3yQ
-w7RgX/aXFIHjyBKgAzlXovZjZn0UBJrx07jYcvBwbu6y//FcubpFGs/UZnxyBIaP
-zxnkIqvEwCOdFfYceb8KJV0bAoJoXicrryTM0hd5rVgw4EJ5axoSAwOD0rkap6r/
-avzDM213GIS5hvkHPT2zAgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgEN
-BB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBS7Y8on
-/C1Tio3bJuiLri1chT0BKTAfBgNVHSMEGDAWgBRc+cWbsAI3PGZzTQ7LWj27OkYi
-3TANBgkqhkiG9w0BAQUFAAOBgQAuQmZkxSHcbCu3TSqgiixysol9VT+Fn1cuPVlb
-9ot6EeH81sh31Rv/ZVGYk/QI0JuALd+0ZVko7OS6HuBBmbYcsEgZAP2u2mF8JIHs
-1b0aw2xDswmuQAp1rqD9oFeWlqy2wFbbexVBk44Qz4wmNU0sA4ld5Vx/w92ll6Wu
-xuYciw==
+MIICljCCAf+gAwIBAgIBBTANBgkqhkiG9w0BAQUFADBBMQswCQYDVQQGEwJVUzEL
+MAkGA1UECBMCQ0ExETAPBgNVBAoTCE0yQ3J5cHRvMRIwEAYDVQQDEwlsb2NhbGhv
+c3QwHhcNMDYxMjE0MDM0ODAzWhcNMDkxMjEzMDM0ODAzWjBkMQswCQYDVQQGEwJV
+UzELMAkGA1UECBMCQ0ExETAPBgNVBAoTCE0yQ3J5cHRvMRIwEAYDVQQDEwlsb2Nh
+bGhvc3QxITAfBgkqhkiG9w0BCQEWEnNpZ25lckBleGFtcGxlLmNvbTCBnzANBgkq
+hkiG9w0BAQEFAAOBjQAwgYkCgYEA0YUWhygUDT45/XUQNx2l/cpp5TYDkw+mmxX9
+9/rCtz97JhvFApOVKaKULDjh+loprQ7H8g5+rE+dCQBk5i5gf4mXYjbEEEku70tP
+4tuOaSyBbGKw+jlKDb8y80FFzD1cGCyuUW3jcApiM11+YjFyzB7VXBkxWmA6Hl4Y
+ZmrciZUCAwEAAaN7MHkwCQYDVR0TBAIwADAsBglghkgBhvhCAQ0EHxYdT3BlblNT
+TCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFPmSKYyM3I0fuvZm+pPu
+8E3EBn6ZMB8GA1UdIwQYMBaAFM0GOCPDUAz2qFrwp9tRAyEAQds3MA0GCSqGSIb3
+DQEBBQUAA4GBAJhOjnf2SMG04kNDAjLAYptlyEa7AR0CfmcNppaGEQ7+i5b/0qWh
+kOrALU3G/pKC6F12lywePtUwDpFhA36kGFxnl/VLrmG0c0uVm66kPdx+m+EhzfLt
+b5lGmeqNNv6E9pDZRsnfXFUmKARg9bkYGe03V7ncnJ18US15I4nzU7e1
-----END CERTIFICATE-----
diff --git a/tests/signer_key.pem b/tests/signer_key.pem
index b164416..ce4eed6 100644
--- a/tests/signer_key.pem
+++ b/tests/signer_key.pem
@@ -1,15 +1,15 @@
-----BEGIN RSA PRIVATE KEY-----
-MIICWwIBAAKBgQDLqLIUC9lK1hmmGr+wXst8kMO0YF/2lxSB48gSoAM5V6L2Y2Z9
-FASa8dO42HLwcG7usv/xXLm6RRrP1GZ8cgSGj88Z5CKrxMAjnRX2HHm/CiVdGwKC
-aF4nK68kzNIXea1YMOBCeWsaEgMDg9K5Gqeq/2r8wzNtdxiEuYb5Bz09swIDAQAB
-AoGAKsdGkJtkiympvZBEz4E58PJfiVXtEljtv9LexbrCsprL6kE61+8KgJlnRZ6B
-liunwY/r3wEBKjU1yo3s8RrqBBG69sxlaD1dN5rKvfGqps05JHIyPbf+fyTqwZOw
-2XMJCVHO4JwenUlTmlFa0L8vR3m8gMpc8eQ09RbhvrgtR8ECQQDypaUNu8ygYG/g
-e1JxBrqb/csYV6zlA+5DuT12QxJYlxWp31q+T+C3s3ZWxixACG9EzA1dmWm88zJT
-zBMoLMfDAkEA1t3Lu4HmMcYAk9WAlsvJ2n/C5Pl2OFR5L8hCMUiEl5M412lMZN64
-0IfxWzjFWaxQIQ0N14dpzPylTcMgAW5DUQJANkU6L2IrmEs5epnajJEWt8EB5cXm
-U6qXZepOht7lgY75N29PWnV/K1cmRq44Q3IfgOGqs56Web5jKT7hogCyBQJAThGg
-aKy1+ve6VfyJEEFTQjSRl6icL7NhpN7aThXPN1Oin4H+49eYxwvdwgtKiV52bsvT
-b7Af3P8fALYY9uwdQQJAdounRel2I+qbaTaaP44fdAVTy49GZe9Y/55psmz8A0L8
-VoJ2bCYMBeX8+GEaKj14SujSR2B7duXl/OsA1H/Q9g==
+MIICXAIBAAKBgQDRhRaHKBQNPjn9dRA3HaX9ymnlNgOTD6abFf33+sK3P3smG8UC
+k5UpopQsOOH6WimtDsfyDn6sT50JAGTmLmB/iZdiNsQQSS7vS0/i245pLIFsYrD6
+OUoNvzLzQUXMPVwYLK5RbeNwCmIzXX5iMXLMHtVcGTFaYDoeXhhmatyJlQIDAQAB
+AoGAWfJfvIBJM3I+ZQAniPHSfAS0t3Eb0buLU9L6J8ZgZ1j6Xl7XkgaXp7sjD2UQ
+JnEkqSXKUrFEUmcPTHj92A+a3v5aH69DoYrh2Goh4IPXs6stQoT6hfk/bRmEPXS0
+bUkqYf5EiAoy3WW7ucR7zCi7TpU8u7tZn+lWn0n5/YZab5UCQQD6KZNfyVPBU7Tm
+cazzS1+j7pS2Acn11DBvXxQJJnaTwDd6WUwPzQ5X1fSypM0LDjr9/OX9HQd7dW7n
+h9QNsRtzAkEA1mi4pySoQOPL8Q2u5ih0Vqg+/crU6WnHI1uXup8C/is2bjGyJpD3
+hBQD7COdf36266i6deRqTj99HO2WC8CU1wJAHdOzNKqGh/h5CzjmjCOihaM+q+zO
+rbbdB4pokya44Kj8dGQNQ50JZsOl517q67SIqBvtOB6r87ZuwMBbMj65rQJAbtCR
+H1IC5AbYUS4RR0OBXYh3hhRfFoRlOBEOypWEpnkPGMT2npguVUVDAbkmnc6QHByI
+woXbq7WEpH7nHgva4QJBAOxB45CkSyTiWyXWf/0EvcLfkmYEMaAuiTF+dUkDMaaa
+eUVUu7l8YtNRgosWAxs4aqcF2fBMj+n35lu4bzfjiUw=
-----END RSA PRIVATE KEY-----
diff --git a/tests/test_bio_ssl.py b/tests/test_bio_ssl.py
index e40fef9..b07be03 100644
--- a/tests/test_bio_ssl.py
+++ b/tests/test_bio_ssl.py
@@ -23,7 +23,7 @@ class HandshakeClient(threading.Thread):
def run(self):
ctx = SSL.Context()
- ctx.load_cert_chain("server.pem")
+ ctx.load_cert_chain("tests/server.pem")
conn = SSL.Connection(ctx)
cipher_list = conn.get_cipher_list()
sslbio = BIO.SSLBio()
@@ -103,7 +103,7 @@ class SSLTestCase(unittest.TestCase):
def check_do_handshake_succeed(self):
ctx = SSL.Context()
- ctx.load_cert_chain("server.pem")
+ ctx.load_cert_chain("tests/server.pem")
conn = SSL.Connection(ctx)
self.sslbio.set_ssl(conn)
readbio = BIO.MemoryBuffer()
diff --git a/tests/test_dh.py b/tests/test_dh.py
index 7d5f9aa..28a5d1b 100644
--- a/tests/test_dh.py
+++ b/tests/test_dh.py
@@ -9,7 +9,7 @@ from M2Crypto import DH, BIO, Rand, m2
class DHTestCase(unittest.TestCase):
- params = 'dhparam.pem'
+ params = 'tests/dhparam.pem'
def genparam_callback(self, *args):
pass
@@ -37,11 +37,11 @@ class DHTestCase(unittest.TestCase):
assert params.find('generator: 2 (0x2)')
def check_load_params(self):
- a = DH.load_params('dhparams.pem')
+ a = DH.load_params('tests/dhparams.pem')
assert a.check_params() == 0
def check_compute_key(self):
- a = DH.load_params('dhparams.pem')
+ a = DH.load_params('tests/dhparams.pem')
b = DH.set_params(a.p, a.g)
a.gen_key()
b.gen_key()
diff --git a/tests/test_dsa.py b/tests/test_dsa.py
index 25ef667..25d0827 100644
--- a/tests/test_dsa.py
+++ b/tests/test_dsa.py
@@ -10,10 +10,10 @@ from M2Crypto import DSA, BIO, Rand, m2
class DSATestCase(unittest.TestCase):
- errkey = 'rsa.priv.pem'
- privkey = 'dsa.priv.pem'
- pubkey = 'dsa.pub.pem'
- param = 'dsa.param.pem'
+ errkey = 'tests/rsa.priv.pem'
+ privkey = 'tests/dsa.priv.pem'
+ pubkey = 'tests/dsa.pub.pem'
+ param = 'tests/dsa.param.pem'
data = sha.sha('Can you spell subliminal channel?').digest()
different_data = sha.sha('I can spell.').digest()
diff --git a/tests/test_ec_curves.py b/tests/test_ec_curves.py
index 998a3c1..8607dcc 100644
--- a/tests/test_ec_curves.py
+++ b/tests/test_ec_curves.py
@@ -96,15 +96,17 @@ curves = [
('wap_wsg_idm_ecid_wtls12', 224),
]
-# The following two curves are not supported by the
-# OpenSSL inverse function. ECError: no inverse.
+# The following two curves, according to OpenSSL, have a
+# "Questionable extension field!" and are not supported by
+# the OpenSSL inverse function. ECError: no inverse.
# As such they cannot be used for signing. They might,
# however, be usable for encryption but that has not
-# been tested.
-curves2 = [
- ('ipsec3', 155),
- ('ipsec4', 185),
-]
+# been tested. Until thir usefulness can be established,
+# they are not supported at this time.
+#curves2 = [
+# ('ipsec3', 155),
+# ('ipsec4', 185),
+#]
class ECCurveTests(unittest.TestCase):
#data = sha.sha('Kilroy was here!').digest() # 160 bits
@@ -120,12 +122,12 @@ class ECCurveTests(unittest.TestCase):
assert ec.check_key(), 'check_key() failure for "%s"' % curveName
return ec
- def check_ec_curves_genkey(self):
- for curveName, curveLen in curves2:
- self.genkey(curveName, curveLen)
-
- self.assertRaises(AttributeError, self.genkey,
- 'nosuchcurve', 1)
+# def check_ec_curves_genkey(self):
+# for curveName, curveLen in curves2:
+# self.genkey(curveName, curveLen)
+#
+# self.assertRaises(AttributeError, self.genkey,
+# 'nosuchcurve', 1)
def sign_verify_ecdsa(self, curveName, curveLen):
ec = self.genkey(curveName, curveLen)
@@ -140,9 +142,9 @@ class ECCurveTests(unittest.TestCase):
self.assertRaises(AttributeError, self.sign_verify_ecdsa,
'nosuchcurve', 1)
- for curveName, curveLen in curves2:
- self.assertRaises(EC.ECError, self.sign_verify_ecdsa,
- curveName, curveLen)
+# for curveName, curveLen in curves2:
+# self.assertRaises(EC.ECError, self.sign_verify_ecdsa,
+# curveName, curveLen)
def suite():
suite = unittest.TestSuite()
diff --git a/tests/test_ecdh.py b/tests/test_ecdh.py
index 8df5d8c..222dae1 100644
--- a/tests/test_ecdh.py
+++ b/tests/test_ecdh.py
@@ -13,7 +13,7 @@ import sys
class ECDHTestCase(unittest.TestCase):
- privkey = 'ec.priv.pem'
+ privkey = 'tests/ec.priv.pem'
def check_init_junk(self):
self.assertRaises(TypeError, EC.EC, 'junk')
diff --git a/tests/test_ecdsa.py b/tests/test_ecdsa.py
index 3edc4b7..839730d 100644
--- a/tests/test_ecdsa.py
+++ b/tests/test_ecdsa.py
@@ -12,9 +12,9 @@ from M2Crypto import EC, BIO, Rand, m2
class ECDSATestCase(unittest.TestCase):
- errkey = 'rsa.priv.pem'
- privkey = 'ec.priv.pem'
- pubkey = 'ec.pub.pem'
+ errkey = 'tests/rsa.priv.pem'
+ privkey = 'tests/ec.priv.pem'
+ pubkey = 'tests/ec.pub.pem'
data = sha.sha('Can you spell subliminal channel?').digest()
diff --git a/tests/test_rand.py b/tests/test_rand.py
index 8fb380c..3e4d65d 100644
--- a/tests/test_rand.py
+++ b/tests/test_rand.py
@@ -24,12 +24,12 @@ class RandTestCase(unittest.TestCase):
def test_load_save(self):
try:
- os.remove('randpool.dat')
+ os.remove('tests/randpool.dat')
except OSError:
pass
- assert Rand.load_file('randpool.dat', -1) == 0
- assert Rand.save_file('randpool.dat') == 1024
- assert Rand.load_file('randpool.dat', -1) == 1024
+ assert Rand.load_file('tests/randpool.dat', -1) == 0
+ assert Rand.save_file('tests/randpool.dat') == 1024
+ assert Rand.load_file('tests/randpool.dat', -1) == 1024
def test_seed_add(self):
if sys.version_info >= (2, 4):
diff --git a/tests/test_rsa.py b/tests/test_rsa.py
index 72009c2..92c8eb8 100644
--- a/tests/test_rsa.py
+++ b/tests/test_rsa.py
@@ -10,10 +10,10 @@ from M2Crypto import RSA, BIO, Rand, m2, EVP
class RSATestCase(unittest.TestCase):
- errkey = 'dsa.priv.pem'
- privkey = 'rsa.priv.pem'
- privkey2 = 'rsa.priv2.pem'
- pubkey = 'rsa.pub.pem'
+ errkey = 'tests/dsa.priv.pem'
+ privkey = 'tests/rsa.priv.pem'
+ privkey2 = 'tests/rsa.priv2.pem'
+ pubkey = 'tests/rsa.pub.pem'
data = sha.sha('The magic words are squeamish ossifrage.').digest()
diff --git a/tests/test_smime.py b/tests/test_smime.py
index 3b528f0..766f628 100644
--- a/tests/test_smime.py
+++ b/tests/test_smime.py
@@ -19,7 +19,7 @@ class SMIMETestCase(unittest.TestCase):
def check_sign(self):
buf = BIO.MemoryBuffer(self.cleartext)
s = SMIME.SMIME()
- s.load_key('signer_key.pem', 'signer.pem')
+ s.load_key('tests/signer_key.pem', 'tests/signer.pem')
p7 = s.sign(buf)
assert len(buf) == 0
assert p7.type() == SMIME.PKCS7_SIGNED, p7.type()
@@ -40,13 +40,13 @@ class SMIMETestCase(unittest.TestCase):
def check_verify(self):
s = SMIME.SMIME()
- x509 = X509.load_cert('signer.pem')
+ x509 = X509.load_cert('tests/signer.pem')
sk = X509.X509_Stack()
sk.push(x509)
s.set_x509_stack(sk)
st = X509.X509_Store()
- st.load_info('ca.pem')
+ st.load_info('tests/ca.pem')
s.set_x509_store(st)
p7, data = SMIME.smime_load_pkcs7_bio(self.signed)
@@ -59,13 +59,13 @@ class SMIMETestCase(unittest.TestCase):
def check_verifyBad(self):
s = SMIME.SMIME()
- x509 = X509.load_cert('recipient.pem')
+ x509 = X509.load_cert('tests/recipient.pem')
sk = X509.X509_Stack()
sk.push(x509)
s.set_x509_stack(sk)
st = X509.X509_Store()
- st.load_info('recipient.pem')
+ st.load_info('tests/recipient.pem')
s.set_x509_store(st)
p7, data = SMIME.smime_load_pkcs7_bio(self.signed)
@@ -77,7 +77,7 @@ class SMIMETestCase(unittest.TestCase):
buf = BIO.MemoryBuffer(self.cleartext)
s = SMIME.SMIME()
- x509 = X509.load_cert('recipient.pem')
+ x509 = X509.load_cert('tests/recipient.pem')
sk = X509.X509_Stack()
sk.push(x509)
s.set_x509_stack(sk)
@@ -104,7 +104,7 @@ class SMIMETestCase(unittest.TestCase):
def check_decrypt(self):
s = SMIME.SMIME()
- s.load_key('recipient_key.pem', 'recipient.pem')
+ s.load_key('tests/recipient_key.pem', 'tests/recipient.pem')
p7, data = SMIME.smime_load_pkcs7_bio(self.encrypted)
assert isinstance(p7, SMIME.PKCS7), p7
@@ -116,7 +116,7 @@ class SMIMETestCase(unittest.TestCase):
def check_decryptBad(self):
s = SMIME.SMIME()
- s.load_key('signer_key.pem', 'signer.pem')
+ s.load_key('tests/signer_key.pem', 'tests/signer.pem')
p7, data = SMIME.smime_load_pkcs7_bio(self.encrypted)
assert isinstance(p7, SMIME.PKCS7), p7
@@ -129,11 +129,11 @@ class SMIMETestCase(unittest.TestCase):
# sign
buf = BIO.MemoryBuffer(self.cleartext)
s = SMIME.SMIME()
- s.load_key('signer_key.pem', 'signer.pem')
+ s.load_key('tests/signer_key.pem', 'tests/signer.pem')
p7 = s.sign(buf)
# encrypt
- x509 = X509.load_cert('recipient.pem')
+ x509 = X509.load_cert('tests/recipient.pem')
sk = X509.X509_Stack()
sk.push(x509)
s.set_x509_stack(sk)
@@ -151,20 +151,20 @@ class SMIMETestCase(unittest.TestCase):
# decrypt
s = SMIME.SMIME()
- s.load_key('recipient_key.pem', 'recipient.pem')
+ s.load_key('tests/recipient_key.pem', 'tests/recipient.pem')
p7, data = SMIME.smime_load_pkcs7_bio(signedEncrypted)
out = s.decrypt(p7)
# verify
- x509 = X509.load_cert('signer.pem')
+ x509 = X509.load_cert('tests/signer.pem')
sk = X509.X509_Stack()
sk.push(x509)
s.set_x509_stack(sk)
st = X509.X509_Store()
- st.load_info('ca.pem')
+ st.load_info('tests/ca.pem')
s.set_x509_store(st)
p7_bio = BIO.MemoryBuffer(out)
@@ -176,14 +176,14 @@ class SMIMETestCase(unittest.TestCase):
class WriteLoadTestCase(unittest.TestCase):
def setUp(self):
s = SMIME.SMIME()
- s.load_key('signer_key.pem', 'signer.pem')
+ s.load_key('tests/signer_key.pem', 'tests/signer.pem')
p7 = s.sign(BIO.MemoryBuffer('some text'))
- self.filename = 'sig.p7'
+ self.filename = 'tests/sig.p7'
f = BIO.openfile(self.filename, 'wb')
assert p7.write(f) == 1
f.close()
- self.filenameSmime = 'sig.p7s'
+ self.filenameSmime = 'tests/sig.p7s'
f = BIO.openfile(self.filenameSmime, 'wb')
assert s.write(f, p7, BIO.MemoryBuffer('some text')) == 1
f.close()
@@ -192,7 +192,7 @@ class WriteLoadTestCase(unittest.TestCase):
buf = BIO.MemoryBuffer()
assert SMIME.load_pkcs7(self.filename).write_der(buf) == 1
s = buf.read()
- assert len(s) == 1168, len(s)
+ assert len(s) == 1155, len(s)
def check_load_pkcs7(self):
assert SMIME.load_pkcs7(self.filename).type() == SMIME.PKCS7_SIGNED
diff --git a/tests/test_ssl.py b/tests/test_ssl.py
index fe56e9b..e0a9617 100644
--- a/tests/test_ssl.py
+++ b/tests/test_ssl.py
@@ -18,7 +18,7 @@ Others:
"""
import os, socket, string, sys, tempfile, thread, time, unittest
-from M2Crypto import Rand, SSL, m2
+from M2Crypto import Rand, SSL, m2, Err
srv_host = 'localhost'
srv_port = 64000
@@ -49,7 +49,14 @@ class SSLClientTestCase(unittest.TestCase):
def start_server(self, args):
pid = os.fork()
if pid == 0:
- os.execvp('openssl', args)
+ # openssl must be started in the tests directory for it
+ # to find the .pem files
+ os.chdir('tests')
+ try:
+ os.execvp('openssl', args)
+ finally:
+ os.chdir('..')
+
else:
time.sleep(0.5)
return pid
@@ -102,7 +109,7 @@ class SSLClientTestCase(unittest.TestCase):
try:
ctx = SSL.Context()
ctx.set_verify(SSL.verify_peer | SSL.verify_fail_if_no_peer_cert, 9)
- ctx.load_verify_locations('ca.pem')
+ ctx.load_verify_locations('tests/ca.pem')
s = SSL.Connection(ctx)
s.connect(self.srv_addr)
data = self.http_get(s)
@@ -116,7 +123,7 @@ class SSLClientTestCase(unittest.TestCase):
try:
ctx = SSL.Context()
ctx.set_verify(SSL.verify_peer | SSL.verify_fail_if_no_peer_cert, 9)
- ctx.load_verify_locations('server.pem')
+ ctx.load_verify_locations('tests/server.pem')
s = SSL.Connection(ctx)
self.assertRaises(SSL.SSLError, s.connect, self.srv_addr)
s.close()
@@ -451,7 +458,7 @@ class SSLClientTestCase(unittest.TestCase):
try:
ctx = SSL.Context()
ctx.set_verify(SSL.verify_peer | SSL.verify_fail_if_no_peer_cert, 9)
- ctx.load_verify_locations('ca.pem')
+ ctx.load_verify_locations('tests/ca.pem')
s = SSL.Connection(ctx)
try:
s.connect(self.srv_addr)
@@ -468,7 +475,7 @@ class SSLClientTestCase(unittest.TestCase):
try:
ctx = SSL.Context()
ctx.set_verify(SSL.verify_peer | SSL.verify_fail_if_no_peer_cert, 9)
- ctx.load_verify_locations('server.pem')
+ ctx.load_verify_locations('tests/server.pem')
s = SSL.Connection(ctx)
self.assertRaises(SSL.SSLError, s.connect, self.srv_addr)
s.close()
@@ -481,8 +488,8 @@ class SSLClientTestCase(unittest.TestCase):
try:
ctx = SSL.Context()
ctx.set_verify(SSL.verify_peer | SSL.verify_fail_if_no_peer_cert, 9)
- ctx.load_verify_locations('ca.pem')
- ctx.load_cert('x509.pem')
+ ctx.load_verify_locations('tests/ca.pem')
+ ctx.load_cert('tests/x509.pem')
s = SSL.Connection(ctx)
try:
s.connect(self.srv_addr)
@@ -500,8 +507,8 @@ class SSLClientTestCase(unittest.TestCase):
try:
ctx = SSL.Context()
ctx.set_verify(SSL.verify_peer | SSL.verify_fail_if_no_peer_cert, 9)
- ctx.load_verify_locations('ca.pem')
- ctx.load_cert('x509.pem')
+ ctx.load_verify_locations('tests/ca.pem')
+ ctx.load_cert('tests/x509.pem')
s = SSL.Connection(ctx)
try:
s.connect(self.srv_addr)
@@ -519,7 +526,7 @@ class SSLClientTestCase(unittest.TestCase):
try:
ctx = SSL.Context()
ctx.set_verify(SSL.verify_peer | SSL.verify_fail_if_no_peer_cert, 9)
- ctx.load_verify_locations('ca.pem')
+ ctx.load_verify_locations('tests/ca.pem')
s = SSL.Connection(ctx)
self.assertRaises(SSL.SSLError, s.connect, self.srv_addr)
s.close()
@@ -532,7 +539,7 @@ class SSLClientTestCase(unittest.TestCase):
try:
ctx = SSL.Context()
ctx.set_verify(SSL.verify_peer | SSL.verify_fail_if_no_peer_cert, 9)
- ctx.load_verify_locations('ca.pem')
+ ctx.load_verify_locations('tests/ca.pem')
s = SSL.Connection(ctx)
self.assertRaises(SSL.SSLError, s.connect, self.srv_addr)
s.close()
@@ -557,7 +564,7 @@ class SSLClientTestCase(unittest.TestCase):
from M2Crypto import httpslib
ctx = SSL.Context()
ctx.set_verify(SSL.verify_peer | SSL.verify_fail_if_no_peer_cert, 9)
- ctx.load_verify_locations('ca.pem')
+ ctx.load_verify_locations('tests/ca.pem')
c = httpslib.HTTPSConnection(srv_host, srv_port, ssl_context=ctx)
c.request('GET', '/')
data = c.getresponse().read()
@@ -572,7 +579,7 @@ class SSLClientTestCase(unittest.TestCase):
from M2Crypto import httpslib
ctx = SSL.Context()
ctx.set_verify(SSL.verify_peer | SSL.verify_fail_if_no_peer_cert, 9)
- ctx.load_verify_locations('server.pem')
+ ctx.load_verify_locations('tests/server.pem')
c = httpslib.HTTPSConnection(srv_host, srv_port, ssl_context=ctx)
self.assertRaises(SSL.SSLError, c.request, 'GET', '/')
c.close()
@@ -603,7 +610,7 @@ class SSLClientTestCase(unittest.TestCase):
from M2Crypto import httpslib
ctx = SSL.Context()
ctx.set_verify(SSL.verify_peer | SSL.verify_fail_if_no_peer_cert, 9)
- ctx.load_verify_locations('ca.pem')
+ ctx.load_verify_locations('tests/ca.pem')
c = httpslib.HTTPS(srv_host, srv_port, ssl_context=ctx)
c.putrequest('GET', '/')
c.putheader('Accept', 'text/html')
@@ -624,7 +631,7 @@ class SSLClientTestCase(unittest.TestCase):
from M2Crypto import httpslib
ctx = SSL.Context()
ctx.set_verify(SSL.verify_peer | SSL.verify_fail_if_no_peer_cert, 9)
- ctx.load_verify_locations('server.pem')
+ ctx.load_verify_locations('tests/server.pem')
c = httpslib.HTTPS(srv_host, srv_port, ssl_context=ctx)
c.putrequest('GET', '/')
c.putheader('Accept', 'text/html')
@@ -674,7 +681,7 @@ class SSLClientTestCase(unittest.TestCase):
try:
ctx = SSL.Context()
ctx.set_verify(SSL.verify_peer | SSL.verify_fail_if_no_peer_cert, 9)
- ctx.load_verify_locations('ca.pem')
+ ctx.load_verify_locations('tests/ca.pem')
from M2Crypto import m2urllib2
opener = m2urllib2.build_opener(ctx)
@@ -691,7 +698,7 @@ class SSLClientTestCase(unittest.TestCase):
try:
ctx = SSL.Context()
ctx.set_verify(SSL.verify_peer | SSL.verify_fail_if_no_peer_cert, 9)
- ctx.load_verify_locations('server.pem')
+ ctx.load_verify_locations('tests/server.pem')
from M2Crypto import m2urllib2
opener = m2urllib2.build_opener(ctx)
@@ -747,6 +754,44 @@ class SSLClientTestCase(unittest.TestCase):
self.stop_server(pid)
self.failIf(string.find(data, 's_server -quiet -www') == -1)
+ def test_makefile_err(self):
+ def http_get(s):
+ s.send('GET / HTTP/1.0\n\n')
+ resp = ''
+ while 1:
+ try:
+ r = s.recv(4096)
+ if not r:
+ break
+ except SSL.SSLError, e: # s_server throws an 'unexpected eof'...
+ #print e
+ break
+ resp = resp + r
+ return resp
+
+ pid = self.start_server(self.args)
+ try:
+ ctx = SSL.Context()
+ s = SSL.Connection(ctx)
+ try:
+ s.connect(self.srv_addr)
+ except SSL.SSLError, e:
+ assert 0, e
+ f = s.makefile()
+ data = http_get(s)
+ s.close()
+ del f
+ f = None
+ del s
+ s = None
+ err_code = Err.peek_error_code()
+ assert not err_code, 'Unexpected error: %s' % err_code
+ err = Err.get_error()
+ assert not err, 'Unexpected error: %s' % err
+ finally:
+ self.stop_server(pid)
+ self.failIf(string.find(data, 's_server -quiet -www') == -1)
+
def test_twisted_wrapper(self):
# Test only when twisted and ZopeInterfaces are present
try:
@@ -804,8 +849,8 @@ class CheckerTestCase(unittest.TestCase):
from M2Crypto import X509
check = Checker.Checker(host=srv_host,
- peerCertHash='9594D272A975F58F4430511D15B4B7FF3D778113')
- x509 = X509.load_cert('server.pem')
+ peerCertHash='02C0CAD90DE6837700173A839BB8E84BF1F5B820')
+ x509 = X509.load_cert('tests/server.pem')
assert check(x509, srv_host)
self.assertRaises(Checker.WrongHost, check, x509, 'example.com')
@@ -853,9 +898,9 @@ if __name__ == '__main__':
gc.set_debug(gc.DEBUG_LEAK & ~gc.DEBUG_SAVEALL)
try:
- Rand.load_file('../randpool.dat', -1)
+ Rand.load_file('randpool.dat', -1)
unittest.TextTestRunner().run(suite())
- Rand.save_file('../randpool.dat')
+ Rand.save_file('randpool.dat')
finally:
zap_servers()
diff --git a/tests/test_ssl_win.py b/tests/test_ssl_win.py
index 662488e..595ef20 100644
--- a/tests/test_ssl_win.py
+++ b/tests/test_ssl_win.py
@@ -34,9 +34,15 @@ class SSLWinClientTestCase(test_ssl.SSLClientTestCase):
openssl = find_openssl()
def start_server(self, args):
- hproc, hthread, pid, tid = win32process.CreateProcess(self.openssl,
- string.join(args), None, None, 0, win32process.DETACHED_PROCESS,
- None, None, self.startupinfo)
+ # openssl must be started in the tests directory for it
+ # to find the .pem files
+ os.chdir('tests')
+ try:
+ hproc, hthread, pid, tid = win32process.CreateProcess(self.openssl,
+ string.join(args), None, None, 0, win32process.DETACHED_PROCESS,
+ None, None, self.startupinfo)
+ finally:
+ os.chdir('..')
time.sleep(0.3)
return hproc
@@ -54,9 +60,9 @@ def zap_servers():
if __name__ == '__main__':
try:
if find_openssl() is not None:
- Rand.load_file('../randpool.dat', -1)
+ Rand.load_file('randpool.dat', -1)
unittest.TextTestRunner().run(suite())
- Rand.save_file('../randpool.dat')
+ Rand.save_file('randpool.dat')
finally:
zap_servers()
diff --git a/tests/test_x509.py b/tests/test_x509.py
index 2b2bde3..05b658e 100644
--- a/tests/test_x509.py
+++ b/tests/test_x509.py
@@ -42,6 +42,10 @@ class X509TestCase(unittest.TestCase):
assert x.verify(pk2)
return x, pk
+ def check_ext(self):
+ self.assertRaises(ValueError, X509.new_extension,
+ 'subjectKeyIdentifier', 'hash')
+
def check_extstack(self):
# new
ext1 = X509.new_extension('subjectAltName', 'DNS:foobar.example.com')
@@ -109,9 +113,9 @@ class X509TestCase(unittest.TestCase):
def check_mkreq(self):
(req, _) = self.mkreq(512)
- req.save_pem('tmp_request.pem')
- req2 = X509.load_request('tmp_request.pem')
- os.remove('tmp_request.pem')
+ req.save_pem('tests/tmp_request.pem')
+ req2 = X509.load_request('tests/tmp_request.pem')
+ os.remove('tests/tmp_request.pem')
assert req.as_pem() == req2.as_pem()
assert req.as_text() == req2.as_text()
@@ -269,18 +273,16 @@ class X509TestCase(unittest.TestCase):
return proxycert
def check_fingerprint(self):
- x509 = X509.load_cert('x509.pem')
+ x509 = X509.load_cert('tests/x509.pem')
fp = x509.get_fingerprint('sha1')
- expected = '0xDE1EE86E98AA192122365180BCC64F88F065C4A7L'
- if sys.version_info >= (2,5):
- expected = expected[:-1].lower() + 'L'
+ expected = '128858B5222A5C78397530A5706233A9EB470AC4'
assert fp == expected, '%s != %s' % (fp, expected)
class X509_StackTestCase(unittest.TestCase):
def check_make_stack_from_der(self):
- f = open("der_encoded_seq.b64")
+ f = open("tests/der_encoded_seq.b64")
b64 = f.read(1304)
seq = base64.decodestring(b64)
stack = X509.new_stack_from_der(seq)
@@ -290,7 +292,7 @@ class X509_StackTestCase(unittest.TestCase):
assert str(subject) == "/DC=org/DC=doegrids/OU=Services/CN=host/bosshog.lbl.gov"
def check_make_stack_check_num(self):
- f = open("der_encoded_seq.b64")
+ f = open("tests/der_encoded_seq.b64")
b64 = f.read(1304)
seq = base64.decodestring(b64)
stack = X509.new_stack_from_der(seq)
@@ -304,8 +306,8 @@ class X509_StackTestCase(unittest.TestCase):
def check_make_stack(self):
stack = X509.X509_Stack()
- cert = X509.load_cert("x509.pem")
- issuer = X509.load_cert("ca.pem")
+ cert = X509.load_cert("tests/x509.pem")
+ issuer = X509.load_cert("tests/ca.pem")
cert_subject1 = cert.get_subject()
issuer_subject1 = issuer.get_subject()
stack.push(cert)
@@ -327,8 +329,8 @@ class X509_StackTestCase(unittest.TestCase):
def check_as_der(self):
stack = X509.X509_Stack()
- cert = X509.load_cert("x509.pem")
- issuer = X509.load_cert("ca.pem")
+ cert = X509.load_cert("tests/x509.pem")
+ issuer = X509.load_cert("tests/ca.pem")
cert_subject1 = cert.get_subject()
issuer_subject1 = issuer.get_subject()
stack.push(cert)
diff --git a/tests/x509.pem b/tests/x509.pem
index 591ebea..11e087c 100644
--- a/tests/x509.pem
+++ b/tests/x509.pem
@@ -3,24 +3,24 @@ Certificate:
Version: 3 (0x2)
Serial Number: 2 (0x2)
Signature Algorithm: sha1WithRSAEncryption
- Issuer: C=US, ST=CA, O=M2Crypto CA, CN=localhost
+ Issuer: C=US, ST=CA, O=M2Crypto, CN=localhost
Validity
- Not Before: Apr 22 04:38:57 2006 GMT
- Not After : Apr 22 04:38:57 2007 GMT
- Subject: C=US, ST=CA, O=M2Crypto X509, CN=localhost
+ Not Before: Dec 14 03:25:36 2006 GMT
+ Not After : Dec 13 03:25:36 2009 GMT
+ Subject: C=US, ST=CA, O=M2Crypto, CN=localhost
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
- 00:b8:52:61:f5:c1:41:91:1b:a6:03:a7:e8:b5:a3:
- db:72:e2:84:9b:8a:2c:49:ad:bd:03:51:a4:a6:95:
- 6b:bb:29:fc:9a:95:cf:ca:fb:c5:16:94:e5:23:9c:
- 92:9d:1e:cf:fa:31:35:55:ae:8b:cf:af:73:d5:92:
- cf:2a:0f:3d:3b:cf:15:b9:d8:de:bb:93:7b:ba:54:
- d5:4a:ad:3e:c2:6f:76:bf:35:7c:be:ff:88:31:84:
- 90:83:4b:54:b9:9b:4f:9a:a5:55:d8:6d:45:7c:64:
- 6d:be:6c:8f:e1:06:6f:73:f7:35:a3:2c:1e:48:99:
- 37:68:9f:b1:d3:83:fa:d7:c7
+ 00:ed:20:bf:09:50:eb:e8:83:4e:de:60:d8:30:6e:
+ ce:15:7d:95:f7:f3:06:dc:fa:d2:95:cb:5e:54:32:
+ bb:9d:23:e1:33:80:32:72:ae:78:a4:82:5d:ad:03:
+ 57:62:8e:b4:7d:71:f8:0f:82:65:79:a4:0d:16:78:
+ 65:38:24:fd:06:39:6b:ec:c2:0e:fc:78:40:10:01:
+ 7d:78:33:18:b1:7f:2f:bd:65:ae:ca:a7:75:16:f2:
+ 3e:1a:dc:79:50:af:e4:61:0b:c1:52:3a:55:51:87:
+ 72:6b:1a:33:02:47:e3:cc:2c:49:e7:fe:cc:10:e9:
+ 8f:5c:60:c6:2e:c1:5a:c8:bb
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
@@ -28,47 +28,47 @@ Certificate:
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
- 10:AF:83:F2:BF:F1:8F:BE:E1:96:39:CA:CE:2F:CD:F8:99:14:C5:17
+ 77:DE:BA:B7:DE:8D:9B:E0:4E:7D:1E:67:77:03:B3:CE:73:EB:2C:BF
X509v3 Authority Key Identifier:
- keyid:5C:F9:C5:9B:B0:02:37:3C:66:73:4D:0E:CB:5A:3D:BB:3A:46:22:DD
+ keyid:CD:06:38:23:C3:50:0C:F6:A8:5A:F0:A7:DB:51:03:21:00:41:DB:37
Signature Algorithm: sha1WithRSAEncryption
- 60:a5:2d:48:11:3e:55:b0:47:e4:f9:8a:8e:11:66:8b:08:d4:
- 59:b7:c9:6e:74:87:51:d8:c7:43:56:7b:c2:b5:fe:11:61:b7:
- 37:90:17:6b:d1:49:07:5b:58:89:1f:43:d7:1f:de:f1:a8:58:
- 28:7b:96:f2:b5:af:da:bf:4e:e5:a8:0f:36:bd:3a:88:9c:a2:
- 41:e6:6a:3b:b8:4a:38:48:6f:77:cd:ae:4a:07:51:90:e1:01:
- 18:82:da:d9:a4:a8:b5:a4:6e:82:b8:b0:cc:f7:4a:73:b6:d5:
- 4c:0b:09:02:c1:0e:3c:31:5f:5b:d2:00:91:e8:dc:a1:e2:a3:
- 17:59
+ a5:b7:0b:21:36:79:59:1d:f2:c3:43:ff:79:09:54:bf:44:87:
+ 05:3f:b4:dd:9a:ea:63:98:34:d5:0b:1c:e4:33:ea:37:7b:ec:
+ 6b:81:b4:1c:ef:e6:da:dc:4b:37:4b:2f:96:73:de:94:75:62:
+ 1f:ac:60:be:27:7e:3f:16:98:05:1a:4c:ec:7c:87:59:9f:94:
+ f0:9f:3b:84:f1:c1:b6:e9:54:03:e6:71:e0:4c:61:f5:93:a3:
+ be:56:6c:22:47:c8:e4:1c:fd:55:8b:a7:22:4d:f5:d2:32:59:
+ 9b:a0:ef:2f:59:22:0b:0c:c7:70:b9:3b:5d:81:63:6d:f2:83:
+ e5:97
-----BEGIN CERTIFICATE-----
-MIICezCCAeSgAwIBAgIBAjANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEL
-MAkGA1UECBMCQ0ExFDASBgNVBAoTC00yQ3J5cHRvIENBMRIwEAYDVQQDEwlsb2Nh
-bGhvc3QwHhcNMDYwNDIyMDQzODU3WhcNMDcwNDIyMDQzODU3WjBGMQswCQYDVQQG
-EwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAoTDU0yQ3J5cHRvIFg1MDkxEjAQBgNV
-BAMTCWxvY2FsaG9zdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuFJh9cFB
-kRumA6fotaPbcuKEm4osSa29A1GkppVruyn8mpXPyvvFFpTlI5ySnR7P+jE1Va6L
-z69z1ZLPKg89O88Vudjeu5N7ulTVSq0+wm92vzV8vv+IMYSQg0tUuZtPmqVV2G1F
-fGRtvmyP4QZvc/c1oyweSJk3aJ+x04P618cCAwEAAaN7MHkwCQYDVR0TBAIwADAs
-BglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYD
-VR0OBBYEFBCvg/K/8Y++4ZY5ys4vzfiZFMUXMB8GA1UdIwQYMBaAFFz5xZuwAjc8
-ZnNNDstaPbs6RiLdMA0GCSqGSIb3DQEBBQUAA4GBAGClLUgRPlWwR+T5io4RZosI
-1Fm3yW50h1HYx0NWe8K1/hFhtzeQF2vRSQdbWIkfQ9cf3vGoWCh7lvK1r9q/TuWo
-Dza9OoicokHmaju4SjhIb3fNrkoHUZDhARiC2tmkqLWkboK4sMz3SnO21UwLCQLB
-DjwxX1vSAJHo3KHioxdZ
+MIICczCCAdygAwIBAgIBAjANBgkqhkiG9w0BAQUFADBBMQswCQYDVQQGEwJVUzEL
+MAkGA1UECBMCQ0ExETAPBgNVBAoTCE0yQ3J5cHRvMRIwEAYDVQQDEwlsb2NhbGhv
+c3QwHhcNMDYxMjE0MDMyNTM2WhcNMDkxMjEzMDMyNTM2WjBBMQswCQYDVQQGEwJV
+UzELMAkGA1UECBMCQ0ExETAPBgNVBAoTCE0yQ3J5cHRvMRIwEAYDVQQDEwlsb2Nh
+bGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAO0gvwlQ6+iDTt5g2DBu
+zhV9lffzBtz60pXLXlQyu50j4TOAMnKueKSCXa0DV2KOtH1x+A+CZXmkDRZ4ZTgk
+/QY5a+zCDvx4QBABfXgzGLF/L71lrsqndRbyPhrceVCv5GELwVI6VVGHcmsaMwJH
+48wsSef+zBDpj1xgxi7BWsi7AgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4
+QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBR3
+3rq33o2b4E59Hmd3A7POc+ssvzAfBgNVHSMEGDAWgBTNBjgjw1AM9qha8KfbUQMh
+AEHbNzANBgkqhkiG9w0BAQUFAAOBgQCltwshNnlZHfLDQ/95CVS/RIcFP7Tdmupj
+mDTVCxzkM+o3e+xrgbQc7+ba3Es3Sy+Wc96UdWIfrGC+J34/FpgFGkzsfIdZn5Tw
+nzuE8cG26VQD5nHgTGH1k6O+VmwiR8jkHP1Vi6ciTfXSMlmboO8vWSILDMdwuTtd
+gWNt8oPllw==
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
-MIICXgIBAAKBgQC4UmH1wUGRG6YDp+i1o9ty4oSbiixJrb0DUaSmlWu7Kfyalc/K
-+8UWlOUjnJKdHs/6MTVVrovPr3PVks8qDz07zxW52N67k3u6VNVKrT7Cb3a/NXy+
-/4gxhJCDS1S5m0+apVXYbUV8ZG2+bI/hBm9z9zWjLB5ImTdon7HTg/rXxwIDAQAB
-AoGAcmUeywlwCgEg3a/+K41Qi1KufmIY7nlXj5HCIGkn/XcngUFtP0tWnJc4RwvL
-qpwO8/ZKZaz4tKLtvyVoUXA3zbJ0wP9JTqtYOTdfxPvfkIHcGwI/YI+xpJXj/2ZG
-//biP3GjnO1gAH53YqRSOC7fD7J9OStPEq2uSDFArCuKpeECQQDppTtqRCF3BxCq
-sLZACVpx+rk52SWLHEgE6OYbID6kEl9aiiBkRUqACc3fBkwiIXmiIR+vctcccinT
-qSdI8E9JAkEAyfUMPzvXMjO0qAjVdTlBdlZETawEASpdfId+gob+EcXr5qo+fim8
-WyU1C6M1F1DEz7sUKzyx8fugNH7QVNQejwJBALkrvt8FiBAxhUACNS6jOw9CSjJS
-qrKJg3qAqn2tHHgkJ3Y2Kl3NnLHFE2hCMWyLYz7fSaFfPqTIxeV+Fih0bCECQQCD
-bd/sfusLFq8o86bGxN4fPwDwc1Of1oxEcIEaPPO3aVCeKojE3jBgOJSO4EW6yKts
-bNkxUiyTyCd4Qlcd/XVtAkEAqSwMV9GNoxc2dzeOYOamuSyRDdzvT4rdEOOE8VnQ
-yjcu6zgLanbf9lfcy7Ma9NlmTExTniiX2+q8VNmnbk32NQ==
+MIICXQIBAAKBgQDtIL8JUOvog07eYNgwbs4VfZX38wbc+tKVy15UMrudI+EzgDJy
+rnikgl2tA1dijrR9cfgPgmV5pA0WeGU4JP0GOWvswg78eEAQAX14Mxixfy+9Za7K
+p3UW8j4a3HlQr+RhC8FSOlVRh3JrGjMCR+PMLEnn/swQ6Y9cYMYuwVrIuwIDAQAB
+AoGBANa/yULOnlc8U7jhS+jQ8KJV0fNzjMuj/ALc4tit+Wsei1zwxL9HcsrJpbyC
+Qilnw9230Ud6eBvpjlDDSCfIl7vEx5+5dtYPnpJNUsWICCbvRKfBSHSNUZfDbiHf
+BgtDFGjkD3SxjlpYCBFXt/9YHWM9qxiH5NvfIpI/lCuAMJYBAkEA/1K6KFX6Jzd0
+M++eNKYrcWAdBsp081MiOZ90W78ChNj0V+spwX6iK63qYxJbnE9WeuvdN/jx6iXN
+FhlOMDJJ2wJBAO3Bq8fl3m/crJcvbknjMLBIx/4RM7C5e/9duMTO9u6gRDC/LIE+
+tClptiqCg5yVev5bfxVfIVOuxdYe8NXF4qECQAEvMQ3e2Do2V6OmCOXVn333JCtT
+5Rb727zIsJF8YVacawW9YYQ0QixRsjSjcSlYdN49GdmYngaoBjuEAojWsuECQEQd
+sHFc0hWKS4gk9pwEkvZuY53On9iJy5Sl7UG1admD4QV2P/HnXQZgWuhi7AH4cXxe
+ClK9JncrI1LtGmKkhwECQQDPrH/sGRTPZFjc0vRMwYYJM4QLRWCi3eKL8Pc8DSVk
+rillryZWYPMbkTBKitZmXlBEfrj3CGD1sp7Pa4SauLRi
-----END RSA PRIVATE KEY-----