def _decode_bytes(key, format):
"""
internal TOTP() helper --
decodes key according to specified format.
"""
if format == "raw":
if not isinstance(key, bytes):
raise exc.ExpectedTypeError(key, "bytes", "key")
return key
# for encoded data, key must be either unicode or ascii-encoded bytes,
# and must contain a hex or base32 string.
key = to_unicode(key, param="key")
key = _clean_re.sub("", key).encode("utf-8") # strip whitespace & hypens
if format == "hex" or format == "base16":
return base64.b16decode(key.upper())
elif format == "base32":
return b32decode(key)
# XXX: add base64 support?
else:
raise ValueError("unknown byte-encoding format: %r" % (format,))
#=============================================================================
# OTP management
#=============================================================================
#: flag for detecting if encrypted totp support is present
评论列表
文章目录