Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

ola_publickey

See ola_publickey.h

This module provides a set of primitives to manage public key certifcates (CAPK) used in EMV to support the Offline Data Authentication (ODA) process.

#include

Code Block
languagec
#include "ola.h"
#include <stdint.h>

--

tOlaPubKey

Code Block
languagec
typedef struct
{
    uint8_t rid[5];
    uint8_t idx[1];
    uint8_t modulusLen;
    uint8_t modulusValue[248];
    uint8_t exponentLen;
    uint8_t exponentValue[3];
    uint8_t expirDate[3];
} tOlaPubKey;

OLA’s CAPK definition.

ola_pubkey_flush

Code Block
void ola_pubkey_flush(void);

ola_pubkey_add

Code Block
tOLAError ola_pubkey_add(
        const tOlaPubKey *key,
        const uint8_t *checksum
);

ola_pubkey_find

Code Block
tOLAError ola_pubkey_find(
		tOlaPubKey *key,
        uint8_t *checksum
);

ola_pubkey_get_next_id

Code Block
tOLAError ola_pubkey_get_next_id(
        uint8_t *idx,
        uint8_t *rid,
        int start
);

ola_pubkey_commit

Code Block
tOLAError ola_pubkey_commit(void);

...

N/A

ola_terminal

See ola_terminal.h

// Deprecated

This module is not available from OLA 2.x version.

// Deprecated

N/A

N/A

ola_tags_dictionary

See ola_tags_dictionary.h

#define

Code Block
#define TAG_TAC_DEFAULT                                 			0xDF1E
#define TAG_TAC_DENIAL                                  			0xDF1F
#define TAG_TAC_ONLINE                                  			0xDF20

#define TAG_READER_CONTACTLESS_FLOOR_LIMIT_PREPROCESSING            0xDF09
#define TAG_READER_CONTACTLESS_FLOOR_LIMIT       					0xDF8123 // Be careful, tag managed as 9F1B by Nexo!

#define TAG_READER_CONTACTLESS_TRANSACTION_LIMIT_NO_DEVICE_CVM_PREPROCESSING    0xDF08
#define TAG_READER_CONTACTLESS_TRANSACTION_LIMIT_NO_DEVICE_CVM        			0xDF8124

#define TAG_READER_CONTACTLESS_CVM_REQUIRED_LIMIT_PREPROCESSING     0xDF0B
#define TAG_READER_CONTACTLESS_CVM_REQUIRED_LIMIT       			0xDF8126

#define TAG_THRESHOLD_VALUE_FOR_BIASED_RANDOM_SELECTION 			0xDF21
#define TAG_MAXIMUM_TARGET_PERCENTAGE_FOR_BIASED_RANDOM_SELECTION 	0xDF1C
#define TAG_TARGET_PERCENTAGE_FOR_RANDOM_SELECTION      			0xDF1D

#define TAG_MESSAGE_HOLD_TIME                       				0xDF812D

// Contact
#define TAG_APPLICATION_PROFILE_SETTINGS                			0xDF27
#define TAG_DEFAULT_DYNAMIC_DATA_AUTHENTICATION_DATA_OBJECT_LIST	0xDF8F1A
#define TAG_DEFAULT_TRANSACTION_CERTIFICATE_DATA_OBJECT_LIST		0xDF8F08

// Kernel 2
#define TAG_BALANCE_READ_AFTER_GEN_AC                   			0xDF8105
#define TAG_BALANCE_READ_BEFORE_GEN_AC                  			0xDF8104
#define TAG_CARD_DATA_INPUT_CAPABILITIES            				0xDF8117
#define TAG_CVM_CAPABILITY_CVM_REQUIRED            					0xDF8118
#define TAG_CVM_CAPABILITY_NO_CVM_REQUIRED          				0xDF8119
#define TAG_DEFAULT_UDOL                            				0xDF811A
#define TAG_KERNEL_2_CONFIGURATION                  				0xDF811B
#define TAG_MAX_LIFETIME_TORN_TRANSACTION           				0xDF811C
#define TAG_MAX_NUMBER_TORN_TRANSACTION             				0xDF811D
#define TAG_MAGSTRIPE_CVM_CAPABILITY_CVM_REQUIRED   				0xDF811E
#define TAG_SECURITY_CAPABILITIES                   				0xDF811F
#define TAG_READER_CONTACTLESS_TRANSACTION_LIMIT_DEVICE_CVM   		0xDF8125
#define TAG_MAGSTRIPE_CVM_CAPABILITY_NO_CVM_REQUIRED				0xDF812C
#define TAG_HOLD_TIME_VALUE       									0xDF8130
#define TAG_MIN_RELAY_RESISTANCE_GRACE_PERIOD       				0xDF8132
#define TAG_MAX_RELAY_RESISTANCE_GRACE_PERIOD       				0xDF8133
#define TAG_RELAY_RESISTANCE_ACCURACY_THRESHOLD     				0xDF8136
#define TAG_RELAY_RESISTANCE_TRANSMISSION_TIME_MISMATCH_THRESHOLD 	0xDF8137

