"NIST (ANSI/NIST-ITL 1-2000) library" for Windows (new version 3.9)


Registered users of version 1.x-3.x please upgrade to version 3.9 free of charge
  

Cognaxon NIST (ANSI/NIST-ITL 1-2000) library adds the power of NIST (ANSI/NIST-ITL 1-2000) file format to your software projects using only a few lines of code.
Additionally “NIST (ANSI/NIST-ITL 1-2000) library” has built-in support for decompressing fingerprint images from WSQ image format.
The source code of NIST (ANSI/NIST-ITL 1-2000) library contains 480,476 lines of code and saves you months of tedious work.

Click here for Free NIST (ANSI/NIST-ITL 1-2000) Viewer which demonstrates capabilities of NIST (ANSI/NIST-ITL 1-2000) library.



Importance of NIST (ANSI/NIST-ITL 1-2000) format

ANSI/NIST-ITL 1-2000 is Data Format for the Interchange of Fingerprint, Facial, & Scar Mark & Tattoo (SMT) Information defined by American National Standard for Information Systems.


Price of NIST (ANSI/NIST-ITL 1-2000) library

NIST (ANSI/NIST-ITL 1-2000) library (for Windows) costs 253.00 U.S. dollars for the first licence (single developer licence) and 19.00 U.S. dollars per every additional licence (client computer), which is the lowest price on the market.
NIST (ANSI/NIST-ITL 1-2000) library (for Windows) runtime free / royalty free license costs 4000.00 U.S. dollars.
To order NIST (ANSI/NIST-ITL 1-2000) library please click here


NIST (ANSI/NIST-ITL 1-2000) library specifications

Table 1 Supported logical records

Logical
record
identifier
Logical record contents Type of data
1Transaction InformationASCII
2Descriptive Text (User-defined)ASCII
4Fingerprint Image Data (High-resolution grayscale)Binary
7Image Data (User-defined)Binary
8Signature Image DataBinary
9Minutiae DataASCII
10Facial & SMT Image RecordASCII/Binary
13Latent Image Data (Variable-resolution)ASCII/Binary
14Tenprint Fingerprint Impressions (Variable-resolution)ASCII/Binary
15Palmprint Image (Variable-Resolution)ASCII/Binary
16User-defined Testing Image Data (Variable-resolution)ASCII/Binary

Table 2 Format of NIST (ANSI/NIST-ITL 1-2000) library

Feature Format
Operating system Windows 95/98/2000/2003/NT/XP/Vista/7
Library format DLL (Dynamic Link Library)
Format of exported functions C language
Calling convention
of exported functions
(default)
__cdecl
Calling conventions
of exported functions
available through additional
wrapper DLL interface
__stdcall
JNIEXPORT
MatLab MEX
Internal engine C++

Table 3 Functions available in the library

