27 #ifndef OPAL_RTP_SRTP_SESSION_H
28 #define OPAL_RTP_SRTP_SESSION_H
45 class OpalSRTPCryptoSuite;
46 typedef struct srtp_ctx_t_ srtp_ctx_t;
55 #define OPAL_OPT_SRTP_RTCP_ANY_SSRC "SRTP-RTCP-Any-SSRC"
76 OpalSRTPKeyInfo(
const OpalSRTPCryptoSuite & cryptoSuite);
78 PObject * Clone()
const;
79 virtual Comparison Compare(
const PObject & other)
const;
96 PBYTEArray m_key_salt;
98 friend class OpalSRTPSession;
106 OpalSRTPCryptoSuite() { }
110 virtual H235SecurityCapability * CreateCapability(
const H323Capability & mediaCapability)
const;
112 virtual bool Supports(
const PCaselessString & proto)
const;
113 virtual bool ChangeSessionType(PCaselessString & mediaSession, KeyExchangeModes modes)
const;
118 virtual void SetCryptoPolicy(
struct srtp_crypto_policy_t & policy)
const = 0;
128 static const PCaselessString & RTP_SAVP();
129 static const PCaselessString & RTP_SAVPF();
131 OpalSRTPSession(
const Init & init);
134 virtual const PCaselessString &
GetSessionType()
const {
return RTP_SAVP(); }
148 virtual SendReceiveStatus OnReceiveDecodedControl(
RTP_ControlFrame & frame,
const PTime & now);
159 srtp_ctx_t * m_context;
160 std::set<RTP_SyncSourceId> m_addedStream;
161 OpalSRTPKeyInfo * m_keyInfo[2];
162 unsigned m_consecutiveErrors[2][2];
163 SendReceiveStatus CheckConsecutiveErrors(
bool ok, Direction dir, SubChannels subchannel);
166 map<uint64_t, PTrace::ThrottleBase> m_throttle;
167 PTrace::ThrottleBase & GetThrottle(
unsigned level, Direction dir, SubChannels subchannel,
RTP_SyncSourceId ssrc,
int item);
174 #endif // OPAL_RTP_SRTP_SESSION_H
virtual SendReceiveStatus OnSendControl(RTP_ControlFrame &frame, const PTime &now)
virtual SendReceiveStatus OnReceiveControl(RTP_ControlFrame &frame, const PTime &now)
Definition: h323caps.h:95
virtual bool ResequenceOutOfOrderPackets(SyncSource &ssrc) const
virtual const PCaselessString & GetSessionType() const
Definition: rtp_session.h:111
Definition: rtp_session.h:90
virtual SendReceiveStatus OnSendData(RewriteMode &rewrite, RTP_DataFrame &frame, const PTime &now)
virtual SendReceiveStatus OnReceiveData(RTP_DataFrame &frame, ReceiveType rxType, const PTime &now)
virtual bool IsEncrypted() const
Definition: rtp_session.h:273
virtual RTP_SyncSourceId AddSyncSource(RTP_SyncSourceId id, Direction dir, const char *cname=NULL)
Definition: transports.h:151
uint32_t RTP_SyncSourceId
Definition: rtp.h:46
virtual bool Open(const PString &localInterface, const OpalTransportAddress &remoteAddress)