Agnos provides a set of EMV core primitives which support EMV transaction flow. These primitives are used by:
CT payment applications (see emvco.c as example)
CL card processing applications (alias CL kernels)
Table of Contents |
---|
C Structures
tTransactionalContext (agnos.h)
tADFList (selection.h)
tADF (selection.h)
tPSE (selection.h)
Callbacks
typedef void (*tGetDataCallback)(tBoolean lastRead, tBoolean *next)
typedef void (*tBuildDOLCallback)(tWord tag, tByte length, tByte *DOLData)
typedef void (*tStateCallback)(tAgnosState currentState, tBoolean *stop, tBoolean *bypass)
Primitives
...
Names
...
Comments
...
agnGetVersionNumber
...
Provide EMV core engine version
...
agnOpenSession
...
agnInititateEMVTransaction
...
agnCompleteEMVTransaction
...
agnCloseSession
...
agnOpenSessionCL
...
agnSetAgnosDatabase
...
agnSetKernelStatus
...
agnSetEMVTag
...
agnOverwriteTag
...
agnRemoveTag
...
agnGetEMVTag
...
agnGetAllTags
...
agnGetDatabase
...
agnIsEMVTagKnown
...
agnIsEMVTagPresent
...
agnIsENVTagEmpty
...
agnIsEMVTagNotEmpty
...
agnSetExitState
...
agnSetParsingCallback
...
agnSetStateCallback
...
agnSetBuilDOLCallback
...
agnORAgnosTVR
...
agnORTVR
...
Table of Contents | ||
---|---|---|
|
API _Version _Revision | Description | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
_Agnos _version 3.5.20 _revision 23770 | Agnos Interface is an abstraction of EMVCo Book I, II, and III. It relies on 3 components:
Pre-contions setup
Important:
Execution There are 3 ways to execute an EMVCo CT transaction. However, they follow the same pattern initiate/complete
Documentation under development…
Documentation under development… Post-conditions setup Use different primitives such as agnGetEMVTag() to fetch any EMV information |
EMV Engine | |||||||
---|---|---|---|---|---|---|---|
See agnos..h | |||||||
|
| -- | |||||
|
| ||||||
|
| Get EMV core engine version. | |||||
|
| Open a CT session to initiate an EMV transaction flow. | |||||
|
| Initiate/Resume an EMV transaction | |||||
|
| Complete a transaction as per EMVCo definition | |||||
|
| ||||||
|
| Return bTRUE is tag statically known. | |||||
|
| Return bTRUE if tag is present whatever its length. | |||||
|
| Return bTRUE if tag’s length is 0. | |||||
|
| Return bTRUE if tag’s length is not 0. | |||||
|
| Get a specific tag from Agnos database. | |||||
|
| Add a tag into Agnos database without checking tag’s update condition. | |||||
|
| Overwrite an existing tag. If it doesn’t exist, create it (no garbage collection if sizes don’t match). | |||||
|
| Remove a tag from Agnos database (no garbage collection). | |||||
|
| OR a specific TVR’s bit to 1. | |||||
|
| OR a specific Agnos TVR’s bit to 1. | |||||
|
| Set a specific Agnos TVR byte value. | |||||
|
| Open a CL session to initiate an EMV transaction flow | |||||
|
| Close a transaction flow. | |||||
agnSetAgnosDatabase | Add a series of tags. Each tag is statically indexed and ruled by an update condition. Use an appropriate update condition to store tags directly into Agnos database | ||||||
agnSetKernelStatus | Set core engine to a specific state. Use this primitive to skip a state in State Machine mode | ||||||
agnGetAllTags | Get all tags from Agnos database |
Application Selection Routines | |||||||
---|---|---|---|---|---|---|---|
See selection..h | |||||||
|
| -- | |||||
|
| ||||||
|
| ||||||
|
|
EMV Tags Database | ||||
---|---|---|---|---|
See emvtag.h, agnosdatabase.h | ||||
-- | ||||
adbGetVersionNumber | Provide Agnos database version. Get all pointers on shared RAM spaces provided by SAL/HAL and set adbAddTag strategy to STANDARD (i.e. EMVCo rule where update conditions are not checked) | |||
adbResetDataBase | Reserved to Agnos core engine. Reset database structure | |||
adbSetStrategy | Reserved to Agnos core engine and contactless card processing. By default, Agnos databse uses EMVco tags storage strategy where no check is performed on tags' update conditions. If a storage strategy is defined (by a contactless card processing) then:
| |||
adbAddTag | Reserved to Agnos core engine. Check whether a tag may be added into EMV tags database. In order to store EMV tags directly into Agnos database, use agnSetAgnosDataBase primitive instead | |||
adbAddUnknownTag | Add any tags into EMV tags database in “UnknowTag” bucket | |||
adbGetUnknowTags | Get all tags stored into unknown tags bucket | |||
adbGetUnknownTagsLength | Get the bucket’s length | |||
adbGetUnknownTagsCount | Get tags count from the bucket | |||
adbGetAllTLV | Get all TLV stored in AgnosDB.
|
Code Example |
---|
See emvco.c. and selectionlogic.h. They provide good examples on agnos.h and selection.h integration in the scope of contact card processing. |