From bde345766f794b74be74abadeea971ff6972d5ca Mon Sep 17 00:00:00 2001 From: Jakub Warmuz Date: Thu, 12 Feb 2015 15:45:12 +0000 Subject: [PATCH] Update acme.messages docs. Fix test --- letsencrypt/acme/messages.py | 24 +++++++++++++----------- letsencrypt/acme/messages_test.py | 23 ++++++++++------------- 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/letsencrypt/acme/messages.py b/letsencrypt/acme/messages.py index 30baa803b..2f45d4001 100644 --- a/letsencrypt/acme/messages.py +++ b/letsencrypt/acme/messages.py @@ -177,9 +177,9 @@ class AuthorizationRequest(Message): """ACME "authorizationRequest" message. :ivar str session_id: "sessionID" from the server challenge - :ivar str name: Hostname :ivar str nonce: Nonce from the server challenge :ivar list responses: List of completed challenges + :ivar signature: Signature (:class:`letsencrypt.acme.other.Signature`). :ivar contact: TODO """ @@ -191,7 +191,7 @@ class AuthorizationRequest(Message): def create(cls, name, key, sig_nonce=None, **kwargs): """Create signed "authorizationRequest". - :param str name: TODO + :param str name: Hostname :param key: Key used for signing. :type key: :class:`Crypto.PublicKey.RSA` @@ -246,8 +246,11 @@ class AuthorizationRequest(Message): class Certificate(Message): """ACME "certificate" message. - :ivar certificate: TODO - :type certificate: :class:`M2Crypto.X509` TODO + :ivar certificate: The certificate (:class:`M2Crypto.X509.X509` + 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" @@ -283,9 +286,9 @@ class Certificate(Message): class CertificateRequest(Message): """ACME "certificateRequest" message. - :ivar str csr: CSR. - :ivar signature: Signature. - :type signature: :class:`letsencrypt.acme.other.Signature` + :ivar csr: Certificate Signing Request (:class:`M2Crypto.X509.Request` + wrapped in :class:`letsencrypt.acme.util.ComparableX509`. + :ivar signature: Signature (:class:`letsencrypt.acme.other.Signature`). """ acme_type = "certificateRequest" @@ -411,10 +414,9 @@ class Revocation(Message): class RevocationRequest(Message): """ACME "revocationRequest" message. - :iver str certificate: DER encoded certificate. - :iver str key: Key in string form. Accepted formats - are the same as for `Crypto.PublicKey.RSA.importKey`. - :ivar str nonce: Nonce used for signature. Useful for testing. + :ivar certificate: Certificate (:class:`M2Crypto.X509.X509` + wrapped in :class:`letsencrypt.acme.util.ComparableX509`). + :ivar signature: Signature (:class:`letsencrypt.acme.other.Signature`). """ acme_type = "revocationRequest" diff --git a/letsencrypt/acme/messages_test.py b/letsencrypt/acme/messages_test.py index 41668c01f..447245f26 100644 --- a/letsencrypt/acme/messages_test.py +++ b/letsencrypt/acme/messages_test.py @@ -423,31 +423,27 @@ class RevocationRequestTest(unittest.TestCase): def setUp(self): 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( alg='RS256', jwk=jose.JWK(key=KEY.publickey()), - sig='\x00\x15\xc0\xd4\x8b2M\xa9S\\\x8a#\xc6a\xa7!A\xb2d\x04' - '\xa6\xbe\xa1/M\x0f|\x8c\x9eJ\x16\xcd\x85N\xcc\x0b\x12k(' - '\xa8U\xdfS\xa9y\xfd\xfa.\xb3\xeblms\x9f,\xdf\xbb>7\xd9' - '\xe5u\x8f\xbe', + sig='eJ\xfe\x12"U\x87\x8b\xbf/ ,\xdeP\xb2\xdc1\xb00\xe5\x1dB' + '\xfch<\xc6\x9eH@!\x1c\x16\xb2\x0b_\xc4\xddP\x89\xc8\xce?' + '\x16g\x069I\xb9\xb3\x91\xb9\x0e$3\x9f\x87\x8e\x82\xca\xc5' + 's\xd9\xd0\xe7', nonce=self.sig_nonce) from letsencrypt.acme.messages import RevocationRequest - self.msg = RevocationRequest( - certificate=self.certificate, signature=signature) + self.msg = RevocationRequest(certificate=CERT, signature=signature) self.jmsg = { 'type': 'revocationRequest', - 'certificate': 'VE9ETzogcmVhbCBERVIgY2VydD8', + 'certificate': jose.b64encode(CERT.as_der()), 'signature': signature, } def test_create(self): from letsencrypt.acme.messages import RevocationRequest - RevocationRequest.create( - certificate=self.certificate, key=KEY, sig_nonce=self.sig_nonce) + self.assertEqual(self.msg, RevocationRequest.create( + certificate=CERT, key=KEY, sig_nonce=self.sig_nonce)) def test_verify(self): self.assertTrue(self.msg.verify()) @@ -456,9 +452,10 @@ class RevocationRequestTest(unittest.TestCase): self.assertEqual(self.msg.to_json(), self.jmsg) def test_from_json(self): - from letsencrypt.acme.messages import RevocationRequest self.jmsg['signature'] = self.jmsg['signature'].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))