Function Description
int RegisterNIST()Registers NIST (ANSI/NIST-ITL 1-2000) library on the computer. Returns 1 if successful, 0 otherwise.
int CreateNewNISTFile()Creates new empty NIST file in the memory. Returns 1 if successful, 0 otherwise.
int WriteNISTToFile(const char *filename)Writes NIST file data contents from memory to the file. Returns 1 if successful, 0 otherwise.
unsigned char* ReadNISTByteArray()Reads NIST byte array contents into memory. Returns NULL if NIST byte array is empty.
int ReadSizeOfNISTByteArray()Reads size of NIST byte array. Returns 0 if NIST byte array is empty.
int ReadNISTFromFile(const char *filename)Reads existing NIST file, loads NIST file contents into memory and decodes NIST file data into usable format. This function must be called at the beginning (one time only) before any further processing of NIST file.
int ReadNISTFromMemory(unsigned char* input_byte_array, int size_of_input_byte_array)Loads existing NIST file contents from memory and decodes NIST file data into usable format. This function must be called at the beginning (one time only) before any further processing of NIST file.
int CheckIfRecordTypeExists(int record_type_number)Checks if record type exists in *.nist file. Returns 1 if successful, 0 otherwise.
int ReadNumberOfRecords(int record_type_number)Returns number of records in *.nist file of the specified record type.
int ReadIDCofRecord(int record_type_number, int record_number)Returns IDC number of the record. Returns -1 if record with record_number was not found in NIST file.
char* ReadRecordTxtField(int record_type_number, int idc, int record_field_number, const char *record_field_name)Returns record text field contents of the specified record type. Returns NULL if record text field is empty or nonexistent.
int ReadSizeOfRecordTxtField(int record_type_number, int idc, int record_field_number, const char *record_field_name)Returns the size of record text field of the specified record type. Returns 0 if record text field is empty or nonexistent.
char* ReadRecordTxtFieldName(int record_type_number, int idc, int record_field_number)Returns name of record text field of the specified record type. Returns NULL if record text field is empty or nonexistent.
int ReadSizeOfRecordTxtFieldName(int record_type_number, int idc, int record_field_number, const char *record_field_name)Returns the size of the record text field name of the specified record type. Returns 0 if record text field is empty or nonexistent.
char* ReadRecordTxtFieldDescription(int record_type_number, int idc, int record_field_number, const char *record_field_name)Returns description of record text field of the specified record type. Returns NULL if record text field is empty or nonexistent.
int ReadSizeOfRecordTxtFieldDescription(int record_type_number, int idc, int record_field_number, const char *record_field_name)Returns the size of the record text field description of the specified record type. Returns 0 if record text field is empty or nonexistent.
char* ReadRecordExportedTxtFields(int record_type_number, int idc)Returns all text fields of the specified record concatenated into one string. Returns NULL if record text field is empty or nonexistent. Output text string is formatted in the following way:
field code followed by comma then followed by field value(s) then followed by new line code (\n\r [Char(10) + Char(13)]) and this pattern is repeated for all subsequent field codes.
Like for example:
LEN,17804
IDC,5
IMP,3
FGP,5
ISR,1
HLL,512
VLL,512
GCA,1
For more detailed description of field codes and their meanings please read bellow in the chapter “ANSI/NIST-ITL 1-2000 format description”
int ReadSizeOfRecordExportedTxtFields(int record_type_number, int idc) Returns size of all txt fields of the specified record concatenated into one string. Returns 0 if record text field is empty or nonexistent.
unsigned char* ReadRecordBinaryField(int record_type_number, int idc)Returns record binary field contents of the specified record type. Returns NULL if record text field is empty or nonexistent.
int ReadSizeOfRecordBinaryField(int record_type_number, int idc)Returns the size of record binary field of the specified record type. Returns 0 if record text field is empty or nonexistent.
HBITMAP CreateHBITMAPfromRecordBinaryField(int record_type_number, int idc)Converts NIST file binary field contents into HBITMAP image. Returns HBITMAP if successful, NULL otherwise.
int InsertRecordBinaryFieldFromFile(int record_type_number, int idc, const char *filename)Modifies *.nist file. Inserts binary field contents (from file) into specified record type with specified IDC number. Please use argument parameter idc = -1 for auto-numbering of IDC numbers. If the record with specified IDC number already exists in *.nist file, then existing old record is overwritten and replaced. Function returns current IDC number which was assigned to currently inserted record.
int InsertRecordBinaryFieldFromMemory(int record_type_number, int idc, unsigned char* input_byte_array, int size_of_input_byte_array, const char* CGA, int CGA_int, int HLL, int VLL)Modifies *.nist file. Inserts binary field contents (from memory byte array) into specified record type with specified IDC number. Please use argument parameter idc = -1 for auto-numbering of IDC numbers. If the record with specified IDC number already exists in *.nist file, then existing old record is overwritten and replaced. Function returns current IDC number which was assigned to currently inserted record.
int InsertRecordTxtField(int record_type_number, int idc, int record_field_number, const char *record_field_name, const char * input_data)Modifies *.nist file. Inserts text field contents into specified record type with specified IDC number. Function InsertRecordTxtField can be called only after function InsertRecordBinaryFieldFromFile/InsertRecordBinaryFieldFromMemory was called and the record with specified IDC number was already created.
int DeleteRecord(int record_type_number, int idc)Deletes specified record type with specified IDC number.
int SetNISTLibErrorReportMode(int nist_error_report_mode)Sets NIST (ANSI/NIST-ITL 1-2000) library error report mode.
"nist_error_report_mode" denotes integer with possible values:
0 - Do not show pop-up dialog messages when error happens;
1 - Show error pop-up dialog messages when error happens.
char* ReadNISTLibLastErrorMessage()Reads NIST (ANSI/NIST-ITL 1-2000) library last error message.
int SetNISTLibTryToDecodeBinaryField(int try_to_decode_binary_field)Sets NIST (ANSI/NIST-ITL 1-2000) library binary field decode mode.
"try_to_decode_binary_field" denotes integer with possible values:
0 - Disables decoding of the binary fields, this prevents NIST (ANSI/NIST-ITL 1-2000) library from crashing when incorrect data in binary field is detected in corrupt NIST file;
1 - Enables decoding of the binary fields, this mode is needed for normal functioning of NIST (ANSI/NIST-ITL 1-2000) library.
Bellow are listed obsolete functionsNo longer supported. Please use new functions instead.
char* ReadType1Record(const char *record_field_name)Obsolete function. Please use new function char* ReadRecordTxtField(int record_type_number, int idc, int record_field_number, const char *record_field_name) instead.
Returns contents of Type-1 record text field.
int ReadType1RecordSizeOfTextField(const char *record_field_name)Obsolete function. Please use new function int ReadSizeOfRecordTxtField(int record_type_number, int idc, int record_field_number, const char *record_field_name) instead.
Returns size of Type-1 record text field.
char* ReadType2Record(int record_field_number)Obsolete function. Please use new function char* ReadRecordTxtField(int record_type_number, int idc, int record_field_number, const char *record_field_name) instead.
Returns contents of Type-2 record text field.
int ReadType2RecordSizeOfTextField(int record_field_number)Obsolete function. Please use new function int ReadSizeOfRecordTxtField(int record_type_number, int idc, int record_field_number, const char *record_field_name) instead.
Returns size of Type-2 record text field.
int ReadType4NumberOfRecords()Obsolete function. Please use new function int ReadNumberOfRecords(int record_type_number) instead.
Returns number of Type-4 records.
int ReadType4RecordParameterField(int idc_or_fpg, int number, const char *record_field_name)Obsolete function. Please use new function char* ReadRecordTxtField(int record_type_number, int idc, int record_field_number, const char *record_field_name) instead.
Returns field code value of Type-4 record binary field.
unsigned char* ReadType4RecordBinaryField(int idc_or_fpg, int number)Obsolete function. Please use new function unsigned char* ReadRecordBinaryField(int record_type_number, int idc) instead.
Returns contents of Type-4 record binary field.
int ReadType4RecordSizeOfBinaryField(int idc_or_fpg, int number)Obsolete function. Please use new function int ReadSizeOfRecordBinaryField(int record_type_number, int idc) instead.
Returns size of Type-4 record binary field.
HBITMAP CreateHBITMAPfromType4RecordBinaryField(int idc_or_fpg, int number)Obsolete function. Please use new function HBITMAP CreateHBITMAPfromRecordBinaryField(int record_type_number, int idc) instead.
Converts Type-4 record binary field contents into HBITMAP image. Returns image in HBITMAP format if successful, returns NULL otherwise.
int SetPointerToNISTRecord(int record_type, int record_number) Obsolete function. Has no equivalent function in new version of the DLL.
Sets current pointer to specified record and data field for further processing.
int ReadSizeOfBinaryNISTField() Obsolete function. Please use new function int ReadSizeOfRecordBinaryField(int record_type_number, int idc) instead.
Returns size of binary NIST field.
unsigned char* ReadBinaryNISTField() Obsolete function. Please use new function unsigned char* ReadRecordBinaryField(int record_type_number, int idc) instead.
Returns contents of NIST file binary field as byte array if successful, returns NULL otherwise.
HBITMAP CreateHBITMAPfromBinaryNISTField() Obsolete function. Please use new function HBITMAP CreateHBITMAPfromRecordBinaryField(int record_type_number, int idc) instead.
Converts NIST file binary field contents into HBITMAP image. Returns image in HBITMAP format if successful, returns NULL otherwise.
int ReadSizeOfTxtNISTField() Obsolete function. Please use new function int ReadSizeOfRecordExportedTxtFields(int record_type_number, int idc) instead.
Returns size of text NIST field.
char* ReadTxtNISTField() Obsolete function. Please use new function char* ReadRecordExportedTxtFields(int record_type_number, int idc) instead.
Returns contents of NIST file data field as text string (char array) if successful, returns NULL otherwise.
Output text string is formatted in the following way:
field code followed by comma then followed by field value(s) then followed by new line code (\n\r [Char(10) + Char(13)]) and this pattern is repeated for all subsequent field codes.
Like for example:
LEN,17804
IDC,5
IMP,3
FGP,5
ISR,1
HLL,512
VLL,512
GCA,1
For more detailed description of field codes and their meanings please read bellow in the chapter “ANSI/NIST-ITL 1-2000 format description”
int InsertType1Record(const char *record_field_name, const char *record_field_data) Obsolete function. Please use new function int InsertRecordTxtField(int record_type_number, int idc, int record_field_number, const char *record_field_name, const char * input_data) instead.
Inserts Type-1 record into NIST file.
record_field_name possible values are: VER, TOT, DAT, PRY, DAI, ORI, TCN, TCR, NSR, NTR, DOM, GMT, DCS.
Values of record fields named LEN, CNT are handled automatically and no manual access to these fields is allowed.
See Table 6 below for more detailed information about the meanings of record_field_name.
record_field_data denotes record field data which must be provided as the char string with terminating NULL character (ASCII code = 0).
Function returns 1 if successful, 0 otherwise.
int DeleteType1Record(const char *record_field_name) Obsolete function. Has no equivalent function in new version of the DLL.
Deletes Type-1 record from NIST file.
record_field_name possible values are: TOT, DAT, PRY, DAI, ORI, TCN, TCR, NSR, NTR, DOM, GMT, DCS.
Fields PRY, TCR, DOM, GMT, DCS are optional and are fully deleted from NIST file.
Fields named LEN, CNT are handled automatically and no manual access to these fields is allowed.
Fields TOT, DAI, ORI, TCN are mandatory in ANSI/NIST-ITL 1-2000 standard and cannot be deleted from NIST file, thus instead of true deletion the contents of these fields are replaced with the empty string.
Fields VER, DAT, NSR, NTR are mandatory in ANSI/NIST-ITL 1-2000 standard and cannot be deleted from NIST file, thus no changes are made to NIST file, however these fields can be overwritten/changed using function InsertType1Record.
See Table 6 below for more detailed information about the meanings of record_field_name.
Function returns 1 if successful, 0 otherwise.
int InsertType2Record(int record_field_number, const char *record_field_data) Obsolete function. Please use new function int InsertRecordTxtField(int record_type_number, int idc, int record_field_number, const char *record_field_name, const char * input_data) instead.
Inserts Type-2 record into NIST file.
Fields named LEN, IDC are handled automatically and no manual access to these fields is allowed.
record_field_number denotes number of user-defined field. record_field_number must be in the range 3-999.
record_field_data denotes record field data which must be provided as the char string with terminating NULL character (ASCII code = 0).
Function returns 1 if successful, 0 otherwise.
int DeleteType2Record(int record_field_number) Obsolete function. Please use new function int DeleteRecord(int record_type_number, int idc) instead.
Deletes Type-2 record from NIST file.
Fields named LEN, IDC are handled automatically and no manual access to these fields is allowed.
record_field_number denotes number of user-defined field. record_field_number must be in the range 3-999.
Function returns 1 if successful, 0 otherwise.
int InsertType4RecordFromFile(const char *filename, int IDC, int IMP, int FGP, int FGP2, int FGP3, int FGP4, int FGP5, int FGP6, int ISR, int HLL, int VLL, int GCA) Obsolete function. Please use new function int InsertRecordBinaryFieldFromFile(int record_type_number, int idc, const char *filename) instead.
Inserts Type-4 record into NIST file. Returns 1 if successful, 0 otherwise.
int InsertType4RecordFromMemory(unsigned char* input_byte_array, int size_of_input_byte_array, int IDC, int IMP, int FGP, int FGP2, int FGP3, int FGP4, int FGP5, int FGP6, int ISR, int HLL, int VLL, int GCA) Obsolete function. Please use new function int InsertRecordBinaryFieldFromMemory(int record_type_number, int idc, unsigned char* input_byte_array, int size_of_input_byte_array, const char* CGA, int CGA_int, int HLL, int VLL) instead.
Inserts Type-4 record into NIST file. Returns 1 if successful, 0 otherwise.
int DeleteType4Record(int idc_or_fpg, int number) Obsolete function. Please use new function int DeleteRecord(int record_type_number, int idc) instead.
Deletes Type-4 record from NIST file. Returns 1 if successful, 0 otherwise.
int ReplaceType4RecordFromFile(const char *filename, int IDC, int IMP, int FGP, int FGP2, int FGP3, int FGP4, int FGP5, int FGP6, int ISR, int HLL, int VLL, int GCA) Obsolete function. Please use new function int InsertRecordBinaryFieldFromFile(int record_type_number, int idc, const char *filename) instead.
Replaces Type-4 record in the NIST file. Returns 1 if successful, 0 otherwise.
int ReplaceType4RecordFromMemory(unsigned char* input_byte_array, int size_of_input_byte_array, int IDC, int IMP, int FGP, int FGP2, int FGP3, int FGP4, int FGP5, int FGP6, int ISR, int HLL, int VLL, int GCA) Obsolete function. Please use new function int InsertRecordBinaryFieldFromMemory(int record_type_number, int idc, unsigned char* input_byte_array, int size_of_input_byte_array, const char* CGA, int CGA_int, int HLL, int VLL) instead.
Replaces Type-4 record in the NIST file. Returns 1 if successful, 0 otherwise.




