Amadis

Agnos Callbacks

Developing a L2 stack is challenging. It is about balancing the certificability and the flexibility of the solution.

Certificability means that the stack shall not be altered once it has been TA approved. L2 behaviors shall be black-boxed so the integrators have not to deal with that level of complexitiy. Developing at the L3 shall preserve L2 from regression.

Flexibility means that stack shall be adaptable to any merchant/acquirer contexts. The regional nature of the payment is not well addressed by EMVCo specifications:

a) There is not enough guidance to abstract the EMV application selection process considering the need of particular selection mechanisms in some countries that are not tested during L2 certifications

b) There is no clear logiccal definition of the card processing. For example, there is no interoperability between entry point implementations and contactlless kernels, so any entry points could activate any kernels developed by a third part.

c) Merchant projects implementations reveal difficulties to implement specific requirements such as acquirer risk management

d) Proprietary tags management is adressed from a card’s perspective but there is not specifications on how to manage them from a L3 perspective

Consequently, a L2 stack shall provide a flexible mean to extend certified behavior.

 

Agnos callbacks is an answer to address that problematic. To try to limit the complexity and the risk of adding card processing behaviors during a L3 development, Agnos proposes up to 8 callbacks that extend Agnos behavior without having to dig into L2 specifications:

 

  • ApplicationSelectionMethod (see entrypoint.h)

  • KernelSelectionMethod (see entrypoint.h)

  • emvCallback (see dataxchng.h)

  • tGetDataCallback (see agnostypes.h)

  • tBuildDOLCallback (see agnostypes.h)

  • tStateStateCallback (see agnostypes.h)

  • AddTag_Contactless (see agnosdatabase.h)

  • AddUnknownTag_Contactless (see agnosdatabase.h)