ut-emv
v7.0.5
Published
EMV tags handling functions
Downloads
84
Readme
EMV tags functions
Scope
Handle encoding and decoding of BER-TLV data to/from string.
Public API
tagsDecode
(emvString, result, dolIdx)
Decodes EMV tag string from BER-TVL format to EMV tag object
params
- emvString (string) - EMV tags in BER-TLV format
- result (object) - result to return
- dolIdx (integer) - position of the current tag in a DOL
result (object); each key: value pair contains the following:
key - EMV tag key
value (object) - EMV tag object
- tag (string) - EMV tag
- val (string) - EMV tag value OR nested EMV tags object, in the case when tag is a DOL tag
- len (integer) - length of val in bytes
NOTE: if the current tag is a DOL tag, val will have the following key: value structure:
key - EMV tag key
value (object) - EMV tag object
- tag (string) - EMV tag
- val (string) - EMV tag value; NOTE: as the value of a DOL tag does not contain values for nested tags, this is usually ''
- len (integer) - length of val in bytes
- idx (integer) - position of the tag in the DOL
dolDecode
(emvTags)
Adds values for tags nested in DOLs
params
- emvTags (object) - each key: value pair contains the following:
- key - EMV tag key
- value (object) - EMV tag object
- tag (string) - EMV tag
- val (string) - EMV tag value; NOTE: as the value of a DOL tag does not contain values for nested tags, this is usually ''
- len (integer) - length of val in bytes NOTE: for each DOL tag, val will have the following key: value structure:
- key - EMV tag key
- value (object) - EMV tag object
- tag (string) - EMV tag
- val (string) - EMV tag value
- len (integer) - length of val in bytes
- idx (integer) - position of the tag in the DOL
result (object) - emvTags input object, with added values for tags nested in DOLs
tagsEncode
(emvTags)
Encodes EMV tag object to EMV tag string
params
- emvTags (object) - each key: value pair contains the following:
- key - EMV tag key
- value (object) - EMV tag object
- val (string) - EMV tag value
- tag (string) - EMV tag
- len (integer) - length of val in bytes
- idx (integer) - indicates the position of the current tag; NOTE: present only in case the input tags have to be ordered before encoding
result
- (string) - EMV tag string in BER-TLV format
flatten
(emv)
Reduces EMV tag object to key: value pairs
params (object); each key: value pair contains the following:
- key - EMV tag key
- value (object) - EMV tag object
- tag (string) - EMV tag
- val (string) - EMV tag value
- len (integer) - length of val in bytes
result (object); each key: value pair contains the following:
- key - EMV tag key
- value (string) - EMV tag value val
unflatten
(emv)
Expands key: value pairs to EMV tags object
params (object); Default: {}; each key: value pair contains the following:
- key - EMV tag key
- value (string) - EMV tag
result (object); each key: value pair contains the following:
- key - EMV tag key
- value (object) - EMV tag object
- tag (string) - EMV tag
- val (string) - EMV tag value
- len (integer) - length of val in bytes
Dictionaries
Known EMV tags
Amount, Authorised (NUMERIC)
- tag: 9F02
- key: amountAuthorised
Amount, Other (NUMERIC)
- tag: 9F03
- key: amountOther,
Terminal Country Code
- tag: 9F1A
- key: terminalCountryCode,
Transaction Currency Code
- tag: 5F2A
- key: transactionCurrencyCode,
Transaction Date
- tag: 9A
- key: transactionDate,
Transaction Type
- tag: 9C
- key: transactionType,
Template, AEF Data
- tag: 70
- key: templateAEFData,
Issuer Public Key Certificate
- tag: 90
- key: issuerPublicKeyCertificate,
Issuer Public Key Remainder
- tag: 92
- key: issuerPublicKeyRemainder,
Certification Authority Public Key Index (PKI)
- tag: 8F
- key: certificationAuthorityPublicKeyIndex,
Unpredictable Number (UN)
- tag: 9F37
- key: unpredictableNumber,
Issuer Public Key Exponent
- tag: 9F32
- key: issuerPublicKeyExponent,
Card Risk Management Data Object List 1 (CDOL1)
- tag: 8C
- key: CDOL1,
Card Risk Management Data Object List 2 (CDOL2)
- tag: 8D
- key: CDOL2,
Transaction Certificate Data Object List (TDOL)
- tag: 97
- key: TDOL,
Processing Options Data Object List (PDOL)
- tag: 9F38
- key: PDOL,
Dynamic Data Authentication Data Object List (DDOL)
- tag: 9F49
- key: DDOL,
Track 2 Equivalent Data
- tag: 57
- key: track2EquivalentData,
Application Primary Account Number (PAN)
- tag: 5A
- key: pan,
Application Primary Account Number (PAN) Sequence Number (PSN)
- tag: 5F34
- key: panSeqNum,
Application Transaction Counter (ATC)
- tag: 9F36
- key: atc,
Application Cryptogram (AC)
- tag: 9F26
- key: applicationCryptogram,
Cryptogram Information Data (CID)
- tag: 9F27
- key: cryptogramInformationData,
Application Version Number, Terminal
- tag: 9F09
- key: terminalApplicationVersionNumber,
Terminal Capabilities
- tag: 9F33
- key: terminalCapabilities,
Terminal Type
- tag: 9F35
- key: terminalType,
Transaction Sequence Counter
- tag: 9F41
- key: transactionSequenceCounter,
Acquirer Identifier
- tag: 9F01
- key: acquirerIdentifier,
Additional Terminal Capabilities (ATC)
- tag: 9F40
- key: additionalTerminalCapabilities,
Amount, Authorised (Binary)
- tag: 81
- key: amountAuthorisedBinary,
Amount, Other (Binary)
- tag: 9F04
- key: amountOtherBinary,
Amount, Reference Currency (Binary)
- tag: 9F3A
- key: amountReferenceCurrency,
Currency Code, Application
- tag: 9F42
- key: applicationCurrencyCode,
Currency Exponent, Application
- tag: 9F44
- key: applicationCurrencyExponent,
Application Discretionary Data
- tag: 9F05
- key: applicationDiscretionaryData,
Application Effective Date
- tag: 5F25
- key: applicationEffectiveDate,
Application Expiration Date
- tag: 5F24
- key: applicationExpirationDate,
Application File Locator (AFL)
- tag: 94
- key: applicationFileLocatorAFL,
Application Identifier (ADF Name)
- tag: 4F
- key: applicationIdentifierAIDCard,
Application Identifier (AID), Terminal
- tag: 9F06
- key: applicationIdentifierAIDTerminal,
Application Interchange Profile (AIP)
- tag: 82
- key: applicationInterchangeProfile,
Application Label
- tag: 50
- key: applicationLabel,
Application Preferred Name
- tag: 9F12
- key: applicationPreferredName,
Application Priority Indicator
- tag: 87
- key: applicationPriorityIndicator,
Currency Code, Application Reference
- tag: 9F3B
- key: applicationReferenceCurrency,
Currency Exponent, Application Reference
- tag: 9F43
- key: applicationReferenceCurrencyExponent,
Application Template
- tag: 61
- key: applicationTemplate,
Application Usage Control (AUC)
- tag: 9F07
- key: applicationUsageControl,
Application Version Number, Card
- tag: 9F08
- key: applicationVersionNumber,
Authorisation Code
- tag: 89
- key: authorisationCode,
Authorisation Response Code (ARC)
- tag: 8A
- key: authorisationResponseCode,
Bank Identifier Code (BIC)
- tag: 5F54
- key: bankIdentifierCodeBIC,
Cardholder Name
- tag: 5F20
- key: cardholderName,
Cardholder Name - Extended
- tag: 9F0B
- key: cardholderNameExtended,
Cardholder Verification Method (CVM) List
- tag: 8E
- key: cvmList,
Cardholder Verification Method (CVM) Results
- tag: 9F34
- key: cvmResults,
Public Key Index, Certification Authority, Terminal
- tag: 9F22
- key: terminalCertificationAuthorityPublicKeyIndex,
Command Template
- tag: 83
- key: commandTemplate,
Data Authentication Code
- tag: 9F45
- key: dataAuthenticationCode,
Dedicated File (DF) Name
- tag: 84
- key: dedicatedFileDFName,
Directory Definition File (DDF) Name
- tag: 9D
- key: directoryDefinitionFileDDFName,
Directory Discretionary Template
- tag: 73
- key: directoryDiscretionaryTemplate,
File Control Information (FCI) Issuer Discretionary Data
- tag: BF0C
- key: fciIssuerDiscretionaryData,
File Control Information (FCI) Proprietary Template
- tag: A5
- key: fciProprietaryTemplate,
File Control Information (FCI) Template
- tag: 6F
- key: fciTemplate,
ICC Dynamic Number
- tag: 9F4C
- key: iccDynamicNumber,
Integrated Circuit Card (ICC) PIN Encipherment Public Key Certificate
- tag: 9F2D
- key: iccPINEnciphermentPublicKeyCertificate,
Integrated Circuit Card (ICC) PIN Encipherment Public Key Exponent
- tag: 9F2E
- key: iccPINEnciphermentPublicKeyExponent,
Integrated Circuit Card (ICC) PIN Encipherment Public Key Remainder
- tag: 9F2F
- key: iccPINEnciphermentPublicKeyRemainder,
Integrated Circuit Card (ICC) Public Key Certificate
- tag: 9F46
- key: iccPublicKeyCertificate,
Integrated Circuit Card (ICC) Public Key Exponent
- tag: 9F47
- key: iccPublicKeyExponent,
Integrated Circuit Card (ICC) Public Key Remainder
- tag: 9F48
- key: iccPublicKeyRemainder,
Interface Device (IFD) Serial Number
- tag: 9F1E
- key: interfaceDeviceIFDSerialNumber,
International Bank Account Number (IBAN)
- tag: 5F53
- key: internationalBankAccountNumberIBAN,
Issuer Action Code - Default
- tag: 9F0D
- key: issuerActionCodeDefault,
Issuer Action Code - Denial
- tag: 9F0E
- key: issuerActionCodeDenial,
Issuer Action Code - Online
- tag: 9F0F
- key: issuerActionCodeOnline,
Issuer Application Data (IAD)
- tag: 9F10
- key: issuerApplicationData,
Issuer Authentication Data
- tag: 91
- key: issuerAuthenticationData,
Issuer Code Table Index
- tag: 9F11
- key: issuerCodeTableIndex,
Issuer Country Code
- tag: 5F28
- key: issuerCountryCode,
Issuer Country Code (alpha2 format)
- tag: 5F55
- key: issuerCountryCodeAlpha2Format,
Issuer Country Code (alpha3 format)
- tag: 5F56
- key: issuerCountryCodeAlpha3Format,
Issuer Identification Number (IIN)
- tag: 42
- key: iin,
Issuer Script Command
- tag: 86
- key: issuerScriptCommand,
Issuer Script Identifier
- tag: 9F18
- key: issuerScriptIdentifier,
Issuer Script Template 1
- tag: 71
- key: issuerScriptTemplate1,
Issuer Script Template 2
- tag: 72
- key: issuerScriptTemplate2,
Issuer Uniform resource locator (URL)
- tag: 5F50
- key: issuerURL,
Language Preference
- tag: 5F2D
- key: languagePreference,
Last Online Application Transaction Counter (ATC) Register
- tag: 9F13
- key: lastOnlineATCRegister,
Log Entry
- tag: 9F4D
- key: logEntry,
Log Format
- tag: 9F4F
- key: logFormat,
Lower Consecutive Offline Limit (LCOL)
- tag: 9F14
- key: lowerConsecutiveOfflineLimit,
Merchant Category Code (MCC)
- tag: 9F15
- key: merchantCategoryCode,
Merchant Identifier
- tag: 9F16
- key: merchantIdentifier,
Merchant Name and Location
- tag: 9F4E
- key: merchantNameAndLocation,
Personal Identification Number (PIN) Try Counter
- tag: 9F17
- key: pinTryCounter,
Point-of-Service (POS) Entry Mode
- tag: 9F39
- key: pointOfServicePOSEntryMode,
Response Message Template Format 1
- tag: 80
- key: responseMessageTemplateFormat1,
Response Message Template Format 2
- tag: 77
- key: responseMessageTemplateFormat2,
Service Code
- tag: 5F30
- key: serviceCode,
Short File Identifier (SFI)
- tag: 88
- key: sfi,
Signed Dynamic Application Data (SDAD)
- tag: 9F4B
- key: signedDynamicApplicationData,
Signed Static Application Data (SAD)
- tag: 93
- key: signedStaticApplicationData,
Static Data Authentication Tag List (SDA)
- tag: 9F4A
- key: staticDataAuthenticationTagList,
Terminal Floor Limit
- tag: 9F1B
- key: terminalFloorLimit,
Terminal Identification
- tag: 9F1C
- key: terminalIdentification,
Terminal Risk Management Data
- tag: 9F1D
- key: terminalRiskManagementData,
Terminal Verification Results (TVR)
- tag: 95
- key: terminalVerificationResults,
Track 1 Discretionary Data
- tag: 9F1F
- key: track1DiscretionaryData,
Track 2 Discretionary Data
- tag: 9F20
- key: track2DiscretionaryData,
Transaction Certificate (TC) Hash Value
- tag: 98
- key: transactionCertificateTCHashValue,
Transaction Currency Exponent
- tag: 5F36
- key: transactionCurrencyExponent,
Transaction Personal Identification Number (PIN) Data
- tag: 99
- key: pinData,
Currency Code, Transaction Reference
- tag: 9F3C
- key: transactionReferenceCurrencyCode,
Currency Exponent, Transaction Reference
- tag: 9F3D
- key: transactionReferenceCurrencyExponent,
Transaction Status Information (TSI)
- tag: 9B
- key: transactionStatusInformation,
Transaction Time
- tag: 9F21
- key: transactionTime,
Upper Consecutive Offline Limit (UCOL)
- tag: 9F23
- key: upperConsecutiveOfflineLimit
Long tags
Indicates the value of the first byte for tags known to be two bytes long
- 5f
- 9f
DOL numeric types
Indicates the data type for tags in DOLs
- 9F37 - non numeric
- 9F02 - non numeric
- 9F03 - non numeric
- 9F1A - non numeric
- 5F2A - non numeric
- 9A - non numeric
- 9C - non numeric