This algorithm generates an intermediate PIN based on the specified
validation data. A part of the intermediate PIN is adjusted by adding
an offset data. A part of the result is extracted. The extracted value
may or may not be modified before it compares with the customer-entered
PIN.
The algorithm requires the following input parameters:
- A 64-bit validation data
- A 64-bit decimalization table
- A 128-bit PIN verification key
- An offset data
- A customer-entered PIN
The rightmost 4 digits of the offset data form the PIN offset.
- The validation data is enciphered using the PIN verification key.
Each digit of the enciphered validation data is replaced by the digit
in the decimalization table whose displacement from the leftmost digit
of the table is the same as the value of the digit of enciphered validation
data.
- The leftmost 6 digits of the result is added (modulo 10) to the
offset data. The modulo 10 addition ignores carries.
- The rightmost 4 digits of the result of the addition (modulo 10)
are extracted.
- The leftmost digit of the extracted value is checked for zero.
If the digit is zero, the digit is set to one; otherwise, the digit
remains unchanged. The resulting four digits are compared with the
customer-entered PIN. If they match, PIN verification is successful;
otherwise, verification is unsuccessful.
Figure 1 illustrates the GBP PIN verification
algorithm.
Figure 1. GBP PIN Verification Algorithm