mirror of
https://github.com/ansible-collections/hetzner.hcloud.git
synced 2026-02-04 16:11:49 +00:00
##### SUMMARY - Log a warning when the provided public key does not match one in the API. - When the public key does not match the one in the API, allow recreating the SSH Key in the API using the ``force=true`` argument. Closes: #578 ##### ISSUE TYPE - Feature Pull Request ##### COMPONENT NAME <!--- Write the short name of the module, plugin, task or feature below --> `ssh_key` ##### ADDITIONAL INFORMATION In Hetzner API, we do not have any public_key change endpoint and only updating names and labels are allowed. For public_key The only way is removing and re-creating. `force` option allows users to do re-creation if needed. --------- Co-authored-by: jo <ljonas@riseup.net>
18 lines
475 B
Python
18 lines
475 B
Python
from __future__ import annotations
|
|
|
|
from base64 import b64decode
|
|
from hashlib import md5
|
|
|
|
|
|
def ssh_public_key_md5_fingerprint(value: str) -> str:
|
|
"""
|
|
Compute the md5 fingerprint of a SSH public key.
|
|
"""
|
|
parts = value.strip().split()
|
|
if len(parts) < 2:
|
|
raise ValueError("invalid ssh public key")
|
|
|
|
raw = b64decode(parts[1].encode("ascii"))
|
|
digest = md5(raw).hexdigest()
|
|
|
|
return ":".join(a + b for a, b in zip(digest[::2], digest[1::2]))
|