File: README.rst

package info (click to toggle)
python-pylibsrtp 0.6.1-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, sid
  • size: 176 kB
  • sloc: python: 400; makefile: 16
file content (99 lines) | stat: -rw-r--r-- 2,715 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
pylibsrtp
=========

|rtd| |pypi-v| |pypi-pyversions| |pypi-l| |pypi-wheel| |travis| |codecov|

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

.. |pypi-v| image:: https://img.shields.io/pypi/v/pylibsrtp.svg
    :target: https://pypi.python.org/pypi/pylibsrtp

.. |pypi-pyversions| image:: https://img.shields.io/pypi/pyversions/pylibsrtp.svg
    :target: https://pypi.python.org/pypi/pylibsrtp

.. |pypi-l| image:: https://img.shields.io/pypi/l/pylibsrtp.svg
    :target: https://pypi.python.org/pypi/pylibsrtp

.. |pypi-wheel| image:: https://img.shields.io/pypi/wheel/pylibsrtp.svg
    :target: https://pypi.python.org/pypi/pylibsrtp

.. |travis| image:: https://img.shields.io/travis/com/aiortc/pylibsrtp.svg
    :target: https://travis-ci.com/aiortc/pylibsrtp

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

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.

On Debian/Ubuntu run:

.. code-block:: console

    $ apt install libsrtp2-dev

On OS X run:

.. code-block:: console

    $ brew install srtp

License
-------

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

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