Difference between revisions of "Documentation:Modules/rtp"
Jump to navigation
Jump to search
m (Move options into →Options: , see also: Documentation:Modules/live555) |
(→Crypto: New section) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{See also|Documentation:Modules/live555}} | {{See also|Documentation:Modules/live555}} | ||
− | {{Module|name=rtp|type=Access|first_version=0.7.0|description=Real-Time Protocol ([[RTP]]) input}} | + | {{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 == | == Options == | ||
Line 10: | 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 21: | 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
.
Contents
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_SRTP
and
#endif
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
int srtp_setkey (srtp_session_t *s, const void *key, size_t keylen, const void *salt, size_t saltlen)
is called - The
setkey
values 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.