EMV.LIB Level 2 Kernel for Embedded Systems

Developing EMV Level 2 Kernel technology for embedded systems or those based around a non-Windows operating system, presents its own unique set of challenges. Many of the terminals that require the addition of EMV Level 2 functionality were not designed with CPU intensive encryption and hashing in mind. EMV.LIB provides a solution to many of these problems.

Key Highlights

  • Very small memory footprint, stack and resource utilization
  • Compile in or out blocks of EMV functionality to suit your target platform and EMV ICS
  • Specific optimizations for smaller 8 and 16 bit CPUs
  • Compiled size less than 200Kb
  • Hardware Abstraction Layer (HAL) enables easy integration into target platform
  • Endian indifferent
  • Caters for older compiler quirks such as short variable and function names
  • Runs on a wide variety of Chipsets including Maxim 32550 (Lighthouse) and Freescale K21

EMV Level 2 Kernel in ANSI C

The EMV specifications offer some flexibility in how these challenges are met by enabling certain terminal types to avoid the use of the more processor intensive elements, such as the RSA encryption used in Data Authentication. However it does not solve the problem of how to add the remaining functionality. Creditcall’s solution to this problem was to develop an EMV Level 2 Kernel in strict ANSI C with all of the hardware and operating system specific functionality abstracted away from the core functions of the Kernel through the use of the EMV.LIB Hardware Abstraction Layer (HAL).

EMV.LIB Portable to Most Environments

This architecture and the use of ANSI C means that EMV.LIB can be ported to virtually any environment for which there is a suitable C compiler. This approach has enabled this version of the NMI (formerly Creditcall) EMV Kernel to become the critical component in many Chip and PIN solutions and is now the most widely certified EMV Level 2 Kernel available today.

"To date EMV.LIB has been compiled on everything from a Zilog Z180 right the way through to more recent microprocessors such as the ARM 7 and 9 series"

The Hardware Abstraction Layer is a series of empty functions. Each function deals with an element of EMV that cannot be addressed in a manner that is platform independent. Once these functions have been populated, the Kernel can be compiled for the target platform. The resulting object code can then be linked with the payment application to create a fully functional EMV Level 2 compliant solution.

EMV Supported Features

EMV.LIB supports a variety of data authentication, configuration, CVM methods and other special features within the EMV Level 2 version 4.3d specification.


Data Authentication Methods

Static, Dynamic and Combined Data Authentication (SDA, DDA and CDA).

Terminal Configuration Online Only, Online with Offline, Offline with Online, and Offline Only.
Acquirer Interfaces

Authorization Request, Financial Transaction Request, Batch Data Capture, Online Data Capture.

Cardholder Verification Methods

Offline Plaintext PIN, Offline Enciphered PIN, Signature, No CVM, Fail CVM.


Certificate Revocation, Velocity and Floor Limit Checking, Exception Lists, Recommended EMV Application Selection Algorithms.