* big-endian (most significant byte first).
*/
-ZRTP_INLINE uint16_t zrtp_swap16(uint16_t x) {
- return (x >> 8 | x << 8);
-}
-
+uint16_t zrtp_swap16(uint16_t x);
uint32_t zrtp_swap32(uint32_t x);
uint64_t zrtp_swap64(uint64_t x);
* If platworm is not specified manually in zrtp_config_user.h - try to detect it aytomatically
*/
#if !defined(ZRTP_PLATFORM)
-# if defined(linux) || defined(__linux)
+# if defined(ANDROID_NDK)
+# define ZRTP_PLATFORM ZP_ANDROID
+# elif defined(linux) || defined(__linux)
# include <linux/version.h>
# define ZRTP_PLATFORM ZP_LINUX
# elif defined(__MACOSX__) || defined (__APPLE__) || defined (__MACH__)
# endif
#endif
-#if (ZRTP_PLATFORM == ZP_LINUX) || (ZRTP_PLATFORM == ZP_DARWIN) || (ZRTP_PLATFORM == ZP_BSD) || defined(ZRTP_AUTOMAKE)
+#if ZRTP_PLATFORM == ZP_ANDROID
+# include "zrtp_config_android.h"
+#elif (ZRTP_PLATFORM == ZP_LINUX) || (ZRTP_PLATFORM == ZP_DARWIN) || (ZRTP_PLATFORM == ZP_BSD) || defined(ZRTP_AUTOMAKE)
# include "zrtp_config_unix.h"
#elif (ZRTP_PLATFORM == ZP_WIN32) || (ZRTP_PLATFORM == ZP_WIN32_KERNEL) || (ZRTP_PLATFORM == ZP_WINCE)
# include "zrtp_config_win.h"
/*
* ZRTP BYTEORDER DETECTION
- * If the byte order is not specified manually in zrtp_config_user.h - try to detect it aytomatically
+ * If the byte order is not specified manually in zrtp_config_user.h - try to detect it automatically
*/
#if !defined(ZRTP_BYTE_ORDER)
# endif
#endif
-#if (ZRTP_PLATFORM == ZP_WINCE) || (ZRTP_PLATFORM == ZP_SYMBIAN)
+#if (ZRTP_PLATFORM == ZP_WINCE) || (ZRTP_PLATFORM == ZP_SYMBIAN) || (ZRTP_PLATFORM == ZP_ANDROID)
# define ALIGNMENT_32BIT_REQUIRED
#endif
--- /dev/null
+/*
+ * libZRTP SDK library, implements the ZRTP secure VoIP protocol.
+ * Copyright (c) 2006-2009 Philip R. Zimmermann. All rights reserved.
+ * Contact: http://philzimmermann.com
+ * For licensing and other legal details, see the file zrtp_legal.c.
+ *
+ * Viktor Krykun <v.krikun at zfoneproject.com>
+ */
+
+#ifndef ZRTP_SYMB_CONFIG_H__
+#define ZRTP_SYMB_CONFIG_H__
+
+#ifndef ZRTP_HAVE_STDIO_H
+# define ZRTP_HAVE_STDIO_H 1
+#endif
+
+#ifndef ZRTP_HAVE_STDARG_H
+# define ZRTP_HAVE_STDARG_H 1
+#endif
+
+
+#ifndef NO_ASSERT_H
+# define NO_ASSERT_H 1
+#endif
+
+#ifndef NO_STDLIB_H
+# define NO_STDLIB_H 0
+#endif
+//#define ZRTP_HAVE_INTTYPES_H 1
+#ifndef ZRTP_HAVE_UNISTD_H
+# define ZRTP_HAVE_UNISTD_H 1
+#endif
+
+#ifndef ZRTP_HAVE_PTHREAD_H
+# define ZRTP_HAVE_PTHREAD_H 1
+#endif
+
+#ifndef ZRTP_HAVE_SEMAPHORE_H
+#define ZRTP_HAVE_SEMAPHORE_H 1
+#endif
+
+#ifndef ZRTP_HAVE_ERRNO_H
+#define ZRTP_HAVE_ERRNO_H 1
+#endif
+
+#ifndef ZRTP_HAVE_FCNTL_H
+#define ZRTP_HAVE_FCNTL_H 1
+#endif
+
+#ifndef ZRTP_HAVE_SYS_TIME_H
+# define ZRTP_HAVE_SYS_TIME_H 1
+#endif
+
+
+#ifndef ZRTP_HAVE_SYS_TYPES_H
+# define ZRTP_HAVE_SYS_TYPES_H 1
+#endif
+
+
+#ifndef ZRTP_HAVE_INTTYPES_H
+# define ZRTP_HAVE_INTTYPES_H 1
+#endif
+
+#ifndef ZRTP_HAVE_STDINT_H
+# define ZRTP_HAVE_STDINT_H 1
+#endif
+
+#ifndef ZRTP_HAVE_LINUX_VERSION_H
+# define ZRTP_HAVE_LINUX_VERSION_H 0
+#endif
+
+
+// (ZRTP_PLATFORM == ZP_ANDROID)
+
+
+#define ZRTP_HAVE_INT64_T 1
+#define ZRTP_HAVE_INT32_T 1
+#define ZRTP_HAVE_INT16_T 1
+#define ZRTP_HAVE_INT8_T 1
+
+#define ZRTP_HAVE_UINT64_T 1
+#define ZRTP_HAVE_UINT32_T 1
+#define ZRTP_HAVE_UINT16_T 1
+#define ZRTP_HAVE_UINT8_T 1
+
+#define ZRTP_BYTE_ORDER ZBO_LITTLE_ENDIAN
+
+#define SIZEOF_UNSIGNED_LONG 4
+#define SIZEOF_UNSIGNED_LONG_LONG 8
+
+#define ZRTP_INLINE inline
+
+#define ZRTP_USE_BUILTIN_CACHE 1
+#define ZRTP_USE_BUILTIN_SCEHDULER 1
+#undef ZRTP_USE_STACK_MINIM
+#define ZRTP_USE_STACK_MINIM 1
+#undef ZRTP_ENABLE_EC
+#define ZRTP_ENABLE_EC 0
+#define ALIGNMENT_32BIT_REQUIRED
+
+#endif /* ZRTP_WIN_CONFIG_H__ */
#define ZP_SYMBIAN 105
/** \brief Constant to define ZRTP BSD platform */
#define ZP_BSD 107
-
+/** \brief Constant to define ZRTP Android platform */
+#define ZP_ANDROID 108
/** \brief Define Platform manually there */
//#undefine ZRTP_PLATFORM
#if (ZRTP_PLATFORM == ZP_WIN32) || (ZRTP_PLATFORM == ZP_WINCE)
#include <windows.h>
typedef LPTHREAD_START_ROUTINE zrtp_thread_routine_t;
-#elif (ZRTP_PLATFORM == ZP_LINUX) || (ZRTP_PLATFORM == ZP_DARWIN) || (ZRTP_PLATFORM == ZP_BSD)
+#elif (ZRTP_PLATFORM == ZP_LINUX) || (ZRTP_PLATFORM == ZP_DARWIN) || (ZRTP_PLATFORM == ZP_BSD) || (ZRTP_PLATFORM == ZP_ANDROID)
typedef void *(*zrtp_thread_routine_t)(void*);
#elif (ZRTP_PLATFORM == ZP_SYMBIAN)
typedef int(*zrtp_thread_routine_t)(void*);
#define LIBZRTP_VERSION_MAJOR 1
-#define LIBZRTP_VERSION_MINOR 12
-#define LIBZRTP_VERSION_BUILD 600
-#define LIBZRTP_VERSION_STR "v1.12 600"
+#define LIBZRTP_VERSION_MINOR 13
+#define LIBZRTP_VERSION_BUILD 604
+#define LIBZRTP_VERSION_STR "v1.13 604"
#endif /*__ZRTP_VERSION_H__*/
--- /dev/null
+LOCAL_PATH := $(call my-dir)/../../..
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := libzrtp
+MY_SRC_PATH := src
+
+MY_SRC_FILES := $(MY_SRC_PATH)/zrtp.c \
+ $(MY_SRC_PATH)/zrtp_crc.c \
+ $(MY_SRC_PATH)/zrtp_crypto_aes.c \
+ $(MY_SRC_PATH)/zrtp_crypto_atl.c \
+ $(MY_SRC_PATH)/zrtp_crypto_hash.c \
+ $(MY_SRC_PATH)/zrtp_crypto_pk.c \
+ $(MY_SRC_PATH)/zrtp_crypto_sas.c \
+ $(MY_SRC_PATH)/zrtp_datatypes.c \
+ $(MY_SRC_PATH)/zrtp_engine.c \
+ $(MY_SRC_PATH)/zrtp_engine_driven.c \
+ $(MY_SRC_PATH)/zrtp_iface_cache.c \
+ $(MY_SRC_PATH)/zrtp_iface_scheduler.c \
+ $(MY_SRC_PATH)/zrtp_iface_sys.c \
+ $(MY_SRC_PATH)/zrtp_initiator.c \
+ $(MY_SRC_PATH)/zrtp_legal.c \
+ $(MY_SRC_PATH)/zrtp_list.c \
+ $(MY_SRC_PATH)/zrtp_log.c \
+ $(MY_SRC_PATH)/zrtp_pbx.c \
+ $(MY_SRC_PATH)/zrtp_protocol.c \
+ $(MY_SRC_PATH)/zrtp_responder.c \
+ $(MY_SRC_PATH)/zrtp_rng.c \
+ $(MY_SRC_PATH)/zrtp_srtp_builtin.c \
+ $(MY_SRC_PATH)/zrtp_srtp_dm.c \
+ $(MY_SRC_PATH)/zrtp_string.c \
+ $(MY_SRC_PATH)/zrtp_utils.c \
+ $(MY_SRC_PATH)/zrtp_utils_proto.c
+
+MY_SRC_FILES += third_party/bgaes/aes_modes.c \
+ third_party/bgaes/sha2.c \
+ third_party/bgaes/sha1.c \
+ third_party/bgaes/aestab.c \
+ third_party/bgaes/aeskey.c \
+ third_party/bgaes/aescrypt.c
+
+MY_SRC_FILES += third_party/bnlib/bn.c \
+ third_party/bnlib/bn32.c \
+ third_party/bnlib/bninit32.c \
+ third_party/bnlib/lbn32.c \
+ third_party/bnlib/lbnmem.c \
+ third_party/bnlib/legal.c
+
+LOCAL_SRC_FILES := $(MY_SRC_FILES)
+
+LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
+
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/third_party/bnlib
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/third_party/bgaes
+
+LOCAL_ARM_MODE := arm
+LOCAL_CFLAGS := -DANDROID_NDK=5
+
+#include $(BUILD_STATIC_LIBRARY)
+include $(BUILD_SHARED_LIBRARY)
+
+#
+# Dummy shared library to build libzrtp.a
+#
+
+# include $(CLEAR_VARS)
+#
+# LOCAL_MODULE := libzrtp-dummy
+# LOCAL_STATIC_LIBRARIES := libzrtp
+#
+# include $(BUILD_SHARED_LIBRARY)
esac
-AM_INIT_AUTOMAKE([libzrtp], [1.12])
+AM_INIT_AUTOMAKE([libzrtp], [1.14])
AX_PREFIX_CONFIG_H(../../include/zrtp_config_unix.h,ZRTP,config/config.h)
CFLAGS="$CFLAGS -Wno-unused-parameter -fno-strict-aliasing -fPIC -DZRTP_AUTOMAKE=1"
}
/*---------------------------------------------------------------------------*/
+uint16_t zrtp_swap16(uint16_t x) {
+ return (x >> 8 | x << 8);
+}
+
uint32_t zrtp_swap32(uint32_t x)
{
uint32_t res = (x >> 8 & 0x0000ff00) | (x << 8 & 0x00ff0000);
return 0;
}
-#elif (ZRTP_PLATFORM == ZP_LINUX) || (ZRTP_PLATFORM == ZP_DARWIN) || (ZRTP_PLATFORM == ZP_BSD)
+#elif (ZRTP_PLATFORM == ZP_LINUX) || (ZRTP_PLATFORM == ZP_DARWIN) || (ZRTP_PLATFORM == ZP_BSD) || (ZRTP_PLATFORM == ZP_ANDROID)
#if ZRTP_HAVE_UNISTD_H == 1
#include <unistd.h>
#else
int zrtp_sleep(unsigned int msec)
{
- return usleep(msec*1000);
+ usleep(msec*1000);
+ return 0;
}
int zrtp_thread_create(zrtp_thread_routine_t start_routine, void *arg)
}
/*---------------------------------------------------------------------------*/
-#elif (ZRTP_PLATFORM == ZP_LINUX) || (ZRTP_PLATFORM == ZP_DARWIN) || (ZRTP_PLATFORM == ZP_BSD)
+#elif (ZRTP_PLATFORM == ZP_LINUX) || (ZRTP_PLATFORM == ZP_DARWIN) || (ZRTP_PLATFORM == ZP_BSD) || (ZRTP_PLATFORM == ZP_ANDROID)
#if defined ZRTP_HAVE_PTHREAD_H
# include <pthread.h>
return (0 == ReleaseSemaphore(sem->sem, 1, NULL)) ? zrtp_status_fail : zrtp_status_ok;
}
-#elif (ZRTP_PLATFORM == ZP_LINUX) || (ZRTP_PLATFORM == ZP_DARWIN) || (ZRTP_PLATFORM == ZP_BSD)
+#elif (ZRTP_PLATFORM == ZP_LINUX) || (ZRTP_PLATFORM == ZP_DARWIN) || (ZRTP_PLATFORM == ZP_BSD) || (ZRTP_PLATFORM == ZP_ANDROID)
#if defined ZRTP_HAVE_STDIO_H
# include <stdio.h>
}
/*---------------------------------------------------------------------------*/
-#elif (ZRTP_PLATFORM == ZP_LINUX) || (ZRTP_PLATFORM == ZP_DARWIN) || (ZRTP_PLATFORM == ZP_SYMBIAN) || (ZRTP_PLATFORM == ZP_BSD)
+#elif (ZRTP_PLATFORM == ZP_LINUX) || (ZRTP_PLATFORM == ZP_DARWIN) || (ZRTP_PLATFORM == ZP_SYMBIAN) || (ZRTP_PLATFORM == ZP_BSD) || (ZRTP_PLATFORM == ZP_ANDROID)
#if defined ZRTP_HAVE_SYS_TIME_H
# include <sys/time.h>
# endif
#elif (ZRTP_PLATFORM == ZP_WIN32_KERNEL)
RtlStringCchVPrintfA(sline, ZRTP_LOG_BUFFER_SIZE-offset, format, marker);
-#elif (ZRTP_PLATFORM == ZP_LINUX) || (ZRTP_PLATFORM == ZP_DARWIN) || (ZRTP_PLATFORM == ZP_BSD)
+#elif (ZRTP_PLATFORM == ZP_LINUX) || (ZRTP_PLATFORM == ZP_DARWIN) || (ZRTP_PLATFORM == ZP_BSD) || (ZRTP_PLATFORM == ZP_ANDROID)
len = vsnprintf(sline, ZRTP_LOG_BUFFER_SIZE-offset, format, marker);
#elif (ZRTP_PLATFORM == ZP_SYMBIAN)
len = vsprintf(sline, format, marker);
char* platform = "Linux OS";
#elif (ZRTP_PLATFORM == ZP_SYMBIAN)
char* platform = "Symbian OS";
+#elif (ZRTP_PLATFORM == ZP_ANDROID)
+ char* platform = "Android OS";
#endif
ZRTP_LOG(3,("zrtp","============================================================\n"));
return entropy_length;
}
-#elif ( (ZRTP_PLATFORM == ZP_LINUX) || (ZRTP_PLATFORM == ZP_DARWIN) || (ZRTP_PLATFORM == ZP_BSD) )
+#elif ( (ZRTP_PLATFORM == ZP_LINUX) || (ZRTP_PLATFORM == ZP_DARWIN) || (ZRTP_PLATFORM == ZP_BSD) || (ZRTP_PLATFORM == ZP_ANDROID) )
#if ZRTP_HAVE_STDIO_H == 1
# include <stdio.h>