...

ola_implem

See ola_implem.h

This module provides a set of structures to centralize OLA services in a single C structure that can be used by the L3. It doesn’t provide specific functional service services but a simple architecture mechanism to abstract OLA Interface.

#include

Code Block
languagec
#include "ola.h"

--

ola_contact_implem_t

Code Block
languagec
typedef struct {
	void (*flush_aid_supported)(void);
	tOLAError (*answer_to_reset)(const char* reader);
	tOLAError (*add_aid_supported)(const uint8_t *aid, uint8_t aidLength, int partial);
	tOLAError (*build_candidate_list)(uint8_t *nb_candidates, int *pse);
	tOLAError (*get_tag_from_candidate)(uint8_t candidate, uint32_t tag, uint8_t *value, uint16_t *length);
	tOLAError (*final_select_candidate)(uint8_t candidate);
	tOLAError (*initiate_transaction)(tOlaModeContactTransaction mode);
	tOLAError (*complete_transaction)(
			const uint8_t *authorResponseCode,
			const uint8_t *issuerAuthenticationData,
			uint8_t issuerAuthenticationData_length);
	void  (*clean)(void);
} ola_contact_implem_t;

--

ola_contactless_implem_t

Code Block
languagec
typedef struct {
	void (*flush_aid_supported)(void);
	tOLAError (*add_aid_supported)(
			const uint8_t *aid,
			uint8_t aidLength, int partial,
			uint8_t kernelId,
			const uint8_t *tlv,
			uint16_t tlvLength);
	uint16_t (*add_drl_supported)(
			const uint8_t *programId,
			uint8_t programIdLength,
			const uint8_t *transactionLimit,
			const uint8_t *floorLimit,
			const uint8_t *CVMLimit,
			int statusCheck,
			int isZeroAllowed,
			uint8_t kernelId);
	void (*commit_supported_aids)(void);
	uint16_t (*build_candidate_list)(uint8_t *nb_candidates);
	uint16_t (*get_tag_from_candidate)(uint8_t candidate, uint32_t tag, uint8_t *value, uint16_t *length);
	tOLAError (*final_select_candidate)(uint8_t candidate, uint8_t *kernelId);
	tOLAError (*get_card_preferred_language)(char *language);
	tOLAError (*preprocess)(void);
	tOLAError (*do_transaction)(void);
	void (*clean)(void);
	tOLAError (*get_outcome)(tOlaOutcomeParameter *outcome);
	tOLAError (*get_UI_request_upon_outcome)(tOlaUIRequest *uiRequest);
	tOLAError (*get_UI_request_restart)(tOlaUIRequest *uiRequest);
} ola_contactless_implem_t;

--

ola_emv_implem_t

Code Block
languagec
typedef struct {
	tOLAError (*set_tag)(uint32_t tag, uint8_t *value, uint16_t length);
	tOLAError (*get_tag)(uint32_t tag, uint8_t *value, uint16_t *length);
	tOLAError (*get_cvm_results)(tOlaEMVCoCVM *cvm);
} ola_emv_implem_t;

--

ola_publickey_implem_t

Code Block
languagec
typedef struct {
	void (*flush)(void);
	tOLAError (*add)(const tOlaPubKey *key, const uint8_t *checksum);
	tOLAError (*find)(tOlaPubKey *key, uint8_t *checksum);
	tOLAError (*get_next_id)(uint8_t *idx, uint8_t *rid, int start);
	tOLAError (*commit)(void);
} ola_publickey_implem_t;

--

ola_implem_t

Code Block
languagec
typedef struct {
	ola_contact_implem_t contact;
	ola_contactless_implem_t contactless;
	ola_emv_implem_t emv;
	ola_publickey_implem_t publickey;
} ola_implem_t;

--