diff --git a/LinphoneCallImpl.java b/LinphoneCallImpl.java index 653bd157e..55d3baedf 100644 --- a/LinphoneCallImpl.java +++ b/LinphoneCallImpl.java @@ -39,6 +39,9 @@ class LinphoneCallImpl implements LinphoneCall { private native int getDuration(long nativePtr); private native float getCurrentQuality(long nativePtr); private native float getAverageQuality(long nativePtr); + private native String getAuthenticationToken(long nativePtr); + private native boolean isAuthenticationTokenVerified(long nativePtr); + private native boolean areStreamsEncrypted(long nativePtr); protected LinphoneCallImpl(long aNativePtr) { nativePtr = aNativePtr; @@ -109,5 +112,14 @@ class LinphoneCallImpl implements LinphoneCall { public float getCurrentQuality() { return getCurrentQuality(nativePtr); } - + + public String getAuthenticationToken(){ + return getAuthenticationToken(nativePtr); + } + public boolean isAuthenticationTokenVerified(){ + return isAuthenticationTokenVerified(nativePtr); + } + public boolean areStreamsEncrypted() { + return areStreamsEncrypted(nativePtr); + } } diff --git a/LinphoneCoreFactoryImpl.java b/LinphoneCoreFactoryImpl.java index a2800be92..6301c5c70 100644 --- a/LinphoneCoreFactoryImpl.java +++ b/LinphoneCoreFactoryImpl.java @@ -32,10 +32,22 @@ public class LinphoneCoreFactoryImpl extends LinphoneCoreFactory { } static { + // FFMPEG (audio/video) loadOptionalLibrary("avutil"); loadOptionalLibrary("swscale"); loadOptionalLibrary("avcore"); loadOptionalLibrary("avcodec"); + + // OPENSSL (cryptography) + // lin prefix avoids collision with libs in /system/lib + loadOptionalLibrary("lincrypto"); + loadOptionalLibrary("linssl"); + + // Secure RTP and key negotiation + loadOptionalLibrary("srtp"); + loadOptionalLibrary("zrtpcpp"); // GPLv3+ + + //Main library System.loadLibrary("linphone"); } @Override diff --git a/LinphoneCoreImpl.java b/LinphoneCoreImpl.java index b68d9c676..b8fddda20 100644 --- a/LinphoneCoreImpl.java +++ b/LinphoneCoreImpl.java @@ -101,7 +101,8 @@ class LinphoneCoreImpl implements LinphoneCore { private native int resumeCall(long nativePtr, long callPtr); private native void setUploadPtime(long nativePtr, int ptime); private native void setDownloadPtime(long nativePtr, int ptime); - + private native void setZrtpSecretsCache(long nativePtr, String file); + LinphoneCoreImpl(LinphoneCoreListener listener, File userConfig,File factoryConfig,Object userdata) throws IOException { mListener=listener; nativePtr = newLinphoneCore(listener,userConfig.getCanonicalPath(),factoryConfig.getCanonicalPath(),userdata); @@ -493,4 +494,8 @@ class LinphoneCoreImpl implements LinphoneCore { public void setUploadPtime(int ptime) { setUploadPtime(nativePtr,ptime); } + + public void setZrtpSecretsCache(String file) { + setZrtpSecretsCache(nativePtr,file); + } } diff --git a/Version.java b/Version.java index 61a92b40b..14dff0c27 100644 --- a/Version.java +++ b/Version.java @@ -34,6 +34,7 @@ public class Version { public static final int API09_GINGERBREAD_23 = 9; public static final int API11_HONEYCOMB_30 = 11; + private static native boolean nativeHasZrtp(); private static native boolean nativeHasNeon(); private static Boolean hasNeon; @@ -69,4 +70,7 @@ public class Version { return !Version.sdkStrictlyBelow(5) && Version.hasNeon() && Hacks.hasCamera(); } + public static boolean hasZrtp(){ + return nativeHasZrtp(); + } }