From 1015c31539b03ff0ca9331b469944dbb2f5f903e Mon Sep 17 00:00:00 2001 From: Lyubomir Marinov Date: Sat, 30 Nov 2013 21:33:25 +0200 Subject: [PATCH] Fixes an issue which could cause the DTLS-SRTP implementation to assume the role of a DTLS server instead of a DTLS client. --- lib/installer-exclude/libjitsi.jar | Bin 1523082 -> 1524331 bytes .../impl/protocol/jabber/CallJabberImpl.java | 10 +++--- .../CallPeerMediaHandlerJabberImpl.java | 16 ++++----- .../extensions/colibri/RTPLevelRelayType.java | 32 +++++++++++------- .../sip/CallPeerMediaHandlerSipImpl.java | 30 +++++----------- 5 files changed, 41 insertions(+), 47 deletions(-) diff --git a/lib/installer-exclude/libjitsi.jar b/lib/installer-exclude/libjitsi.jar index 0ca1381824793b3b8a7862553ff81d292e28cbf1..678238271cb365d4da4d6de910a619e763019478 100644 GIT binary patch delta 41798 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 delta 40666 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 diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/CallJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/CallJabberImpl.java index e0955cfb7..b2fe0ee2d 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/CallJabberImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/CallJabberImpl.java @@ -1126,12 +1126,10 @@ private boolean addDtlsAdvertisedEncryptions( if (dtlsControl != null) { - /* - * Jitsi Videobridge is a server-side endpoint and thus is supposed - * to have a public IP so it makes sense to start the DTLS-SRTP - * endpoint represented by this Call as a client. - */ - dtlsControl.setDtlsProtocol(DtlsControl.DTLS_CLIENT_PROTOCOL); + dtlsControl.setSetup( + peer.isInitiator() + ? DtlsControl.Setup.ACTIVE + : DtlsControl.Setup.PASSIVE); } IceUdpTransportPacketExtension remoteTransport = channel.getTransport(); diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/CallPeerMediaHandlerJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/CallPeerMediaHandlerJabberImpl.java index 314cd1ebb..29b04bfd8 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/CallPeerMediaHandlerJabberImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/CallPeerMediaHandlerJabberImpl.java @@ -2340,7 +2340,7 @@ boolean addDtlsAdvertisedEncryptions( } DtlsControl dtlsControl; - int dtlsProtocol; + DtlsControl.Setup setup; if (isInitiator) { @@ -2349,7 +2349,7 @@ boolean addDtlsAdvertisedEncryptions( srtpControls.get( mediaType, SrtpControlType.DTLS_SRTP); - dtlsProtocol = DtlsControl.DTLS_SERVER_PROTOCOL; + setup = DtlsControl.Setup.PASSIVE; } else { @@ -2358,12 +2358,12 @@ boolean addDtlsAdvertisedEncryptions( srtpControls.getOrCreate( mediaType, SrtpControlType.DTLS_SRTP); - dtlsProtocol = DtlsControl.DTLS_CLIENT_PROTOCOL; + setup = DtlsControl.Setup.ACTIVE; } if (dtlsControl != null) { - dtlsControl.setDtlsProtocol(dtlsProtocol); dtlsControl.setRemoteFingerprints(remoteFingerprints); + dtlsControl.setSetup(setup); removeAndCleanupOtherSrtpControls( mediaType, SrtpControlType.DTLS_SRTP); @@ -2531,12 +2531,12 @@ private boolean setDtlsEncryptionOnContent( if (dtlsControl != null) { - int dtlsProtocol + DtlsControl.Setup setup = (remoteContent == null) - ? DtlsControl.DTLS_SERVER_PROTOCOL - : DtlsControl.DTLS_CLIENT_PROTOCOL; + ? DtlsControl.Setup.PASSIVE + : DtlsControl.Setup.ACTIVE; - dtlsControl.setDtlsProtocol(dtlsProtocol); + dtlsControl.setSetup(setup); b = true; setDtlsEncryptionOnTransport( diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/colibri/RTPLevelRelayType.java b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/colibri/RTPLevelRelayType.java index 257a2a5e1..f804bf0e4 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/extensions/colibri/RTPLevelRelayType.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/extensions/colibri/RTPLevelRelayType.java @@ -30,12 +30,28 @@ public enum RTPLevelRelayType */ TRANSLATOR; + /** + * Parses a String into an RTPLevelRelayType enum value. + * The specified String to parse must be in a format as produced by + * {@link #toString()}; otherwise, the method will throw an exception. + * + * @param s the String to parse into an RTPLevelRelayType + * enum value + * @return an RTPLevelRelayType enum value on which + * toString() produces the specified s + * @throws IllegalArgumentException if none of the + * RTPLevelRelayType enum values produce the specified s + * when toString() is invoked on them + * @throws NullPointerException if s is null + */ public static RTPLevelRelayType parseRTPLevelRelayType(String s) { - for (RTPLevelRelayType value : RTPLevelRelayType.values()) + if (s == null) + throw new NullPointerException("s"); + for (RTPLevelRelayType v : values()) { - if (s.equals(value.toString())) - return value; + if (v.toString().equalsIgnoreCase(s)) + return v; } throw new IllegalArgumentException(s); } @@ -46,14 +62,6 @@ public static RTPLevelRelayType parseRTPLevelRelayType(String s) @Override public String toString() { - switch (this) - { - case MIXER: - return "mixer"; - case TRANSLATOR: - return "translator"; - default: - return super.toString(); - } + return name().toLowerCase(); } } diff --git a/src/net/java/sip/communicator/impl/protocol/sip/CallPeerMediaHandlerSipImpl.java b/src/net/java/sip/communicator/impl/protocol/sip/CallPeerMediaHandlerSipImpl.java index 28dcb8eb3..9713ff77a 100644 --- a/src/net/java/sip/communicator/impl/protocol/sip/CallPeerMediaHandlerSipImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/sip/CallPeerMediaHandlerSipImpl.java @@ -44,14 +44,8 @@ public class CallPeerMediaHandlerSipImpl */ private static final String DTLS_SRTP_FINGERPRINT_ATTR = "fingerprint"; - private static final String DTLS_SRTP_SETUP_ACTIVE = "active"; - - private static final String DTLS_SRTP_SETUP_ACTPASS = "actpass"; - private static final String DTLS_SRTP_SETUP_ATTR = "setup"; - private static final String DTLS_SRTP_SETUP_PASSIVE = "passive"; - /** * Our class logger. */ @@ -820,12 +814,14 @@ private boolean updateMediaDescriptionForDtls( Vector attrs = localMd.getAttributes(true); // setup - String setup + DtlsControl.Setup setup = (remoteMd == null) - ? DTLS_SRTP_SETUP_ACTPASS - : DTLS_SRTP_SETUP_ACTIVE; + ? DtlsControl.Setup.ACTPASS + : DtlsControl.Setup.ACTIVE; Attribute setupAttr - = SdpUtils.createAttribute(DTLS_SRTP_SETUP_ATTR, setup); + = SdpUtils.createAttribute( + DTLS_SRTP_SETUP_ATTR, + setup.toString()); attrs.add(setupAttr); @@ -840,12 +836,7 @@ private boolean updateMediaDescriptionForDtls( attrs.add(fingerprintAttr); - int dtlsProtocol - = DTLS_SRTP_SETUP_ACTIVE.equals(setup) - ? DtlsControl.DTLS_CLIENT_PROTOCOL - : DtlsControl.DTLS_SERVER_PROTOCOL; - - dtlsControl.setDtlsProtocol(dtlsProtocol); + dtlsControl.setSetup(setup); if (remoteMd != null) // answer updateSrtpControlsForDtls(mediaType, localMd, remoteMd); @@ -921,11 +912,8 @@ private void updateSrtpControlsForDtls( { setup = null; } - if (DTLS_SRTP_SETUP_PASSIVE.equals(setup)) - { - dtlsControl.setDtlsProtocol( - DtlsControl.DTLS_CLIENT_PROTOCOL); - } + if (DtlsControl.Setup.PASSIVE.toString().equals(setup)) + dtlsControl.setSetup(DtlsControl.Setup.ACTIVE); } // fingerprint