Update acme.messages docs. Fix test

This commit is contained in:
Jakub Warmuz
2015-02-12 15:45:12 +00:00
parent a3eedc294d
commit bde345766f
2 changed files with 23 additions and 24 deletions
+13 -11
View File
@@ -177,9 +177,9 @@ class AuthorizationRequest(Message):
"""ACME "authorizationRequest" message. """ACME "authorizationRequest" message.
:ivar str session_id: "sessionID" from the server challenge :ivar str session_id: "sessionID" from the server challenge
:ivar str name: Hostname
:ivar str nonce: Nonce from the server challenge :ivar str nonce: Nonce from the server challenge
:ivar list responses: List of completed challenges :ivar list responses: List of completed challenges
:ivar signature: Signature (:class:`letsencrypt.acme.other.Signature`).
:ivar contact: TODO :ivar contact: TODO
""" """
@@ -191,7 +191,7 @@ class AuthorizationRequest(Message):
def create(cls, name, key, sig_nonce=None, **kwargs): def create(cls, name, key, sig_nonce=None, **kwargs):
"""Create signed "authorizationRequest". """Create signed "authorizationRequest".
:param str name: TODO :param str name: Hostname
:param key: Key used for signing. :param key: Key used for signing.
:type key: :class:`Crypto.PublicKey.RSA` :type key: :class:`Crypto.PublicKey.RSA`
@@ -246,8 +246,11 @@ class AuthorizationRequest(Message):
class Certificate(Message): class Certificate(Message):
"""ACME "certificate" message. """ACME "certificate" message.
:ivar certificate: TODO :ivar certificate: The certificate (:class:`M2Crypto.X509.X509`
:type certificate: :class:`M2Crypto.X509` TODO wrapped in :class:`letsencrypt.acme.util.ComparableX509`).
:ivar list chain: Chain of certificates (:class:`M2Crypto.X509.X509` wrapped
in :class:`letsencrypt.acme.util.ComparableX509` ).
""" """
acme_type = "certificate" acme_type = "certificate"
@@ -283,9 +286,9 @@ class Certificate(Message):
class CertificateRequest(Message): class CertificateRequest(Message):
"""ACME "certificateRequest" message. """ACME "certificateRequest" message.
:ivar str csr: CSR. :ivar csr: Certificate Signing Request (:class:`M2Crypto.X509.Request`
:ivar signature: Signature. wrapped in :class:`letsencrypt.acme.util.ComparableX509`.
:type signature: :class:`letsencrypt.acme.other.Signature` :ivar signature: Signature (:class:`letsencrypt.acme.other.Signature`).
""" """
acme_type = "certificateRequest" acme_type = "certificateRequest"
@@ -411,10 +414,9 @@ class Revocation(Message):
class RevocationRequest(Message): class RevocationRequest(Message):
"""ACME "revocationRequest" message. """ACME "revocationRequest" message.
:iver str certificate: DER encoded certificate. :ivar certificate: Certificate (:class:`M2Crypto.X509.X509`
:iver str key: Key in string form. Accepted formats wrapped in :class:`letsencrypt.acme.util.ComparableX509`).
are the same as for `Crypto.PublicKey.RSA.importKey`. :ivar signature: Signature (:class:`letsencrypt.acme.other.Signature`).
:ivar str nonce: Nonce used for signature. Useful for testing.
""" """
acme_type = "revocationRequest" acme_type = "revocationRequest"
+10 -13
View File
@@ -423,31 +423,27 @@ class RevocationRequestTest(unittest.TestCase):
def setUp(self): def setUp(self):
self.sig_nonce = '\xec\xd6\xf2oYH\xeb\x13\xd5#q\xe0\xdd\xa2\x92\xa9' self.sig_nonce = '\xec\xd6\xf2oYH\xeb\x13\xd5#q\xe0\xdd\xa2\x92\xa9'
self.nonce = '\xec\xd6\xf2oYH\xeb\x13\xd5#q\xe0\xdd\xa2\x92\xa9'
self.certificate = 'TODO: real DER cert?'
signature = other.Signature( signature = other.Signature(
alg='RS256', jwk=jose.JWK(key=KEY.publickey()), alg='RS256', jwk=jose.JWK(key=KEY.publickey()),
sig='\x00\x15\xc0\xd4\x8b2M\xa9S\\\x8a#\xc6a\xa7!A\xb2d\x04' sig='eJ\xfe\x12"U\x87\x8b\xbf/ ,\xdeP\xb2\xdc1\xb00\xe5\x1dB'
'\xa6\xbe\xa1/M\x0f|\x8c\x9eJ\x16\xcd\x85N\xcc\x0b\x12k(' '\xfch<\xc6\x9eH@!\x1c\x16\xb2\x0b_\xc4\xddP\x89\xc8\xce?'
'\xa8U\xdfS\xa9y\xfd\xfa.\xb3\xeblms\x9f,\xdf\xbb>7\xd9' '\x16g\x069I\xb9\xb3\x91\xb9\x0e$3\x9f\x87\x8e\x82\xca\xc5'
'\xe5u\x8f\xbe', 's\xd9\xd0\xe7',
nonce=self.sig_nonce) nonce=self.sig_nonce)
from letsencrypt.acme.messages import RevocationRequest from letsencrypt.acme.messages import RevocationRequest
self.msg = RevocationRequest( self.msg = RevocationRequest(certificate=CERT, signature=signature)
certificate=self.certificate, signature=signature)
self.jmsg = { self.jmsg = {
'type': 'revocationRequest', 'type': 'revocationRequest',
'certificate': 'VE9ETzogcmVhbCBERVIgY2VydD8', 'certificate': jose.b64encode(CERT.as_der()),
'signature': signature, 'signature': signature,
} }
def test_create(self): def test_create(self):
from letsencrypt.acme.messages import RevocationRequest from letsencrypt.acme.messages import RevocationRequest
RevocationRequest.create( self.assertEqual(self.msg, RevocationRequest.create(
certificate=self.certificate, key=KEY, sig_nonce=self.sig_nonce) certificate=CERT, key=KEY, sig_nonce=self.sig_nonce))
def test_verify(self): def test_verify(self):
self.assertTrue(self.msg.verify()) self.assertTrue(self.msg.verify())
@@ -456,9 +452,10 @@ class RevocationRequestTest(unittest.TestCase):
self.assertEqual(self.msg.to_json(), self.jmsg) self.assertEqual(self.msg.to_json(), self.jmsg)
def test_from_json(self): def test_from_json(self):
from letsencrypt.acme.messages import RevocationRequest
self.jmsg['signature'] = self.jmsg['signature'].to_json() self.jmsg['signature'] = self.jmsg['signature'].to_json()
self.jmsg['signature']['jwk'] = self.jmsg['signature']['jwk'].to_json() self.jmsg['signature']['jwk'] = self.jmsg['signature']['jwk'].to_json()
from letsencrypt.acme.messages import RevocationRequest
self.assertEqual(self.msg, RevocationRequest.from_json(self.jmsg)) self.assertEqual(self.msg, RevocationRequest.from_json(self.jmsg))