strongswan/src/frontends/osx
Martin Willi 39d15dde67 xpc: ask App for passwords using connection specific channel 2013-07-18 12:17:55 +02:00
..
charon-xpc xpc: ask App for passwords using connection specific channel 2013-07-18 12:17:55 +02:00
strongSwan.xcodeproj xpc: use IKE_SA specific XPC return channels for further communication 2013-07-18 12:17:55 +02:00
.gitignore xpc: add Xcode project for a charon controlled through XPC 2013-07-18 12:17:54 +02:00
README.md xpc: build with support for the keychain plugin 2013-07-18 12:17:55 +02:00

README.md

strongSwan OS X App

Introduction

The strongSwan OS X App consists of two components:

  • A frontend to configure and control connections
  • A privileged helper daemon, controlled using XPC, called charon-xpc

The privileged helper daemon gets installed automatically using SMJobBless functionality on its first use, and gets started automatically by Launchd when needed.

charon-xpc is a special build linking statically against strongSwan components.

Building strongSwan

strongSwan on OS X requires the libvstr library. The simplest way to install it is using MacPorts. It gets statically linked to charon-xpc, hence it is not needed to run the built App.

Before building the Xcode project, the strongSwan base tree must be built using a monolithic and static build. This can be achieved on OS X by using:

LDFLAGS="-all_load"
CFLAGS="-I/usr/include -DOPENSSL_NO_CMS -O2 -Wall -Wno-format -Wno-pointer-sign"
./configure --prefix=/opt/local --disable-defaults --enable-openssl
--enable-kernel-pfkey --enable-kernel-pfroute --enable-eap-mschapv2
--enable-eap-identity --enable-monolithic --enable-nonce --enable-random
--enable-pkcs1 --enable-pem --enable-socket-default --enable-xauth-generic
--enable-keychain --enable-ikev1 --enable-ikev2 --enable-charon
--disable-shared --enable-static

followed by calling make (no need to make install).

Building charon-xpc using the Xcode project yields a single binary without any non OS X dependencies.

Both charon-xpc and the App must be code-signed to allow the installation of the privileged helper. git-grep for "Joe Developer" to change the signing identity.