gstreamer/subprojects
François Laignel 0f7be28eb1 rtspsrc: client-managed MIKEY KeyMgmt
Some servers (e.g. Axis cameras) expect the client to propose the encryption
key(s) to be used for SRTP / SRTCP. This is required to allow re-keying so
as to evade cryptanalysis. Note that the behaviour is not specified by the
RFCs. By setting the 'client-managed-mikey-mode' property to 'true', rtspsrc
acts as follows:

* For a secured profile (RTP/SAVP or RTP/SAVPF), any media in the SDP
  returned by the server for which a MIKEY key management applies is
  elligible for client managed mode. The MIKEY from the server is then
  ignored.
* rtspsrc sends a SETUP with a MIKEY payload proposed by the user. The
  payload is formed by calling the 'request-rtp-key' signal for each
  elligible stream. During initialisation, 'request-rtcp-key' is also
  called as usual. The keys returned by both signals should be the same
  for a single stream, but the mechanism allows a different approach.
* The user can start re-keying of a stream by calling SET_PARAMETER.
  The convenience signal 'set-mikey-parameter' can be used to build a
  'KeyMgmt' parameter with a MIKEY payload.
* After the server accepts the new parameter, the user can call
  'remove-key' and prepare for the new key(s) to be served by signals
  'request-rtp-key' & 'request-rtcp-key'.
* The signals 'soft-limit' & 'hard-limit' are called when a key
  reaches the limits of its utilisation.

This commit adds support for:

* client-managed MIKEY mode to srtpsrc.
* Master Key Index (MKI) parsing and encoding to GstMIKEYMessage.
* re-keying using the signals 'set-mikey-parameter' & 'remove-key' and
  then by serving the new key via 'request-rtp-key' & 'request-rtcp-key'.
* 'soft-limit' & 'hard-limit' signals, similar to those provided by srtpdec.

See also:

