1
0
Fork 0
mirror of https://github.com/ansible-collections/hetzner.hcloud.git synced 2026-02-04 08:01:49 +00:00

fix: add ssh_public_key_md5_fingerprint util

This commit is contained in:
jo 2025-05-26 10:25:19 +02:00 committed by shaerpour
parent 2475969579
commit 58f6b00d68
No known key found for this signature in database
GPG key ID: D89285D72B39ED8F
2 changed files with 38 additions and 0 deletions

View file

@ -0,0 +1,15 @@
from __future__ import annotations
from base64 import b64decode
from hashlib import md5
def ssh_public_key_md5_fingerprint(value: str) -> str:
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]))

View file

@ -0,0 +1,23 @@
from __future__ import annotations
import pytest
from ansible_collections.hetzner.hcloud.plugins.module_utils.ssh import (
ssh_public_key_md5_fingerprint,
)
@pytest.mark.parametrize(
("public_key", "fingerprint"),
[
(
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILNWUEdTk1oxrjUZ5erbKUmJM3VxQ9DLocgt/HFohCf6 comment",
"ce:cf:37:b9:38:40:ad:80:b2:8b:2c:5c:83:b5:af:0b",
),
(
"ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBABOUmmgxbhhauMg97GMwHcjWXM35MwFmlSKx7klWpPr3jMbabGQzINFVXexgf6Tru0D5a7NU/Hkx9t2yOtqKHJOIQB5/NKktqYelul4X56WYV/64RSm6xIjcolNao9fUbawnIwh9mvaQQg5v1BiJfPJ6p6LcWPunzfm6DztU1tHwLtjTw== comment",
"bf:61:7b:7f:ab:c7:af:25:aa:d7:d5:e8:5f:87:5c:66",
),
],
)
def test_ssh_public_key_md5_fingerprint(public_key: str, fingerprint: str):
assert ssh_public_key_md5_fingerprint(public_key) == fingerprint