2012-06-27 04:42:00 +00:00
|
|
|
import os
|
|
|
|
from netlib import certutils
|
|
|
|
import tutils
|
|
|
|
|
|
|
|
|
|
|
|
def test_dummy_ca():
|
|
|
|
with tutils.tmpdir() as d:
|
|
|
|
path = os.path.join(d, "foo/cert.cnf")
|
|
|
|
assert certutils.dummy_ca(path)
|
|
|
|
assert os.path.exists(path)
|
|
|
|
|
|
|
|
path = os.path.join(d, "foo/cert2.pem")
|
|
|
|
assert certutils.dummy_ca(path)
|
|
|
|
assert os.path.exists(path)
|
|
|
|
assert os.path.exists(os.path.join(d, "foo/cert2-cert.pem"))
|
|
|
|
assert os.path.exists(os.path.join(d, "foo/cert2-cert.p12"))
|
|
|
|
|
|
|
|
|
2013-01-05 12:15:53 +00:00
|
|
|
class TestCertStore:
|
|
|
|
def test_create_explicit(self):
|
|
|
|
with tutils.tmpdir() as d:
|
|
|
|
ca = os.path.join(d, "ca")
|
|
|
|
assert certutils.dummy_ca(ca)
|
|
|
|
c = certutils.CertStore(d)
|
|
|
|
c.cleanup()
|
|
|
|
assert os.path.exists(d)
|
|
|
|
|
|
|
|
def test_create_tmp(self):
|
|
|
|
with tutils.tmpdir() as d:
|
|
|
|
ca = os.path.join(d, "ca")
|
|
|
|
assert certutils.dummy_ca(ca)
|
|
|
|
c = certutils.CertStore()
|
|
|
|
assert not c.get_cert("foo.com", [])
|
|
|
|
assert c.get_cert("foo.com", [], ca)
|
|
|
|
assert c.get_cert("foo.com", [], ca)
|
|
|
|
c.cleanup()
|
|
|
|
|
|
|
|
|
2012-06-27 04:42:00 +00:00
|
|
|
class TestDummyCert:
|
|
|
|
def test_with_ca(self):
|
|
|
|
with tutils.tmpdir() as d:
|
2013-01-05 12:15:53 +00:00
|
|
|
cacert = os.path.join(d, "cacert")
|
2012-06-27 04:42:00 +00:00
|
|
|
assert certutils.dummy_ca(cacert)
|
2013-01-05 12:15:53 +00:00
|
|
|
p = os.path.join(d, "foo")
|
|
|
|
certutils.dummy_cert(
|
|
|
|
file(p, "w"),
|
2012-06-27 04:42:00 +00:00
|
|
|
cacert,
|
|
|
|
"foo.com",
|
|
|
|
["one.com", "two.com", "*.three.com"]
|
|
|
|
)
|
2013-01-05 12:15:53 +00:00
|
|
|
assert file(p).read()
|
2012-06-27 04:42:00 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TestSSLCert:
|
|
|
|
def test_simple(self):
|
2012-06-27 10:11:58 +00:00
|
|
|
c = certutils.SSLCert.from_pem(file(tutils.test_data.path("data/text_cert"), "r").read())
|
2012-06-27 04:42:00 +00:00
|
|
|
assert c.cn == "google.com"
|
|
|
|
assert len(c.altnames) == 436
|
|
|
|
|
2012-06-27 10:11:58 +00:00
|
|
|
c = certutils.SSLCert.from_pem(file(tutils.test_data.path("data/text_cert_2"), "r").read())
|
2012-06-27 04:42:00 +00:00
|
|
|
assert c.cn == "www.inode.co.nz"
|
|
|
|
assert len(c.altnames) == 2
|
|
|
|
assert c.digest("sha1")
|
|
|
|
assert c.notbefore
|
|
|
|
assert c.notafter
|
|
|
|
assert c.subject
|
|
|
|
assert c.keyinfo == ("RSA", 2048)
|
|
|
|
assert c.serial
|
|
|
|
assert c.issuer
|
2012-06-28 02:56:21 +00:00
|
|
|
assert c.to_pem()
|
2012-06-27 04:42:00 +00:00
|
|
|
c.has_expired
|
|
|
|
|
2012-07-24 02:55:54 +00:00
|
|
|
def test_err_broken_sans(self):
|
|
|
|
c = certutils.SSLCert.from_pem(file(tutils.test_data.path("data/text_cert_weird1"), "r").read())
|
|
|
|
# This breaks unless we ignore a decoding error.
|
|
|
|
c.altnames
|
|
|
|
|
2012-06-27 04:42:00 +00:00
|
|
|
def test_der(self):
|
|
|
|
d = file(tutils.test_data.path("data/dercert")).read()
|
|
|
|
s = certutils.SSLCert.from_der(d)
|
|
|
|
assert s.cn
|