From 2846a7fb32184df487bd0d66c39774dcda8ce8d2 Mon Sep 17 00:00:00 2001 From: chirac Date: Fri, 8 Jan 2021 23:46:25 +0100 Subject: [PATCH] Add erdnaxe proposal of fix because there is no better solution --- machines/models.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/machines/models.py b/machines/models.py index df5d3cd2..ef7f4182 100644 --- a/machines/models.py +++ b/machines/models.py @@ -1276,10 +1276,17 @@ class SshFp(RevMixin, AclMixin, models.Model): """Get the hashes for the pub key with correct ID. See RFC: 1 is sha1 , 2 is sha256. + + Because of b64 MUST be divided by 4, we add a "padding" = carracter 3 times. + This padding is then ignored if the pubkey is greater than a multiple of 4. + More informations on : https://gist.github.com/perrygeo/ee7c65bb1541ff6ac770 + As said in the thread, this fix is not optimal, however it is very simple as + no options on b64decode function exists. """ + pubkey = base64.b64decode(self.pub_key_entry + "===") return { - "1": hashlib.sha1(base64.b64decode(self.pub_key_entry)).hexdigest(), - "2": hashlib.sha256(base64.b64decode(self.pub_key_entry)).hexdigest(), + "1": hashlib.sha1(pubkey).hexdigest(), + "2": hashlib.sha256(pubkey).hexdigest(), } class Meta: