diff --git a/plugins/module_utils/ansible_freeipa_module.py b/plugins/module_utils/ansible_freeipa_module.py index af45a6cb459c8e4284b0c5ca2c6945ebd571ef2a..37e1fdfddd53e13f40465c5db9af7c07cae41226 100644 --- a/plugins/module_utils/ansible_freeipa_module.py +++ b/plugins/module_utils/ansible_freeipa_module.py @@ -48,6 +48,13 @@ try: from ipalib.x509 import Encoding except ImportError: from cryptography.hazmat.primitives.serialization import Encoding + +try: + from ipalib.x509 import load_pem_x509_certificate +except ImportError: + from ipalib.x509 import load_certificate + load_pem_x509_certificate = None + import socket import base64 import six @@ -323,6 +330,20 @@ def encode_certificate(cert): return encoded +def load_cert_from_str(cert): + cert = cert.strip() + if not cert.startswith("-----BEGIN CERTIFICATE-----"): + cert = "-----BEGIN CERTIFICATE-----\n" + cert + if not cert.endswith("-----END CERTIFICATE-----"): + cert += "\n-----END CERTIFICATE-----" + + if load_pem_x509_certificate is not None: + cert = load_pem_x509_certificate(cert.encode('utf-8')) + else: + cert = load_certificate(cert.encode('utf-8')) + return cert + + def is_valid_port(port): if not isinstance(port, int): return False