Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
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
ACE2P
DualCertificationLevel3

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
SPED
DualCertificationLevel3

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
DualCertificationLevel3
AtmosSTUBee

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:

max_number_of_SFI x max_APDU_response_size + max_configuration_tags_size

where:

max_number_of_SFI = 30
max_APDU_response_size = 255 Bytes
max_configuration_tags_size = 3850 Bytes

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:

...