Metadata-Version: 2.4
Name: pylibsrtp
Version: 1.0.0
Summary: Python wrapper around the libsrtp library
Author-email: Jeremy Lainé <jeremy.laine@m4x.org>
License-Expression: BSD-3-Clause
Project-URL: homepage, https://github.com/aiortc/pylibsrtp
Project-URL: documentation, https://pylibsrtp.readthedocs.io/
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Communications :: Telephony
Classifier: Topic :: Security :: Cryptography
Requires-Python: >=3.10
Description-Content-Type: text/x-rst
License-File: LICENSE
Requires-Dist: cffi>=1.0.0
Provides-Extra: dev
Requires-Dist: coverage[toml]>=7.2.2; extra == "dev"
Dynamic: license-file

pylibsrtp
=========

.. image:: https://img.shields.io/pypi/l/pylibsrtp.svg
   :target: https://pypi.python.org/pypi/pylibsrtp
   :alt: License

.. image:: https://img.shields.io/pypi/v/pylibsrtp.svg
   :target: https://pypi.python.org/pypi/pylibsrtp
   :alt: Version

.. image:: https://img.shields.io/pypi/pyversions/pylibsrtp.svg
   :target: https://pypi.python.org/pypi/pylibsrtp
   :alt: Python versions

.. image:: https://github.com/aiortc/pylibsrtp/workflows/tests/badge.svg
   :target: https://github.com/aiortc/pylibsrtp/actions
   :alt: Tests

.. image:: https://img.shields.io/codecov/c/github/aiortc/pylibsrtp.svg
   :target: https://codecov.io/gh/aiortc/pylibsrtp
   :alt: Coverage

.. image:: https://readthedocs.org/projects/pylibsrtp/badge/?version=latest
   :target: https://pylibsrtp.readthedocs.io/
   :alt: Documentation

What is ``pylibsrtp``?
----------------------

``pylibsrtp`` is a Python wrapper around `libsrtp`_, making it possible to
encrypt and decrypt Secure Real-time Transport Protocol (SRTP) packets from
Python code.

SRTP is a profile of the Real-time Transport Protocol (RTP) which provides
confidentiality, message authentication, and replay protection. It is defined
by `RFC 3711`_.

You can install ``pylibsrtp`` with ``pip``:

.. code-block:: console

    $ pip install pylibsrtp

To learn more about ``pylibsrtp`` please `read the documentation`_.

.. _libsrtp: https://github.com/cisco/libsrtp

.. _RFC 3711: https://tools.ietf.org/html/rfc3711

.. _read the documentation: https://pylibsrtp.readthedocs.io/en/stable/

Example
-------

.. code:: python

    #!/usr/bin/env python

    from pylibsrtp import Policy, Session

    key = (b'\x00' * 30)
    rtp = b'\x80\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' + (b'\xd4' * 160)

    # protect RTP
    tx_policy = Policy(key=key, ssrc_type=Policy.SSRC_ANY_OUTBOUND)
    tx_session = Session(policy=tx_policy)
    srtp = tx_session.protect(rtp)

    # unprotect RTP
    rx_policy = Policy(key=key, ssrc_type=Policy.SSRC_ANY_INBOUND)
    rx_session = Session(policy=rx_policy)
    rtp2 = rx_session.unprotect(srtp)

    # check roundtrip worked!
    assert rtp2 == rtp

Building pylibsrtp
------------------

If you wish to build pylibsrtp yourself, you will need libsrtp version 2.0 or better.

Linux
.....

On Debian/Ubuntu run:

.. code-block:: console

    $ apt install libsrtp2-dev

On Fedora/CentOS run:

.. code-block:: console

    $ dnf install libsrtp-devel

macOS
.....

On macOS run:

.. code-block:: console

    $ brew install srtp

You will need to set some environment variables to link against libsrtp:

.. code-block:: console

   export CFLAGS=-I$(brew --prefix openssl)/include -I$(brew --prefix srtp)/include
   export LDFLAGS=-L$(brew --prefix openssl)/lib -L$(brew --prefix srtp)/lib

License
-------

``pylibsrtp`` is released under the `BSD license`_.

.. _BSD license: https://pylibsrtp.readthedocs.io/en/stable/license.html
