aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/java/sip/communicator/service/neomedia/SrtpControl.java
blob: 587c0e06518127942d50027ed6d5694ddcf45445 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/*
 * Jitsi, the OpenSource Java VoIP and Instant Messaging client.
 *
 * Distributable under LGPL license.
 * See terms of license at gnu.org.
 */
package net.java.sip.communicator.service.neomedia;

import net.java.sip.communicator.impl.neomedia.AbstractRTPConnector;
import net.java.sip.communicator.impl.neomedia.transform.TransformEngine;
import net.java.sip.communicator.service.neomedia.event.*;

/**
 * Controls SRTP encryption in the MediaStream.
 *
 * @author Damian Minkov
 */
public interface SrtpControl
{
    /**
     * Cleans up the current SRTP control and its engine.
     */
    public void cleanup();

    /**
     * Sets a <tt>SrtpListener</tt> that will listen for security events.
     * 
     * @param srtpListener the <tt>SrtpListener</tt> that will receive the
     *            events
     */
    public void setSrtpListener(SrtpListener srtpListener);

    /**
     * Returns the <tt>SrtpListener</tt> which listens for security events.
     *
     * @return the <tt>SrtpListener</tt> which listens for security events
     */
    public SrtpListener getSrtpListener();

    /**
     * Gets the default secure/insecure communication status for the supported
     * call sessions.
     *
     * @return default secure communication status for the supported
     *          call sessions.
     */
    public boolean getSecureCommunicationStatus();

    /**
     * Starts and enables zrtp in the stream holding this control.
     * @param masterSession whether this stream is master for the current
     *        media session.
     */
    public void start(boolean masterSession);

    /**
     * Sets the multistream data, which means that the master stream
     * has successfully started and this will start all other streams
     * in this session.
     * @param master The security control of the master stream.
     */
    public void setMultistream(SrtpControl master);

    /**
     * Returns the transform engine currently used by this stream.
     * 
     * @return the RTP stream transformation engine
     */
    public TransformEngine getTransformEngine();

    /**
     * Sets the <tt>RTPConnector</tt> which is to use or uses this SRTP engine.
     *
     * @param connector the <tt>RTPConnector</tt> which is to use or uses this
     * SRTP engine
     */
    public void setConnector(AbstractRTPConnector newValue);

    /**
     * Indicates if the key exchange method is dependent on secure transport of
     * the signaling channel.
     * 
     * @return True when secure signaling is required to make the encryption
     *         secure, false otherwise.
     */
    public boolean requiresSecureSignalingTransport();
}