diff --git a/changelogs/fragments/981-ec.yml b/changelogs/fragments/981-ec.yml new file mode 100644 index 00000000..ec00722b --- /dev/null +++ b/changelogs/fragments/981-ec.yml @@ -0,0 +1,2 @@ +bugfixes: + - "crypto_info, openssl_privatekey, openssl_privatekey_pipe - fix detection of EC support for cryptography 46.0.5+ (https://github.com/ansible-collections/community.crypto/pull/981)." diff --git a/plugins/module_utils/_crypto/module_backends/privatekey.py b/plugins/module_utils/_crypto/module_backends/privatekey.py index c9aff491..985dcfdf 100644 --- a/plugins/module_utils/_crypto/module_backends/privatekey.py +++ b/plugins/module_utils/_crypto/module_backends/privatekey.py @@ -98,7 +98,7 @@ class _Curve: ) -> type[cryptography.hazmat.primitives.asymmetric.ec.EllipticCurve]: ecclass: ( type[cryptography.hazmat.primitives.asymmetric.ec.EllipticCurve] | None - ) = cryptography.hazmat.primitives.asymmetric.ec.__dict__.get(self.ectype) + ) = getattr(cryptography.hazmat.primitives.asymmetric.ec, self.ectype, None) if ecclass is None: module.fail_json( msg=f"Your cryptography version does not support {self.ectype}" diff --git a/plugins/modules/crypto_info.py b/plugins/modules/crypto_info.py index a8ab02f3..3d6085eb 100644 --- a/plugins/modules/crypto_info.py +++ b/plugins/modules/crypto_info.py @@ -350,8 +350,8 @@ def add_crypto_information(module: AnsibleModule) -> dict[str, t.Any]: pass else: for curve_name, constructor_name in CURVES: - ecclass = ec.__dict__.get(constructor_name) - if ecclass: + ecclass = getattr(ec, constructor_name, None) + if ecclass is not None: try: ec.generate_private_key(curve=ecclass()) curves.append(curve_name)