anonstream/anonstream/utils/chat.py

21 行
547 B
Python
Raw 通常表示 履歴

import base64
import hashlib
import secrets
class NonceReuse(Exception):
pass
def generate_nonce():
return secrets.token_urlsafe(16)
def generate_message_id(secret, nonce):
parts = secret + b'message-id\0' + nonce.encode()
digest = hashlib.sha256(parts).digest()
return base64.urlsafe_b64encode(digest)[:22].decode()
def create_message(message_ids, secret, nonce, comment):
message_id = generate_message_id(secret, nonce)
if message_id in message_ids:
raise NonceReuse
return message_id, nonce, comment