admin login
This commit is contained in:
36
app/utils/webauthn.py
Normal file
36
app/utils/webauthn.py
Normal file
@@ -0,0 +1,36 @@
|
||||
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
|
||||
Reference in New Issue
Block a user