Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SRTP encoder and decoder #317

Open
gavv opened this issue Jan 13, 2020 · 7 comments
Open

SRTP encoder and decoder #317

gavv opened this issue Jan 13, 2020 · 7 comments
Labels
codecs Audio and FEC codecs enhancement help wanted An important and awaited task but we have no human resources for it yet much-needed This issue is needed most among other help-wanted issues networking Network I/O and algorithms security Security, encryption

Comments

@gavv
Copy link
Member

gavv commented Jan 13, 2020

Last revised: Oct 2023

Create SRTP encoder and decoder using libSRTP. See #229 for background.

Steps:

  • Add libSRTP dependency to SConstruct and build-3rdparty.py. Add target_libsrtp to SConstruct and enable it when libSRTP is enabled. It should be enabled by default and disabled by --disable-libsrtp scons option. An example of adding a new dependency can be found in libsndfile source and sink #246 and Implement backtrace printing for non-glibc targets #265.

  • Add rtp::SrtpWriter (for sender), implementing packet::IWriter, and rtp::SrtpReader (for receiver), implementing packet::IReader. The idea is that we write unprotected packets to the writer and it protects them and in turn writes to the next writer. The opposite for the reader. Place them to roc_rtp/target_libsrtp.

  • Add unit tests for SrtpWriter and SrtpReader to roc_rtp.

  • Integrate SrtpReader and SrtpReader into roc_pipeline. They should be enabled conditionally. An example of conditionally enabled pipeline element is packet::Interleaver. We should also add necessary configuration to roc_pipeline/config.h.

  • Add command-line options to enable SRTP in roc-recv and roc-send and configure it. We can start with a pre-shared key specified via command-line.

  • It would be also desirable to add integration tests for SRTP to roc_pipeline and public_api. See src/tests/roc_pipeline and src/tests/public_api.

Notes:

  • SrtpWriter will need to obtain the byte representation of packet::Packet. We'll have to use packet::IComposer for that. An example can be found in fec::Writer. It uses IComposer for the same reason.

  • SRTP sender and receiver need some way to exchange the key material. Several key management schemes and protocols exist that can be used for that. I didn't read the corresponding RFCs yet and for know can't say which of them we want to implement. In this task, we should start with some simple form of pre-shared keys or certificates provided via command-line.

@gavv gavv added enhancement help wanted An important and awaited task but we have no human resources for it yet labels Jan 13, 2020
This was referenced Jan 13, 2020
@Caynosadler

This comment was marked as outdated.

@gavv

This comment was marked as outdated.

@gavv

This comment was marked as outdated.

@gavv gavv added security Security, encryption enhancement much-needed This issue is needed most among other help-wanted issues networking Network I/O and algorithms codecs Audio and FEC codecs and removed enhancement labels May 24, 2020
@nikhilk1701

This comment was marked as outdated.

@gavv

This comment was marked as outdated.

@gavv

This comment was marked as outdated.

@nikhilk1701

This comment was marked as outdated.

@gavv gavv removed the hacktoberfest label Dec 4, 2020
@gavv gavv pinned this issue Sep 30, 2023
@gavv gavv added this to Roc Toolkit Jul 6, 2024
@gavv gavv moved this to Help wanted in Roc Toolkit Jul 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
codecs Audio and FEC codecs enhancement help wanted An important and awaited task but we have no human resources for it yet much-needed This issue is needed most among other help-wanted issues networking Network I/O and algorithms security Security, encryption
Projects
Status: Help wanted
Development

No branches or pull requests

3 participants