Voice et bot modif
This commit is contained in:
parent
189d56026b
commit
7333a22bcd
10774 changed files with 634644 additions and 933308 deletions
5
venv/lib/python3.12/site-packages/davey/__init__.py
Normal file
5
venv/lib/python3.12/site-packages/davey/__init__.py
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
from .davey import *
|
||||
|
||||
__doc__ = davey.__doc__
|
||||
if hasattr(davey, "__all__"):
|
||||
__all__ = davey.__all__
|
||||
347
venv/lib/python3.12/site-packages/davey/__init__.pyi
Normal file
347
venv/lib/python3.12/site-packages/davey/__init__.pyi
Normal file
|
|
@ -0,0 +1,347 @@
|
|||
"""
|
||||
Davey
|
||||
|
||||
A Discord Audio & Video End-to-End Encryption (DAVE) Protocol implementation in Python.
|
||||
|
||||
:copyright: (c) 2025-present Snazzah
|
||||
:license: MIT
|
||||
|
||||
"""
|
||||
|
||||
from typing import Final, List, Optional
|
||||
from enum import Enum
|
||||
|
||||
__version__: str = ...
|
||||
__author__: Final = "Snazzah"
|
||||
__copyright__: Final = "Copyright 2025-present Snazzah"
|
||||
__license__: Final = "MIT"
|
||||
DEBUG_BUILD: bool = ...
|
||||
""" Whether davey is using a debug build."""
|
||||
DAVE_PROTOCOL_VERSION: int = ...
|
||||
"""The maximum supported version of the DAVE protocol."""
|
||||
|
||||
class SigningKeyPair:
|
||||
"""
|
||||
A signing key pair. This is needed if you want to pass your own key pair or store the key pair for later.
|
||||
|
||||
:param private: The private key.
|
||||
:param public: The public key.
|
||||
"""
|
||||
def __init__(self, private: bytes, public: bytes) -> None: ...
|
||||
private: bytes
|
||||
"""The private key of this key pair."""
|
||||
public: bytes
|
||||
"""The public key of this key pair."""
|
||||
def __repr__(self) -> str: ...
|
||||
|
||||
def generate_p256_keypair() -> SigningKeyPair:
|
||||
"""Create a P256 signing key pair."""
|
||||
...
|
||||
|
||||
def generate_displayable_code(data: bytes, desired_length: int, group_size: int) -> str:
|
||||
"""
|
||||
Generate a displayable code.
|
||||
|
||||
See: https://daveprotocol.com/#displayable-codes
|
||||
|
||||
:param data: The data to generate a code with.
|
||||
:param desired_length: The desired length of the code.
|
||||
:param group_size: The group size of the code.
|
||||
"""
|
||||
...
|
||||
|
||||
def generate_key_fingerprint(version: int, key: bytes, user_id: int) -> bytes:
|
||||
"""
|
||||
Generate a key fingerprint.
|
||||
|
||||
See: https://daveprotocol.com/#verification-fingerprint
|
||||
|
||||
:param version: The version of the fingerprint.
|
||||
:param key: The key to fingerprint.
|
||||
:param user_id: The user ID of this fingerprint.
|
||||
"""
|
||||
...
|
||||
|
||||
def generate_pairwise_fingerprint(
|
||||
version: int,
|
||||
local_key: bytes,
|
||||
local_user_id: int,
|
||||
remote_key: bytes,
|
||||
remote_user_id: int,
|
||||
) -> bytes:
|
||||
"""
|
||||
Generate a pairwise fingerprint.
|
||||
|
||||
See: https://daveprotocol.com/#verification-fingerprint
|
||||
|
||||
:param version: The version of the fingerprint.
|
||||
:param local_key: The local user's key.
|
||||
:param local_user_id: The local user's ID.
|
||||
:param remote_key: The remote user's key.
|
||||
:param remote_user_id: The remote user's ID.
|
||||
"""
|
||||
...
|
||||
|
||||
class Codec(Enum):
|
||||
"""The type of codec being used."""
|
||||
|
||||
unknown = 0
|
||||
opus = 1
|
||||
vp8 = 2
|
||||
vp9 = 3
|
||||
h264 = 4
|
||||
h265 = 5
|
||||
av1 = 6
|
||||
|
||||
class MediaType(Enum):
|
||||
"""The type of media being referenced."""
|
||||
|
||||
audio = 0
|
||||
video = 1
|
||||
|
||||
class ProposalsOperationType(Enum):
|
||||
"""
|
||||
The operation type of the proposals payload.
|
||||
See the [DAVE Protocol Whitepaper on opcode 27](https://daveprotocol.com/#dave_mls_proposals-27) for technical details.
|
||||
"""
|
||||
|
||||
append = 0
|
||||
revoke = 1
|
||||
|
||||
class SessionStatus(Enum):
|
||||
"""The status of the DAVE session."""
|
||||
|
||||
inactive = 0
|
||||
pending = 1
|
||||
awaiting_response = 2
|
||||
active = 3
|
||||
|
||||
class EncryptionStats:
|
||||
successes: int
|
||||
"""Number of encryption successes"""
|
||||
failures: int
|
||||
"""Number of encryption failures"""
|
||||
duration: int
|
||||
"""Total encryption duration in microseconds"""
|
||||
attempts: int
|
||||
"""Total amounts of encryption attempts"""
|
||||
max_attempts: int
|
||||
"""Maximum attempts reached at encryption"""
|
||||
|
||||
class DecryptionStats:
|
||||
successes: int
|
||||
"""Number of decryption successes"""
|
||||
failures: int
|
||||
"""Number of decryption failures"""
|
||||
duration: int
|
||||
"""Total decryption duration in microseconds"""
|
||||
attempts: int
|
||||
"""Total amounts of decryption attempts"""
|
||||
passthroughs: int
|
||||
"""Total amounts of packets that passed through"""
|
||||
|
||||
class CommitWelcome:
|
||||
"""
|
||||
Contains the commit and optional welcome for
|
||||
[dave_mls_commit_welcome (28)](https://daveprotocol.com/#dave_mls_commit_welcome-28).
|
||||
"""
|
||||
|
||||
commit: bytes
|
||||
welcome: Optional[bytes]
|
||||
|
||||
class DaveSession:
|
||||
"""
|
||||
A DAVE session.
|
||||
|
||||
:param protocol_version: The protocol version to use.
|
||||
:param user_id: The user ID of the session.
|
||||
:param channel_id: The channel ID of the session.
|
||||
:param key_pair: The key pair to use for this session. Will generate a new one if not specified.
|
||||
"""
|
||||
def __init__(
|
||||
self,
|
||||
protocol_version: int,
|
||||
user_id: int,
|
||||
channel_id: int,
|
||||
key_pair: Optional[SigningKeyPair] = None,
|
||||
) -> None: ...
|
||||
|
||||
protocol_version: int
|
||||
"""he DAVE protocol version used for this session."""
|
||||
user_id: int
|
||||
"""The user ID for this session."""
|
||||
channel_id: int
|
||||
"""The channel ID (group ID in MLS standards) for this session."""
|
||||
epoch: Optional[int]
|
||||
"""The epoch for this session, `undefined` if there is no group yet."""
|
||||
own_leaf_index: Optional[int]
|
||||
"""Your own leaf index for this session, `undefined` if there is no group yet."""
|
||||
ciphersuite: int
|
||||
"""The ciphersuite being used in this session."""
|
||||
status: SessionStatus
|
||||
"""The current status of the session."""
|
||||
ready: bool
|
||||
"""Whether the session is ready to encrypt/decrypt."""
|
||||
voice_privacy_code: Optional[str]
|
||||
"""
|
||||
Get the voice privacy code of this session's group.
|
||||
The result of this is created and cached each time a new transition is executed.
|
||||
|
||||
See: https://daveprotocol.com/#displayable-codes
|
||||
"""
|
||||
|
||||
def reset(self) -> None:
|
||||
"""
|
||||
Resets the session by deleting the group and clearing the storage.
|
||||
"""
|
||||
...
|
||||
def reinit(
|
||||
self,
|
||||
protocol_version: int,
|
||||
user_id: int,
|
||||
channel_id: int,
|
||||
key_pair: Optional[SigningKeyPair] = None,
|
||||
) -> None:
|
||||
"""
|
||||
Resets and re-initializes the session.
|
||||
|
||||
:param protocol_version: The protocol version to use.
|
||||
:param user_id: The user ID of the session.
|
||||
:param channel_id: The channel ID of the session.
|
||||
:param key_pair: The key pair to use for this session. Will generate a new one if not specified.
|
||||
"""
|
||||
...
|
||||
def get_epoch_authenticator(self) -> Optional[bytes]:
|
||||
"""Get the epoch authenticator of this session's group."""
|
||||
...
|
||||
def set_external_sender(self, external_sender_data: bytes) -> None:
|
||||
"""
|
||||
Set the external sender this session will recieve from.
|
||||
See the [DAVE Protocol Whitepaper on opcode 25](https://daveprotocol.com/#dave_mls_external_sender_package-25) for technical details.
|
||||
|
||||
:param external_sender_data: The serialized external sender data.
|
||||
"""
|
||||
...
|
||||
def get_serialized_key_package(self) -> bytes:
|
||||
"""
|
||||
Create, store, and return the serialized key package buffer.
|
||||
Key packages are not meant to be reused, and will be recreated on each call of this function.
|
||||
"""
|
||||
...
|
||||
def process_proposals(
|
||||
self,
|
||||
operation_type: ProposalsOperationType,
|
||||
proposals: bytes,
|
||||
expected_user_ids: Optional[List[int]] = None,
|
||||
) -> Optional[CommitWelcome]:
|
||||
"""
|
||||
Process proposals from the voice server.
|
||||
See the [DAVE Protocol Whitepaper on opcode 27](https://daveprotocol.com/#dave_mls_proposals-27) for technical details.
|
||||
|
||||
:param operation_type: The operation type of the proposals.
|
||||
:param proposals: The operation type of the proposals.
|
||||
:param expected_user_ids: The expected user IDs to come from the proposals.
|
||||
If provided, this will reject unexpected user IDs.
|
||||
"""
|
||||
...
|
||||
def process_welcome(self, welcome: bytes) -> None:
|
||||
"""
|
||||
Process a welcome message.
|
||||
See the [DAVE Protocol Whitepaper on opcode 30](https://daveprotocol.com/#dave_mls_welcome-30) for technical details.
|
||||
|
||||
:param welcome: The welcome message to process.
|
||||
"""
|
||||
...
|
||||
def process_commit(self, commit: bytes) -> None:
|
||||
"""
|
||||
Process a commit.
|
||||
See the [DAVE Protocol Whitepaper on opcode 29](https://daveprotocol.com/#dave_mls_announce_commit_transition-29) for technical details.
|
||||
|
||||
:param commit: The commit to process.
|
||||
"""
|
||||
...
|
||||
def get_verification_code(self, user_id: int) -> str:
|
||||
"""
|
||||
Get the verification code of another member of the group.
|
||||
|
||||
See: https://daveprotocol.com/#displayable-codes
|
||||
|
||||
:param user_id: The ID of the user to get the verification code of.
|
||||
"""
|
||||
...
|
||||
def get_pairwise_fingerprint(self, version: int, user_id: int) -> bytes:
|
||||
"""
|
||||
Create a pairwise fingerprint of you and another member.
|
||||
|
||||
See: https://daveprotocol.com/#verification-fingerprint
|
||||
|
||||
:param version: The version of the fingerprint.
|
||||
:param user_id: The ID of the user to get the pairwise fingerprint of.
|
||||
"""
|
||||
...
|
||||
def encrypt(self, media_type: MediaType, codec: Codec, packet: bytes) -> bytes:
|
||||
"""
|
||||
End-to-end encrypt a packet.
|
||||
|
||||
:param media_type: The type of media to encrypt.
|
||||
:param codec: The codec of the packet.
|
||||
:param packet: The packet to encrypt.
|
||||
"""
|
||||
...
|
||||
def encrypt_opus(self, packet: bytes) -> bytes:
|
||||
"""
|
||||
End-to-end encrypt an opus packet.
|
||||
|
||||
:param packet: The packet to encrypt.
|
||||
"""
|
||||
...
|
||||
def get_encryption_stats(
|
||||
self, media_type: Optional[MediaType] = None
|
||||
) -> EncryptionStats:
|
||||
"""
|
||||
Get encryption stats.
|
||||
|
||||
:param media_type: The media type to get stats for. Defaults to audio.
|
||||
"""
|
||||
...
|
||||
def decrypt(self, user_id: int, media_type: MediaType, packet: bytes) -> bytes:
|
||||
"""
|
||||
Decrypt an end-to-end encrypted packet.
|
||||
|
||||
:param user_id: The ID of the user to decrypt the packet for.
|
||||
:param media_type: The type of media to decrypt.
|
||||
:param packet: The packet to decrypt.
|
||||
"""
|
||||
...
|
||||
def get_decryption_stats(
|
||||
self, user_id: int, media_type: Optional[MediaType] = None
|
||||
) -> Optional[DecryptionStats]:
|
||||
"""
|
||||
Get decryption stats.
|
||||
|
||||
:param user_id: The ID of the user to get stats for.
|
||||
:param media_type: The media type to get stats for. Defaults to audio.
|
||||
"""
|
||||
...
|
||||
def get_user_ids(self) -> List[str]:
|
||||
"""Get the IDs of the users in the current group."""
|
||||
...
|
||||
def can_passthrough(self, user_id: int) -> bool:
|
||||
"""
|
||||
Check whether this user's decryptor is in passthrough mode.
|
||||
If passthrough mode is enabled, then unencrypted packets are allowed to be passed through the decryptor.
|
||||
|
||||
:param user_id: The ID of the user to check their decryptoe's passthrough mode.
|
||||
"""
|
||||
...
|
||||
def set_passthrough_mode(
|
||||
self, passthrough_mode: bool, transition_expiry: Optional[int] = None
|
||||
) -> None:
|
||||
"""
|
||||
Set whether passthrough mode is enabled on all decryptors.
|
||||
|
||||
:param passthrough_mode: Whether to enable passthrough mode.
|
||||
:param transition_expiry: The transition expiry (in seconds) to use when disabling passthrough mode, defaults to 10 seconds.
|
||||
"""
|
||||
...
|
||||
def __repr__(self) -> str: ...
|
||||
Binary file not shown.
BIN
venv/lib/python3.12/site-packages/davey/davey.cpython-312-x86_64-linux-gnu.so
Executable file
BIN
venv/lib/python3.12/site-packages/davey/davey.cpython-312-x86_64-linux-gnu.so
Executable file
Binary file not shown.
0
venv/lib/python3.12/site-packages/davey/py.typed
Normal file
0
venv/lib/python3.12/site-packages/davey/py.typed
Normal file
Loading…
Add table
Add a link
Reference in a new issue