Documentation:Modules/rtp: Difference between revisions
Jump to navigation
Jump to search
m +first_version |
→Crypto: New section |
||
| (4 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
{{Module|name=rtp|type=Access|first_version=0.7.0|description=Real-Time Protocol ([[RTP]]) input}} | {{See also|Documentation:Modules/live555}} | ||
{{Module|name=rtp|type=Access|first_version=0.7.0|description=Real-Time Protocol ([[RTP]]) input|sc=dccp|sc2=rtptcp|sc3=udplite}} | |||
The only supported format for <code>rtp-dynamic-pt</code> is <code>[[theora]]</code>. | |||
== SRTP == | |||
The module supports RTP with encryption ([[SRTP]]) through {{VLCSourceFile|modules/access/rtp/srtp.c|l=srtp.c}} using [https://directory.fsf.org/wiki/Libgcrypt libgcrypt] ([https://www.gnupg.org/documentation/manuals/gcrypt/ gcrypt manual]). There are no sub-modules or other shortcuts (in particular, <kbd>srtp</kbd> will not work). | |||
Hexadecimal strings are base-16 numbers. Each character is one of <kbd>0123456789abcdef</kbd> (case-insensitive). | |||
=== Crypto === | |||
Functions of interest (defined in {{VLCSourceFile|modules/access/rtp/srtp.c|l=srtp.c}} and {{VLCSourceFile|modules/access/rtp/srtp.h|l=srtp.h}}) lie in {{VLCSourceFile|modules/access/rtp/rtp.c|l=rtp.c}} between: | |||
<syntaxhighlight lang="c"> | |||
#ifdef HAVE_SRTP | |||
</syntaxhighlight> | |||
and | |||
<syntaxhighlight lang="c"> | |||
#endif | |||
</syntaxhighlight> | |||
In summary: | |||
* SRTP sessions are one-way and re-keyed periodically | |||
* To set or reset the master key and master salt for an SRTP session <code>int srtp_setkey (srtp_session_t *s, const void *key, size_t keylen, const void *salt, size_t saltlen)</code> is called | |||
* The <code>setkey</code> values are currently hard-coded as [[wikipedia:Advanced Encryption Standard|AES]] in [[wikipedia:Block cipher mode of operation#CTR|counter mode]] authenticated with [[wikipedia:HMAC|HMAC]]-[[wikipedia:SHA1|SHA1]]; the salt with [[wikipedia:Pseudorandom function family|PRF]]-AES-CM. There are code comments suggesting this be improved | |||
** [https://shattered.io/ SHA1 is deprecated] but using it here should be passably secure for now | |||
* There are explanations (for hackers) in the form of code comments in the files | |||
== Options == | |||
{{Option | {{Option | ||
|name=rtcp-port | |name=rtcp-port | ||
| Line 8: | Line 32: | ||
|min=0 | |min=0 | ||
|max=65535 | |max=65535 | ||
|description=[[RTCP]] packets will be received on this transport protocol port. If zero, [[multiplex]]ed RTP/RTCP is used | |description=[[RTCP]] packets will be received on this transport protocol [[port]]. If zero, [[multiplex]]ed RTP/RTCP is used | ||
|default=0 | |default=0 | ||
}} | }} | ||
| Line 19: | Line 43: | ||
|name=srtp-salt | |name=srtp-salt | ||
|value=string | |value=string | ||
|description=[[SRTP|Secure RTP]] requires a (non-secret) master salt value. This must be a 28-character-long hexadecimal string | |description=[[SRTP|Secure RTP]] requires a (non-secret) master [[wikipedia:salt (cryptography)|salt]] value. This must be a 28-character-long hexadecimal string | ||
}} | }} | ||
{{Option | {{Option | ||
Latest revision as of 05:02, 25 April 2019
See also: Documentation:Modules/live555
| Module: rtp | |
|---|---|
| Type | Access |
| First VLC version | 0.7.0 |
| Last VLC version | - |
| Operating system(s) | all |
| Description | Real-Time Protocol (RTP) input |
| Shortcut(s) | dccp, rtptcp, udplite
|
The only supported format for rtp-dynamic-pt is theora.
SRTP
The module supports RTP with encryption (SRTP) through srtp.c using libgcrypt (gcrypt manual). There are no sub-modules or other shortcuts (in particular, srtp will not work).
Hexadecimal strings are base-16 numbers. Each character is one of 0123456789abcdef (case-insensitive).
Crypto
Functions of interest (defined in srtp.c and srtp.h) lie in rtp.c between:
#ifdef HAVE_SRTPand
#endifIn summary:
- SRTP sessions are one-way and re-keyed periodically
- To set or reset the master key and master salt for an SRTP session
int srtp_setkey (srtp_session_t *s, const void *key, size_t keylen, const void *salt, size_t saltlen)is called - The
setkeyvalues are currently hard-coded as AES in counter mode authenticated with HMAC-SHA1; the salt with PRF-AES-CM. There are code comments suggesting this be improved- SHA1 is deprecated but using it here should be passably secure for now
- There are explanations (for hackers) in the form of code comments in the files
Options
- rtcp-port <integer [0 .. 65535]> : RTCP packets will be received on this transport protocol port. If zero, multiplexed RTP/RTCP is used default value: 0
- srtp-key <string> : RTP packets will be authenticated and deciphered with this Secure RTP master shared secret key. This must be a 32-character-long hexadecimal string
- srtp-salt <string> : Secure RTP requires a (non-secret) master salt value. This must be a 28-character-long hexadecimal string
- rtp-max-src <integer [1 .. 255]> : How many distinct active RTP sources are allowed at a time default value: 1
- rtp-timeout <integer> : How long to wait (in seconds) for any packet before a source is expired default value: 5
- rtp-max-dropout <integer [0 .. 32767]> : RTP packets will be discarded if they are too much ahead (i.e. in the future) by this many packets from the last received packet default value: 3000
- rtp-max-misorder <integer [0 .. 32767]> : RTP packets will be discarded if they are too far behind (i.e. in the past) by this many packets from the last received packet default value: 100
- rtp-dynamic-pt <string> : This payload format will be assumed for dynamic payload types (between 96 and 127) if it can't be determined otherwise with out-of-band mappings (SDP) default value: NULL
Source code
This page is part of official VLC media player Documentation (User Guide • Streaming HowTo • Hacker Guide • Modules)
Please read the Documentation Editing Guidelines before you edit the documentation
Please read the Documentation Editing Guidelines before you edit the documentation
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.