Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
[Some information relates to pre-released product which may be substantially modified before it's commercially released. Microsoft makes no warranties, express or implied, with respect to the information provided here.]
**Soon to be depricated** Exposes information relating to SRTP/SDES transport [RFC4568]. Details relating to configuration of Microsoft's implementation of SRTP/SDES are described in [MS-SDPEXT].
Note
SRTP/SDES support is forbidden by the IETF RTCWEB security specifications. To conform to this requirement, support for SRTP/SDES will be removed from Microsoft Edge in the future. Therefore, applications also need to support DTLS/SRTP so they will continue to function once SRTP/SDES support is removed.
Overview
An RTCSrtpSdesTransport instance is associated to an RTCRtpSender or an RTCRtpReceiver.
Operation
An RTCSrtpSdesTransport instance is constructed from an RTCIceTransport, as well as the encryption parameters (obtained from the local peer) and the decryption parameters (obtained from the remote peer). Both multiplexed and non-multiplexed RTP/RTCP are supported with RTCSrtpSdesTransport objects. If RTP and RTCP are not multiplexed, the RTP RTCIceTransport instance transport passed in the constructor is sufficient; if there is an "associated" RTCP transport rtcpTransport, it is provided implicitly. Since an RTCSrtpSdesTransport is ready to function as soon as it is created, there is no need for start() and stop() methods.
If either encryptParameters or decryptParameters contain a sequence of more than one keyParams dictionary, then keyParams.mkiValue and keyParams.mkiLength must be set to a value greater than zero for each keyParams dictionary entry or an InvalidParameters exception is thrown.
Syntax
[Constructor(RTCIceTransport transport, RTCSrtpSdesParameters encryptParameters, RTCSrtpSdesParameters decryptParameters)]
interface RTCSrtpSdesTransport {
readonly attribute RTCIceTransport transport;
static sequence<RTCSrtpSdesParameters> getLocalParameters ();
attribute EventHandler? onerror;
};
Members
The RTCSrtpSdesTransport object has these types of members:
- Events
- Methods
- Properties
Events
The RTCSrtpSdesTransport object has these events.
| Event | Description |
|---|---|
| onerror | Set this handler to receive |
Methods
The RTCSrtpSdesTransport object has these methods.
| Method | Description |
|---|---|
| getLocalParameters | Obtain the local SRTP/SDES parameter sets. |
Properties
The RTCSrtpSdesTransport object has these properties.
| Property | Access type | Description |
|---|---|---|
Read-only |
Identifies the associated |
Standards information
Examples
// This is an example of how to offer ICE and SRTP/SDES parameters and
// ICE candidates and get back ICE and SRTP/SDES parameters and ICE candidates,
// and start both ICE and SRTP/SDES, when RTP and RTCP are multiplexed.
// Assume that we have a way to signal (mySignaller).
// Include some helper functions
import "helper.js";
function initiate(mySignaller) {
// Prepare the ICE gatherer
var gatherOptions = new RTCIceGatherOptions();
gatherOptions.gatherPolicy = RTCIceGatherPolicy.all;
gatherOptions.iceservers = [ { urls: "stun:stun1.example.net" } , { urls:"turn:turn.example.org", username: "user", credential:"myPassword"} ];
var iceGatherer = new RTCIceGatherer(gatherOptions);
iceGatherer.onlocalcandidate = function(event) {
mySignaller.mySendLocalCandidate(event.candidate);
};
// Create ICE transport
var ice = new RTCIceTransport();
// Get SRTP/SDES encryption parameters
var encryptParams = RTCSrtpSdesTransport.getLocalParameters();
// Prepare to handle remote ICE candidates
mySignaller.onRemoteCandidate = function(candidate){
ice.addRemoteCandidate(candidate);
}
// ... create RtpSender/RtpReceiver objects as illustrated in Section 7.5 Example 9
mySignaller.mySendInitiate({
"ice": iceGatherer.getLocalParameters(),
"srtpsdes": encryptParams,
// ... include RTP info from other example
}, function(remote) {
// Start the ICE transport
ice.start(iceGatherer, remote.ice, RTCIceRole.controlling);
// Construct the SRTP/SDES transport (which auto-starts)
var srtpsdes = new RTCSrtpSdesTransport(ice, encryptParams, remote.srtpsdes);
// ... configure RtpSender/RtpReceiver objects as illustrated in Section 7.5 Example 9
});
}
// This is an example of how to answer with ICE and SRTP/SDES
// parameters and ICE candidates and start both ICE and SRTP/SDES,
// assuming that RTP and RTCP are multiplexed.
// Include some helper functions
import "helper.js";
// Assume that remote info is signalled to us.
function accept(mySignaller, remote) {
var gatherOptions = new RTCIceGatherOptions();
gatherOptions.gatherPolicy = RTCIceGatherPolicy.all;
gatherOptions.iceservers = [ { urls: "stun:stun1.example.net" } , { urls:"turn:turn.example.org", username: "user", credential:"myPassword"} ] ;
var iceGatherer = new RTCIceGatherer(gatherOptions);
iceGatherer.onlocalcandidate = function(event) {
mySignaller.mySendLocalCandidate(event.candidate);
};
// Create ICE transport
var ice = new RTCIceTransport();
// Get SRTP/SDES encryption parameters
var encryptParams = RTCSrtpSdesTransport.getLocalParameters();
// Prepare to handle remote ICE candidates
mySignaller.onRemoteCandidate = function(candidate){
ice.addRemoteCandidate(candidate);
}
// ... create RtpSender/RtpReceiver objects as illustrated in Section 7.5 Example 9.
mySignaller.mySendAccept({
"ice": iceGatherer.getLocalParameters(),
"srtpsdes": encryptParams,
// ... marshall RtpSender/RtpReceiver capabilities as illustrated in Section 7.5 Example 9.
});
// Start the ICE transport with an implicit gather policy of "all"
ice.start(iceGatherer, remote.ice, RTCIceRole.controlled);
// Construct the SRTP/SDES transport (which auto-starts)
var srtpsdes = new RTCSrtpSdesTransport(ice, encryptParams, remote.srtpsdes);
// ... configure RtpSender/RtpReceiver objects as illustrated in Section 7.5 Example 9.
}