|
Jitsi: the OpenSource Java VoIP and Instant Messaging client. | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectnet.java.sip.communicator.impl.neomedia.transform.zrtp.ZRTPTransformEngine
public class ZRTPTransformEngine
JMF extension/connector to support GNU ZRTP4J. ZRTP was developed by Phil Zimmermann and provides functions to negotiate keys and other necessary data (crypto data) to set-up the Secure RTP (SRTP) crypto context. Refer to Phil's ZRTP specification at his Zfone project site to get more detailed information about the capabilities of ZRTP.
+---------------------------+
| ZrtpTransformConnector |
| extends TransformConnector|
| implements RTPConnector |
+---------------------------+
|
| uses
|
+----------------+ +-----+---------------+
| Application | | | +----------------+
| instantiates | uses | ZRTPTransformEngine | uses | |
| a ZRTP Session +------+ implements +------+ GNU ZRTP4J |
| and provides | | ZrtpCallback | | core |
|ZrtpUserCallback| | | | implementation |
+----------------+ +---------------------+ | (ZRtp et al) |
| |
+----------------+
The following short code snippets show how an application could instantiate a
ZrtpTransformConnector, get the ZRTP4J engine and initialize it. Then the
code get a RTP manager instance and initializes it with the
ZRTPTransformConnector. Please note: setting the target must be done with the
connector, not with the RTP manager.
...
transConnector = (ZrtpTransformConnector)TransformManager
.createZRTPConnector(sa);
zrtpEngine = transConnector.getEngine();
zrtpEngine.setUserCallback(new MyCallback());
if (!zrtpEngine.initialize("test_t.zid"))
System.out.println("iniatlize failed");
// initialize the RTPManager using the ZRTP connector
mgr = RTPManager.newInstance();
mgr.initialize(transConnector);
mgr.addSessionListener(this);
mgr.addReceiveStreamListener(this);
transConnector.addTarget(target);
zrtpEngine.startZrtp();
...
The demo folder contains a small example that shows how to use GNU
ZRTP4J.
This ZRTPTransformEngine documentation shows the ZRTP specific extensions and
describes overloaded methods and a possible different behaviour.
| Nested Class Summary |
|---|
| Nested classes/interfaces inherited from interface gnu.java.zrtp.ZrtpCallback |
|---|
gnu.java.zrtp.ZrtpCallback.EnableSecurity, gnu.java.zrtp.ZrtpCallback.Role |
| Field Summary | |
|---|---|
protected static int |
ZRTP_PACKET_HEADER
Each ZRTP packet has a fixed header of 12 bytes. |
| Constructor Summary | |
|---|---|
ZRTPTransformEngine()
Construct a ZRTPTransformEngine. |
|
| Method Summary | |
|---|---|
void |
acceptEnrollment(boolean accepted)
Used to accept a PBX enrollment request (The PBX part needs further development) |
int |
activateTimer(int time)
Activate timer. |
int |
cancelTimer()
Cancel the active timer. |
boolean |
checkSASSignature(byte[] sasHash)
|
void |
cleanup()
Cleanup function for any remaining timers |
void |
close()
Close the transformer and underlying transform engine. |
String |
getHelloHash()
Gets the Hello packet Hash |
String[] |
getHelloHashSep()
Get the ZRTP Hello Hash data - separate strings. |
byte[] |
getMultiStrParams()
Gets the multistream params |
byte[] |
getPeerZid()
Get other party's ZID (ZRTP Identifier) data This functions returns the other party's ZID that was receivied during ZRTP processing. |
ZRTCPTransformer |
getRTCPTransformer()
Returns an instance of ZRTPCTransformer. |
PacketTransformer |
getRTPTransformer()
Returns this RTPTransformer. |
byte[] |
getSasHash()
Get the computed SAS hash for this ZRTP session. |
gnu.java.zrtp.ZrtpConstants.SupportedSASTypes |
getSasType()
Get the commited SAS rendering algorithm for this ZRTP session. |
boolean |
getSecureCommunicationStatus()
Method for getting the default secure status value for communication |
byte[] |
getSignatureData()
Gets signature data |
int |
getSignatureLength()
Gets signature length |
SecurityEventManager |
getUserCallback()
Gets the user callback used to manage the GUI part of ZRTP |
void |
handleGoClear()
Method called by the Zrtp class as result of a GoClear request from the other peer. |
void |
handleTimeout()
Timeout handling function. |
boolean |
initialize(String zidFilename)
Default engine initialization method. |
boolean |
initialize(String zidFilename,
boolean autoEnable)
Engine initialization method. |
boolean |
initialize(String zidFilename,
boolean autoEnable,
gnu.java.zrtp.ZrtpConfigure config)
Custom engine initialization method. |
boolean |
initialize(String zidFilename,
gnu.java.zrtp.ZrtpConfigure config)
Engine initialization method. |
boolean |
isEnableZrtp()
Returns the enableZrtp flag. |
boolean |
isEnrollmentMode()
Check the state of the enrollment mode. |
boolean |
isMitmMode()
Check the state of the MitM mode flag. |
boolean |
isMultiStream()
Gets the multistream flag (The multistream part needs further development) |
boolean |
isParanoidMode()
Check status of paranoid mode. |
boolean |
isStarted()
Returns the current status of the ZRTP engine |
void |
requestGoClear()
Method called when the user requests through GUI to switch a secured call to unsecure mode. |
void |
requestGoSecure()
Method called when the user requests through GUI to switch a previously unsecured call back to secure mode. |
void |
resetSASVerified()
Resets the internal engine SAS verified flag |
RawPacket |
reverseTransform(RawPacket pkt)
The input data stream calls this method to transform incoming packets. |
void |
SASVerified()
Set the SAS as verified internally if the user confirms it |
boolean |
sendDataZRTP(byte[] data)
The callback method required by the ZRTP implementation. |
void |
sendInfo(gnu.java.zrtp.ZrtpCodes.MessageSeverity severity,
EnumSet<?> subCode)
Send information messages to the hosting environment. |
boolean |
sendSASRelayPacket(byte[] sh,
gnu.java.zrtp.ZrtpConstants.SupportedSASTypes render)
Send the SAS relay packet. |
void |
setAuxSecret(byte[] data)
Sets the auxilliary secret data |
void |
setClientId(String id)
Sets the client ID |
void |
setConnector(AbstractRTPConnector connector)
Sets the RTP connector using this ZRTP engine |
void |
setEnableZrtp(boolean onOff)
Sets the enableZrtp flag. |
void |
setEnrollmentMode(boolean enrollmentMode)
Set the state of the enrollment mode. |
void |
setMitmMode(boolean mitmMode)
Set the state of the MitM mode flag. |
void |
setMultiStrParams(byte[] parameters)
Sets the multistream params (The multistream part needs further development) |
void |
setOwnSSRC(long ssrc)
Set the SSRC of the RTP transmitter stream. |
void |
setParanoidMode(boolean yesNo)
Enables or disables paranoid mode. |
boolean |
setSignatureData(byte[] data)
Sets signature data for the Confirm packets |
void |
setStartMuted(boolean startMuted)
|
void |
setUserCallback(SecurityEventManager ub)
Sets the user callback class used to maintain the GUI ZRTP part |
void |
signSAS(byte[] sasHash)
|
void |
srtpSecretsOff(gnu.java.zrtp.ZrtpCallback.EnableSecurity part)
This method shall clear the ZRTP secrets. |
void |
srtpSecretsOn(String c,
String s,
boolean verified)
|
boolean |
srtpSecretsReady(gnu.java.zrtp.ZrtpSrtpSecrets secrets,
gnu.java.zrtp.ZrtpCallback.EnableSecurity part)
Switch on the security for the defined part. |
void |
startZrtp()
Start the ZRTP stack immediately, not autosensing mode. |
void |
stopZrtp()
Stop ZRTP engine. |
RawPacket |
transform(RawPacket pkt)
The data output stream calls this method to transform outgoing packets. |
void |
zrtpAskEnrollment(gnu.java.zrtp.ZrtpCodes.InfoEnrollment info)
Zrtp ask for Enrollment. |
void |
zrtpInformEnrollment(gnu.java.zrtp.ZrtpCodes.InfoEnrollment info)
|
void |
zrtpNegotiationFailed(gnu.java.zrtp.ZrtpCodes.MessageSeverity severity,
EnumSet<?> subCode)
Comes a message that zrtp negotiation has failed. |
void |
zrtpNotSuppOther()
The other part doesn't support zrtp. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected static final int ZRTP_PACKET_HEADER
| Constructor Detail |
|---|
public ZRTPTransformEngine()
| Method Detail |
|---|
public ZRTCPTransformer getRTCPTransformer()
getRTCPTransformer in interface TransformEngineTransformEngine.getRTCPTransformer()public PacketTransformer getRTPTransformer()
getRTPTransformer in interface TransformEngineTransformEngine.getRTPTransformer()
public boolean initialize(String zidFilename,
gnu.java.zrtp.ZrtpConfigure config)
zidFilename - The ZID file nameconfig - The configuration data
public boolean initialize(String zidFilename,
boolean autoEnable)
zidFilename - The ZID file nameautoEnable - If true start with auto-sensing mode.
public boolean initialize(String zidFilename)
zidFilename - The ZID file name
public boolean initialize(String zidFilename,
boolean autoEnable,
gnu.java.zrtp.ZrtpConfigure config)
zidFilename - The ZID file nameautoEnable - Set this true to start with auto-sensing and false to
disable it.config - the zrtp config to use
public void setStartMuted(boolean startMuted)
startMuted - whether to be started as muted if no secure
communication is establishedpublic boolean getSecureCommunicationStatus()
public void startZrtp()
public void close()
close in interface PacketTransformerpublic void stopZrtp()
public void cleanup()
public void setOwnSSRC(long ssrc)
ssrc - SSRC to setpublic RawPacket transform(RawPacket pkt)
transform in interface PacketTransformerpkt - the packet to be transformed
PacketTransformer.transform(RawPacket)public RawPacket reverseTransform(RawPacket pkt)
reverseTransform in interface PacketTransformerpkt - the transformed packet to be restored
PacketTransformer.reverseTransform(RawPacket)public boolean sendDataZRTP(byte[] data)
sendDataZRTP in interface gnu.java.zrtp.ZrtpCallbackdata - The ZRTP packet data
public boolean srtpSecretsReady(gnu.java.zrtp.ZrtpSrtpSecrets secrets,
gnu.java.zrtp.ZrtpCallback.EnableSecurity part)
srtpSecretsReady in interface gnu.java.zrtp.ZrtpCallbacksecrets - The secret keys and salt negotiated by ZRTPpart - An enum that defines sender, receiver, or both.
public void srtpSecretsOn(String c,
String s,
boolean verified)
srtpSecretsOn in interface gnu.java.zrtp.ZrtpCallbackc - s - verified - ZrtpCallback.srtpSecretsOn(java.lang.String,
java.lang.String, boolean)public void srtpSecretsOff(gnu.java.zrtp.ZrtpCallback.EnableSecurity part)
srtpSecretsOff in interface gnu.java.zrtp.ZrtpCallbackpart - Defines for which part (sender or receiver)
to switch on securitypublic int activateTimer(int time)
activateTimer in interface gnu.java.zrtp.ZrtpCallbacktime - The time in ms for the timer.
public int cancelTimer()
cancelTimer in interface gnu.java.zrtp.ZrtpCallbackpublic void handleTimeout()
public void sendInfo(gnu.java.zrtp.ZrtpCodes.MessageSeverity severity,
EnumSet<?> subCode)
sendInfo in interface gnu.java.zrtp.ZrtpCallbackseverity - This defines the message's severitysubCode - The message code.
public void zrtpNegotiationFailed(gnu.java.zrtp.ZrtpCodes.MessageSeverity severity,
EnumSet<?> subCode)
zrtpNegotiationFailed in interface gnu.java.zrtp.ZrtpCallbackseverity - This defines the message's severitysubCode - The message code.public void zrtpNotSuppOther()
zrtpNotSuppOther in interface gnu.java.zrtp.ZrtpCallbackpublic void zrtpAskEnrollment(gnu.java.zrtp.ZrtpCodes.InfoEnrollment info)
zrtpAskEnrollment in interface gnu.java.zrtp.ZrtpCallbackinfo - supplied info.public void zrtpInformEnrollment(gnu.java.zrtp.ZrtpCodes.InfoEnrollment info)
zrtpInformEnrollment in interface gnu.java.zrtp.ZrtpCallbackinfo - ZrtpCallback.zrtpInformEnrollment(
gnu.java.zrtp.ZrtpCodes.InfoEnrollment)public void signSAS(byte[] sasHash)
signSAS in interface gnu.java.zrtp.ZrtpCallbacksas - gnu.java.zrtp.ZrtpCallback#signSAS(java.lang.String)public boolean checkSASSignature(byte[] sasHash)
checkSASSignature in interface gnu.java.zrtp.ZrtpCallbacksas -
gnu.java.zrtp.ZrtpCallback#checkSASSignature(java.lang.String)public void setEnableZrtp(boolean onOff)
onOff - The value for the enableZrtp flag.public boolean isEnableZrtp()
public void SASVerified()
public void resetSASVerified()
public void requestGoClear()
public void requestGoSecure()
public void setAuxSecret(byte[] data)
data - The auxilliary secret datapublic void setClientId(String id)
id - The client IDpublic String getHelloHash()
public String[] getHelloHashSep()
null
if ZRTP is not available.public byte[] getMultiStrParams()
public void setMultiStrParams(byte[] parameters)
parameters - the multistream paramspublic boolean isMultiStream()
public void acceptEnrollment(boolean accepted)
accepted - The boolean value indicating if the request is acceptedpublic gnu.java.zrtp.ZrtpConstants.SupportedSASTypes getSasType()
public byte[] getSasHash()
public boolean sendSASRelayPacket(byte[] sh,
gnu.java.zrtp.ZrtpConstants.SupportedSASTypes render)
sh - the full SAS hash valuerender - the SAS rendering algorithm
public boolean isMitmMode()
public void setMitmMode(boolean mitmMode)
mitmMode - defines the new state of the mitmMode flagpublic void setParanoidMode(boolean yesNo)
yesNo - If set to true then paranoid mode is enabled.public boolean isParanoidMode()
public boolean isEnrollmentMode()
public void setEnrollmentMode(boolean enrollmentMode)
enrollmentMode - defines the new state of the enrollmentMode flagpublic boolean setSignatureData(byte[] data)
data - the signature data
public byte[] getSignatureData()
public int getSignatureLength()
public void handleGoClear()
handleGoClear in interface gnu.java.zrtp.ZrtpCallbackpublic void setConnector(AbstractRTPConnector connector)
connector - the connector to setpublic void setUserCallback(SecurityEventManager ub)
ub - The user callback classpublic boolean isStarted()
public SecurityEventManager getUserCallback()
public byte[] getPeerZid()
|
Jitsi: the OpenSource Java VoIP and Instant Messaging client. | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||