<!--- Verify first that your issue is not already reported on GitHub -->
<!--- Also test if the latest release and devel branch are affected too -->
<!--- Complete *all* sections as described, this form is processed automatically -->

##### SUMMARY
`openssl_publickey` calls `module_utils.crypto.get_fingerprint()` and cannot tell it what backend to use, and it calls `module_utils.crypto.load_privatekey()` without backend anyways, then default to `pyopenssl` backend and fails.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
`openssl_publickey`

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```
ansible 2.9.4
  config file = /root/ansible_workspace/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.8/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.8.1 (default, Jan 22 2020, 06:38:00) [GCC 9.2.0]
```
It should affects devel.

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```
irrelevant
```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
I'm running Manjaro 18.1.5.

##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->

<!--- Paste example playbooks or commands between quotes below -->
```yaml
---
- name: Reproduction
  hosts: localhost
  tasks:
    - openssl_privatekey:
        path: /tmp/test.key

    - openssl_publickey:
        path: /tmp/test.pub
        privatekey_path: /tmp/test.key
```

<!--- HINT: You can paste gist.github.com links for larger files -->

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->
The `openssl_publickey` task should not fail and `/tmp/test.pub` should be created.

##### ACTUAL RESULTS
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->

<!--- Paste verbatim command output between quotes -->
```paste below
ansible-playbook 2.9.4
  config file = /root/ansible_workspace/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.8/site-packages/ansible
  executable location = /usr/bin/ansible-playbook
  python version = 3.8.1 (default, Jan 22 2020, 06:38:00) [GCC 9.2.0]
Using /root/ansible_workspace/ansible.cfg as config file
host_list declined parsing /root/ansible_workspace/managed_nodes.yml as it did not pass its verify_file() method
script declined parsing /root/ansible_workspace/managed_nodes.yml as it did not pass its verify_file() method
Skipping empty key (hosts) in group (all)
Skipping empty key (hosts) in group (critical_infra_servers)
Skipping empty key (hosts) in group (application_servers)
Skipping empty key (hosts) in group (database_servers)
Parsed /root/ansible_workspace/managed_nodes.yml inventory source with yaml plugin

PLAYBOOK: testground.yml ******************************************************************************
1 plays in testground.yml

PLAY [Reproduction] ***********************************************************************************
META: ran handlers

TASK [openssl_privatekey] *****************************************************************************
task path: /root/ansible_workspace/testground.yml:6
Sunday 02 February 2020  23:49:44 +0800 (0:00:00.018)       0:00:00.018 ******* 
Using module file /usr/lib/python3.8/site-packages/ansible/modules/crypto/openssl_privatekey.py
Pipelining is enabled.
<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: root
<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python && sleep 0'
changed: [localhost] => {
    "changed": true,
    "filename": "/tmp/test.key",
    "fingerprint": {
        "blake2b": "06:c9:0a:b4:12:e7:13:cc:aa:6a:9a:22:00:6b:c8:48:06:a1:4d:5d:df:0e:ed:10:d5:3a:23:7f:4b:6e:45:b7:1e:b0:b1:13:f6:95:46:6f:67:54:c2:07:fd:10:f1:7c:8f:84:91:96:6b:5a:44:cf:2e:e1:c3:36:78:b4:b1:db",
        "blake2s": "f9:b2:ab:8f:32:4f:5d:91:2b:89:dc:da:07:89:b8:41:cd:59:5f:ac:1d:3b:e3:d8:42:5b:ee:3d:a1:87:84:4b",
        "md5": "3d:b2:37:ff:11:0d:26:c3:35:9e:3a:67:66:5b:77:ac",
        "sha1": "11:1f:aa:0b:4b:58:44:2a:85:e6:29:10:96:6c:44:7f:f4:f9:a2:4b",
        "sha224": "a4:60:9f:fb:cd:e9:7e:b4:bb:54:84:03:70:d6:0c:39:cb:9d:cb:77:8a:c8:b7:fe:97:f7:ad:11",
        "sha256": "b4:92:9a:ac:a6:84:5b:a6:31:e4:11:fe:5c:29:09:76:4c:7f:29:34:fa:a2:89:c5:25:d3:08:69:07:54:2d:69",
        "sha384": "51:41:bd:08:d5:fa:2d:c1:3f:d8:69:e8:b9:36:fc:9e:68:f0:92:b3:c6:a4:f2:f1:9f:80:f4:66:e8:ad:47:f5:8d:57:ca:b4:71:b5:6d:ed:8c:f7:01:11:a6:68:27:96",
        "sha3_224": "5d:73:c9:b6:80:a4:6f:0a:60:6a:8a:c9:b8:af:9e:4f:18:ca:cb:85:35:44:b4:1d:65:a3:51:4f",
        "sha3_256": "a6:ac:fb:5c:8a:a8:b9:1c:c0:99:05:15:20:03:9f:ce:a8:42:03:80:75:50:aa:5d:4c:8e:0e:0e:a4:d0:6d:27",
        "sha3_384": "9f:46:2a:b7:6c:14:68:37:ad:c0:12:ae:9c:a9:6a:ab:34:86:06:02:15:a5:10:57:9f:2b:78:b5:69:af:d9:f9:81:33:d2:67:58:08:00:84:8b:50:9f:76:45:ab:51:e3",
        "sha3_512": "b1:3c:df:1e:27:0c:b3:b0:55:3e:cd:42:d2:67:ce:58:02:39:ac:8d:38:11:bf:74:e6:0a:84:c1:fd:4c:a5:01:74:f1:5a:3d:4b:8c:7e:98:b7:6a:18:5a:e5:98:04:a7:b6:5d:9a:4e:93:88:85:80:4f:9b:8c:35:b8:55:f6:c6",
        "sha512": "cd:3a:f3:ed:dd:86:28:75:2a:8a:c5:65:88:f3:b0:8b:c5:c3:d3:b9:3d:a5:5d:78:1a:04:cb:dd:0b:58:a5:4d:9a:02:37:a4:e5:4b:ce:f3:4f:54:11:98:93:f3:dd:67:ac:ef:04:06:17:2d:a5:08:09:1a:19:12:cc:1f:56:63",
        "shake_128": "f7:de:e4:52:c2:65:c0:e6:c8:7a:f9:35:d5:63:94:59:1d:c1:c5:52:b1:3e:8a:2a:dc:5a:2a:57:df:cc:32:d0",
        "shake_256": "ba:d5:37:e1:78:23:f3:39:ed:be:e0:d8:f3:c1:75:a5:28:fe:b2:e1:2b:17:1d:8c:7f:04:2c:0a:2a:5e:ae:c4"
    },
    "invocation": {
        "module_args": {
            "attributes": null,
            "backup": false,
            "cipher": null,
            "content": null,
            "curve": null,
            "delimiter": null,
            "directory_mode": null,
            "follow": false,
            "force": false,
            "group": null,
            "mode": "0600",
            "owner": null,
            "passphrase": null,
            "path": "/tmp/test.key",
            "regexp": null,
            "remote_src": null,
            "select_crypto_backend": "auto",
            "selevel": null,
            "serole": null,
            "setype": null,
            "seuser": null,
            "size": 4096,
            "src": null,
            "state": "present",
            "type": "RSA",
            "unsafe_writes": null
        }
    },
    "size": 4096,
    "type": "RSA"
}

TASK [openssl_publickey] ******************************************************************************
task path: /root/ansible_workspace/testground.yml:9
Sunday 02 February 2020  23:49:45 +0800 (0:00:00.824)       0:00:00.843 ******* 
Using module file /usr/lib/python3.8/site-packages/ansible/modules/crypto/openssl_publickey.py
Pipelining is enabled.
<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: root
<127.0.0.1> EXEC /bin/sh -c '/usr/bin/python && sleep 0'
The full traceback is:
Traceback (most recent call last):
  File "/tmp/ansible_openssl_publickey_payload__lythb6u/ansible_openssl_publickey_payload.zip/ansible/module_utils/crypto.py", line 209, in load_privatekey
NameError: name 'crypto' is not defined

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 102, in <module>
  File "<stdin>", line 94, in _ansiballz_main
  File "<stdin>", line 40, in invoke_module
  File "/usr/lib/python3.8/runpy.py", line 206, in run_module
    return _run_module_code(code, init_globals, run_name, mod_spec)
  File "/usr/lib/python3.8/runpy.py", line 96, in _run_module_code
    _run_code(code, mod_globals, init_globals,
  File "/usr/lib/python3.8/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/tmp/ansible_openssl_publickey_payload__lythb6u/ansible_openssl_publickey_payload.zip/ansible/modules/crypto/openssl_publickey.py", line 432, in <module>
  File "/tmp/ansible_openssl_publickey_payload__lythb6u/ansible_openssl_publickey_payload.zip/ansible/modules/crypto/openssl_publickey.py", line 416, in main
  File "/tmp/ansible_openssl_publickey_payload__lythb6u/ansible_openssl_publickey_payload.zip/ansible/modules/crypto/openssl_publickey.py", line 266, in generate
  File "/tmp/ansible_openssl_publickey_payload__lythb6u/ansible_openssl_publickey_payload.zip/ansible/module_utils/crypto.py", line 171, in get_fingerprint
  File "/tmp/ansible_openssl_publickey_payload__lythb6u/ansible_openssl_publickey_payload.zip/ansible/module_utils/crypto.py", line 212, in load_privatekey
NameError: name 'crypto' is not defined
fatal: [localhost]: FAILED! => {
    "changed": false,
    "module_stderr": "*snip*",
    "module_stdout": "",
    "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error",
    "rc": 1
}

PLAY RECAP ********************************************************************************************
localhost                  : ok=1    changed=1    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0   

Sunday 02 February 2020  23:49:45 +0800 (0:00:00.270)       0:00:01.113 ******* 
=============================================================================== 
openssl_privatekey ----------------------------------------------------------------------------- 0.82s
/root/ansible_workspace/testground.yml:6 -------------------------------------------------------------
openssl_publickey ------------------------------------------------------------------------------ 0.27s
/root/ansible_workspace/testground.yml:9 -------------------------------------------------------------

```

