/* * Copyright 2017 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree.
*/
// Forward declaration to avoid pulling in libsrtp headers here struct srtp_event_data_t; struct srtp_ctx_t_; // Trailing _ is required.
namespace cricket {
// Prohibits webrtc from initializing libsrtp. This can be used if libsrtp is // initialized by another library or explicitly. Note that this must be called // before creating an SRTP session with WebRTC. void ProhibitLibsrtpInitialization();
// Class that wraps a libSRTP session. class SrtpSession { public:
SrtpSession(); explicit SrtpSession(const webrtc::FieldTrialsView& field_trials);
~SrtpSession();
// Configures the session for sending data using the specified // crypto suite and key. Receiving must be done by a separate session.
[[deprecated("Pass ZeroOnFreeBuffer to SetSend")]] bool SetSend( int crypto_suite, const uint8_t* key,
size_t len, const std::vector<int>& extension_ids); bool SetSend(int crypto_suite, const rtc::ZeroOnFreeBuffer<uint8_t>& key, const std::vector<int>& extension_ids);
[[deprecated("Pass ZeroOnFreeBuffer to UpdateSend")]] bool UpdateSend( int crypto_suite, const uint8_t* key,
size_t len, const std::vector<int>& extension_ids); bool UpdateSend(int crypto_suite, const rtc::ZeroOnFreeBuffer<uint8_t>& key, const std::vector<int>& extension_ids);
// Configures the session for receiving data using the specified // crypto suite and key. Sending must be done by a separate session.
[[deprecated("Pass ZeroOnFreeBuffer to SetReceive")]] bool SetRecv( int crypto_suite, const uint8_t* key,
size_t len, const std::vector<int>& extension_ids); bool SetReceive(int crypto_suite, const rtc::ZeroOnFreeBuffer<uint8_t>& key, const std::vector<int>& extension_ids);
[[deprecated("Pass ZeroOnFreeBuffer to UpdateReceive")]] bool UpdateRecv( int crypto_suite, const uint8_t* key,
size_t len, const std::vector<int>& extension_ids); bool UpdateReceive(int crypto_suite, const rtc::ZeroOnFreeBuffer<uint8_t>& key, const std::vector<int>& extension_ids);
// Encrypts/signs an individual RTP/RTCP packet, in-place. // If an HMAC is used, this will increase the packet size. bool ProtectRtp(void* data, int in_len, int max_len, int* out_len); // Overloaded version, outputs packet index. bool ProtectRtp(void* data, int in_len, int max_len, int* out_len,
int64_t* index); bool ProtectRtcp(void* data, int in_len, int max_len, int* out_len); // Decrypts/verifies an invidiual RTP/RTCP packet. // If an HMAC is used, this will decrease the packet size. bool UnprotectRtp(void* data, int in_len, int* out_len); bool UnprotectRtcp(void* data, int in_len, int* out_len);
// Helper method to get authentication params. bool GetRtpAuthParams(uint8_t** key, int* key_len, int* tag_len);
int GetSrtpOverhead() const;
// If external auth is enabled, SRTP will write a dummy auth tag that then // later must get replaced before the packet is sent out. Only supported for // non-GCM cipher suites and can be checked through "IsExternalAuthActive" // if it is actually used. This method is only valid before the RTP params // have been set. void EnableExternalAuth(); bool IsExternalAuthEnabled() const;
// A SRTP session supports external creation of the auth tag if a non-GCM // cipher is used. This method is only valid after the RTP params have // been set. bool IsExternalAuthActive() const;
// Overhead of the SRTP auth tag for RTP and RTCP in bytes. // Depends on the cipher suite used and is usually the same with the exception // of the kCsAesCm128HmacSha1_32 cipher suite. The additional four bytes // required for RTCP protection are not included. int rtp_auth_tag_len_ = 0; int rtcp_auth_tag_len_ = 0;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.