> For the complete documentation index, see [llms.txt](https://sandbox-docs.verifone.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sandbox-docs.verifone.com/adk-5.0-programmers-guide/readme/system_overview/pg_vos3_differences.md).

# VOS3 Main Differences and Migration from VOS1/VOS2

## Main Differences to VOS1/VOS2 <a href="#sec_vos3_differences" id="sec_vos3_differences"></a>

The following table provides summary on changes compared to existing VOS2 platform and lists potential impact to applications.

|    | Area                                          | Changes                                                                                                                                                                                                                                                                                                                                                                                                                        | Impacts                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| -- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1  | Packaging format and tools                    | <p>Control files are replaced by manifest (json) files describing the bundle and its packages.<br>Adapt package types to vos3 package types.</p>                                                                                                                                                                                                                                                                               | <p>Users to repackage applications with the new VOS3 packaging tools.<br>Notes:<br>- Bundles targeting read-only partitions (system\_ro & user\_ro) are not allowed to target the same file location on device (i.e. conflict). Installation will fail and report this error.<br>- Bundles must have unique names on the system. On vos1/vos2 bundles with different users could have same name. This was confusing and error prone. Installation and packaging will fail and report this error.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| 2  | Signing                                       | VOS3 will no longer support signing via signing cards, but only via online signing service.                                                                                                                                                                                                                                                                                                                                    | Need to use VF online signing methods.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| 3  | Compiler and Toolset                          | VOS3 will use newer compiler and tools for building applications. This is to enable more recent C/C++ standards                                                                                                                                                                                                                                                                                                                | <p>Users to update to the new Compiler and revise code as needed according to findings caused by stricter or different checks that come with changed tools.<br>Plan is to use gcc-Version 11.2.1 20220111 (GNU Toolchain for the Arm Architecture 11.2-2022.02 (arm-11.14))<br>- C++17 Support in GCC: GCC has almost full support for the previous revision of the C++ standard, which was published in 2017. Some library features are missing or incomplete, as described in the library documentation.<br>- C++20 Support in GCC: GCC has experimental support for the latest revision of the C++ standard, which was published in 2020. C++20 features are available since GCC 8. To enable C++20 support, add the command-line parameter -std=c++20 (use -std=c++2a in GCC 9 and earlier) to your g++ command line. Or, to enable GNU extensions in addition to C++20 features, add -std=gnu++20. Important: Because the ISO C++20 standard is very recent, GCC's support is experimental.<br>- Default is: Default ist #define \_\_cplusplus 201703L, meaning C++17 standard.</p> |
| 4  | Linux Kernel                                  | VOS3 will user newer revisions of the linux kernel. Also the Linux kernel revisions might be different between various products running VOS3.                                                                                                                                                                                                                                                                                  | Users will need to adjust to some potential (even though not expected) behavior changes of the underlying Linux system when using direct calls to the POSIX APIs of the system.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| 5  | A/B Images                                    | VOS3 will support A/B scheme for supporting both seamless updates and allow fallback to previous image of the system.                                                                                                                                                                                                                                                                                                          | <p>A VOS3 device will contain two versions of the installed software:<br>- "active" version (currently running)<br>- "fallback" version (previous version)<br>Thus, application executables, libraries and read-only resources will reside in the device in two versions (as for the system software itself). Each time an installation takes place, the current "fallback" version is lost, the current "active" version becomes the fallback and the newly installed version becomes "active" version.<br><br>To take advantage of this versioning, the read/write data storage for applications will come in two forms:<br>- "versioned data" : this storage is kept in two versions and will be restored as it was when falling back ("/home/usr1/versioned\_data")<br>- "flash" : this storage is not versioned and is thus common to all versions ("/home/usr1/flash")</p>                                                                                                                                                                                                         |
| 6  | Sysmode vs. VOS3 control panels               | VOS3 will have changed Sysmode Interface. Most of previous VOS1/VOS2 sysmode gets replaced with System applications for various purpose (e.g. Log Control Panel, Comms Control Panel, Power Panel, etc.).                                                                                                                                                                                                                      | No changes to applications expected, but operational differences.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| 7  | No VOS Private APIs                           | VOS3 will no longer support the VOS1/VOS2 private APIs. Older VOS services APIs have been deprecated and removed from VOS3 products.                                                                                                                                                                                                                                                                                           | Users need to revise their application code to use and comply with ADK APIs.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| 8  | No VSS Support                                | VOS3 will no longer support Verifone Secure Scripts (VSS).                                                                                                                                                                                                                                                                                                                                                                     | Users will need to adapt any security customization to make use of new Secure Interfaces for Key management or Key derivation using Verifone Customizable Crypto Interface (VCCI).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| 9  | No direct key loading                         | VOS3 will not support direct key loading APIs.                                                                                                                                                                                                                                                                                                                                                                                 | Users will need to migrate key all loading to VRK or make use of new Secure Interfaces for Key management using Verifone Customizable Crypto Interface (VCCI).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| 10 | Transparent Card Data and Card Reader Access  | VOS3 enforces card holder data protection by default through a system service called SDI that blocks transparent card data access and offers encrypted card data to transactions. This enables P2PE/PCI-SSF compliant support for VOS3 products.                                                                                                                                                                               | <p>Users can change behavior if needed by using one of the following methods:<br>- Configuration of BIN ranges that can be excluded from card holder data protection.<br>- Installation of extension regional/customer plug-ins that enable transparent card reader access<br>- Installation of vos3-cards plugin that offers VOS2 APIs and card data access compatible to VOS2</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| 11 | Flash partitions not using "synchronized I/O" | In VOS2, flash partitions were mounted with the "sync" option (aka "synchronized I/O"). This is a bottleneck of performance (cpu and io) for both system and applications. On VOS3, all flash partitions will not be mounted with that option. It is also strongly discouraged to use the sync() call in any part of the VOS3 system or applications as this synchronizes all files of all filesystems: thus very inefficient. | <p>An application that really needs a "transactional" behavior on a specific file can use one of the following methods:<br>- open the file with "O\_DSYNC": all writing to this file will be synchronized<br>- use fsync() on a file to synchronize</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| 12 | No ADK-SEC 1.x compatibility layer            | VOS3 will no longer support a compatibility layer for ADK-SEC 1.x APIs.                                                                                                                                                                                                                                                                                                                                                        | <p>Users still using ADK-SEC 1.x APIs need to revise their application code to use and comply with ADK 2.x APIs.<br>- ADK-SEC 1.x has been deprecated since ADK 4.5 and eventually removed in ADK 4.8.<br>- ADK-SEC 2.x has provided a compatibility layer with ADK-SEC 1.x interface (libseccmd.h) for the time of migration.<br>VOS3 will no longer support ADK-SEC 1.x APIs (neither native, nor in a compatibility layer). Users still using ADK-SEC 1.x APIs have to migrate to ADK-SEC 2.x APIs introduced since ADK 4.4. Applications already using ADK-SEC 2.x API will not be affected from this change.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| 13 | OpenSSL Update                                | VOS3 will update to OpenSSL v3 as this is the long-term supported release of OpenSSL. However, OpenSSL experied some incompatible changes when coming from earlier revisions of the library.                                                                                                                                                                                                                                   | Applications that use OpenSSL directly twill need to adapt their application code to comply with changed APIs in OpenSSL v3.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| 14 | ADK COM: PKCS#12 support                      | <p>Following ADK COM features will not be supported on VOS3:<br>- PKCS#12 files for Wifi Cert loading - replaced with VRK packages for secure loading of Wifi certs</p>                                                                                                                                                                                                                                                        | Applications to load Wifi certs using VRK packages.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| 15 | ADK COM: Analog Modem Support removed         | Analog Modem support (VOS3 products will not have any analog modem support. Only exception is FF base, but VOS3 will not support the analog modem in FF Base either)                                                                                                                                                                                                                                                           | No application impact.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| 16 | ADK COM: No Dial-up Networking Profile (DUN)  | No dial-up network support in VOS3. Neither internal dial-up modem (no HW) nor the dial-up modem in a connected FF base are supported any longer.                                                                                                                                                                                                                                                                              | no deployements with dial-up mode supported.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| 17 | ADK COM: STunnel API support removed          | STunnel APIs for SDI based external pinpads - replaced in SDI internally                                                                                                                                                                                                                                                                                                                                                       | <p>No application impact.<br>SDI external pinpad connection is transparent to applications.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| 18 | ADK COM: External Barcode reader              | Support for HID based external barcode readers removed                                                                                                                                                                                                                                                                                                                                                                         | no support of external barcode readers - use built-in camera or HW barcode decoder supported through ADK-GUI.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| 19 | Installation                                  | <p>- Apps cannot be installed without reboot<br>- new installer API</p>                                                                                                                                                                                                                                                                                                                                                        | No impact on applications. Applications implementing own download mechanisms are recommended to use the new installer API.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |

## Porting Guidelines <a href="#sec_vos3_porting_guidelines" id="sec_vos3_porting_guidelines"></a>

### VOS1/VOS2 Private APIs <a href="#subsec_vos3_vos12private_apis" id="subsec_vos3_vos12private_apis"></a>

No longer supported and deprecated since ADK 4.6. Use ADK APIs.

### Application Packaging <a href="#subsec_vos3_application_packaging" id="subsec_vos3_application_packaging"></a>

#### Translating VOS2 into VOS3 Package types <a href="#subsubsec_vos3_translating_vos2_into_vos3" id="subsubsec_vos3_translating_vos2_into_vos3"></a>

The following table provides guidance on translating VOS2 packages into VOS3 packages.

|                   |                                       |                                                                                                      |                                                                                                                                       |                                                                  |
| ----------------- | ------------------------------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
| VOS2 package type | VOS2 destination                      | Possible VOS3 package types                                                                          | VOS3 destination                                                                                                                      | Notes                                                            |
| user              | /home/\<user>/                        | user\_ro                                                                                             | /home/\<user>/                                                                                                                        |                                                                  |
| userflash         | /mnt/flash/userdata/\<user>/          | <p>system\_versioned\_data<br>system\_data<br>user\_versioned\_data<br>user\_data</p>                | <p>/mnt/sysdata/versioned/\<user>/<br>/mnt/sysdata/data/\<user>/<br>/mnt/appdata/versioned/\<user>/<br>/mnt/appdata/data/\<user>/</p> |                                                                  |
| userflashshare    | /mnt/flash/userdata/share/            | <p>share\_system\_versioned\_data<br>share\_user\_versioned\_data<br>share\_all\_versioned\_data</p> | <p>/mnt/sysdata/versioned/share/<br>/mnt/appdata/versioned/share/<br>/mnt/appdata/versioned/globalshare/</p>                          |                                                                  |
| userfont          | /mnt/flash/system/fonts/              | font\_ro                                                                                             | /usr/share/fonts/                                                                                                                     |                                                                  |
| config            | /etc/config/                          | <p>partial support<br>(sys\_<> can use system\_ro)<br>(usr\<X> can use user\_ro)</p>                 |                                                                                                                                       |                                                                  |
| flashconfig       | /mnt/flash/etc/config/                | <p>share\_system\_versioned\_data<br>share\_user\_versioned\_data<br>share\_all\_versioned\_data</p> | <p>/mnt/sysdata/versioned/share/<br>/mnt/appdata/versioned/share/<br>/mnt/appdata/versioned/globalshare/</p>                          | Global config is: /mnt/appdata/versioned/globalshare/etc/config/ |
| vss               | /etc/vss/\<user>/                     | not supported                                                                                        |                                                                                                                                       |                                                                  |
| unsigned          | /mnt/flash/userdata/\<user>/unsigned/ | user\_unsigned\_data                                                                                 | /mnt/appdata/data/\<user>/unsigned/                                                                                                   |                                                                  |

#### Application Manifests <a href="#subsubsec_vos3_application_manifests" id="subsubsec_vos3_application_manifests"></a>

With VOS3 all applications get launched using the Multi-Application Controller. Applications need to provide a manifest file for getting started by MAC. Details on manifest parameter and example JSON manifests are provided as part of the MAC documentation.

Both JSON and INI data format manifest files are compatible with VOS1/VOS2.

The JSON manifest files need to be packaged with the applications and will be installed to user's home directory:

```fragment
- /home/usr*/www
- /home/sys_*/www
```

Manifest file names should end with **.mft**

#### VHQ Manifest <a href="#subsubsec_vos3_vhq_manifest" id="subsubsec_vos3_vhq_manifest"></a>

* New dlfile.mfg (packaged into dlfile.mft.tgz as part of the dlfile.tar)
* JSON formatted file similar to Engage.mfg on VOS2
  * Some field will be different
* dlfile.mfg will be auto-generated by packman - no need to add Engage.mfg manually

### ADK MAC (Multi-application Controller) <a href="#subsec_vos3_adk_mac_compatibility" id="subsec_vos3_adk_mac_compatibility"></a>

{% hint style="warning" %}
MAC is a mandatory component on VOS3. Any application on VOS3 needs to provide a corresponding MAC manifest file to configure the appliaction for launching. This allows also to let MAC launch applications automatically to avoid manual start from MAC desktop.
{% endhint %}

MAC is a display controller daemon. It provides application developers a way to start/stop applications and controls treir visibility.

#### API compatibility <a href="#subsubsec_vos3_mac_api_compatibility" id="subsubsec_vos3_mac_api_compatibility"></a>

All APIs supported as on VOS1/VOS2.

#### Launching via Multi-Application Controller (MAC) <a href="#subsubsec_vos3_launching_mac" id="subsubsec_vos3_launching_mac"></a>

With VOS3 all applications get launched using the Multi-Application Controller. This enables:

* auto-launching of applications and services
* manual launch from desktop
* assignment of UI resources for applications
* switching between applications
* access to system control panels

{% hint style="warning" %}
There is no support outside of MAC launching for applications. Applications should use following API for that:

* [sysLaunchApp()](/adk-5.0-programmers-guide/readme/modules/group__mac/namespacevfimac.md#a52ed11c68234a6abcf53fa5edd596729) - run application by it's name in manifest file
* [sysLaunchAppid()](/adk-5.0-programmers-guide/readme/modules/group__mac/namespacevfimac.md#a77748eeae43d8b50145564d0022ad886) - run application by it's identifier in manifest file
  {% endhint %}

#### Hotkey combinations <a href="#subsubsec_vos3_mac_hotkey_combinations" id="subsubsec_vos3_mac_hotkey_combinations"></a>

| Key combination            | Action                                |
| -------------------------- | ------------------------------------- |
| X + 1                      | starts Control Panel                  |
| X + 3                      | shows MAC Desktop                     |
| 1 + 5 + 9                  | shows MAC Desktop                     |
| 1 + 5 + 9 (on MAC desktop) | sysmode is no more available on VOS3! |

#### Manifests <a href="#subsubsec_vos3_mac_manifests" id="subsubsec_vos3_mac_manifests"></a>

Application developers describe how MAC should handle their applications by providing a manifest file.

Manifests are text files, whose names ends with .mft

Manifest is accepted in JSON or INI data formats, as it was on previous VOS versions.

MAC is looking for manifest files in the following locations:

```fragment
- /home/usr*/www
- /home/sys_*/www
```

MAC manifest example:

```cpp
[application]
id=mac_demo1
version=3.83.15
statusbar=y
app_resource_dir=mac_demo1
depends=mac_demo2;mac_demo3;
recover=n
[desktop]
label=mac_demo1
icon=mac_demo1/default/verifone-icon.png
cmdline=../mac_demo1
args=r1d2 r2d3
[autolaunch]
cmdline=../mac_demo1
start_hidden=y
```

{% hint style="warning" %}
MAC manifest is not the same thing as installable package manifest.
{% endhint %}

#### Sample MAC application package <a href="#subsubsec_vos3_mac_sample_app" id="subsubsec_vos3_mac_sample_app"></a>

```cpp
mac_sample
├── mac_demo1
│ ├── mac_demo1 Applicatyion binary
│ └── www
│ ├── mac_demo1
│ │ ├── 128x64M16N Specific screen resolution resources
│ │ │ ├── gui.ini
│ │ │ ├── mainmenu.html
│ │ └── default default GUI resources
│ │ ├── default-icon.png
│ │ ├── gui.ini
│ │ ├── mainmenu.html
│ └── mac_demo1.mft MAC manifest
└── manifest.json Packman manifest file
```

### ADK-LOG (Logging) <a href="#subsec_vos3_adk_log_compatibility" id="subsec_vos3_adk_log_compatibility"></a>

#### API compatibility <a href="#subsubsec_vos3_log_api_compatibility" id="subsubsec_vos3_log_api_compatibility"></a>

All APIs supported as on VOS1/VOS2.

### ADK-IPC (Inter-Process Communication) <a href="#subsec_vos3_adk_ipc_compatibility" id="subsec_vos3_adk_ipc_compatibility"></a>

#### API compatibility <a href="#subsubsec_vos3_ipc_api_compatibility" id="subsubsec_vos3_ipc_api_compatibility"></a>

All APIs supported as on VOS1/VOS2.

### ADK-INF (Information Database Service) <a href="#subsec_vos3_adk_inf_compatibility" id="subsec_vos3_adk_inf_compatibility"></a>

#### API compatibility <a href="#subsubsec_vos3_inf_api_compatibility" id="subsubsec_vos3_inf_api_compatibility"></a>

All APIs supported as on VOS1/VOS2.

### ADK-EVT (Event Service) <a href="#subsec_vos3_adk_evt_compatibility" id="subsec_vos3_adk_evt_compatibility"></a>

#### API compatibility <a href="#subsubsec_vos3_evt_api_compatibility" id="subsubsec_vos3_evt_api_compatibility"></a>

All APIs supported as on VOS1/VOS2.

### ADK-COM (Network Setup and Communications) <a href="#subsec_vos3_adk_com_compatibility" id="subsec_vos3_adk_com_compatibility"></a>

#### API compatibility <a href="#subsubsec_vos3_com_api_compatibility" id="subsubsec_vos3_com_api_compatibility"></a>

In general all ADK-COM APIs are supported same way as on previous VOS1/VOS2 platform.

Following deprecations/extensions are applicable for VOS3:

* any analogue modem related device properties and connection profiles are not supported
  * e.g. COM\_PROP\_RAW\_MODEM\_CURRENT\_MODULATION
* no support for external BC reader using USB HID
  * i.e. serial connection profile with por BC\_READER. Serial devices using dynUSB can still be used.
* not supported API support for STunnel on VOS3. This configuration option for a "2-piece" PIN pad use-case is replaced by SDI EPP/EPM.
  * com\_SetStunnelConfig
* new APIs for iBeacon- recommended to be used with VOS3
  * [com\_IBeaconGetAdvertisement()](/adk-5.0-programmers-guide/readme/files/dir_33381b8c0566c9eb2048a95e4cccf925/dir_e4c66e267a8c8e9ea5ad4dbe1baeabc7/libcom_8h.md#a2c13209f2854692dc63309551fdc3de1)
  * [com\_IBeaconSetAdvertisement()](/adk-5.0-programmers-guide/readme/files/dir_33381b8c0566c9eb2048a95e4cccf925/dir_e4c66e267a8c8e9ea5ad4dbe1baeabc7/libcom_8h.md#acba33f21f870bf27b8e62a600ec1be17)
  * [com\_IBeaconStartAdvertisement()](/adk-5.0-programmers-guide/readme/files/dir_33381b8c0566c9eb2048a95e4cccf925/dir_e4c66e267a8c8e9ea5ad4dbe1baeabc7/libcom_8h.md#a4808892fb28569f7f949fa14aa103ef6)
  * [com\_IBeaconStopAdvertisement()](/adk-5.0-programmers-guide/readme/files/dir_33381b8c0566c9eb2048a95e4cccf925/dir_e4c66e267a8c8e9ea5ad4dbe1baeabc7/libcom_8h.md#a35633db6e2632562eff1452a5207408d)
* new APIs for Eddystone Beacon - recommended to be used with VOS3
  * [com\_EddystoneURLGetAdvertisementExt()](/adk-5.0-programmers-guide/readme/files/dir_33381b8c0566c9eb2048a95e4cccf925/dir_e4c66e267a8c8e9ea5ad4dbe1baeabc7/libcom_8h.md#a3163590cfa3a4ff5ff6cb5efb708883b)
  * [com\_EddystoneURLSetAdvertisementExt()](/adk-5.0-programmers-guide/readme/files/dir_33381b8c0566c9eb2048a95e4cccf925/dir_e4c66e267a8c8e9ea5ad4dbe1baeabc7/libcom_8h.md#a7eab5f7f7382383034c0b37d63d044ec)

#### Communication and Network Descriptors <a href="#subsubsec_vos3_com_and_network_descriptors" id="subsubsec_vos3_com_and_network_descriptors"></a>

VOS3 continues to use the same format and parameter for ADK connection and network profiles. Exeption: connection and network profiles for modem (MDM\_INT, BT\_DUN) and external barcode reader (BC\_READER).

#### Custom Certificate Loading and pre-loaded authentication key <a href="#subsubsec_vos3_com_custom_cert_loading" id="subsubsec_vos3_com_custom_cert_loading"></a>

VOS3 will no longer support loading certificates for TLS, Wifi EAP and LAN 802.1x using PKCS#12 files.

The system now supports secure loading of these certificates using VRKv2. The loaded certificates will be stored securely in the system and can be referenced by the SSL\_OWN\_CERT and SSL\_OWN\_KEY parameter with "vault:\<keyname>" in the related connection profile for TLS or network profile for Wifi or LAN. The \<keyname> needs to match the name of the loaded certificate / key used in the VRKv2 package.

The preloaded Authentication Key (Authex/ AuthN) / warranty key can be referenced using "vault:" as a name for SSL\_OWN\_CERT and SSL\_OWN\_PKEY.

#### Network Startup and Recovery handling <a href="#subsubsec_vos3_com_network_startup" id="subsubsec_vos3_com_network_startup"></a>

Unlike VOS1/VOS2, the VOS3 system always implements an auto start and recovery for configured networks. With this the VOS3 system will always:

* BT: try to re-establish connection via BT-PAN to the previously connected device when coming back in range
* Wifi: try to re-establish Wifi connection to the previously connected SSID or other in-range configured SSID when coming back in range
* Cellular: try to re-establish connection to the previously connected mobile network
* LAN: try to re-establish connection to the previously connected LAN network

The previous support for manual configuration of recovery handling using load packages is deprecated (previous: dl.comcfg-no-rc-1.0.0.tgz and dl.comcfg-no-rc-remove-1.0.0.tgz packages).

#### Network Diagnose Functions <a href="#subsubsec_vos3_com_network_diagnose_functions" id="subsubsec_vos3_com_network_diagnose_functions"></a>

Comunication Control Panel (CCP) supports network diagnose (ping sequence, NSLookup, connection test to remote host, extended http server tests).

CCP also supports manual network restart for trouble shooting.

Since VOS3 no longer supports Sysmode, CCP needs to be extended by a couple of diagnostics and communication related information previously provided by VOS2 Sysmode.

#### Changes in configuration files <a href="#subsubsec_vos3_com_changes_in_config_files" id="subsubsec_vos3_com_changes_in_config_files"></a>

Any user generated configuration for ADK-COM / CCP need to be regenerated with the new VOS3 packaging system using type flashconfig. e.g. the location is changed to /mnt/appdata/versioned/globalshare/etc/config/adk-com.

### ADK-GUIPRT (HTML Rendering, Video playback, Barcode Scanner) <a href="#subsec_vos3_adk_guiprt_compatibility" id="subsec_vos3_adk_guiprt_compatibility"></a>

#### API compatibility <a href="#subsubsec_vos3_guiprt_api_compatibility" id="subsubsec_vos3_guiprt_api_compatibility"></a>

All APIs supported as on VOS1/VOS2.

#### HTML / CSS Resource files <a href="#subsubsec_vos3_guiprt_html_css_resource_files" id="subsubsec_vos3_guiprt_html_css_resource_files"></a>

* As on VOS1/VOS2 resource files are expected to be stored in www in the home of the user. Depending on manifest configuration this is
  * /home/\<user>/www/\<resourcedir>
  * /home/\<user>/www/\<appdir>/\<resourcedir>
* \<appdir> depends on MAC manifest configuration
* \<resourcedir> is handled the same way as on VOS1/VOS2, it can be the model name (e.g. P630) or based on display resolution and keypad, e.g. 320x480C15T
* Since VOS3 no longer is using Grsecurity, setting up file permissions when packaging resource files is slightly different as on VOS1/VOS2: Files need to be in group share instead of group system.
  * Using makepackage3 use "--group share"
  * Directly preparing a Packman manifest, it looks like this:

```cpp
{
"name":"demo",
"version":"1.2.3",
"user":"usr1",
"software_platforms":["vos3"],
"packages":[{
   "name":"executable",
   "type":"user_ro"
},{
   "name":"resource",
   "group":"share",
   "type":"user_ro"
}],
"signers":["SPONSOR"]
}
```

{% hint style="info" %}
group "share" shares the resource files with all users. Depending on context, group "usr1sys" ("usr2sys" for usr2, ...) may also be used.
{% endhint %}

#### Video files <a href="#subsubsec_vos3_guiprt_video_files" id="subsubsec_vos3_guiprt_video_files"></a>

As on VOS1/VOS2 mplayer is used for playing videos. The supported video formats depend on those supported by mplayer.

#### Barcode scanning <a href="#subsubsec_vos3_guiprt_barcode" id="subsubsec_vos3_guiprt_barcode"></a>

Barcode scanning works the same as on VOS1/VOS2 (use \<input type="barcode" ....>)

#### Adding fonts <a href="#subsubsec_vos3_guiprt_adding_fonts" id="subsubsec_vos3_guiprt_adding_fonts"></a>

Fonts may be installed using font packages. For this set the type of the package to "font\_ro". This takes care of generating the required fonts.dir file so that the font can be found later on.

### ADK-PRX (CPR proxy to access Verifone webservices) <a href="#subsec_vos3_adk_prx_compatibility" id="subsec_vos3_adk_prx_compatibility"></a>

#### Prerequisites <a href="#subsubsec_vos3_prx_prequisites" id="subsubsec_vos3_prx_prequisites"></a>

* VOS3 support added with version 3.0.5
* Requires at least ADKIPC 1.26.0

#### Compatibility <a href="#subsubsec_vos3_prx_compatibility" id="subsubsec_vos3_prx_compatibility"></a>

* API compatibility: Pure service, no APIs as on VOS1/VOS2
* Interface compatibility: All interfaces (listen port, config interface) supported as on VOS1/VOS2
* Package format: Package format changed, but same naming for base and activation packages
* Features: Same code base as on VOS1/VOS2, thus, the same features are provided

#### No support for old CG endpoints <a href="#subsubsec_vos3_prx_cg_endpoints" id="subsubsec_vos3_prx_cg_endpoints"></a>

* Support for old CG endpoints (dev.cgateway.verifone.com, test.cgateway.verifone.com, staging1.cgateway.verifone.com, cgateway.verifone.com) was dropped.

  <div data-gb-custom-block data-tag="hint" data-style="warning" class="hint hint-warning"><p>CG endpoints from now are deprecated!</p></div>
* ADKPRX base package only installs GSC endpoints as default environments
* Last option to use CG endpoints with version 3.5.0 is the installation of an user config package on top of ADKPRX (sample user config package coming along with ADKPRX documentation)

  <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p>Customers are advised to do this for testing purposes only. Do NOT use old CG endpoints for productive installations, since old CG environment endpoints will go offline sooner or later.</p></div>
* Old ADKs might can still use version 3.0.50 (VOS/VOS2 only), which still contains CG endpoints, but also these installations should move to GSC soon

#### User config packages <a href="#subsubsec_vos3_prx_user_config_packages" id="subsubsec_vos3_prx_user_config_packages"></a>

* Cloudproxy uses the same configuration files for all platforms (VOS/VOS2 and VOS3)
* VOS3 platform uses a different package format and installation location on target
* Wheras VOS/VOS2 has used global folder `/etc/config/proxy`, on VOS3 configuration files are looked up under `/home/usr` \<X>/proxy: At startup ADK cloudproxy checks for the existence of the folder with included files starting from `usr1` up to `usr16`. If there are related files found under a specific user, this user directory is applied as source for user configuration files. This means, the first user providing the files wins, other users with higher user numbers will be ignored.
* Since VOS3 no longer is using Grsecurity, setting up file permissions when packaging files is slightly different as on VOS1/VOS2: User config packages must use group `usr<X>sys` with type `user_ro` (instead VOS/VOS2 has used group share and type `config`.

For details please read documentation coming along with package `prx-doc-X.X.X-X.zip` with the ADK Cloud Proxy release.

### ADK-SND (Sound Playback) <a href="#subsec_vos3_adk_snd_compatibility" id="subsec_vos3_adk_snd_compatibility"></a>

#### API compatibility <a href="#subsubsec_vos3_snd_api_compatibility" id="subsubsec_vos3_snd_api_compatibility"></a>

* All APIs supported as on VOS1/VOS2.
* Same WAV and MP3 files can be reused on VOS3.

### ADK-Cards (Card Acceptance, Processing and EMV kernels) <a href="#subsec_vos3_adk_cards_compatibility" id="subsec_vos3_adk_cards_compatibility"></a>

#### API compatibility <a href="#subsubsec_vos3_cards_api_compatibility" id="subsubsec_vos3_cards_api_compatibility"></a>

Migrating from VOS2 to VOS3 requires to migrate to Secure Data Interface (SDI) as SDI will be no longer an optional component on VOS3 systems. To simplify migration VOS3 introduced a new SDI client library (libSDIClient) that exports existing Cards/EMV APIs similar to ADK on VOS2. The provided VOS3 libSDIClient includes

* ADK\_EMV CT functions
* ADK EMV CTLS functions
* ADK-MSR functions
* ADK-NFC functions
* ADK-TEC functions

#### Transparent L1 card reader access APIs <a href="#subsubsec_vos3_cards_transparent_l1_card_reader_api" id="subsubsec_vos3_cards_transparent_l1_card_reader_api"></a>

On VOS3 specifically the libSDIClient also provides the transparent L1 access together with loading a specific SDI Plugin for VOS3 called vos3-cards. This of course must not be loaded when using SDI in headed mode and/or with external connections. The SDI Plugin will add all the VOS/VOS2 APIs back on VOS3 and must be loaded / used in VOS3 application projects whenever transparent card reader access is required. All these legacy APIs for transparent access will then be available also in SDI environment on VOS3. Transaction data fetching functions (including cardholder sensitive data) such as [EMV\_CT\_fetchTxnTags()](/adk-5.0-programmers-guide/readme/modules/group___a_d_k___t_r_x___e_x_e_c___c_t/group___f_u_n_c___f_l_o_w___c_t.md#gab005fdec183a0c8fef18ae677cce6dc5) or [EMV\_CTLS\_fetchTxnTags()](/adk-5.0-programmers-guide/readme/modules/group___a_d_k___t_r_x___e_x_e_c___c_t_l_s/group___f_u_n_c___f_l_o_w___c_t_l_s.md#ga8c9f0640ed818c3dc19da528f5f0b406) will also be fully supported when the specific vos3-cards plugin is loaded.

#### Card Acceptance APIs (ADK-TEC) <a href="#subsubsec_vos3_cards_acceptance_api" id="subsubsec_vos3_cards_acceptance_api"></a>

Although ADK-TEC APIs will be moved forward too, it is recommended to be replaced by the SDI card detection. This is due to the nature of the architecture of VOS3 terminals where parallel access to physical readers is restricted due to the command response interface to the K81, which will result in a different timing. The underlying K81 on VOS3 (and Android systems) has a single serial connection to the K81 main processor, where access must be controlled and organized (e.g. by SDI). Polling from multiple application threads and tasks on various hardware pieces on K81 side, e.g. CT / CTLS / MSR and other K81 resources in parallel may result in deviations from VOS2. All ADK-TEC features are covered with the SDI card detection and can be used in the 23-01 (synchronous) and 23-03 (asynchronous) card detection. For details, please refer to the SDI documentation. Both commands (23-01 and 23-03) are of course part of the libSDIClient. Your ADK-TEC calls can be replaced by these functions.

#### General migration strategy towards SDI <a href="#subsubsec_vos3_cards_general_migration" id="subsubsec_vos3_cards_general_migration"></a>

Currently the following type of solutions exist on VOS2:

* TYPE1: Plain ADK/VOS2 implementations, not making use of SDI today
* TYPE2: VOS2 implementations that are based on SDI and use the libSDIClient already, but still DO bypass SDI with direct ADK calls (i.e. do use not existing SDI functionality of ADK-CARDS )
* TYPE3: Implementations that are based on SDI and use the libSDIClient already but do NOT bypass SDI. Those implementations are also Android (Trinity and NEO) compliant

\[Migration for Type 1]{.underline}: As explained in detail above. Use libSDIClient and load the plugin. The APIs for card handling are available in the same way as in VOS1/VOS2. **You are getting the payment/sensitive data in clear as on VOS2. You can NOT make use of the SDI P2PE certification.** You may want to consider to migrate from ADK-TEC to the SDI Card Detection (23-01 / 23-03), which is part of the libSDIClient APIs.

\[Migration for TYPE 2]{.underline}: This is similar to TYPE 1. Instead of directly calling the VOS1/VOS2 ADK functions you will now simply call the counterpart functions of the libSDIClient (names and APIs will be the same), so nothing to do on application level. **The SDI plugin for VOS3 enables that you to get the payment/sensitive data in clear as on VOS2. You can NOT make use of the SDI P2PE certification.** You may want to consider to migrate from ADK-TEC to the SDI Card Detection (23-01 / 23-03), which is part of the libSDIClient.

\[Migration for TYPE 3]{.underline}: You are already fully compliant to SDI. Please do **NOT** load the new SDI Plugin for VOS3. This way sensitive data is protected. **You are NOT getting the payment/sensitive data in clear as on VOS2. You CAN make use of the SDI P2PE certification. There is no need to change your existing VOS/VOS2 SDI solution on VOS3.**

#### EMV L1/L2 Kernels on Neo Platforms (Android vs. VOS3) <a href="#subsubsec_vos3_cards_emv" id="subsubsec_vos3_cards_emv"></a>

The same type-approved EMV kernels for CT and CTLS (L1 and L2) are used on Neo HW platforms between VOS3 and Android operating systems. Thus the emv\_allowed.xml and the emv\_desired.xml can be used for both OS variants with the same kernels, same LOAs and same certifications. The emv\_desired.xml configuration files on VOS3 has same format as on VOS1/VOS2.

**Note on P630 and P630-2 units:**

* earlier "P630" products had a different CTLS1 HW architecture compared to "P630-2" - for this reason new L1/L2 certifications are provided for P630-2 hardware
* VOS3 will only run on P630-2 units, while Android can run on both P630 and P630-2
* Please make sure you configure the correct L1/L2 kernels for VOS3 on P630-2

**All other future Neo devices that can run VOS3 or Android will share the same L1 and L2 approvals between VOS3 and Android/NEO as long as the hardware has not deviations in the CTLS L1 architecture.**

#### Customizations <a href="#subsubsec_vos3_cards_customizations" id="subsubsec_vos3_cards_customizations"></a>

SDI supports customizations with SDI plugins. These plugins enable extensions and specific card schemes handling.

{% hint style="info" %}
**Customization Plugins** Customization Plugins for SDI can be provided to implement specific card processing extensions. Please work with Verifone Platform SW group on specific requirements and implementation plan.
{% endhint %}

### ADK SEC (Security) <a href="#subsec_vos3_adk_sec_compatibility" id="subsec_vos3_adk_sec_compatibility"></a>

#### API compatibility <a href="#subsubsec_vos3_sec_api_compatibility" id="subsubsec_vos3_sec_api_compatibility"></a>

* VOS3 will no longer support a compatibility layer for ADK-SEC 1.x APIs.
* VOS1/VOS2 ADK SEC transaction data APIs will no longer be supported with VOS3 - now implemented through SDI directly
* extended secSetKSId parameter for MSK handling (optional for non-MSK handling)

#### SDI as Security Provider on VOS3 <a href="#subsubsec_vos3_sec_sdi_as_sec_provider" id="subsubsec_vos3_sec_sdi_as_sec_provider"></a>

Unlike VOS1/VOS2 the ADK SEC interface is provided through SDI service that works with the security processor directly for all security functions. There is no scapp2 daemon on VOS3.

Applications continue to link against libsec2.so as a client library and this library connects to SDI.

#### Key Identification <a href="#subsubsec_vos3_sec_key_identification" id="subsubsec_vos3_sec_key_identification"></a>

Unlike VOS1/VOS2, keys in VOS3 are identified by a unique name. Keys are identified by a unique name across all loaded keys including pre-loaded warrantied keys.

The use of former VOS1/VOS2 key slot IDs as unique key names is not recommended but speaking key names are suggested.

#### Supported Schemes and Algorithms - Comparing to VOS1/VOS2 <a href="#subsubsec_vos3_sec_supported_schemas" id="subsubsec_vos3_sec_supported_schemas"></a>

When migrating from VOS1/2 to VOS3 the following changes needs to be considered when configuring security engines and related operations:

{% hint style="info" %}
Supported Modules and Operations by Platform: ENC=secEncryptData, DEC=secDecryptData, SIG=secSign, VFY=secVerify, PIN=secRetrieveEncryptedPIN, UPD=secUpdateKey
{% endhint %}

| **Engine**                                    | **VOS**                                                                                                       | **VOS2**                                                                                                      | **VOS3**                                     | **Notes**                                                                                                                                         |
| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| Verishield Security Scripts (VSS)             | VSS: all operation                                                                                            | VSS: all operation                                                                                            | --                                           | - VOS3: replaced with VCCI, new Key Mgmt APIs                                                                                                     |
| Verifone Customizable Crypto Interface (VCCI) | --                                                                                                            | --                                                                                                            | X                                            | - requires a Verifone signed SDI plug-in for VCCI extensions                                                                                      |
| Triple-DES Master-/Session-Key                | <p><strong>IPPmsk:</strong> PIN, SIG, UPD<br>UPD key in GISKE format</p>                                      | <p><strong>IPPmsk:</strong> PIN, SIG, UPD<br>UPD key in GISKE format</p>                                      | **TDES-MSK**: PIN, ENC, DEC, SIG, VFY, UPD   | <p>- Master-Session Scheme Support, but no support for older IPP GISKE keyblock format<br>- PIN: SDI will provide PAN for ISO format #0 or #3</p> |
| Triple-DES Fixed Key                          | --                                                                                                            | --                                                                                                            | **TDES-FIXED**: ENC, DEC, SIG, VFY           | - PIN encryption with fixed keys not allowed!                                                                                                     |
| Triple DES-DUKPT                              | <p><strong>IPPdukpt:</strong> PIN<br><strong>ADE:</strong> ENC<br><strong>SREDMAC:</strong> SIG, VFY, UPD</p> | <p><strong>IPPdukpt:</strong> PIN<br><strong>ADE:</strong> ENC<br><strong>SREDMAC:</strong> SIG, VFY, UPD</p> | **TDES-DUKPT**: PIN, ENC, DEC, SIG, VFY, UPD | <p>- UPD=manual increment of Key Serial Number (KSN)<br>- PIN: SDI will provide PAN for ISO format #0 or #3</p>                                   |
| AES - DUKPT                                   | --                                                                                                            | **AES:** PIN, ENC, DEC, SIG, VFY, UPD                                                                         | **AES-DUKPT**: PIN, ENC, DEC, SIG, VFY, UPD  | <p>- UPD=manual increment of Key Serial Number (KSN)<br>- PIN: PIN-Block Format #4 only<br>- Data: ECB and CBC mode<br>- MAC: CMAC only</p>       |
| RSA Operations                                | **RSA:** ENC, DEC, SIG, VFY                                                                                   | **RSA:** ENC, DEC, SIG, VFY                                                                                   | **RSA:** ENC, DEC, SIG, VFY                  | - allows use of AUTHN warrantied key                                                                                                              |
| SDI Secured File Storage (Crypto-RW)          | X                                                                                                             | X                                                                                                             | X                                            | - invalidates file content on tamper (no decryption possible)                                                                                     |
| Verishield Protect (VSP/VCL)                  | X                                                                                                             | X                                                                                                             | X                                            | - configured separately outside of SDI, not a module name                                                                                         |

#### SDI Security Configuration File <a href="#subsubsec_vos3_sdi_sec_config_file" id="subsubsec_vos3_sdi_sec_config_file"></a>

In general VOS3 continues to use the same sccfg.json security configuration file format as used in earlier VOS1/2 for SDI and ADK-SEC.

SDI security configuration needs to be adapted for VOS3. Following items need to be checked:

* key names (as per new unique name in the VRK loading package)
* security module type (as per above table)

Unlike VOS1/2 the security configuration file is no longer provided in the user home path of the application. For VOS3 the security configuration has to be loaded with SDI user config package.

{% hint style="info" %}
**Key Usage Checks.** The secure processor performs key usage checks for each crypto operation. That means VRK payloads have to be provided with proper key usage and mode according their intended usage. Keys with improper settings will be rejected by operations.
{% endhint %}

#### Replacement for VSS Scripts <a href="#subsubsec_vos3_vss_replacement" id="subsubsec_vos3_vss_replacement"></a>

On VOS1/VOS2 Verifone Security Scripts (VSS) support was available and had been used by some applications for various security operations including

* direct key loading, key derivation
* PIN block generation
* custom encryption, MACing
* etc.

On VOS3 there is no support for no support for direct key loading, but VRK key loading is the default key loading mechnism.

However, if customizations are required, VOS3 provides new mechanisms for that purpose

* Verifone Customizable Crypt Interface (VCCI)
* Extended Key Management Mechanisms

{% hint style="info" %}
**Customization Plugins.** Customization Plugins for SDI can be provided to implement specific key derivation or custom key management solution.
{% endhint %}

## Development environment for VOS3 Application Developers <a href="#vos3_sec_dev_environment" id="vos3_sec_dev_environment"></a>

Developers use system development kit for developing applications. This includes the following:

| **Item**                                    | **Contents**                                                                   |
| ------------------------------------------- | ------------------------------------------------------------------------------ |
| VOS3 build tools                            | <p>- gcc compiler<br>- gcc build tools</p>                                     |
| VOS3 host debug tools                       | - gdb debugger                                                                 |
| VOS3 device debug tools                     | - debug tools download package (dropbear, gdb, gdbserver, strace, etc.)        |
| VOS3 packaging and development signing tool | - packman                                                                      |
| VOS3 system download files                  | - VOS3 system download files for system update                                 |
| VOS3 / ADK APIs                             | - ADK headers, link libraries                                                  |
| ADK Documentation                           | <p>- ADK release notes<br>- ADK component programmers guides<br>- examples</p> |

### ADK API Libraries <a href="#vos3_adk_api_libraries" id="vos3_adk_api_libraries"></a>

Application use API prototypes from provided headers files and link against the ADK libraries to use

| **Component** | **Client** Libraries                                                                                                                                   | **Client** Header Files                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| ADK GUIPRT    | - libvfiguiprt.so                                                                                                                                      | <p>- <a href="/pages/B5e4tbCmq1WOw4S3DQSJ">html/gui.h</a><br>- <a href="/pages/qyVkESXQTxGORlCbvIFh">html/prt.h</a></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| ADK IPC       | <p>- libvfiipc.so<br>- libvfiipctls.so</p>                                                                                                             | <p>- <a href="/pages/Iy9HvAtBRuOfvX9BOgUG">ipc/ipc.h</a><br>- <a href="/pages/yDPPJ4gMEmUtE6YlpWew">ipc/notify.h</a><br>- <a href="/pages/8R8eMgGToBxQujRgp3L7">ipc/jsobject.h</a><br>- <a href="/pages/zVLOLQXjxs7fqkwaQ4z2">ipc/tls.h</a></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ADK COM       | - libcom.so                                                                                                                                            | <p>- com/libcom.h<br>- com/libcom3.h</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ADK CCP       | - libccp.so                                                                                                                                            | - com/libccp.h                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ADK MAC       | <p>- libvfimac.so<br>- libvficpr.so</p>                                                                                                                | - [sysinfo/mac.h](/adk-5.0-programmers-guide/readme/files/dir_e65d4d0c0ba9865676ee3897978ecbf1/dir_517ad9dc307a0538d3e19e98627cc0af/dir_619a55c4c313d761d1f6a99da403e1c9/mac_8h.md)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ADK PM        | - libvfisyspm.so                                                                                                                                       | - [sysinfo/vfisyspm.h](/adk-5.0-programmers-guide/readme/files/dir_2fa442697ca4f3ad26ee86a05c70c5ba/dir_8c98103bf86c0a8e400b3720f3ef5f71/dir_c6564d074bdc7edceae1f5f34995b8b1/vfisyspm_8h.md)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| ADK EMV       | <p>- libEMV\_CTLS\_Client.a<br>- libEMV\_CT\_Client.a<br>- libEMV\_CT\_Link.so<br>- libEMV\_CTLS\_Link.so<br>- libsdiclient.a<br>- libTLV\_Util.so</p> | <p>- <a href="/pages/2qexDpvbPZWyOSlA4Lcn">emv/EMV\_Common\_Interface.h</a><br>- <a href="/pages/Ae5HSeEzsdjCGwQyrZwF">emv/EMV\_CT\_Interface.h</a><br>- <a href="/pages/WyeQRkd7KhknBLsw6h7l">emv/EMV\_CTLS\_Interface.h</a><br>- <a href="/pages/ftok5DKvhv1A475fbInb">emv/EMV\_CT\_SerInterface.h</a><br>- <a href="/pages/NAC9w0fSjYEej1LmbkNG">emv/EMV\_CTLS\_SerInterface.h</a><br>- <a href="/pages/mjNzq5Lp9UgolS6OpXcz">emv/E2E\_EMV\_CT\_Serialize.h</a><br>- <a href="/pages/lophvEszM9azl9N7xnAY">emv/E2E\_EMV\_CTLS\_Serialize.h</a><br>- <a href="/pages/ODp3OTElkZiZ4Bcaawtx">emv/btlv.h</a><br>- <a href="/pages/RXHNgGJoDZF46EtLjX1n">emv/EMV\_CT\_XML.h</a><br>- <a href="/pages/IJ2XbdOkGEMshzBcZU55">emv/EMV\_CTLS\_XML.h</a><br>- <a href="/pages/lAkYBJnLTDTPDxMdiPLh">emv/hexutil.h</a></p> |
| ADK MSR       | - libsdiclient.a                                                                                                                                       | - msr/msr.h                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ADK TEC       | - libsdiclient.a                                                                                                                                       | - [tec/tec.h](/adk-5.0-programmers-guide/readme/files/dir_c2b6fb90cbe225a4c7f5c562006e9b78/dir_797c2eec9d33c0e51d543580c2b239ca/dir_fa87c044aa590573d847d8ba2d3b48c1/tec_8h.md)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ADK NFC       | - libsdiclient.a                                                                                                                                       | <p>- nfc/NFC\_Client.h<br>- nfc/NFC\_Interface.h</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| ADK SYS       | <p>- libvfisysinfo.so<br>- libvfisysbar.so<br>- libutil.so</p>                                                                                         | <p>- <a href="/pages/rIy8EBoSU6oZeoofWCQl">sysinfo/sysinfo.h</a><br>- <a href="/pages/XySYEd2M4k0PytIxvzev">sysinfo/leds.h</a><br>- <a href="/pages/SzmKVAo4RWtZsrp54vlj">sysinfo/sysbar.h</a><br>- <a href="/pages/nqZaanHl5fEbb0dYz7yJ">sysinfo/sysbeep.h</a><br>- <a href="/pages/5UPsa5LlrAsYR1Rg34J5">sysinfo/util.h</a><br>- <a href="/pages/QMdpdD0fbfraqiiUc1HZ">sysinfo/inifile.h</a></p>                                                                                                                                                                                                                                                                                                                                                                                                                 |
| ADK CPL       | - libcpl.so                                                                                                                                            | - [commerce/commerce.h](/adk-5.0-programmers-guide/readme/files/dir_2002fcb36e937be08e088f9ab4e81de8/dir_fad52422ca9a0153aca9cfe879bff259/dir_613e11e510006a27889deef70cf7d9b4/_commerce_8h.md)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ADK LOG       | - liblog.so                                                                                                                                            | - log/liblog2.h                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ADK ISO8583   | - libiso8583.so                                                                                                                                        | <p>- iso8583/ConstData.h<br>- iso8583/dl\_err.h<br>- iso8583/dl\_str.h<br>- iso8583/dl\_iso8583.h<br>- iso8583/SafeBuffer.hpp<br>- iso8583/dl\_iso8583\_fields.<br>- iso8583/dl\_base.h<br>- iso8583/dl\_iso8583\_common.<br>- iso8583/dl\_mem.h<br>- iso8583/defs/dl\_iso8583\_de<br>- iso8583/defs/dl\_AS2805\_def<br>- iso8583/fwd/ConstData.h<br>- iso8583/fwd/SafeBuffer.hpp</p>                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ADK INF       | <p>- libinf.so<br>- libinf\_util.so</p>                                                                                                                | <p>- <a href="/pages/cuZ68HPveJNlhheazga5">inf/infodb.h</a><br>- <a href="/pages/ICZR4n03OQtJu6VWWbRr">inf/inf\_util.h</a></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ADK SND       | - libsound.so                                                                                                                                          | - [sound/sound.h](/adk-5.0-programmers-guide/readme/files/dir_15b7eb99384c20f55db7776b7b1ecdad/dir_7d99a5752ef00d9a9478541a793df8d8/dir_b95d7ee73b2963b5e37f0a7269e7a4c6/sound_8h.md)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ADK SEC       | - libsec2.so                                                                                                                                           | - [sec/libsec.h](/adk-5.0-programmers-guide/readme/files/dir_16ebd1d2d73191fda1ea8e9cfc03e012/dir_8266e5c14dc74e90f33f07ca932afbf0/dir_b923322e571c7bbbdf8ca0235601f24c/dir_a4bd7de3367ab1637f06ad0eeada778b/dir_f7f8126e2ed8b92f6435c9f330cc6acf/libsec_8h.md)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| ADK EVT       | - libevt.so                                                                                                                                            | - evt/libevt.h                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ADK AGT       | - libsvc\_tms.so                                                                                                                                       | <p>- agt/svc\_tms.h<br>- agt/tms\_status.h</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| SDI CLIENT    | <p>- libsdiclient.a<br>- libsdiprotocol.so</p>                                                                                                         | <p>- sdiclient/sdi\_if.h<br>- sdiclient/sdiprotocol.h</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| SDI C++ API   | - libsdiapi.so                                                                                                                                         | - [sdiapi/sdi.h](/adk-5.0-programmers-guide/readme/files/dir_20ccae320a59b06ef6618c5b737d5c02/dir_5e53e51918e971c6ecb7778a0c977255/dir_e180e45849113f6ee3b1d48173f5e474/sdi_8h.md)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| INSTALLER     | - libinstall.so                                                                                                                                        | - installer/installer.hpp                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |

### Open Source libraries <a href="#vos3_adk_oss_libraries" id="vos3_adk_oss_libraries"></a>

In addition to ADK APIs, applications can use the following provided Open Source libraries directly from within applications.

| **Component** | **libraries**                        | **header** files         | **Notes**                  |
| ------------- | ------------------------------------ | ------------------------ | -------------------------- |
| OpenSSL       | <p>- libssl.so<br>- libcrypto.so</p> |                          |                            |
| Compression   | - libz.so                            |                          |                            |
| CURL          | - libcurl.so                         |                          |                            |
| Expat         | - libexpat.so                        |                          |                            |
| SQLite        | - libsqlite3.so                      |                          |                            |
| Libxml        | <p>- libxml.so<br>- libxml2.so</p>   | all headers from libxml2 | added in OSS release 1.9.1 |

### Secondary Library dependencies <a href="#vos3_adk_secondary_lib_dependencies" id="vos3_adk_secondary_lib_dependencies"></a>

Provided client libraries have additional dependencies that are usually not reflected to the applications and they are being resolved internally.

Applications should only link to the above libraries, unless told differently.

### VOS3 Platform internal libraries <a href="#vos3_platform_internal_libraries" id="vos3_platform_internal_libraries"></a>

{% hint style="warning" %}
DO NOT USE INTERNAL LIBRARIES. The SDK contains additional libraries not listed above as supported ADK or Open Source libraries. These libraries do not expose public interfaces for applications and can be subject to change with new VOS3 releases. Please do not use these libraries directly!
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://sandbox-docs.verifone.com/adk-5.0-programmers-guide/readme/system_overview/pg_vos3_differences.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
