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)
See emvco.c for an example using that structure (CT transaction flow).
...
breakoutMode | wide |
---|---|
language | cpp |
...
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. | |||||
|
|
...
tADFList (selection.h)
...
| 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 | |||||||
|
| -- | |||||
|
|
...
| ||
|
...
|
...
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
| ||
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
...
|
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
Open a CT session to initiate an EMV transaction flow
agnOpenSessionCL
Open a CL session to initiate an EMV transaction flow
agnInititateEMVTransaction
Initiate/Resume an EMV transaction
agnCompleteEMVTransaction
Complete a transaction as per EMVCo definition
agnCloseSession
Close a transaction flow
agnSetAgnosDatabase
agnSetKernelStatus
agnSetEMVTag
agnOverwriteTag
agnRemoveTag
agnGetEMVTag
agnGetAllTags
agnGetDatabase
agnIsEMVTagKnown
agnIsEMVTagPresent
agnIsEMVTagEmpty
agnIsEMVTagNotEmpty
agnSetExitState
agnSetParsingCallback
agnSetStateCallback
agnSetBuilDOLCallback
agnORTVR
OR a specific TVR’s bit to 1
agnORAgnosTVR
OR a specific Agnos TVR’s bit to 1
agnSetAgnosTVR
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. |