20 lines
412 B
Python
20 lines
412 B
Python
|
import base64
|
||
|
import hashlib
|
||
|
|
||
|
|
||
|
def onion_hostname(onion_public_key: bytes) -> str:
|
||
|
p = onion_public_key[32:]
|
||
|
|
||
|
h = hashlib.sha3_256()
|
||
|
h.update(b".onion checksum")
|
||
|
h.update(p)
|
||
|
h.update(b"\x03")
|
||
|
checksum = h.digest()
|
||
|
|
||
|
result = bytearray(p)
|
||
|
result.extend(checksum[0:2])
|
||
|
result.append(0x03)
|
||
|
|
||
|
onion = base64.b32encode(result).decode("utf-8").strip("=")
|
||
|
return onion.lower()
|