Table of Contents |
---|
Grid Analysis
That grid may be used by project teams to support their analysis and scan all the different topics:
...
Symbols, Options, and Constants
Following symbols, options, and constants may be adjusted depending on development stages and platform's constraints:
...
Symbol/Option/Constant | Value (Bytes) | Library/File | Comment |
---|---|---|---|
_ACE_ | Added | CAD | Remove this symbol if ACE is not used (for production version) |
_ADAPTER_ | Removed | Platform | Add this symbol if Agnos Framework doesn't use IP connection to communicate with ACE |
_AGNOSISR_ | Added | agnostypes.h | Remove this symbol if contact/contactless issuer scripts are not supported |
_AGNOSK_ | Added | agnostypes.h | Remove this symbol if contact is not supported |
_AGNOSCL_ | Added | agnostypes.h | Remove this symbol if contactless is not supported |
_AGNOSCPL_ | Added | agnostypes.h | Remove this symbol if completion is not supported |
_AGNOSFMSG_ | Added | agnostypes.h | Remove this symbol if advice and batch messages are not supported |
_AGNOSTRACE_ | Added | agnostypes.h | Remove this symbol to mute traces (for certification and production versions) |
_AUTOMATION_ | Added | CAD | Remove this symbol if Agnos Automation is not supported (for certification and production versions) |
_CONFIGURATOR_ | Removed | DualCertificationLevel3 | Add this symbol if AgnosGE is supported |
_DEPRECATED_ | Added | AgnosMW | Always added |
_DUAL_POLLING_ | Added | kizisapi.c | Remove this symbol if contact only is supported |
_EMBEDDED_ | Removed | ACE2P | Add this symbol if Agnos runs on an embedded platform |
_LOG_ | Added | Platform | Remove this symbol to mute traces (for certification and production versions) |
_REPLAY_ | Added | CAD | Remove this symbol when card emulation is not supported (for certification and production versions) |
_STATIC_LINK_ | Removed | All CL Kernels | Add this symbol when a platform doesn't support dynamic library loading |
_STATIC_LOADER_ | Removed | AgnosEP | Add this symbol when a platform doesn't support dynamic library loading |
_TIME_STAMP_ | Added | Platform | Remove this symbol when performance timings are not supported (for certification and production versions) |
_TRACE_ | Added | AtmosSTUBee | Remove this symbol when AtmosSTUBee is not used (for certification and production versions) |
FREE_RAM_SIZE | 3000 | sharedram.c | Always set to 3000 Bytes. Arbitrary extended RAM value to support messaging with ACE for TA. May be set to 0 for production version |
ISSUER_RESPONSE_SIZE | (128 + MAX_SCRIPT_SIZE) | agnostypes.h | EMV issuer response size if _AGNOSCPL_ is defined. Minimum size to be supported is 128 |
MAX_AID | 15 | datamngr.h | Number of maximum AID per CL Kernel. Arbitrary value that may be adjusted depending on acquirer needs |
MAX_CHARACTER_PER_LINE | 16 | display.h | Number of characters per PoP's display line. Set a value related to platform capabilities |
MAX_COMBINATION_PER_TRANSACTION_TYPE | 65 | datamngr.h | |
MAX_DET_SIZE | 2500 | de-ds.c | Maximum DET signal size managed by L3 |
MAX_ITEM_NAME_LENGTH | 100 | select.h | Maximum length of an item in a selection list. Arbitrary value that may be adjusted depending on acquirer needs |
MAX_KERNEL | 25 | datamngr.h | Number of maximum CL Kernels. Arbitrary value that may be adjusted depending on acquirer needs |
MAX_LINES | 2 | display.c | Number of available PoP's display lines. Set a value related to platform capabilities |
MAX_NB_ITEMS | 50 | select.h | Number of maximum item in a selection list. Arbitrary value that may be adjusted depending on acquirer needs |
MAX_NB_LANGUAGE | 2 | display.h | Number of maximum languages. Arbitrary value that may be adjusted depending on acquirer needs |
MAX_SCRIPT_SIZE | 128 | agnostypes.h | EMV issuer scripts size if _AGNOSCPL_ is defined |
MAX_SIMULTANEOUS_SESSION | 65 | datamngr.h | Number of maximum pre-processing sessions managed simultaneously by our kernels for a given transaction type |
MAX_STRING_LENGTH | 50 | display.h | Number of maximum characters per string (a string may be display on several lines using '\\'. Arbitrary value |
MAX_SUPPORTED_ADF | 10 | agnoostypes.h | Number of maximum ADF supported to manage mutual supported applications between a card and a PoP |
MAX_SUPPORTED_AID | 30 | datamngr.h | Number of maximum AID supported by PROCESSING file (including CT and CL AID) |
NB_ACQUIRER_STRINGS | 25 | display.h | Number of strings supported by Agnos Frameowork to pass TA. May be adjusted to support acquirer needs |
NB_EMV_STRINGS | 34 | display.h | Always set to 34. Defined as per EMVCo standard |
NB_INDIVIDUAL_STRINGS | 0 | display.h | RFU |
NB_ISSUER_STRINGS | 0 | display.h | RFU |
ONLINE_BUFFER_SIZE | 3000 | datamngr.h | Always set to 3000 Bytes. Minimum RAM value to support messaging with ACE for TA. Shall be set to 3000 if torn supported (production version) |
RAW_FORMAT_DATA_OBJECT_SIZE | 400 | datamngr.h | n/a |
SIZE_FOR_CL_DATA_OBJECT | 10000 | sharedram.c | Maximum size available for all combinations per Transaction Type |
SIZE_FOR_EMV_TAGS | 11500 | sharedram.c | Always set to 11500 Bytes. Theoritical value equal to: |
SIZE_FOR_EMV_UNKNOWNTAGS | 2500 | sharedram.c | Always set to 2500 Bytes. Arbitrary value to support unknown tags fetched from card, i.e. tags not defined in AgnosDB/emvtags.c |
SIZE_FOR_PAYPASS_TORN | 13500 | sharedram.c | Always set to 13500 Bytes when supported (for certification and - optionally - production). May be set to 1 if torn are not supported in production |
TIME_STAMP_BUFFER_SIZE | 40000 | log.c | Set a value related to performance testing needs (only for development version) |
Code Samples
EMVCo Test Application
This sample code may be used to built a specific payment application for EMV contact card processing. It presents a basic Agnos API integration. Canadian selection processing is provided on demand.
emvco.h
Code Block |
---|
// NAME....... emvco.h
// PURPOSE.... Support EMVCo test application specifications
// PROJECT.... Applicative baseline
//
// COMMENTS .. This section of code is an example. It has be developed from EMVCo Book IV specifications.
// This application is mandatory to certify Agnos' level2 contact library implementing EMVCo Books I, II, and III.
// However, this code might be adapted (or even started fromn scrath) to support additional requirements related to level3 certifications,
// i.e. end-to-end integration certifications validating payment network requirements for EMV contact processing (TIP, ADVT, ...)
//
//
// Copyright ©2005-2016 - 9164-4187 QUEBEC INC (“AMADIS”), All Rights Reserved
#ifndef EMVCO_H
#define EMVCO_H
//---------------------------------------------------------
// Include files
//---------------------------------------------------------
//---- AgnosMW Headers ----
#include "paymentMW.h"
//---------------------------------------------------------
// emvcoWhatIsYourVersion()
//---------------------------------------------------------
// This service is called to get EMVCo test application application version
//
// Visibility: Public
// Hypothesis: --
// Reference: --
//
// Service signature :
//
// Service sends back library version
//
void emvcoWhatIsYourVersion(tString version /*out*/);
//---------------------------------------------------------
// emvcoPreprocessing()
//---------------------------------------------------------
// This service must be called before any contact transaction (Initiate/Complete sequence)
//
// Visibility: Public
// Hypothesis: --
// Reference: --
//
// Service signature :
//
// Pointers always valid (no defensive implementation required)
//
void emvcoPreprocessing(tPaymentContext *payment);
//---------------------------------------------------------
// emvcoInitiateTransaction()
//---------------------------------------------------------
// This service is called to initiate a standard EMV transaction
//
// Visibility: Public
// Hypothesis: --
// Reference: --
//
void emvcoInitiateTransaction(tPaymentContext *payment, tOutComeParameter *outcome);
//---------------------------------------------------------
// emvcoCompleteTransaction()
//---------------------------------------------------------
// This service is called to complete a standard EMV transaction
// application.
//
// Visibility: Public
// Hypothesis: --
// Reference: --
//
void emvcoCompleteTransaction(tPaymentContext *payment, tOutComeParameter *outcome);
//---------------------------------------------------------
// emvcoRelease()
//---------------------------------------------------------
// This service is called only once at the release time (or house keeping) of Agnos Framework
//
// Visibility: Public
// Hypothesis: --
// Reference: --
//
void emvcoRelease(void);
#endif /* EMVCO_H */ |
emvco.c
...
LED Management
There is no EMVCo's or payment networks' requirements related to LED management. However, there are 2 common sense needs that must be addressed:
...