* https://www.rfc-editor.org/rfc/rfc3830
* https://www.rfc-editor.org/rfc/rfc4567

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7587>
2024-10-24 12:43:11 +00:00
..
gst-devtools validate: use real_main instead of main in run_test_from_file 2024-10-23 13:43:03 +00:00
gst-docs matroskamux: Port to GstAggregator 2024-10-01 13:20:18 +00:00
gst-editing-services nlecomposition: Let parent compositions tell if they will send initialization seeks 2024-10-19 10:30:05 +00:00
gst-examples common: Stop using GQuark-based GstStructure field name API 2024-09-26 19:21:29 +03:00
gst-integration-testsuites h264parse: attach LCEVC meta to buffers if it is present in SEI 2024-10-02 20:33:13 +00:00
gst-libav avviddec: Unlock video decoder stream lock temporarily while finishing frames 2024-09-29 12:55:10 +00:00
gst-plugins-bad d3d12: Additional fixes for MinGW build 2024-10-24 06:54:30 +09:00
gst-plugins-base rtspsrc: client-managed MIKEY KeyMgmt 2024-10-24 12:43:11 +00:00
gst-plugins-good rtspsrc: client-managed MIKEY KeyMgmt 2024-10-24 12:43:11 +00:00
gst-plugins-ugly gstx264enc: fix for static builds on windows 2024-10-18 17:41:27 +00:00
gst-python python tests: Add test for analytics segmentation 2024-10-17 18:13:03 +00:00
gst-rtsp-server gst-rtsp-server: Make test-onvif-client example work on Windows 2024-08-20 19:44:42 +00:00
gstreamer aggregator: fix live query when force-live is TRUE 2024-10-23 18:52:54 +00:00
gstreamer-sharp Back to development 2024-03-05 12:58:57 +00:00
gstreamer-vaapi common: Use more efficient versions of GstCapsFeatures API where possible 2024-09-26 19:26:18 +03:00
macos-bison-binary
packagefiles cairo.wrap: Fix the build with latest MSYS2 2024-10-17 22:39:46 +00:00
webview2 subprojects: webview2: Fix warning with meson 1.4.0 2024-04-13 14:47:29 +00:00
win-flex-bison-binaries
win-nasm
win-pkgconfig
avtp.wrap
cairo.wrap cairo.wrap: Fix the build with latest MSYS2 2024-10-17 22:39:46 +00:00
dav1d.wrap meson: Declare dav1d dependency in subproject 2024-03-25 10:14:13 +00:00
DirectX-Headers.wrap subprojects: Add DirectX-Headers wrap 2023-12-14 18:08:00 +09:00
directxmath.wrap subprojects: directxmath: Update to 3.1.9 2024-04-02 05:14:53 +09:00
dssim.wrap
dv.wrap
expat.wrap
fdk-aac.wrap
FFmpeg.wrap meson: Make wrap downloads smaller 2024-03-23 13:08:15 +00:00
flac.wrap flac: Add wrap file and add fallback for it to the flac plugin 2024-04-07 11:12:51 +00:00
fontconfig.wrap
freetype2.wrap
fribidi.wrap
gdk-pixbuf.wrap ci: Add a gdk-pixbuf file-based wrap for gtk4 2024-10-24 15:52:15 +05:30
gl-headers.wrap
glib-networking.wrap subprojects: update glib-networking wrap to 2.78.1 2024-04-03 18:49:08 +00:00
glib.wrap subprojects: update glib wrap to 2.78.3 2023-12-21 19:22:25 +02:00
gobject-introspection.wrap
graphene.wrap
gst-plugins-rs.wrap Back to development 2024-03-05 12:58:57 +00:00
gtk-sharp.wrap csharp: update gtk-sharp subproject 2023-12-07 17:34:30 +01:00
gtk.wrap meson: Bump gtk4 and pango wraps 2024-08-17 15:00:11 +05:30
harfbuzz.wrap
json-glib.wrap
lame.wrap
libdrm.wrap libdrm.wrap: Bump to latest 2.4.120 2024-05-29 15:49:45 +00:00
libffi.wrap
libgudev.wrap wraps: libgudev: add fallback uri 2024-07-24 11:44:28 +00:00
libjpeg-turbo.wrap
liblc3.wrap subprojects: update liblc3 wrap to 1.1.1 2024-06-28 13:38:36 +01:00
libmicrodns.wrap
libnice.wrap webrtc: Change requirement to libnice 0.1.22 2024-03-22 08:49:32 +00:00
libopenjp2.wrap meson: Update openjpeg wrap to 2.5.2, fixes a warning 2024-09-10 14:59:36 +00:00
libpng.wrap
libpsl.wrap
libsoup.wrap subprojects: Fix libsoup build on windows with gcc14 2024-08-14 04:34:28 +00:00
libsrtp2.wrap
libva.wrap meson: Fix libva.wrap meson build 2024-06-13 04:48:56 +00:00
libwpe.wrap
libxml2.wrap
ntv2.wrap ntv2: Update to AJA NTV2 SDK 17.1.0 2024-09-27 16:43:37 +00:00
ogg.wrap
openh264.wrap subprojects: update openh264 to 2.4.1 2024-09-08 15:31:27 +00:00
opus.wrap subprojects: bump opus wrap to 1.5.2 2024-06-22 12:26:22 +01:00
orc.wrap subprojects: track orc main branch again 2024-03-05 13:25:19 +00:00
pango.wrap meson: Bump gtk4 and pango wraps 2024-08-17 15:00:11 +05:30
pcre2.wrap
pixman.wrap meson: Bump pixman.wrap to latest version 2024-03-23 13:08:15 +00:00
proxy-libintl.wrap
pycairo.wrap
pygobject.wrap
soundtouch.wrap pitch: add validate tests 2024-05-02 13:26:09 +02:00
sqlite3.wrap
vorbis.wrap
vpx.wrap subprojects: bump libvpx wrap to 1.14 2024-08-14 04:34:27 +00:00
wayland-protocols.wrap gstwayland: Support wp_single_pixel_buffer_v1 2024-01-22 16:51:36 -05:00
webrtc-audio-processing.wrap
wpebackend-fdo.wrap
x264.wrap meson: Make wrap downloads smaller 2024-03-23 13:08:15 +00:00
zlib.wrap