VPN Plugins
Jump to navigation
Jump to search
As of 3.0.2, VPN plugins are stored in:
- /usr/lib/vpn/agents (VPNC and Cisco AnyConnect that ship with the device)
- /media/cryptofs/apps/usr/palm/vpnframework/agents (extra such as the PPTP plugin in the App Catalog)
They have the following structure (VPNC used as an example):
- /usr/lib/vpn/agents/vpnc/ (root directory)
- vpn-plugin-info.json
- library (e.g. libVpncAgent.so)
- other ancillary files (callback scripts, etc)
- plugins/ (does NOT seem to be necessary - VPNC plugin does not have this directory)
- plugin files (apparently only as necessary by the plugin library)
vpn-plugin-info.json
{
"title": "VPNC",
"id": "com.palm.vpnc",
"version": "0.5.1",
"vendor": "Palm, Inc.",
"type": ["IPSec"],
"plugin": "libVpncAgent.so"
}
Library
From objdump, it looks like the only symbols in common between every plugin are:
initVpnAgent cleanupVpnAgent bannerSent gLocalizedStrList
In addition to the expected symbols from GCC. And that's it. Signatures for these functions do not seem to be documented anywhere, and I suspect gLocalizedStrList is just an array which may not be required by PmVpnDaemon. No idea about bannerSent.
There are also calls to apparently-undocumented functions such as PmLogGetContext and PmLogPrint_. The VPNC and PPTP plugins link to:
root@HPTouchPad:/usr/lib/vpn/agents/vpnc# ldd libVpncAgent.so
/usr/lib/libgoodabort.so (0x2aac1000)
/usr/lib/libmemcpy.so (0x2aaca000)
libpthread.so.0 => /lib/libpthread.so.0 (0x2aadb000)
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x2aafb000)
libcjson.so => /usr/lib/libcjson.so (0x2abdb000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2abe9000)
libc.so.6 => /lib/libc.so.6 (0x2abfc000)
/lib/ld-linux.so.3 (0x54aaa000)
librt.so.1 => /lib/librt.so.1 (0x2ad3c000)
and the AnyConnect plugin links to:
root@HPTouchPad:/usr/lib/vpn/agents/ciscoanyconnect# ldd libVpnAcAgent.so
/usr/lib/libgoodabort.so (0x2abf8000)
/usr/lib/libmemcpy.so (0x2ac01000)
libpthread.so.0 => /lib/libpthread.so.0 (0x2ac12000)
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x2ac32000)
libxml2.so.2 => /usr/lib/libxml2.so.2 (0x2ad12000)
libcurl.so.4 => /usr/lib/libcurl.so.4 (0x2ae32000)
libz.so.1 => /usr/lib/libz.so.1 (0x2ae83000)
libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8 (0x2ae9f000)
libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0x2aee5000)
libcjson.so => /usr/lib/libcjson.so (0x2b028000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2b036000)
libc.so.6 => /lib/libc.so.6 (0x2b049000)
/lib/ld-linux.so.3 (0x54aaa000)
librt.so.1 => /lib/librt.so.1 (0x2b189000)
libdl.so.2 => /lib/libdl.so.2 (0x2b199000)
libm.so.6 => /lib/libm.so.6 (0x2b1a6000)
libWebOsProxy.so => /usr/lib/libWebOsProxy.so (0x2b21f000)
libcares.so.2 => /usr/lib/libcares.so.2 (0x2b22b000)
libpbnjson_cpp.so => /usr/lib/libpbnjson_cpp.so (0x2b240000)
libglibmm-2.4.so.1 => /usr/lib/libglibmm-2.4.so.1 (0x2b25a000)
libpbnjson_c.so => /usr/lib/libpbnjson_c.so (0x2b2a5000)
libyajl.so.1 => /usr/lib/libyajl.so.1 (0x2b2bf000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x2b2cd000)
libsigc-2.0.so.0 => /usr/lib/libsigc-2.0.so.0 (0x2b3a6000)
libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x2b3b2000)
libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0x2b3f6000)
So I'm not sure where those functions reside.