Adding "NIST (ANSI/NIST-ITL 1-2000) library" library to your software project

Using "NIST (ANSI/NIST-ITL 1-2000) library" library is very easy. Only few lines of code are needed.


Table 4 "NIST (ANSI/NIST-ITL 1-2000) library" sample projects

Program Size  
NIST (ANSI/NIST-ITL 1-2000) sample file 2938 KB Download
NIST library DLL (Dynamic Link Library). Version 3.9 863 KB Download
NIST library stdcall wrapper DLL (Dynamic Link Library) interface. Version 3.0 59 KB Download
NIST library JNIEXPORT wrapper DLL (Dynamic Link Library) interface. Version 3.6 100 KB Download
NIST library MatLab MEX wrapper DLL (Dynamic Link Library) interface. Version 3.0 120 KB Download
NIST library Microsoft Visual C++ 6.0 sample project 9660 KB Download
NIST library Microsoft Visual C++ .NET 2003 sample project 0 KB Download
NIST library Microsoft Visual C# .NET 2003 sample project 7341 KB Download
NIST library Microsoft Visual Basic .NET 2003 sample project 7330 KB Download
NIST library Microsoft Visual Basic 6.0 sample project 7348 KB Download
NIST library Borland C++ Builder 6.0 sample project (dynamic version) 7294 KB Download
NIST library Borland C++ Builder 2006 sample project (dynamic version) 7295 KB Download
NIST library Borland C++ Builder 2006 sample project (static version) 7297 KB Download
NIST library Borland Delphi 7.0 sample project 7305 KB Download
NIST library Sun Java (J2SE Development Kit 5.0 Update 7) sample project 7525 KB Download
NIST library NetBeans 5.0 Sun Java (J2SE Development Kit 5.0 Update 7) sample project 7432 KB Download
NIST library Eclipse 3.3.0 Sun Java (J2SE Development Kit 5.0 Update 7) sample project 7449 KB Download
NIST library MinGW C/C++ 3.4.2 sample project 7313 KB Download
NIST library Eclipse C/C++ 3.3.0 sample project 7437 KB Download
NIST library Code::Blocks C++ 1.0rc2 sample project 7341 KB Download
NIST library Bloodshed Dev-C++ 4 sample project 7336 KB Download
NIST library Borland C++ 5.5 for Win32 sample project 7398 KB Download
NIST library Digital Mars C/C++ 8.50 sample project 7362 KB Download
NIST library Microsoft Visual FoxPro 5.0 sample project 8197 KB Download
NIST library MatLab 7.0 sample project 7419 KB Download
NIST library Compaq Visual Fortran 6.6 sample project 487 KB Download
NIST library PowerBASIC 8.0 sample project 7367 KB Download



ANSI/NIST-ITL 1-2000 format description

ANSI/NIST-ITL 1-2000 standard defines the content, format, and units of measurement for the exchange of fingerprint, palmprint, facial/mugshot, and scar, mark, & tattoo (SMT) image information that may be used in the identification process of a subject. The information consists of a variety of mandatory and optional items, including scanning parameters, related descriptive and record data, digitized fingerprint information, and compressed or uncompressed images. This information is intended for interchange among criminal justice administrations or organizations that rely on automated fingerprint and palmprint identification systems or use facial/mugshot or SMT data for identification purposes. This standard does not define the characteristics of the software that shall be required to format the textual information or to compress and assemble the associated digital fingerprint image information. Typical applications for this software might include, but are not limited to, computer systems associated with a live-scan fingerprinting system, a workstation that is connected to or is part of an Automated Fingerprint Identification System (AFIS), or an Image Storage and Retrieval system containing fingerprints, facial/mugshot, or SMT images.
Information compiled and formatted in accordance with this standard can be recorded on machine-readable media or may be transmitted by data communication facilities in lieu of a finger print card, a latent fingerprint, facial/mugshot, or other types of photographs. Law enforcement and criminal justice agencies will use the standard to exchange fingerprint, palmprint, or other photographic images and related identification data.
Systems claiming conformance with this standard shall implement the transmitting and/or receiving of record types as defined by this standard. Systems claiming conformance are not required to implement every record type specified herein. At a minimum, they must be capable of transmitting and receiving Type-1 records. However, for a transaction to be meaningful, there must be at least one additional type of record included. The implementor must document the record types supported in terms of transmitting and/or receiving. Those record types not implemented shall be ignored by the conforming system.

Table 5 ANSI/NIST-ITL File Standard Specification

Document Size  
ANSI/NIST-ITL 1-2000. NIST Special Publication 500-245. Approved July 27, 2000 509 KB Download
ANSI/NIST-ITL 1-2000. The Interpol AFIS Expert Group. Version No. 4.22b. October 28, 2005 375 KB Download
ANSI/NIST-ITL 1-2000. Electronic Fingerprint Transmission Specification. FBI, Criminal Justice Information Services Division. IAFIS-DOC-01078-7.1. May 2, 2005 1239 KB Download
ANSI/NIST-ITL 1-2007. NIST Special Publication 500-271. Approved April 20, 2007 1475 KB Download
ANSI/NIST-ITL 2-2008. NIST Special Publication 500-275. Approved August 12, 2008 1459 KB Download

Table 6 ANSI/NIST-ITL 1-2000 file format specifications (Logical record types)

Logical
record
identifier
Logical record contents Type of data
1Transaction InformationASCII
2Descriptive Text (User-defined)ASCII
3Fingerprint Image Data (Low-resolution grayscale)Binary
4Fingerprint Image Data (High-resolution grayscale)Binary
5Fingerprint Image Data (Low-resolution binary)Binary
6Fingerprint Image Data (High-resolution binary)Binary
7Image Data (User-defined)Binary
8Signature Image DataBinary
9Minutiae DataASCII
10Facial & SMT Image DataASCII/Binary
11Reserved for Future Use-
12Reserved for Future Use-
13Latent Image Data (Variable-resolution)ASCII/Binary
14Tenprint fingerprint Impressions (Variable-resolution)ASCII/Binary
15Palmprint Image Data (Variable-resolution)ASCII/Binary
16User-defined Testing Image Data (Variable-resolution)ASCII/Binary
17Iris image record (ANSI/NIST-ITL 1-2007)ASCII/Binary
18-98Reserved for future useASCII/Binary
99CBEFF biometric data record (ANSI/NIST-ITL 1-2007)ASCII/Binary

Table 7 Type-1 transaction information record. Fields for Type-1 transaction information record

Field
code
Field name Description
LENLogical record lengthThis mandatory ASCII field contains the total count of the number of bytes in this Type-1 logical record.
VERVersion numberThis mandatory field specifies the current version number of the standard implemented by the software or system creating the file. The format of this field shall consist of four numeric characters. The first two characters shall specify the major version number. The last two characters shall be used to specify the minor revision number. The initial revision number for a version shall be "00". The entry in this field for this 2000 approved standard is "0300". This version number signifies the inclusion of the tagged-field logical Type-10 through Type-16 image records.
CNTFile contentThis mandatory field lists and identifies each of the logical records in the file by record type. It also specifies the order in which the remaining logical records shall appear in the file.
TOTType of transactionThis mandatory field contains an identifier, which designates the type of transaction and subsequent processing that this file should be given. (Note: Type of Transaction shall be in accordance with definitions provided by the receiving agency.)
DATDateThis mandatory field contains the date that the transaction was initiated. The date appears as eight digits in the format CCYYMMDD. The CCYY characters represents the year of the transaction; the MM characters are the tens and units values of the month; and the DD characters are the day in the month. For example, "20000103" represents January 3, 2000.
PRYPriorityWhen this field is used, it contains a single information character to designate the urgency with which a response is desired. The values shall range from "1" to "9", with "1" denoting the highest priority. The default value is defined by the agency receiving the transaction.
DAIDestination agency identifierThis mandatory field contains the identifier of the administration or organization designated to receive the transmission. The size and data content of this field shall be user-defined and in accordance with the receiving agency.
ORIOriginating agency identifier This mandatory field contains the identifier of the administration or organization originating the transaction. The size and data content of this field is user-defined and in accordance with the receiving agency.
TCNTransaction control numberThis mandatory field shall contain the Transaction Control Number as assigned by the originating agency. A unique alphanumeric control number shall be assigned to each transaction. For any transaction that requires a response, the respondent shall refer to this number in communicating with the originating agency.
TCRTransaction control referenceThis optional field is used for responses that refer to the TCN of a previous transaction involving an inquiry or other action that required a response.
NSRNative scanning resolutionThis mandatory field specifies the native scanning resolution of the AFIS or other fingerprint or palmprint image capture device supported by the originator of the transmission. This field permits the recipient of this transaction to send response data at a transmitting resolution tailored to the NSR (if it is able to do so) or to the minimum scanning resolution. This field shall contain five bytes specifying the native scanning resolution in pixels per millimeter. The resolution shall be expressed as two numeric characters followed by a decimal point and two more numeric characters (e.g., 19.69). This field is needed because the interchange of fingerprint information between systems of the same manufacturer may, in some instances, be more efficiently done at a transmitting resolution equal to the native scanning resolution of the system rather than at the minimum scanning resolution specified in this standard. For applications other than fingerprint where resolution is not a factor or not applicable (such a facial or SMT image) this field shall be set to "00.00".
NTRNominal transmitting resolutionThis mandatory field specifies the nominal transmitting resolution for the fingerprint or palmprint image(s) being exchanged. This field specifies the transmitting resolution in pixels per millimeter. The resolution is expressed as two numeric characters followed by a decimal point and two more numeric characters (e.g., 19.69). The transmitting resolution is within the range specified by the transmitting resolution requirement. For applications where resolution is not a factor or not applicable (such as a facial or SMT image) this field shall be set to "00.00".
DOMDomain nameThis optional field identifies the domain name for the user-defined Type-2 logical record implementation. If present, the domain name may only appear once within a transaction. It shall consist of one or two information items. The first information item will uniquely identify the agency, entity, or implementation used for formatting the tagged fields in the Type-2 record. An optional second information item will contain the unique version of the particular implementation. The default value for the field shall be the North American Domain implementation and shall appear as "NORAM".
GMTGreenwich mean timeThis optional field provides a mechanism for expressing the date and time in terms of universal Greenwich Mean Time (GMT) units. If used, the GMT field contains the universal date that will be in addition to the local date contained in Date Field (DAT). Use of the GMT field eliminates local time inconsistencies encountered when a transaction and its response are transmitted between two places separated by several time zones. The GMT provides a universal date and 24-hour clock time independent of time zones. It is represented as "CCYYMMDDHHMMSSZ", a 15-character string that is the concatenation of the date with the GMT and concludes with a "Z". The "CCYY" characters shall represent the year of the transaction, the "MM" characters shall be the tens and units values of the month, and the "DD" characters shall be the tens and units values of the day of the month, the "HH" characters represent the hour, the "MM" the minute, and the "SS" represents the second. The complete date shall not exceed the current date.
DCSDirectory of character setsThis optional field is a directory or list of character sets other than 7-bit ASCII that may appear within this transaction. This field shall contain one or more subfields, each with three information items. The first information item is the three-character identifier for the character set index number that references an associated character set throughout the transaction file. The second information item shall be the common name for the character set associated with that index number, the optional third information item is the specific version of the character set used. Table 8 lists the reserved named character sets and their associated 3-character index numbers.

Table 8 Directory of character sets

Character
set index
Character
set name
Description
000ASCII7-bit English (Default)
001ASCII8-bit Latin
002UNICODE16-bit
003-127-------Reserved for ANSI/NIST future use
128-999-------User-defined character sets

Type-2 logical records contains textual information relating to the subject of the transaction and is represented in an ASCII format. This record may include such information as the state or FBI numbers, physical characteristics, demographic data, and the subject's criminal history. Every transaction usually contains one or more Type-2 records which is dependent upon the entry in the Type-of-Transaction Field (TOT).
The first two data fields of the Type-2 record are mandatory, ordered, and defined by this standard. The remaining fields of the record(s) shall conform to the format, content, and requirements of the subscribed Domain Name (DOM) used by the agency to which the transmission is being sent.

Table 9 Type-2 user-defined descriptive text record. Fields for Type-2 logical records

Field
code
Field name Description
LENLogical record lengthThis mandatory ASCII field contains the length of the logical record specifying the total number of bytes, including every character of every field contained in the record.
IDCImage designation characterThis mandatory field is used to identify the user-defined text information contained in this record. The IDC contained in this field is the IDC of the Type-2 logical record as found in the file content (CNT) field of the Type-1 record.
US3-US999
(003-999)
User-defined fieldsIndividual fields required for given transaction types, including field size and content, conform to the specifications set forth by the agency to whom the transmission is being sent. “NIST (ANSI/NIST-ITL 1-2000) library” labels user-defined fields as two letters “US” plus the number, like for example “US7”, “US31” or “US803”.

Type-4 logical records contains high resolution grayscale fingerprint image data that have been scanned at the minimum scanning resolution. Alternatively, the native scanning resolution may be used and the image processed such that the resulting transmitting resolution is within the range specified by the transmitting resolution requirement for high-resolution images. When the image data is obtained from a live-scan reader it shall be the grayscale output of the livescan fingerprint scanner and not a rescan of a hard copy fingerprint image.

Table 10 Type-4 high-resolution grayscale fingerprint image record. Fields for Type-4 logical record

Field
code
Field name Description
LENLogical record lengthThis mandatory field contains the length of the logical record specifying the total number of bytes, including every byte of all nine fields contained in the record.
IDCImage designation characterThis mandatory field identifies the image data contained in this record.
IMPImpression type This mandatory field contains code which describes the manner by which the fingerprint image information was obtained. Finger impression type code numbers are defined in Table 11.
FGPFinger positionThis mandatory field contains possible finger positions. The code number for the known or most probable finger position are defined in Table 12. Up to five additional finger positions may be referenced by entering the alternate finger positions.
ISRImage scanning resolution This mandatory field contains a value of "0" if the minimum scanning resolution is used, and a "1" if the native scanning resolution is used.
HLLHorizontal line lengthThis mandatory field specifies the number of pixels contained on a single horizontal line of the transmitted image.
VLLVertical line lengthThis mandatory field specifies the number of horizontal lines contained in the transmitted image.
GCAGrayscale compression algorithmThis mandatory field specifies the type of grayscale compression algorithm used (if any). A zero denotes no compression. Otherwise, the contents of this byte shall be the number allocated to the particular compression technique used by the interchange parties. The domain registrar will maintain a registry relating these numbers to the compression algorithms.
DATAImage dataThis binary field contains all of the highresolution grayscale image data. Each pixel of the uncompressed image shall be quantized to eight bits (256 gray levels) contained in a single byte. If compression is used, the pixel data are compressed in accordance with the compression technique specified in the GCA field.

Table 11 Finger impression type codes

IMP
code
Description
0Live-scan plain
1Live-scan rolled
2Nonlive-scan plain
3Nonlive-scan rolled
4Latent impression
5Latent tracing
6Latent photo
7Latent lift

Table 12 Finger position codes and maximum size

FGP
code
Finger position Max image
area, mm2
Width,
mm (in)
Length,
mm (in)
0Unknown174540.6 (1.6)38.1 (1.5)
1Right thumb174540.6 (1.6)38.1 (1.5)
2Right index finger164040.6 (1.6)38.1 (1.5)
3Right middle finger164040.6 (1.6)38.1 (1.5)
4Right ring finger164040.6 (1.6)38.1 (1.5)
5Right little finger164040.6 (1.6)38.1 (1.5)
6Left thumb174540.6 (1.6)38.1 (1.5)
7Left index finger164040.6 (1.6)38.1 (1.5)
8Left middle finger164040.6 (1.6)38.1 (1.5)
9Left ring finger164040.6 (1.6)38.1 (1.5)
10Left little finger164040.6 (1.6)38.1 (1.5)
11Plain right thumb240025.4 (1.0)50.8 (2.0)
12Plain left thumb240025.4 (1.0)50.8 (2.0)
13Plain right four fingers680081.3 (3.2)50.8 (2.0)
14Plain left four fingers680081.3 (3.2)50.8 (2.0)












Copyright © 2010 Cognaxon. All rights reserved.