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
+ LDFLAGS="-all_load" \
+ CFLAGS="-I/usr/include -DOPENSSL_NO_CMS -O2 -Wall -Wno-format -Wno-pointer-sign" \
+ ./configure --prefix=/opt/local --enable-monolithic \
+ --disable-shared --enable-static --disable-defaults \
+ --enable-openssl --enable-kernel-pfkey --enable-kernel-pfroute \
+ --enable-eap-mschapv2 --enable-eap-identity --enable-nonce \
+ --enable-random --enable-pkcs1 --enable-pem --enable-socket-default \
+ --enable-xauth-generic --enable-keychain --enable-charon \
+ --enable-ikev1 --enable-ikev2
followed by calling make (no need to make install).
on all connections use the following string dictionary keys/values:
* _type_: XPC message type, currently either
- * _rpc_ for a remote procedure call, expects a response
- * _event_ for application specific event messages
+ * _rpc_ for a remote procedure call, expects a response
+ * _event_ for application specific event messages
* _rpc_: defines the name of the RPC function to call (for _type_ = _rpc_)
* _event_: defines a name for the event (for _type_ = _event_)
defined:
* string version = get_version()
- * _version_: strongSwan version of charon-xpc
+ * _version_: strongSwan version of charon-xpc
* bool success = start_connection(string name, string host, string id,
- endpoint channel)
- * _success_: TRUE if initiation started successfully
- * _name_: connection name to initiate
- * _host_: server hostname (and identity)
- * _id_: client identity to use
- * _channel_: XPC endpoint for this connection
+ endpoint channel)
+ * _success_: TRUE if initiation started successfully
+ * _name_: connection name to initiate
+ * _host_: server hostname (and identity)
+ * _id_: client identity to use
+ * _channel_: XPC endpoint for this connection
The start_connection() RPC returns just after the initation of the call and
does not wait for the connection to establish. Nonetheless does it have a
to the App:
* string password = get_password(string username)
- * _password_: user password returned
- * _username_: username to query a password for
+ * _password_: user password returned
+ * _username_: username to query a password for
+
+And the following from the App to charon-xpc:
+
+* bool success = stop_connection()
+ * _success_: TRUE if termination of connection initiated
The following events are currently defined from charon-xpc to the App:
-* _up_: connection has been established
-* _down_: connection has been closed or failed to establish
+
+* up(): IKE_SA has been established
+* down(): IKE_SA has been closed or failed to establish
+* child_up(string local_ts, string remote_ts): CHILD_SA has been established
+* child_down(string local_ts, string remote_ts): CHILD_SA has been closed
+* log(string message): debug log message for this connection