Wiki
Clone wikilibmikey-sakke / Home
Libmikey-sakke
Libmikey-sakke, its associated demonstrator projects—Minisip MIKEY-SAKKE (GTK desktop and Android GUI), PJSIP MIKEY-SAKKE (portable console and BlackBerry 10 and iPhone GUI), BlackBerry Linphone MIKEY-SAKKE (BlackBerry 7 CLDC SIP phone)—and the MIKEY-SAKKE Key Management Service (KMS) server, are the result of a research project to implement the MIKEY-SAKKE key exchange scheme in a range of SIP phone applications across a range of platforms (including, but not limited to, smart-phones).
Contents
Provided libraries
Native C++
Interface is compliant with Standard C++11 (though supported on pre-C++11 compilers and standard libraries)
libmscrypto
— ECCSI signing and SAKKE key encapsulation.libmskms-client
— KMS HTTPS JSON client.libmikeysakke
— Composite library comprising both of the above and the MIKEY library from Minisip with SAKKE support.- Header only utilities and platform normalization.
The above libraries have been built with various standard libraries on various platforms. In particular the following C++ implementations have been recently tested:
- GCC (>= 4.6) with GNU libstdc++ in C++11 mode.
- Clang with libc++ in C++11 mode.
- GCC 4.4 with GNU libstdc++ in C++03/98 mode (uses TR1 for required C++11 interfaces).
- GCC with Dinkum C++98 library (uses boost as substitute for required C++11 interfaces).
and the following targets:
- i686 and x86_64 GNU libc / Linux (various versions of GNU libc and Linux kernel).
- ARM EABI eGlibc / Linux (various versions of GNU libc and Linux kernel).
- ARM EABI Android newlib / Linux.
- x86_64 Darwin 12.
- ARM Darwin 10.
- i486 and ARM EABI QNX Neutrino (6 and 8)
libmscrypto
also built for Windows (both 32-bit and 64-bit).
Java 6, Java ME, BlackBerry 6
MikeySakke-<Target>.jar
(where<Target>
is the build variant) Note: the archive is currently namedMikeySakkeTest-<Target>.jar
for historical reasons and because it contains executable test programs as well as the library code
Native C
libmikeysakke4c
— C front-end to C++libmikeysakke
library.
Provided applications
-
Perl KMS server — includes simple open SIP proxy/registrar for demonstration convenience
-
Demonstrator/library test programs in C++, Java and C
Provided tools
- MIKEY-SAKKE dissector for Wireshark — Patch available for version 1.6.5. Merged into Wireshark mainline on 11th December 2012 (available in version 1.9).
- Java byte-code manipulation and dependency analysis tools
Building
Each library component may be built individually via GNU make (version 3.82 is required). There are a number of third-party dependencies, each of which are made available to the build system via an environment variable pointing to that library's extracted (or checked-out) directory.
The libmikey-sakke
repository provides build scripts for all third-party dependencies and the library itself.
The build system is intended to be invoked in the same manner for all targets. Builds for multiple targets can be done within a single source checkout (that goes for the third-party libraries also). In each case, a target-specific subdirectory is created within the source-tree for that build.
- See Quick setup and build for the fastest way to get going.
For more details see:
- See Environment setup for details on installing the necessary build tools. These are mainly simple front-end scripts that simplify or normalize the build across targets.
- See Building dependencies for details on building the necessary third-party libraries.
- See Building native libmikeysakke for building the C/C++ target-native library.
- See Building Java libmikeysakke for building the Java 6, Java ME and/or BlackBerry library.
- See Building applications for building the demonstration packages; Minisip, PJSIP and Linphone.
Old Links
- Minisip MIKEY-SAKKE -- link to build page of other repo (this build is somewhat deprecated)
- Code notes -- notes on the ECCSI/SAKKE/MIKEY-SAKKE-KMS libraries
- Overview of precompiled binaries found under Downloads.
Updated