blob: 41c8ccc9c1494700a6d1faee08a88bb3e8c9bf63 [file] [log] [blame]
zhihuangd3501ad2017-03-03 14:39:06 -08001/*
2 * Copyright 2017 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020011#ifndef API_ORTC_SRTPTRANSPORTINTERFACE_H_
12#define API_ORTC_SRTPTRANSPORTINTERFACE_H_
zhihuangd3501ad2017-03-03 14:39:06 -080013
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020014#include "api/ortc/rtptransportinterface.h"
15#include "api/rtcerror.h"
Patrik Höglund7aee3d52017-11-15 13:15:17 +010016#include "api/cryptoparams.h"
zhihuangd3501ad2017-03-03 14:39:06 -080017
18namespace webrtc {
19
20// The subclass of the RtpTransport which uses SRTP. The keying information
21// is explicitly passed in from the application.
22//
23// If using SDP and SDES (RFC4568) for signaling, then after applying the
24// answer, the negotiated keying information from the offer and answer would be
25// set and the SRTP would be active.
26//
27// Note that Edge's implementation of ORTC provides a similar API point, called
28// RTCSrtpSdesTransport:
29// https://msdn.microsoft.com/en-us/library/mt502527(v=vs.85).aspx
30class SrtpTransportInterface : public RtpTransportInterface {
31 public:
32 virtual ~SrtpTransportInterface() {}
33
34 // There are some limitations of the current implementation:
35 // 1. Send and receive keys must use the same crypto suite.
36 // 2. The keys can't be changed after initially set.
37 // 3. The keys must be set before creating a sender/receiver using the SRTP
38 // transport.
39 // Set the SRTP keying material for sending RTP and RTCP.
40 virtual RTCError SetSrtpSendKey(const cricket::CryptoParams& params) = 0;
41
42 // Set the SRTP keying material for receiving RTP and RTCP.
43 virtual RTCError SetSrtpReceiveKey(const cricket::CryptoParams& params) = 0;
44};
45
46} // namespace webrtc
47
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020048#endif // API_ORTC_SRTPTRANSPORTINTERFACE_H_