(hex, length=None)
| 48 | |
| 49 | |
| 50 | def hex_to_bin(hex, length=None): |
| 51 | try: |
| 52 | binary = binascii.unhexlify(hex) |
| 53 | binary_len = len(binary) |
| 54 | if length is not None and binary_len != length: |
| 55 | raise ValueError(f"Expected {length} bytes ({2 * length} hex digits), got {binary_len} bytes.") |
| 56 | except binascii.Error as e: |
| 57 | raise ValueError(str(e)) from None |
| 58 | return binary |
| 59 | |
| 60 | |
| 61 | def safe_decode(s, coding="utf-8", errors="surrogateescape"): |
no outgoing calls