'1.2.410.200046.1.1.2': ('aria-128-cbc', 'ARIA-128-CBC'),
    '1.2.410.200046.1.1.3': ('aria-128-cfb', 'ARIA-128-CFB'),
    '1.2.410.200046.1.1.4': ('aria-128-ofb', 'ARIA-128-OFB'),
    '1.2.410.200046.1.1.5': ('aria-128-ctr', 'ARIA-128-CTR'),
    '1.2.410.200046.1.1.6': ('aria-192-ecb', 'ARIA-192-ECB'),
    '1.2.410.200046.1.1.7': ('aria-192-cbc', 'ARIA-192-CBC'),
    '1.2.410.200046.1.1.8': ('aria-192-cfb', 'ARIA-192-CFB'),
    '1.2.410.200046.1.1.9': ('aria-192-ofb', 'ARIA-192-OFB'),
    '1.2.410.200046.1.1.10': ('aria-192-ctr', 'ARIA-192-CTR'),
    '1.2.410.200046.1.1.11': ('aria-256-ecb', 'ARIA-256-ECB'),
    '1.2.410.200046.1.1.12': ('aria-256-cbc', 'ARIA-256-CBC'),
    '1.2.410.200046.1.1.13': ('aria-256-cfb', 'ARIA-256-CFB'),
    '1.2.410.200046.1.1.14': ('aria-256-ofb', 'ARIA-256-OFB'),
    '1.2.410.200046.1.1.15': ('aria-256-ctr', 'ARIA-256-CTR'),
    '1.2.410.200046.1.1.34': ('aria-128-gcm', 'ARIA-128-GCM'),
    '1.2.410.200046.1.1.35': ('aria-192-gcm', 'ARIA-192-GCM'),
    '1.2.410.200046.1.1.36': ('aria-256-gcm', 'ARIA-256-GCM'),
    '1.2.410.200046.1.1.37': ('aria-128-ccm', 'ARIA-128-CCM'),
    '1.2.410.200046.1.1.38': ('aria-192-ccm', 'ARIA-192-CCM'),
    '1.2.410.200046.1.1.39': ('aria-256-ccm', 'ARIA-256-CCM'),
    '1.2.643.2.2': ('cryptopro', ),
    '1.2.643.2.2.3': ('GOST R 34.11-94 with GOST R 34.10-2001', 'id-GostR3411-94-with-GostR3410-2001'),
    '1.2.643.2.2.4': ('GOST R 34.11-94 with GOST R 34.10-94', 'id-GostR3411-94-with-GostR3410-94'),
    '1.2.643.2.2.9': ('GOST R 34.11-94', 'md_gost94'),
    '1.2.643.2.2.10': ('HMAC GOST 34.11-94', 'id-HMACGostR3411-94'),
    '1.2.643.2.2.14.0': ('id-Gost28147-89-None-KeyMeshing', ),
    '1.2.643.2.2.14.1': ('id-Gost28147-89-CryptoPro-KeyMeshing', ),
    '1.2.643.2.2.19': ('GOST R 34.10-2001', 'gost2001'),
    '1.2.643.2.2.20': ('GOST R 34.10-94', 'gost94'),
    '1.2.643.2.2.20.1': ('id-GostR3410-94-a', ),