Black lint all the things
This commit is contained in:
@ -24,13 +24,13 @@ from lemur.extensions import metrics
|
||||
|
||||
|
||||
class CfsslIssuerPlugin(IssuerPlugin):
|
||||
title = 'CFSSL'
|
||||
slug = 'cfssl-issuer'
|
||||
description = 'Enables the creation of certificates by CFSSL private CA'
|
||||
title = "CFSSL"
|
||||
slug = "cfssl-issuer"
|
||||
description = "Enables the creation of certificates by CFSSL private CA"
|
||||
version = cfssl.VERSION
|
||||
|
||||
author = 'Charles Hendrie'
|
||||
author_url = 'https://github.com/netflix/lemur.git'
|
||||
author = "Charles Hendrie"
|
||||
author_url = "https://github.com/netflix/lemur.git"
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.session = requests.Session()
|
||||
@ -44,15 +44,17 @@ class CfsslIssuerPlugin(IssuerPlugin):
|
||||
:param issuer_options:
|
||||
:return:
|
||||
"""
|
||||
current_app.logger.info("Requesting a new cfssl certificate with csr: {0}".format(csr))
|
||||
current_app.logger.info(
|
||||
"Requesting a new cfssl certificate with csr: {0}".format(csr)
|
||||
)
|
||||
|
||||
url = "{0}{1}".format(current_app.config.get('CFSSL_URL'), '/api/v1/cfssl/sign')
|
||||
url = "{0}{1}".format(current_app.config.get("CFSSL_URL"), "/api/v1/cfssl/sign")
|
||||
|
||||
data = {'certificate_request': csr}
|
||||
data = {"certificate_request": csr}
|
||||
data = json.dumps(data)
|
||||
|
||||
try:
|
||||
hex_key = current_app.config.get('CFSSL_KEY')
|
||||
hex_key = current_app.config.get("CFSSL_KEY")
|
||||
key = bytes.fromhex(hex_key)
|
||||
except (ValueError, NameError):
|
||||
# unable to find CFSSL_KEY in config, continue using normal sign method
|
||||
@ -60,22 +62,33 @@ class CfsslIssuerPlugin(IssuerPlugin):
|
||||
else:
|
||||
data = data.encode()
|
||||
|
||||
token = base64.b64encode(hmac.new(key, data, digestmod=hashlib.sha256).digest())
|
||||
token = base64.b64encode(
|
||||
hmac.new(key, data, digestmod=hashlib.sha256).digest()
|
||||
)
|
||||
data = base64.b64encode(data)
|
||||
|
||||
data = json.dumps({'token': token.decode('utf-8'), 'request': data.decode('utf-8')})
|
||||
data = json.dumps(
|
||||
{"token": token.decode("utf-8"), "request": data.decode("utf-8")}
|
||||
)
|
||||
|
||||
url = "{0}{1}".format(current_app.config.get('CFSSL_URL'), '/api/v1/cfssl/authsign')
|
||||
response = self.session.post(url, data=data.encode(encoding='utf_8', errors='strict'))
|
||||
url = "{0}{1}".format(
|
||||
current_app.config.get("CFSSL_URL"), "/api/v1/cfssl/authsign"
|
||||
)
|
||||
response = self.session.post(
|
||||
url, data=data.encode(encoding="utf_8", errors="strict")
|
||||
)
|
||||
if response.status_code > 399:
|
||||
metrics.send('cfssl_create_certificate_failure', 'counter', 1)
|
||||
raise Exception(
|
||||
"Error creating cert. Please check your CFSSL API server")
|
||||
response_json = json.loads(response.content.decode('utf_8'))
|
||||
cert = response_json['result']['certificate']
|
||||
metrics.send("cfssl_create_certificate_failure", "counter", 1)
|
||||
raise Exception("Error creating cert. Please check your CFSSL API server")
|
||||
response_json = json.loads(response.content.decode("utf_8"))
|
||||
cert = response_json["result"]["certificate"]
|
||||
parsed_cert = parse_certificate(cert)
|
||||
metrics.send('cfssl_create_certificate_success', 'counter', 1)
|
||||
return cert, current_app.config.get('CFSSL_INTERMEDIATE'), parsed_cert.serial_number
|
||||
metrics.send("cfssl_create_certificate_success", "counter", 1)
|
||||
return (
|
||||
cert,
|
||||
current_app.config.get("CFSSL_INTERMEDIATE"),
|
||||
parsed_cert.serial_number,
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def create_authority(options):
|
||||
@ -86,22 +99,26 @@ class CfsslIssuerPlugin(IssuerPlugin):
|
||||
:param options:
|
||||
:return:
|
||||
"""
|
||||
role = {'username': '', 'password': '', 'name': 'cfssl'}
|
||||
return current_app.config.get('CFSSL_ROOT'), "", [role]
|
||||
role = {"username": "", "password": "", "name": "cfssl"}
|
||||
return current_app.config.get("CFSSL_ROOT"), "", [role]
|
||||
|
||||
def revoke_certificate(self, certificate, comments):
|
||||
"""Revoke a CFSSL certificate."""
|
||||
base_url = current_app.config.get('CFSSL_URL')
|
||||
create_url = '{0}/api/v1/cfssl/revoke'.format(base_url)
|
||||
data = '{"serial": "' + certificate.external_id + '","authority_key_id": "' + \
|
||||
get_authority_key(certificate.body) + \
|
||||
'", "reason": "superseded"}'
|
||||
base_url = current_app.config.get("CFSSL_URL")
|
||||
create_url = "{0}/api/v1/cfssl/revoke".format(base_url)
|
||||
data = (
|
||||
'{"serial": "'
|
||||
+ certificate.external_id
|
||||
+ '","authority_key_id": "'
|
||||
+ get_authority_key(certificate.body)
|
||||
+ '", "reason": "superseded"}'
|
||||
)
|
||||
current_app.logger.debug("Revoking cert: {0}".format(data))
|
||||
response = self.session.post(
|
||||
create_url, data=data.encode(encoding='utf_8', errors='strict'))
|
||||
create_url, data=data.encode(encoding="utf_8", errors="strict")
|
||||
)
|
||||
if response.status_code > 399:
|
||||
metrics.send('cfssl_revoke_certificate_failure', 'counter', 1)
|
||||
raise Exception(
|
||||
"Error revoking cert. Please check your CFSSL API server")
|
||||
metrics.send('cfssl_revoke_certificate_success', 'counter', 1)
|
||||
metrics.send("cfssl_revoke_certificate_failure", "counter", 1)
|
||||
raise Exception("Error revoking cert. Please check your CFSSL API server")
|
||||
metrics.send("cfssl_revoke_certificate_success", "counter", 1)
|
||||
return response.json()
|
||||
|
Reference in New Issue
Block a user