Skip to content

thomas-vilte/dave-go

Repository files navigation

dave-go

Release License Go Reference CI

dave-go is a pure Go DAVE implementation targeting the github.com/disgoorg/godave.Session interface.

I originally started this while trying to get the MLS pieces needed for DAVE working in pure Go, and it ended up growing into a standalone implementation. It is built on top of github.com/thomas-vilte/mls-go.

Status

It is working and already usable, but I still consider it early and there are a few rough edges I want to clean up over time.

Install

go get github.com/thomas-vilte/dave-go

For a tagged version:

go get github.com/thomas-vilte/dave-go@v0.1.0

Usage

Use the session implementation anywhere a godave.SessionCreateFunc is expected:

import (
	"github.com/disgoorg/disgo/voice"
	"github.com/thomas-vilte/dave-go/session"
)

voice.WithDaveSessionCreateFunc(session.New)

There is also a small disgo voice example in examples/voice.

Packages

  • session: godave.Session implementation
  • mediakeys: sender key derivation and ratchets
  • frame: DAVE frame encrypt/decrypt logic
  • codecs: codec-aware frame transforms used by the session layer

References

Notes

  • the example streams Opus frames from a local .dca file
  • some internal comments may still be cleaned up over time

About

Bring Discord DAVE end-to-end encryption to Go with a native, godave-compatible implementation.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages