emv
Version:
EMV / Chip and PIN CLI and library for PC/SC card readers
140 lines • 5.67 kB
TypeScript
import type { CardResponse } from './types.js';
/**
* Format GPO response (Response Message Template Format 1 or 2)
* Decodes AIP and AFL
*/
export declare function formatGpoResponse(buffer: Buffer): string;
/**
* EMV tag dictionary mapping hex codes to human-readable names.
* Based on EMV Book 3 specification.
*/
export declare const EMV_TAGS: {
readonly '4F': "APP_IDENTIFIER";
readonly '50': "APP_LABEL";
readonly '57': "TRACK_2";
readonly '5A': "PAN";
readonly '5F20': "CARDHOLDER_NAME";
readonly '5F24': "APP_EXPIRY";
readonly '5F25': "APP_EFFECTIVE";
readonly '5F28': "ISSUER_COUNTRY_CODE";
readonly '5F2A': "TRANSACTION_CURRENCY_CODE";
readonly '5F2D': "LANGUAGE_PREFERENCE";
readonly '5F30': "SERVICE_CODE";
readonly '5F34': "PAN_SEQUENCE_NUMBER";
readonly '5F36': "TRANSACTION_CURRENCY_EXPONENT";
readonly '5F50': "ISSUER_URL";
readonly '61': "APPLICATION_TEMPLATE";
readonly '6F': "FILE_CONTROL_INFO";
readonly '70': "EMV_APP_ELEMENTARY_FILE";
readonly '71': "ISSUER_SCRIPT_TEMPLATE_1";
readonly '72': "ISSUER_SCRIPT_TEMPLATE_2";
readonly '77': "RESPONSE_TEMPLATE_2";
readonly '80': "RESPONSE_TEMPLATE_1";
readonly '81': "AUTH_AMOUNT_BIN";
readonly '82': "APP_INTERCHANGE_PROFILE";
readonly '83': "COMMAND_TEMPLATE";
readonly '84': "DEDICATED_FILE_NAME";
readonly '86': "ISSUER_SCRIPT_CMD";
readonly '87': "APP_PRIORITY";
readonly '88': "SFI";
readonly '89': "AUTH_IDENTIFICATION_RESPONSE";
readonly '8A': "AUTH_RESPONSE_CODE";
readonly '8C': "CDOL_1";
readonly '8D': "CDOL_2";
readonly '8E': "CVM_LIST";
readonly '8F': "CA_PK_INDEX";
readonly '90': "ISSUER_PK_CERTIFICATE";
readonly '91': "ISSUER_AUTH_DATA";
readonly '92': "ISSUER_PK_REMAINDER";
readonly '93': "SIGNED_STATIC_APPLICATION_DATA";
readonly '94': "APP_FILE_LOCATOR";
readonly '95': "TERMINAL_VERIFICATION_RESULTS";
readonly '98': "TC_HASH_VALUE";
readonly '99': "TRANSACTION_PIN_DATA";
readonly '9A': "TRANSACTION_DATE";
readonly '9B': "TRANSACTION_STATUS_INFORMATION";
readonly '9C': "TRANSACTION_TYPE";
readonly '9D': "DIRECTORY_DEFINITION_FILE";
readonly '9F01': "ACQUIRER_ID";
readonly '9F02': "AUTH_AMOUNT_NUM";
readonly '9F03': "OTHER_AMOUNT_NUM";
readonly '9F04': "OTHER_AMOUNT_BIN";
readonly '9F05': "APP_DISCRETIONARY_DATA";
readonly '9F06': "AID_TERMINAL";
readonly '9F07': "APP_USAGE_CONTROL";
readonly '9F08': "APP_VERSION_NUMBER";
readonly '9F09': "APP_VERSION_NUMBER_TERMINAL";
readonly '9F0D': "IAC_DEFAULT";
readonly '9F0E': "IAC_DENIAL";
readonly '9F0F': "IAC_ONLINE";
readonly '9F10': "ISSUER_APPLICATION_DATA";
readonly '9F11': "ISSUER_CODE_TABLE_IDX";
readonly '9F12': "APP_PREFERRED_NAME";
readonly '9F13': "LAST_ONLINE_ATC";
readonly '9F14': "LOWER_OFFLINE_LIMIT";
readonly '9F15': "MERCHANT_CATEGORY_CODE";
readonly '9F16': "MERCHANT_ID";
readonly '9F17': "PIN_TRY_COUNT";
readonly '9F18': "ISSUER_SCRIPT_ID";
readonly '9F1A': "TERMINAL_COUNTRY_CODE";
readonly '9F1B': "TERMINAL_FLOOR_LIMIT";
readonly '9F1C': "TERMINAL_ID";
readonly '9F1D': "TRM_DATA";
readonly '9F1E': "IFD_SERIAL_NUM";
readonly '9F1F': "TRACK_1_DD";
readonly '9F21': "TRANSACTION_TIME";
readonly '9F22': "CA_PK_INDEX_TERM";
readonly '9F23': "UPPER_OFFLINE_LIMIT";
readonly '9F26': "APPLICATION_CRYPTOGRAM";
readonly '9F27': "CRYPTOGRAM_INFORMATION_DATA";
readonly '9F2D': "ICC_PIN_ENCIPHERMENT_PK_CERT";
readonly '9F32': "ISSUER_PK_EXPONENT";
readonly '9F33': "TERMINAL_CAPABILITIES";
readonly '9F34': "CVM_RESULTS";
readonly '9F35': "APP_TERMINAL_TYPE";
readonly '9F36': "APP_TRANSACTION_COUNTER";
readonly '9F37': "APP_UNPREDICTABLE_NUMBER";
readonly '9F38': "ICC_PDOL";
readonly '9F39': "POS_ENTRY_MODE";
readonly '9F3A': "AMOUNT_REF_CURRENCY";
readonly '9F3B': "APP_REF_CURRENCY";
readonly '9F3C': "TRANSACTION_REF_CURRENCY_CODE";
readonly '9F3D': "TRANSACTION_REF_CURRENCY_EXPONENT";
readonly '9F40': "ADDITIONAL_TERMINAL_CAPABILITIES";
readonly '9F41': "TRANSACTION_SEQUENCE_COUNTER";
readonly '9F42': "APP_CURRENCY_CODE";
readonly '9F43': "APP_REF_CURRENCY_EXPONENT";
readonly '9F44': "APP_CURRENCY_EXPONENT";
readonly '9F45': "DATA_AUTH_CODE";
readonly '9F46': "ICC_PK_CERTIFICATE";
readonly '9F47': "ICC_PK_EXPONENT";
readonly '9F48': "ICC_PK_REMAINDER";
readonly '9F49': "DDOL";
readonly '9F4A': "STATIC_DATA_AUTHENTICATION_TAG_LIST";
readonly '9F4C': "ICC_DYNAMIC_NUMBER";
readonly A5: "FCI_TEMPLATE";
readonly BF0C: "FCI_ISSUER_DD";
};
/**
* Get the human-readable name for an EMV tag
*/
export declare function getTagName(tag: number): string;
/**
* Format a card response as a human-readable string
*/
export declare function format(response: CardResponse): string;
/**
* Find a specific tag in a Buffer containing TLV data
* @param buffer - The buffer to search
* @param tag - The tag number to find (e.g., 0x4F for APP_IDENTIFIER)
* @returns The tag value as a Buffer, or undefined if not found
*/
export declare function findTagInBuffer(buffer: Buffer, tag: number): Buffer | undefined;
/**
* Find a specific tag in a card response
* @param response - The card response to search
* @param tag - The tag number to find (e.g., 0x4F for APP_IDENTIFIER)
* @returns The tag value as a Buffer, or undefined if not found
*/
export declare function findTag(response: CardResponse, tag: number): Buffer | undefined;
//# sourceMappingURL=emv-tags.d.ts.map