FASC-N: correct encoding of the packed 4-bit decimal format with odd parity

The BCD digits in the FASC-N credential are sent lsb first followed by an
odd parity.  Since this perl script is simply packing the bits in their
expected order, the encodings should exactly match figure 7 in
"Technical Implementation Guidance: Smart Card Enabled Physical Access
Control Systems Version 2.2".
This commit is contained in:
Stacey Sheldon
2019-01-01 01:23:55 -05:00
parent 79b86cf9bd
commit 421469b220
+10 -10
View File
@@ -31,24 +31,24 @@
# S9999F9999F999999F0F1F0000000000300001E # S9999F9999F999999F0F1F0000000000300001E
# and outputs that in hex, encoded in the 5-bit form described in # and outputs that in hex, encoded in the 5-bit form described in
# "Technical Implementation Guidance: Smart Card Enabled Physical Access # "Technical Implementation Guidance: Smart Card Enabled Physical Access
# Control Systems" # Control Systems Version 2.2", Section 6.2, Figure 7.
use strict; use strict;
use Bit::Vector; use Bit::Vector;
my %encoding = ( my %encoding = (
0 => "00001", 0 => "00001",
1 => "00010", 1 => "10000",
2 => "00100", 2 => "01000",
3 => "00111", 3 => "11001",
4 => "01000", 4 => "00100",
5 => "01011", 5 => "10101",
6 => "01101", 6 => "01101",
7 => "01110", 7 => "11100",
8 => "10000", 8 => "00010",
9 => "10011", 9 => "10011",
S => "11010", # the examples and definitions of S and F differ S => "11010",
F => "10110", # but we'll go with the examples here.. F => "10110",
E => "11111", E => "11111",
); );