AAL2MXGenerateChallenge

Prev Next

Function prototype

aat_int32 AAL2MXGenerateChallenge (
                                   TDigipassBlob*     MXCardBlob,
                                   TKernelParms*      CallParms,
                                   aat_int32          MXCardSequenceNumber,
                                   aat_int32          NumberRows,
                                   aat_int32          NumberColumns,
                                   aat_int32          SecurityLevel,
                                   aat_ascii*         Challenge);

Description

This function is used to generate a challenge for a matrix card. A challenge consists in the concatenation of matrix card cell row ID and column ID:

  • One digit for the row ID: from 1 to 9
  • One digit for the column ID: from A to Z

This function randomly chooses a row index between 0 and NumberRows-1, and a column ID between 0 and NumberColumns-1. Then, the indexes are concatenated with the result of a two-digit index couple (row digit, column digit). The security level determines the number of couples in the challenge.

Parameters

  Table: Parameters (AAL2MXGenerateChallenge)
TypeNameUseDescription
TDigipassBlob *MXCardBLOBI/OMatrix Card application BLOB. Upon return from the function call, this BLOB must be rewritten to the application database to reflect changes.
TKernelParms *CallParmsIStructure of runtime parameters to use during this function call.
aat_int32MXCard Sequence NumberISequence number of the matrix card on up to 4 digits (from 1 to 9999).
aat_int32NumberRowsINumber of rows on the matrix card (1 to 9).
aat_int32NumberColumnsINumber of columns on the matrix card (1 to 26).
aat_int32SecurityLevelINumber of concatenated couples in the output challenge (1 to 8).
aat_ascii *Challenges List OConcatenation of (column ID, row ID) couples. The allocated buffer must have a length of ((SecurityLevel *2) +1) (recommended buffer size is 17 bytes).

Return codes

  Table: Return codes (AAL2MXGenerateChallenge)
CodeMeaningCodeMeaning
0Success562Invalid row number
132Unsupported token type563Invalid column number
510Invalid Digipass data pointer564Invalid security level
560Null output buffer1000Function does not support EMV-CAP
561Invalid matrix card sequence number-1501Memory allocation failed