diff --git a/connect-vpn/action.yml b/connect-vpn/action.yml index 77a93f0..f544a5b 100644 --- a/connect-vpn/action.yml +++ b/connect-vpn/action.yml @@ -147,18 +147,23 @@ runs: seed, fmt = sys.argv[1], sys.argv[2] seed = "".join(seed.split()) + def decode_base32(value): + normalized = value.replace(" ", "").upper().rstrip("=") + normalized += "=" * ((8 - len(normalized) % 8) % 8) + return base64.b32decode(normalized) + if fmt == "base64": decoded = base64.b64decode(seed) try: maybe_base32 = decoded.decode("ascii").replace(" ", "").upper() if maybe_base32 and all(ch in "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=" for ch in maybe_base32): - raw = base64.b32decode(maybe_base32) + raw = decode_base32(maybe_base32) else: raw = decoded except UnicodeDecodeError: raw = decoded elif fmt == "base32": - raw = base64.b32decode(seed.upper()) + raw = decode_base32(seed) elif fmt == "hex": raw = bytes.fromhex(seed) else: