mirror of
https://github.com/certbot/certbot.git
synced 2026-07-30 18:04:31 +02:00
Parameter checking and filling in TODOs
This commit is contained in:
@@ -70,32 +70,67 @@ def challenge_request(name):
|
|||||||
:rtype: dict
|
:rtype: dict
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
if type(name) is not unicode:
|
||||||
|
raise TypeError("Parameter `name` must be unicode")
|
||||||
|
|
||||||
|
if not name:
|
||||||
|
raise ValueError("Parameter `name` must not be empty")
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"type": "challengeRequest",
|
"type": "challengeRequest",
|
||||||
"identifier": name,
|
"identifier": name,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def authorization_request(req_id, name, server_nonce, responses, key_file):
|
def authorization_request(req_id, name, server_nonce, responses, key):
|
||||||
"""Create ACME "authorizationRequest" message.
|
"""Create ACME "authorizationRequest" message.
|
||||||
|
|
||||||
:param req_id: TODO
|
:param str req_id: SessionID from the server challenge
|
||||||
:param name: TODO
|
:param unicode name: Hostname
|
||||||
:param server_nonce: TODO
|
:param str server_nonce: Nonce from the server challenge
|
||||||
:param responses: TODO
|
:param list responses: List of completed challenges
|
||||||
:param key_file: TODO
|
:param str key: Key in string form. Accepted formats
|
||||||
|
are the same as for `Crypto.PublicKey.RSA.importKey`.
|
||||||
|
|
||||||
:returns: ACME "authorizationRequest" message.
|
:returns: ACME "authorizationRequest" message.
|
||||||
:rtype: dict
|
:rtype: dict
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
if type(req_id) is not str:
|
||||||
|
raise TypeError("Parameter `req_id` must be of type str")
|
||||||
|
|
||||||
|
if not req_id:
|
||||||
|
raise ValueError("Parameter `req_id` must not be empty")
|
||||||
|
|
||||||
|
if type(name) is not unicode:
|
||||||
|
raise TypeError("Parameter `name` must be of type unicode")
|
||||||
|
|
||||||
|
if not name:
|
||||||
|
raise ValueError("Parameter `name` must not be empty")
|
||||||
|
|
||||||
|
if type(server_nonce) is not str:
|
||||||
|
raise TypeError("Parameter `server_nonce` must be of type str")
|
||||||
|
|
||||||
|
if not server_nonce:
|
||||||
|
raise ValueError("Parameter `server_nonce` must not be empty")
|
||||||
|
|
||||||
|
if type(responses) is not list:
|
||||||
|
raise TypeError("Parameter `responses` must be of type list")
|
||||||
|
|
||||||
|
if type(key) is not str:
|
||||||
|
raise TypeError("Parameter `key` must be of type str")
|
||||||
|
|
||||||
|
if not key:
|
||||||
|
raise ValueError("Parameter `key` must not be empty")
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"type": "authorizationRequest",
|
"type": "authorizationRequest",
|
||||||
"sessionID": req_id,
|
"sessionID": req_id,
|
||||||
"nonce": server_nonce,
|
"nonce": server_nonce,
|
||||||
"responses": responses,
|
"responses": responses,
|
||||||
"signature": crypto_util.create_sig(
|
"signature": crypto_util.create_sig(
|
||||||
name + le_util.jose_b64decode(server_nonce), key_file),
|
name + le_util.jose_b64decode(server_nonce), key),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -103,12 +138,25 @@ def certificate_request(csr_der, key):
|
|||||||
"""Create ACME "certificateRequest" message.
|
"""Create ACME "certificateRequest" message.
|
||||||
|
|
||||||
:param str csr_der: DER encoded CSR.
|
:param str csr_der: DER encoded CSR.
|
||||||
:param key: TODO
|
:param str key: Key in string form. Accepted formats
|
||||||
|
are the same as for `Crypto.PublicKey.RSA.importKey`.
|
||||||
|
|
||||||
:returns: ACME "certificateRequest" message.
|
:returns: ACME "certificateRequest" message.
|
||||||
:rtype: dict
|
:rtype: dict
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
if type(csr_der) is not str:
|
||||||
|
raise TypeError("Parameter `csr_der` must be of type str")
|
||||||
|
|
||||||
|
if not csr_der:
|
||||||
|
raise ValueError("Parameter `csr_der` must not be empty")
|
||||||
|
|
||||||
|
if type(key) is not str:
|
||||||
|
raise TypeError("Parameter `key` must be of type str")
|
||||||
|
|
||||||
|
if not key:
|
||||||
|
raise ValueError("Parameter `key` must not be empty")
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"type": "certificateRequest",
|
"type": "certificateRequest",
|
||||||
"csr": le_util.jose_b64encode(csr_der),
|
"csr": le_util.jose_b64encode(csr_der),
|
||||||
@@ -128,6 +176,18 @@ def revocation_request(key_file, cert_der):
|
|||||||
:rtype: dict
|
:rtype: dict
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
if type(key_file) is not str:
|
||||||
|
raise TypeError("Parameter `key_file` must be of type str")
|
||||||
|
|
||||||
|
if not key_file:
|
||||||
|
raise ValueError("Parameter `key_file` must not be empty")
|
||||||
|
|
||||||
|
if type(cert_der) is not str:
|
||||||
|
raise TypeError("Parameter `cert_der` must be of type str")
|
||||||
|
|
||||||
|
if not cert_der:
|
||||||
|
raise ValueError("Parameter `cert_der` must not be empty")
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"type": "revocationRequest",
|
"type": "revocationRequest",
|
||||||
"certificate": le_util.jose_b64encode(cert_der),
|
"certificate": le_util.jose_b64encode(cert_der),
|
||||||
@@ -144,6 +204,12 @@ def status_request(token):
|
|||||||
:rtype: dict
|
:rtype: dict
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
if type(token) is not str:
|
||||||
|
raise TypeError("Parameter `token` must be of type str")
|
||||||
|
|
||||||
|
if not token:
|
||||||
|
raise ValueError("Parameter `token` must not be empty")
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"type": "statusRequest",
|
"type": "statusRequest",
|
||||||
"token": token,
|
"token": token,
|
||||||
|
|||||||
@@ -53,11 +53,25 @@ class PrettyTest(unittest.TestCase):
|
|||||||
self._call('{"foo": {"bar": "baz"}}'),
|
self._call('{"foo": {"bar": "baz"}}'),
|
||||||
'{\n "foo": {\n "bar": "baz"\n }\n}')
|
'{\n "foo": {\n "bar": "baz"\n }\n}')
|
||||||
|
|
||||||
|
|
||||||
class ChallengeRequestTest(unittest.TestCase):
|
class ChallengeRequestTest(unittest.TestCase):
|
||||||
"""Tests for letsencrypt.client.acme.challenge_request_test"""
|
"""Tests for letsencrypt.client.acme.challenge_request"""
|
||||||
|
|
||||||
|
def test_empty_parameter(self):
|
||||||
|
"""Test showing challenge_request does not allow empty unicode"""
|
||||||
|
|
||||||
|
from letsencrypt.client.acme import challenge_request
|
||||||
|
self.assertRaises(ValueError, challenge_request, u'')
|
||||||
|
|
||||||
|
def test_string_not_supported(self):
|
||||||
|
"""Test error when passing non-unicode string"""
|
||||||
|
|
||||||
|
from letsencrypt.client.acme import challenge_request
|
||||||
|
self.assertRaises(TypeError, challenge_request, 'string')
|
||||||
|
|
||||||
def test_supports_unicode(self):
|
def test_supports_unicode(self):
|
||||||
"""Test support unicode parameter"""
|
"""Test support unicode parameter"""
|
||||||
|
|
||||||
from letsencrypt.client.acme import challenge_request
|
from letsencrypt.client.acme import challenge_request
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
challenge_request(u'unicode'),
|
challenge_request(u'unicode'),
|
||||||
|
|||||||
Reference in New Issue
Block a user