Files

36 lines
1006 B
Python
Raw Permalink Normal View History

2026-02-21 14:56:19 +08:00
from fido2.utils import websafe_encode, websafe_decode
def convert_bytes_to_base64(obj):
"""
递归将 dict/list 中的 bytes 转为 base64url
"""
if isinstance(obj, dict):
return {
k: convert_bytes_to_base64(v)
for k, v in obj.items()
}
elif isinstance(obj, list):
return [convert_bytes_to_base64(i) for i in obj]
elif isinstance(obj, bytes):
return websafe_encode(obj).decode("ascii")
else:
return obj
def convert_base64_to_bytes(obj):
"""
递归将 dict/list 中的 base64url 转回 bytes
"""
if isinstance(obj, dict):
return {
k: convert_base64_to_bytes(v)
for k, v in obj.items()
}
elif isinstance(obj, list):
return [convert_base64_to_bytes(i) for i in obj]
elif isinstance(obj, str):
try:
return websafe_decode(obj.encode("ascii"))
except Exception:
return obj
else:
return obj