Sys
Raw FFI bindings for libdave - the C interface to Discord’s DAVE end-to-end encryption protocol.
This module loads libdave via stdPolyfills.ffi.dlopen and exposes the full C API as a typed Luau
interface. It is a low-level binding layer; higher-level wrappers should be built on top of
lib rather than consuming this module directly.
Summary
Properties
Sys.lib :: LibSys.structs :: { encryptorStats: FFIStructureType, decryptorStats: FFIStructureType }Sys.pointers :: { sessionHandle: FFIPointerType, commitResultHandle: FFIPointerType, welcomeResultHandle: FFIPointerType, keyRatchetHandle: FFIPointerType, encryptorHandle: FFIPointerType, decryptorHandle: FFIPointerType }Sys.codec :: { unknown: number, opus: number, vp8: number, vp9: number, h264: number, h265: number, av1: number }Sys.mediaType :: { audio: number, video: number }Sys.encryptorResultCode :: { success: number, encryptionFailure: number, missingKeyRatchet: number, missingCryptor: number, tooManyAttempts: number }Sys.decryptorResultCode :: { success: number, decryptionFailure: number, missingKeyRatchet: number, invalidNonce: number, missingCryptor: number }Sys.loggingSeverity :: { verbose: number, info: number, warning: number, error: number, none: number }Properties
Section titled “Properties” Sys.lib :: Lib
The loaded libdave FFI library. All DAVE protocol functions are called through this handle.
structs
Section titled “structs”pointers
Section titled “pointers” Sys.pointers :: {
sessionHandle: FFIPointerType,
commitResultHandle: FFIPointerType,
welcomeResultHandle: FFIPointerType,
keyRatchetHandle: FFIPointerType,
encryptorHandle: FFIPointerType,
decryptorHandle: FFIPointerType,
}
sessionHandle: FFIPointerType,
commitResultHandle: FFIPointerType,
welcomeResultHandle: FFIPointerType,
keyRatchetHandle: FFIPointerType,
encryptorHandle: FFIPointerType,
decryptorHandle: FFIPointerType,
}
Sys.codec :: {
unknown: number,
opus: number,
vp8: number,
vp9: number,
h264: number,
h265: number,
av1: number,
}
unknown: number,
opus: number,
vp8: number,
vp9: number,
h264: number,
h265: number,
av1: number,
}
mediaType
Section titled “mediaType”encryptorResultCode
Section titled “encryptorResultCode” Sys.encryptorResultCode :: {
success: number,
encryptionFailure: number,
missingKeyRatchet: number,
missingCryptor: number,
tooManyAttempts: number,
}
success: number,
encryptionFailure: number,
missingKeyRatchet: number,
missingCryptor: number,
tooManyAttempts: number,
}
decryptorResultCode
Section titled “decryptorResultCode” Sys.decryptorResultCode :: {
success: number,
decryptionFailure: number,
missingKeyRatchet: number,
invalidNonce: number,
missingCryptor: number,
}
success: number,
decryptionFailure: number,
missingKeyRatchet: number,
invalidNonce: number,
missingCryptor: number,
}