nPA: fixed Python 2/3 incompatibilities
This commit is contained in:
@@ -109,8 +109,8 @@ class CardGenerator(object):
|
||||
bertlv_data=[])
|
||||
|
||||
# EF.COM
|
||||
COM = pack([(0x5F01, 4, "0107"), (0x5F36, 6, "040000"),
|
||||
(0x5C, 2, "6175")])
|
||||
COM = pack([(0x5F01, 4, b"0107"), (0x5F36, 6, b"040000"),
|
||||
(0x5C, 2, b"6175")])
|
||||
COM = pack(((0x60, len(COM), COM),))
|
||||
df.append(TransparentStructureEF(parent=df, fid=0x011E,
|
||||
filedescriptor=0, data=COM))
|
||||
@@ -130,9 +130,9 @@ class CardGenerator(object):
|
||||
FRH = "FAC" + "\x00" + "010" + "\x00" +\
|
||||
inttostring(14 + length, 4) + inttostring(1, 2)
|
||||
picture = FRH + FIB + IIB + picture
|
||||
DG2 = pack([(0xA1, 8, "\x87\x02\x01\x01\x88\x02\x05\x01"),
|
||||
DG2 = pack([(0xA1, 8, b"\x87\x02\x01\x01\x88\x02\x05\x01"),
|
||||
(0x5F2E, len(picture), picture)])
|
||||
DG2 = pack([(0x02, 1, "\x01"), (0x7F60, len(DG2), DG2)])
|
||||
DG2 = pack([(0x02, 1, b"\x01"), (0x7F60, len(DG2), DG2)])
|
||||
DG2 = pack([(0x7F61, len(DG2), DG2)])
|
||||
else:
|
||||
DG2 = ""
|
||||
@@ -151,179 +151,179 @@ class CardGenerator(object):
|
||||
def __generate_nPA(self):
|
||||
from virtualsmartcard.cards.nPA import nPA_SAM
|
||||
mappings = [
|
||||
('\x04\x00\x7f\x00\x07\x02\x02\x04', range(1, 5), range(1, 5),
|
||||
(b'\x04\x00\x7f\x00\x07\x02\x02\x04', range(1, 5), range(1, 5),
|
||||
"PACE"),
|
||||
('\x04\x00\x7f\x00\x07\x02\x02\x02', range(1, 3), range(1, 6),
|
||||
(b'\x04\x00\x7f\x00\x07\x02\x02\x02', range(1, 3), range(1, 6),
|
||||
"TA"),
|
||||
('\x04\x00\x7f\x00\x07\x02\x02\x02', [1], [6], "TA"),
|
||||
('\x04\x00\x7f\x00\x07\x02\x02\x03', range(1, 3), range(1, 5),
|
||||
(b'\x04\x00\x7f\x00\x07\x02\x02\x02', [1], [6], "TA"),
|
||||
(b'\x04\x00\x7f\x00\x07\x02\x02\x03', range(1, 3), range(1, 5),
|
||||
"CA"),
|
||||
('\x04\x00\x7f\x00\x07\x02\x02\x05', range(1, 3), range(1, 6),
|
||||
(b'\x04\x00\x7f\x00\x07\x02\x02\x05', range(1, 3), range(1, 6),
|
||||
"RI"),
|
||||
]
|
||||
for oid_base, x_list, y_list, algo in mappings:
|
||||
for oid in [oid_base + chr(x) + chr(y) for x in x_list for y in
|
||||
y_list]:
|
||||
for oid in [oid_base + inttostring(x) + inttostring(y)
|
||||
for x in x_list for y in y_list]:
|
||||
ALGO_MAPPING[oid] = algo
|
||||
ALGO_MAPPING["\x04\x00\x7f\x00\x07\x03\x01\x04\x03"] = "CommunityID"
|
||||
ALGO_MAPPING["\x04\x00\x7f\x00\x07\x03\x01\x04\x02"] = "DateOfExpiry"
|
||||
ALGO_MAPPING["\x04\x00\x7f\x00\x07\x03\x01\x04\x01"] = "DateOfBirth"
|
||||
ALGO_MAPPING[b"\x04\x00\x7f\x00\x07\x03\x01\x04\x03"] = "CommunityID"
|
||||
ALGO_MAPPING[b"\x04\x00\x7f\x00\x07\x03\x01\x04\x02"] = "DateOfExpiry"
|
||||
ALGO_MAPPING[b"\x04\x00\x7f\x00\x07\x03\x01\x04\x01"] = "DateOfBirth"
|
||||
|
||||
self.mf = MF()
|
||||
|
||||
card_access = "\x31\x81\xb3\x30\x0d\x06\x08\x04\x00\x7f\x00\x07\x02"\
|
||||
"\x02\x02\x02\x01\x02\x30\x12\x06\x0a\x04\x00\x7f\x00"\
|
||||
"\x07\x02\x02\x03\x02\x02\x02\x01\x02\x02\x01\x41\x30"\
|
||||
"\x12\x06\x0a\x04\x00\x7f\x00\x07\x02\x02\x03\x02\x02"\
|
||||
"\x02\x01\x02\x02\x01\x45\x30\x12\x06\x0a\x04\x00\x7f"\
|
||||
"\x00\x07\x02\x02\x04\x02\x02\x02\x01\x02\x02\x01\x0d"\
|
||||
"\x30\x1c\x06\x09\x04\x00\x7f\x00\x07\x02\x02\x03\x02"\
|
||||
"\x30\x0c\x06\x07\x04\x00\x7f\x00\x07\x01\x02\x02\x01"\
|
||||
"\x0d\x02\x01\x41\x30\x1c\x06\x09\x04\x00\x7f\x00\x07"\
|
||||
"\x02\x02\x03\x02\x30\x0c\x06\x07\x04\x00\x7f\x00\x07"\
|
||||
"\x01\x02\x02\x01\x0d\x02\x01\x45\x30\x2a\x06\x08\x04"\
|
||||
"\x00\x7f\x00\x07\x02\x02\x06\x16\x1e\x68\x74\x74\x70"\
|
||||
"\x3a\x2f\x2f\x62\x73\x69\x2e\x62\x75\x6e\x64\x2e\x64"\
|
||||
"\x65\x2f\x63\x69\x66\x2f\x6e\x70\x61\x2e\x78\x6d\x6c"
|
||||
card_access = b"\x31\x81\xb3\x30\x0d\x06\x08\x04\x00\x7f\x00\x07\x02"\
|
||||
b"\x02\x02\x02\x01\x02\x30\x12\x06\x0a\x04\x00\x7f\x00"\
|
||||
b"\x07\x02\x02\x03\x02\x02\x02\x01\x02\x02\x01\x41\x30"\
|
||||
b"\x12\x06\x0a\x04\x00\x7f\x00\x07\x02\x02\x03\x02\x02"\
|
||||
b"\x02\x01\x02\x02\x01\x45\x30\x12\x06\x0a\x04\x00\x7f"\
|
||||
b"\x00\x07\x02\x02\x04\x02\x02\x02\x01\x02\x02\x01\x0d"\
|
||||
b"\x30\x1c\x06\x09\x04\x00\x7f\x00\x07\x02\x02\x03\x02"\
|
||||
b"\x30\x0c\x06\x07\x04\x00\x7f\x00\x07\x01\x02\x02\x01"\
|
||||
b"\x0d\x02\x01\x41\x30\x1c\x06\x09\x04\x00\x7f\x00\x07"\
|
||||
b"\x02\x02\x03\x02\x30\x0c\x06\x07\x04\x00\x7f\x00\x07"\
|
||||
b"\x01\x02\x02\x01\x0d\x02\x01\x45\x30\x2a\x06\x08\x04"\
|
||||
b"\x00\x7f\x00\x07\x02\x02\x06\x16\x1e\x68\x74\x74\x70"\
|
||||
b"\x3a\x2f\x2f\x62\x73\x69\x2e\x62\x75\x6e\x64\x2e\x64"\
|
||||
b"\x65\x2f\x63\x69\x66\x2f\x6e\x70\x61\x2e\x78\x6d\x6c"
|
||||
self.mf.append(TransparentStructureEF(parent=self.mf, fid=0x011c,
|
||||
shortfid=0x1c, data=card_access))
|
||||
card_security = "\x30\x82\x05\xA0\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01"\
|
||||
"\x07\x02\xA0\x82\x05\x91\x30\x82\x05\x8D\x02\x01\x03"\
|
||||
"\x31\x0F\x30\x0D\x06\x09\x60\x86\x48\x01\x65\x03\x04"\
|
||||
"\x02\x01\x05\x00\x30\x82\x01\x48\x06\x08\x04\x00\x7F"\
|
||||
"\x00\x07\x03\x02\x01\xA0\x82\x01\x3A\x04\x82\x01\x36"\
|
||||
"\x31\x82\x01\x32\x30\x0D\x06\x08\x04\x00\x7F\x00\x07"\
|
||||
"\x02\x02\x02\x02\x01\x02\x30\x12\x06\x0A\x04\x00\x7F"\
|
||||
"\x00\x07\x02\x02\x03\x02\x02\x02\x01\x02\x02\x01\x41"\
|
||||
"\x30\x12\x06\x0A\x04\x00\x7F\x00\x07\x02\x02\x04\x02"\
|
||||
"\x02\x02\x01\x02\x02\x01\x0D\x30\x17\x06\x0A\x04\x00"\
|
||||
"\x7F\x00\x07\x02\x02\x05\x02\x03\x30\x09\x02\x01\x01"\
|
||||
"\x02\x01\x43\x01\x01\xFF\x30\x17\x06\x0A\x04\x00\x7F"\
|
||||
"\x00\x07\x02\x02\x05\x02\x03\x30\x09\x02\x01\x01\x02"\
|
||||
"\x01\x44\x01\x01\x00\x30\x19\x06\x09\x04\x00\x7F\x00"\
|
||||
"\x07\x02\x02\x05\x02\x30\x0C\x06\x07\x04\x00\x7F\x00"\
|
||||
"\x07\x01\x02\x02\x01\x0D\x30\x1C\x06\x09\x04\x00\x7F"\
|
||||
"\x00\x07\x02\x02\x03\x02\x30\x0C\x06\x07\x04\x00\x7F"\
|
||||
"\x00\x07\x01\x02\x02\x01\x0D\x02\x01\x41\x30\x2A\x06"\
|
||||
"\x08\x04\x00\x7F\x00\x07\x02\x02\x06\x16\x1E\x68\x74"\
|
||||
"\x74\x70\x3A\x2F\x2F\x62\x73\x69\x2E\x62\x75\x6E\x64"\
|
||||
"\x2E\x64\x65\x2F\x63\x69\x66\x2F\x6E\x70\x61\x2E\x78"\
|
||||
"\x6D\x6C\x30\x62\x06\x09\x04\x00\x7F\x00\x07\x02\x02"\
|
||||
"\x01\x02\x30\x52\x30\x0C\x06\x07\x04\x00\x7F\x00\x07"\
|
||||
"\x01\x02\x02\x01\x0D\x03\x42\x00\x04\x92\x5D\xB4\xE1"\
|
||||
"\x7A\xDE\x58\x20\x9F\x96\xFA\xA0\x7F\x1F\x8A\x22\x3F"\
|
||||
"\x82\x3F\x96\xCC\x5D\x78\xCB\xEF\x5D\x17\x42\x20\x88"\
|
||||
"\xFD\xD5\x8E\x56\xBC\x42\x50\xDE\x33\x46\xB3\xC8\x32"\
|
||||
"\xCA\xE4\x86\x35\xFB\x6C\x43\x78\x9D\xE8\xB3\x10\x2F"\
|
||||
"\x43\x93\xB4\x18\xE2\x4A\x13\xD9\x02\x01\x41\xA0\x82"\
|
||||
"\x03\x1C\x30\x82\x03\x18\x30\x82\x02\xBC\xA0\x03\x02"\
|
||||
"\x01\x02\x02\x02\x01\x5C\x30\x0C\x06\x08\x2A\x86\x48"\
|
||||
"\xCE\x3D\x04\x03\x02\x05\x00\x30\x4F\x31\x0B\x30\x09"\
|
||||
"\x06\x03\x55\x04\x06\x13\x02\x44\x45\x31\x0D\x30\x0B"\
|
||||
"\x06\x03\x55\x04\x0A\x0C\x04\x62\x75\x6E\x64\x31\x0C"\
|
||||
"\x30\x0A\x06\x03\x55\x04\x0B\x0C\x03\x62\x73\x69\x31"\
|
||||
"\x0C\x30\x0A\x06\x03\x55\x04\x05\x13\x03\x30\x31\x33"\
|
||||
"\x31\x15\x30\x13\x06\x03\x55\x04\x03\x0C\x0C\x63\x73"\
|
||||
"\x63\x61\x2D\x67\x65\x72\x6D\x61\x6E\x79\x30\x1E\x17"\
|
||||
"\x0D\x31\x30\x31\x30\x30\x35\x31\x31\x30\x37\x35\x32"\
|
||||
"\x5A\x17\x0D\x32\x31\x30\x34\x30\x35\x30\x38\x33\x39"\
|
||||
"\x34\x37\x5A\x30\x47\x31\x0B\x30\x09\x06\x03\x55\x04"\
|
||||
"\x06\x13\x02\x44\x45\x31\x1D\x30\x1B\x06\x03\x55\x04"\
|
||||
"\x0A\x0C\x14\x42\x75\x6E\x64\x65\x73\x64\x72\x75\x63"\
|
||||
"\x6B\x65\x72\x65\x69\x20\x47\x6D\x62\x48\x31\x0C\x30"\
|
||||
"\x0A\x06\x03\x55\x04\x05\x13\x03\x30\x37\x34\x31\x0B"\
|
||||
"\x30\x09\x06\x03\x55\x04\x03\x0C\x02\x44\x53\x30\x82"\
|
||||
"\x01\x13\x30\x81\xD4\x06\x07\x2A\x86\x48\xCE\x3D\x02"\
|
||||
"\x01\x30\x81\xC8\x02\x01\x01\x30\x28\x06\x07\x2A\x86"\
|
||||
"\x48\xCE\x3D\x01\x01\x02\x1D\x00\xD7\xC1\x34\xAA\x26"\
|
||||
"\x43\x66\x86\x2A\x18\x30\x25\x75\xD1\xD7\x87\xB0\x9F"\
|
||||
"\x07\x57\x97\xDA\x89\xF5\x7E\xC8\xC0\xFF\x30\x3C\x04"\
|
||||
"\x1C\x68\xA5\xE6\x2C\xA9\xCE\x6C\x1C\x29\x98\x03\xA6"\
|
||||
"\xC1\x53\x0B\x51\x4E\x18\x2A\xD8\xB0\x04\x2A\x59\xCA"\
|
||||
"\xD2\x9F\x43\x04\x1C\x25\x80\xF6\x3C\xCF\xE4\x41\x38"\
|
||||
"\x87\x07\x13\xB1\xA9\x23\x69\xE3\x3E\x21\x35\xD2\x66"\
|
||||
"\xDB\xB3\x72\x38\x6C\x40\x0B\x04\x39\x04\x0D\x90\x29"\
|
||||
"\xAD\x2C\x7E\x5C\xF4\x34\x08\x23\xB2\xA8\x7D\xC6\x8C"\
|
||||
"\x9E\x4C\xE3\x17\x4C\x1E\x6E\xFD\xEE\x12\xC0\x7D\x58"\
|
||||
"\xAA\x56\xF7\x72\xC0\x72\x6F\x24\xC6\xB8\x9E\x4E\xCD"\
|
||||
"\xAC\x24\x35\x4B\x9E\x99\xCA\xA3\xF6\xD3\x76\x14\x02"\
|
||||
"\xCD\x02\x1D\x00\xD7\xC1\x34\xAA\x26\x43\x66\x86\x2A"\
|
||||
"\x18\x30\x25\x75\xD0\xFB\x98\xD1\x16\xBC\x4B\x6D\xDE"\
|
||||
"\xBC\xA3\xA5\xA7\x93\x9F\x02\x01\x01\x03\x3A\x00\x04"\
|
||||
"\x3D\x6A\x7C\x2A\x6F\x20\x5F\x83\x9B\x04\x14\xEC\x58"\
|
||||
"\xC6\xC7\x1B\x75\xF5\x15\xDE\xC3\xAE\x73\x3B\x5F\x47"\
|
||||
"\x88\xDD\xC8\x15\xF0\x5B\xC1\xF6\x53\x8F\xD9\x69\x54"\
|
||||
"\xE1\xF8\x40\xA2\xE2\x18\x99\x62\xCC\xAA\x14\x90\x08"\
|
||||
"\x24\xC7\xDD\xB9\xA3\x81\xD1\x30\x81\xCE\x30\x0E\x06"\
|
||||
"\x03\x55\x1D\x0F\x01\x01\xFF\x04\x04\x03\x02\x07\x80"\
|
||||
"\x30\x1F\x06\x03\x55\x1D\x23\x04\x18\x30\x16\x80\x14"\
|
||||
"\x60\x44\xF2\x45\xF2\xE0\x71\xD4\xD5\x64\xF4\xE5\x77"\
|
||||
"\xD6\x36\x69\xDB\xEB\x18\x59\x30\x41\x06\x03\x55\x1D"\
|
||||
"\x20\x04\x3A\x30\x38\x30\x36\x06\x09\x04\x00\x7F\x00"\
|
||||
"\x07\x03\x01\x01\x01\x30\x29\x30\x27\x06\x08\x2B\x06"\
|
||||
"\x01\x05\x05\x07\x02\x01\x16\x1B\x68\x74\x74\x70\x3A"\
|
||||
"\x2F\x2F\x77\x77\x77\x2E\x62\x73\x69\x2E\x62\x75\x6E"\
|
||||
"\x64\x2E\x64\x65\x2F\x63\x73\x63\x61\x30\x2B\x06\x09"\
|
||||
"\x2A\x86\x48\x86\xF7\x0D\x01\x09\x15\x04\x1E\x04\x1C"\
|
||||
"\x31\x2E\x32\x2E\x32\x37\x36\x2E\x30\x2E\x38\x30\x2E"\
|
||||
"\x31\x2E\x31\x32\x2E\x30\x2E\x32\x30\x2E\x35\x2E\x31"\
|
||||
"\x2E\x30\x30\x2B\x06\x03\x55\x1D\x10\x04\x24\x30\x22"\
|
||||
"\x80\x0F\x32\x30\x31\x30\x31\x30\x30\x35\x31\x31\x30"\
|
||||
"\x37\x35\x32\x5A\x81\x0F\x32\x30\x31\x31\x30\x32\x30"\
|
||||
"\x35\x30\x39\x33\x39\x34\x37\x5A\x30\x0C\x06\x08\x2A"\
|
||||
"\x86\x48\xCE\x3D\x04\x03\x02\x05\x00\x03\x48\x00\x30"\
|
||||
"\x45\x02\x20\x13\xE9\xE1\x7A\x9E\xFE\x8B\xD7\xD7\x27"\
|
||||
"\x62\x92\x30\x5B\xCC\xC3\x2B\x70\xC2\xB7\x60\x40\xF4"\
|
||||
"\x88\x30\x66\x62\x26\xCD\x6A\x4B\xF4\x02\x21\x00\x87"\
|
||||
"\xF4\x71\xE2\x44\x35\xB4\xC3\x4A\xF3\x57\x30\x94\xFB"\
|
||||
"\x1F\x1C\x2A\x48\xB1\x3E\xE5\xED\x67\xF1\x72\x6D\xCF"\
|
||||
"\x56\xE3\x84\xE3\x6F\x31\x82\x01\x09\x30\x82\x01\x05"\
|
||||
"\x02\x01\x01\x30\x55\x30\x4F\x31\x0B\x30\x09\x06\x03"\
|
||||
"\x55\x04\x06\x13\x02\x44\x45\x31\x0D\x30\x0B\x06\x03"\
|
||||
"\x55\x04\x0A\x0C\x04\x62\x75\x6E\x64\x31\x0C\x30\x0A"\
|
||||
"\x06\x03\x55\x04\x0B\x0C\x03\x62\x73\x69\x31\x0C\x30"\
|
||||
"\x0A\x06\x03\x55\x04\x05\x13\x03\x30\x31\x33\x31\x15"\
|
||||
"\x30\x13\x06\x03\x55\x04\x03\x0C\x0C\x63\x73\x63\x61"\
|
||||
"\x2D\x67\x65\x72\x6D\x61\x6E\x79\x02\x02\x01\x5C\x30"\
|
||||
"\x0D\x06\x09\x60\x86\x48\x01\x65\x03\x04\x02\x01\x05"\
|
||||
"\x00\xA0\x4A\x30\x17\x06\x09\x2A\x86\x48\x86\xF7\x0D"\
|
||||
"\x01\x09\x03\x31\x0A\x06\x08\x04\x00\x7F\x00\x07\x03"\
|
||||
"\x02\x01\x30\x2F\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01"\
|
||||
"\x09\x04\x31\x22\x04\x20\xEF\x0F\xDA\x94\x2E\x5A\x0F"\
|
||||
"\x6F\xC9\xC5\x46\xEE\x01\xF9\x10\x31\x43\x64\x30\xF7"\
|
||||
"\x5E\x9D\x36\x54\xD3\x69\x30\x9E\x8B\xE7\x17\x48\x30"\
|
||||
"\x0C\x06\x08\x2A\x86\x48\xCE\x3D\x04\x03\x02\x05\x00"\
|
||||
"\x04\x40\x30\x3E\x02\x1D\x00\x89\x75\x92\x5B\xE1\x31"\
|
||||
"\xB7\x7C\x95\x8C\x3E\xCB\x2A\x5C\x67\xFC\x5C\xE3\x1C"\
|
||||
"\xBD\x01\x41\xE3\x4B\xC7\xF0\xA4\x47\x02\x1D\x00\xCC"\
|
||||
"\x65\xE6\x2D\xDC\xF2\x93\x96\x4B\x22\xD7\xB5\x10\xD7"\
|
||||
"\x81\x88\x07\xC8\x95\x96\xBD\x34\xD8\xF9\xBB\x4C\x05"\
|
||||
"\x27"
|
||||
card_security = b"\x30\x82\x05\xA0\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01"\
|
||||
b"\x07\x02\xA0\x82\x05\x91\x30\x82\x05\x8D\x02\x01\x03"\
|
||||
b"\x31\x0F\x30\x0D\x06\x09\x60\x86\x48\x01\x65\x03\x04"\
|
||||
b"\x02\x01\x05\x00\x30\x82\x01\x48\x06\x08\x04\x00\x7F"\
|
||||
b"\x00\x07\x03\x02\x01\xA0\x82\x01\x3A\x04\x82\x01\x36"\
|
||||
b"\x31\x82\x01\x32\x30\x0D\x06\x08\x04\x00\x7F\x00\x07"\
|
||||
b"\x02\x02\x02\x02\x01\x02\x30\x12\x06\x0A\x04\x00\x7F"\
|
||||
b"\x00\x07\x02\x02\x03\x02\x02\x02\x01\x02\x02\x01\x41"\
|
||||
b"\x30\x12\x06\x0A\x04\x00\x7F\x00\x07\x02\x02\x04\x02"\
|
||||
b"\x02\x02\x01\x02\x02\x01\x0D\x30\x17\x06\x0A\x04\x00"\
|
||||
b"\x7F\x00\x07\x02\x02\x05\x02\x03\x30\x09\x02\x01\x01"\
|
||||
b"\x02\x01\x43\x01\x01\xFF\x30\x17\x06\x0A\x04\x00\x7F"\
|
||||
b"\x00\x07\x02\x02\x05\x02\x03\x30\x09\x02\x01\x01\x02"\
|
||||
b"\x01\x44\x01\x01\x00\x30\x19\x06\x09\x04\x00\x7F\x00"\
|
||||
b"\x07\x02\x02\x05\x02\x30\x0C\x06\x07\x04\x00\x7F\x00"\
|
||||
b"\x07\x01\x02\x02\x01\x0D\x30\x1C\x06\x09\x04\x00\x7F"\
|
||||
b"\x00\x07\x02\x02\x03\x02\x30\x0C\x06\x07\x04\x00\x7F"\
|
||||
b"\x00\x07\x01\x02\x02\x01\x0D\x02\x01\x41\x30\x2A\x06"\
|
||||
b"\x08\x04\x00\x7F\x00\x07\x02\x02\x06\x16\x1E\x68\x74"\
|
||||
b"\x74\x70\x3A\x2F\x2F\x62\x73\x69\x2E\x62\x75\x6E\x64"\
|
||||
b"\x2E\x64\x65\x2F\x63\x69\x66\x2F\x6E\x70\x61\x2E\x78"\
|
||||
b"\x6D\x6C\x30\x62\x06\x09\x04\x00\x7F\x00\x07\x02\x02"\
|
||||
b"\x01\x02\x30\x52\x30\x0C\x06\x07\x04\x00\x7F\x00\x07"\
|
||||
b"\x01\x02\x02\x01\x0D\x03\x42\x00\x04\x92\x5D\xB4\xE1"\
|
||||
b"\x7A\xDE\x58\x20\x9F\x96\xFA\xA0\x7F\x1F\x8A\x22\x3F"\
|
||||
b"\x82\x3F\x96\xCC\x5D\x78\xCB\xEF\x5D\x17\x42\x20\x88"\
|
||||
b"\xFD\xD5\x8E\x56\xBC\x42\x50\xDE\x33\x46\xB3\xC8\x32"\
|
||||
b"\xCA\xE4\x86\x35\xFB\x6C\x43\x78\x9D\xE8\xB3\x10\x2F"\
|
||||
b"\x43\x93\xB4\x18\xE2\x4A\x13\xD9\x02\x01\x41\xA0\x82"\
|
||||
b"\x03\x1C\x30\x82\x03\x18\x30\x82\x02\xBC\xA0\x03\x02"\
|
||||
b"\x01\x02\x02\x02\x01\x5C\x30\x0C\x06\x08\x2A\x86\x48"\
|
||||
b"\xCE\x3D\x04\x03\x02\x05\x00\x30\x4F\x31\x0B\x30\x09"\
|
||||
b"\x06\x03\x55\x04\x06\x13\x02\x44\x45\x31\x0D\x30\x0B"\
|
||||
b"\x06\x03\x55\x04\x0A\x0C\x04\x62\x75\x6E\x64\x31\x0C"\
|
||||
b"\x30\x0A\x06\x03\x55\x04\x0B\x0C\x03\x62\x73\x69\x31"\
|
||||
b"\x0C\x30\x0A\x06\x03\x55\x04\x05\x13\x03\x30\x31\x33"\
|
||||
b"\x31\x15\x30\x13\x06\x03\x55\x04\x03\x0C\x0C\x63\x73"\
|
||||
b"\x63\x61\x2D\x67\x65\x72\x6D\x61\x6E\x79\x30\x1E\x17"\
|
||||
b"\x0D\x31\x30\x31\x30\x30\x35\x31\x31\x30\x37\x35\x32"\
|
||||
b"\x5A\x17\x0D\x32\x31\x30\x34\x30\x35\x30\x38\x33\x39"\
|
||||
b"\x34\x37\x5A\x30\x47\x31\x0B\x30\x09\x06\x03\x55\x04"\
|
||||
b"\x06\x13\x02\x44\x45\x31\x1D\x30\x1B\x06\x03\x55\x04"\
|
||||
b"\x0A\x0C\x14\x42\x75\x6E\x64\x65\x73\x64\x72\x75\x63"\
|
||||
b"\x6B\x65\x72\x65\x69\x20\x47\x6D\x62\x48\x31\x0C\x30"\
|
||||
b"\x0A\x06\x03\x55\x04\x05\x13\x03\x30\x37\x34\x31\x0B"\
|
||||
b"\x30\x09\x06\x03\x55\x04\x03\x0C\x02\x44\x53\x30\x82"\
|
||||
b"\x01\x13\x30\x81\xD4\x06\x07\x2A\x86\x48\xCE\x3D\x02"\
|
||||
b"\x01\x30\x81\xC8\x02\x01\x01\x30\x28\x06\x07\x2A\x86"\
|
||||
b"\x48\xCE\x3D\x01\x01\x02\x1D\x00\xD7\xC1\x34\xAA\x26"\
|
||||
b"\x43\x66\x86\x2A\x18\x30\x25\x75\xD1\xD7\x87\xB0\x9F"\
|
||||
b"\x07\x57\x97\xDA\x89\xF5\x7E\xC8\xC0\xFF\x30\x3C\x04"\
|
||||
b"\x1C\x68\xA5\xE6\x2C\xA9\xCE\x6C\x1C\x29\x98\x03\xA6"\
|
||||
b"\xC1\x53\x0B\x51\x4E\x18\x2A\xD8\xB0\x04\x2A\x59\xCA"\
|
||||
b"\xD2\x9F\x43\x04\x1C\x25\x80\xF6\x3C\xCF\xE4\x41\x38"\
|
||||
b"\x87\x07\x13\xB1\xA9\x23\x69\xE3\x3E\x21\x35\xD2\x66"\
|
||||
b"\xDB\xB3\x72\x38\x6C\x40\x0B\x04\x39\x04\x0D\x90\x29"\
|
||||
b"\xAD\x2C\x7E\x5C\xF4\x34\x08\x23\xB2\xA8\x7D\xC6\x8C"\
|
||||
b"\x9E\x4C\xE3\x17\x4C\x1E\x6E\xFD\xEE\x12\xC0\x7D\x58"\
|
||||
b"\xAA\x56\xF7\x72\xC0\x72\x6F\x24\xC6\xB8\x9E\x4E\xCD"\
|
||||
b"\xAC\x24\x35\x4B\x9E\x99\xCA\xA3\xF6\xD3\x76\x14\x02"\
|
||||
b"\xCD\x02\x1D\x00\xD7\xC1\x34\xAA\x26\x43\x66\x86\x2A"\
|
||||
b"\x18\x30\x25\x75\xD0\xFB\x98\xD1\x16\xBC\x4B\x6D\xDE"\
|
||||
b"\xBC\xA3\xA5\xA7\x93\x9F\x02\x01\x01\x03\x3A\x00\x04"\
|
||||
b"\x3D\x6A\x7C\x2A\x6F\x20\x5F\x83\x9B\x04\x14\xEC\x58"\
|
||||
b"\xC6\xC7\x1B\x75\xF5\x15\xDE\xC3\xAE\x73\x3B\x5F\x47"\
|
||||
b"\x88\xDD\xC8\x15\xF0\x5B\xC1\xF6\x53\x8F\xD9\x69\x54"\
|
||||
b"\xE1\xF8\x40\xA2\xE2\x18\x99\x62\xCC\xAA\x14\x90\x08"\
|
||||
b"\x24\xC7\xDD\xB9\xA3\x81\xD1\x30\x81\xCE\x30\x0E\x06"\
|
||||
b"\x03\x55\x1D\x0F\x01\x01\xFF\x04\x04\x03\x02\x07\x80"\
|
||||
b"\x30\x1F\x06\x03\x55\x1D\x23\x04\x18\x30\x16\x80\x14"\
|
||||
b"\x60\x44\xF2\x45\xF2\xE0\x71\xD4\xD5\x64\xF4\xE5\x77"\
|
||||
b"\xD6\x36\x69\xDB\xEB\x18\x59\x30\x41\x06\x03\x55\x1D"\
|
||||
b"\x20\x04\x3A\x30\x38\x30\x36\x06\x09\x04\x00\x7F\x00"\
|
||||
b"\x07\x03\x01\x01\x01\x30\x29\x30\x27\x06\x08\x2B\x06"\
|
||||
b"\x01\x05\x05\x07\x02\x01\x16\x1B\x68\x74\x74\x70\x3A"\
|
||||
b"\x2F\x2F\x77\x77\x77\x2E\x62\x73\x69\x2E\x62\x75\x6E"\
|
||||
b"\x64\x2E\x64\x65\x2F\x63\x73\x63\x61\x30\x2B\x06\x09"\
|
||||
b"\x2A\x86\x48\x86\xF7\x0D\x01\x09\x15\x04\x1E\x04\x1C"\
|
||||
b"\x31\x2E\x32\x2E\x32\x37\x36\x2E\x30\x2E\x38\x30\x2E"\
|
||||
b"\x31\x2E\x31\x32\x2E\x30\x2E\x32\x30\x2E\x35\x2E\x31"\
|
||||
b"\x2E\x30\x30\x2B\x06\x03\x55\x1D\x10\x04\x24\x30\x22"\
|
||||
b"\x80\x0F\x32\x30\x31\x30\x31\x30\x30\x35\x31\x31\x30"\
|
||||
b"\x37\x35\x32\x5A\x81\x0F\x32\x30\x31\x31\x30\x32\x30"\
|
||||
b"\x35\x30\x39\x33\x39\x34\x37\x5A\x30\x0C\x06\x08\x2A"\
|
||||
b"\x86\x48\xCE\x3D\x04\x03\x02\x05\x00\x03\x48\x00\x30"\
|
||||
b"\x45\x02\x20\x13\xE9\xE1\x7A\x9E\xFE\x8B\xD7\xD7\x27"\
|
||||
b"\x62\x92\x30\x5B\xCC\xC3\x2B\x70\xC2\xB7\x60\x40\xF4"\
|
||||
b"\x88\x30\x66\x62\x26\xCD\x6A\x4B\xF4\x02\x21\x00\x87"\
|
||||
b"\xF4\x71\xE2\x44\x35\xB4\xC3\x4A\xF3\x57\x30\x94\xFB"\
|
||||
b"\x1F\x1C\x2A\x48\xB1\x3E\xE5\xED\x67\xF1\x72\x6D\xCF"\
|
||||
b"\x56\xE3\x84\xE3\x6F\x31\x82\x01\x09\x30\x82\x01\x05"\
|
||||
b"\x02\x01\x01\x30\x55\x30\x4F\x31\x0B\x30\x09\x06\x03"\
|
||||
b"\x55\x04\x06\x13\x02\x44\x45\x31\x0D\x30\x0B\x06\x03"\
|
||||
b"\x55\x04\x0A\x0C\x04\x62\x75\x6E\x64\x31\x0C\x30\x0A"\
|
||||
b"\x06\x03\x55\x04\x0B\x0C\x03\x62\x73\x69\x31\x0C\x30"\
|
||||
b"\x0A\x06\x03\x55\x04\x05\x13\x03\x30\x31\x33\x31\x15"\
|
||||
b"\x30\x13\x06\x03\x55\x04\x03\x0C\x0C\x63\x73\x63\x61"\
|
||||
b"\x2D\x67\x65\x72\x6D\x61\x6E\x79\x02\x02\x01\x5C\x30"\
|
||||
b"\x0D\x06\x09\x60\x86\x48\x01\x65\x03\x04\x02\x01\x05"\
|
||||
b"\x00\xA0\x4A\x30\x17\x06\x09\x2A\x86\x48\x86\xF7\x0D"\
|
||||
b"\x01\x09\x03\x31\x0A\x06\x08\x04\x00\x7F\x00\x07\x03"\
|
||||
b"\x02\x01\x30\x2F\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01"\
|
||||
b"\x09\x04\x31\x22\x04\x20\xEF\x0F\xDA\x94\x2E\x5A\x0F"\
|
||||
b"\x6F\xC9\xC5\x46\xEE\x01\xF9\x10\x31\x43\x64\x30\xF7"\
|
||||
b"\x5E\x9D\x36\x54\xD3\x69\x30\x9E\x8B\xE7\x17\x48\x30"\
|
||||
b"\x0C\x06\x08\x2A\x86\x48\xCE\x3D\x04\x03\x02\x05\x00"\
|
||||
b"\x04\x40\x30\x3E\x02\x1D\x00\x89\x75\x92\x5B\xE1\x31"\
|
||||
b"\xB7\x7C\x95\x8C\x3E\xCB\x2A\x5C\x67\xFC\x5C\xE3\x1C"\
|
||||
b"\xBD\x01\x41\xE3\x4B\xC7\xF0\xA4\x47\x02\x1D\x00\xCC"\
|
||||
b"\x65\xE6\x2D\xDC\xF2\x93\x96\x4B\x22\xD7\xB5\x10\xD7"\
|
||||
b"\x81\x88\x07\xC8\x95\x96\xBD\x34\xD8\xF9\xBB\x4C\x05"\
|
||||
b"\x27"
|
||||
self.mf.append(TransparentStructureEF(parent=self.mf, fid=0x011d,
|
||||
shortfid=0x1d, data=card_security))
|
||||
ef_dir = "\x61\x32\x4F\x0F\xE8\x28\xBD\x08\x0F\xA0\x00\x00\x01\x67"\
|
||||
"\x45\x53\x49\x47\x4E\x50\x0F\x43\x49\x41\x20\x7A\x75\x20"\
|
||||
"\x44\x46\x2E\x65\x53\x69\x67\x6E\x51\x00\x73\x0C\x4F\x0A"\
|
||||
"\xA0\x00\x00\x01\x67\x45\x53\x49\x47\x4E\x61\x09\x4F\x07"\
|
||||
"\xA0\x00\x00\x02\x47\x10\x01\x61\x0B\x4F\x09\xE8\x07\x04"\
|
||||
"\x00\x7F\x00\x07\x03\x02\x61\x0C\x4F\x0A\xA0\x00\x00\x01"\
|
||||
"\x67\x45\x53\x49\x47\x4E"
|
||||
ef_dir = b"\x61\x32\x4F\x0F\xE8\x28\xBD\x08\x0F\xA0\x00\x00\x01\x67"\
|
||||
b"\x45\x53\x49\x47\x4E\x50\x0F\x43\x49\x41\x20\x7A\x75\x20"\
|
||||
b"\x44\x46\x2E\x65\x53\x69\x67\x6E\x51\x00\x73\x0C\x4F\x0A"\
|
||||
b"\xA0\x00\x00\x01\x67\x45\x53\x49\x47\x4E\x61\x09\x4F\x07"\
|
||||
b"\xA0\x00\x00\x02\x47\x10\x01\x61\x0B\x4F\x09\xE8\x07\x04"\
|
||||
b"\x00\x7F\x00\x07\x03\x02\x61\x0C\x4F\x0A\xA0\x00\x00\x01"\
|
||||
b"\x67\x45\x53\x49\x47\x4E"
|
||||
self.mf.append(TransparentStructureEF(parent=self.mf, fid=0x2f00,
|
||||
shortfid=30, data=ef_dir))
|
||||
|
||||
eid = DF(parent=self.mf, fid=0xffff,
|
||||
dfname='\xe8\x07\x04\x00\x7f\x00\x07\x03\x02')
|
||||
eid.extra_fci_data = "\xab\x75\x84\x01\xa4\xaf\x70\xa0\x10\xb4\x06"\
|
||||
"\x95\x01\x20\x83\x01\x04\xb4\x06\x95\x01\x20"\
|
||||
"\x83\x01\x06\xa0\x54\xa4\x14\x95\x01\x80\x7f"\
|
||||
"\x4c\x0e\x06\x09\x04\x00\x7f\x00\x07\x03\x01"\
|
||||
"\x02\x01\x53\x01\x00\xaf\x22\xa4\x18\x95\x01"\
|
||||
"\x80\x7f\x4c\x12\x06\x09\x04\x00\x7f\x00\x07"\
|
||||
"\x03\x01\x02\x02\x53\x05\x00\x00\x00\x00\x00"\
|
||||
"\xa4\x06\x95\x01\x80\x83\x01\x47\xa4\x18\x95"\
|
||||
"\x01\x80\x7f\x4c\x12\x06\x09\x04\x00\x7f\x00"\
|
||||
"\x07\x03\x01\x02\x02\x53\x05\x00\x00\x00\x00"\
|
||||
"\x10\x7a\x06\x8a\x01\x05\x9e\x01\x03"
|
||||
dfname=b'\xe8\x07\x04\x00\x7f\x00\x07\x03\x02')
|
||||
eid.extra_fci_data = b"\xab\x75\x84\x01\xa4\xaf\x70\xa0\x10\xb4\x06"\
|
||||
b"\x95\x01\x20\x83\x01\x04\xb4\x06\x95\x01\x20"\
|
||||
b"\x83\x01\x06\xa0\x54\xa4\x14\x95\x01\x80\x7f"\
|
||||
b"\x4c\x0e\x06\x09\x04\x00\x7f\x00\x07\x03\x01"\
|
||||
b"\x02\x01\x53\x01\x00\xaf\x22\xa4\x18\x95\x01"\
|
||||
b"\x80\x7f\x4c\x12\x06\x09\x04\x00\x7f\x00\x07"\
|
||||
b"\x03\x01\x02\x02\x53\x05\x00\x00\x00\x00\x00"\
|
||||
b"\xa4\x06\x95\x01\x80\x83\x01\x47\xa4\x18\x95"\
|
||||
b"\x01\x80\x7f\x4c\x12\x06\x09\x04\x00\x7f\x00"\
|
||||
b"\x07\x03\x01\x02\x02\x53\x05\x00\x00\x00\x00"\
|
||||
b"\x10\x7a\x06\x8a\x01\x05\x9e\x01\x03"
|
||||
# FIXME access control for eid application
|
||||
|
||||
DocumentType = self.datagroups["DocumentType"] if "DocumentType" in \
|
||||
@@ -551,56 +551,56 @@ class CardGenerator(object):
|
||||
|
||||
# DF.CIA
|
||||
cia = DF(parent=self.mf, fid=0xfffe,
|
||||
dfname='\xE8\x28\xBD\x08\x0F\xA0\x00\x00\x01\x67\x45\x53\x49'
|
||||
'\x47\x4E')
|
||||
dfname=b'\xE8\x28\xBD\x08\x0F\xA0\x00\x00\x01\x67\x45\x53\x49'
|
||||
b'\x47\x4E')
|
||||
# EF.OD / EF.ODF
|
||||
cia.append(TransparentStructureEF(parent=cia, fid=0x5031,
|
||||
shortfid=0x11,
|
||||
data='\xa0\x060\x04\x04\x02D\x00\xa4'
|
||||
'\x060\x04\x04\x02D\x04\xa8\x060\x04'
|
||||
'\x04\x02D\x08'))
|
||||
data=b'\xa0\x060\x04\x04\x02D\x00\xa4'
|
||||
b'\x060\x04\x04\x02D\x04\xa8\x060\x04'
|
||||
b'\x04\x02D\x08'))
|
||||
# EF.CIAInfo / EF.TokenInfo
|
||||
cia.append(TransparentStructureEF(parent=cia, fid=0x5032,
|
||||
shortfid=0x12,
|
||||
data='06\x02\x01\x01\x80\x11eSign '
|
||||
'Application\x03\x02\x06\xc0\xa2'
|
||||
'\x1a0\x18\x02\x01\x01\x02\x02\x10A'
|
||||
'\x05\x00\x03\x02\x06@\x06\t\x04\x00'
|
||||
'\x7f\x00\x07\x01\x01\x04\x01'))
|
||||
data=b'06\x02\x01\x01\x80\x11eSign '
|
||||
b'Application\x03\x02\x06\xc0\xa2'
|
||||
b'\x1a0\x18\x02\x01\x01\x02\x02\x10A'
|
||||
b'\x05\x00\x03\x02\x06@\x06\t\x04\x00'
|
||||
b'\x7f\x00\x07\x01\x01\x04\x01'))
|
||||
# EF.PrKD / EF.PrKDF
|
||||
cia.append(TransparentStructureEF(parent=cia, fid=0x4400,
|
||||
data='\xa080\x17\x0c\x0bPrK.ICC.QES'
|
||||
'\x03\x02\x07\x80\x04\x01\x01\x02'
|
||||
'\x01\x010\x15\x04\x01F\x03\x03\x06'
|
||||
'\x00@\x03\x02\x03\xb8\x02\x02\x00'
|
||||
'\x84\xa1\x03\x02\x01\x01\xa1\x060'
|
||||
'\x040\x02\x04\x00'))
|
||||
data=b'\xa080\x17\x0c\x0bPrK.ICC.QES'
|
||||
b'\x03\x02\x07\x80\x04\x01\x01\x02'
|
||||
b'\x01\x010\x15\x04\x01F\x03\x03\x06'
|
||||
b'\x00@\x03\x02\x03\xb8\x02\x02\x00'
|
||||
b'\x84\xa1\x03\x02\x01\x01\xa1\x060'
|
||||
b'\x040\x02\x04\x00'))
|
||||
# EF.PuKD / EF.PuKDF
|
||||
cia.append(TransparentStructureEF(parent=cia, fid=0x4404,
|
||||
data='050!\x0c\x1fZertifikat des ZDA'
|
||||
' f\xc3\xbcr die QES0\x06\x04\x01E'
|
||||
'\x01\x01\xff\xa1\x080\x060\x04\x04'
|
||||
'\x02\xc0\x000:0&\x0c$Zertifikat des'
|
||||
' Inhabers f\xc3\xbcr die QES0\x06'
|
||||
'\x04\x01F\x01\x01\x00\xa1\x080\x060'
|
||||
'\x04\x04\x02\xc0\x01'))
|
||||
data=b'050!\x0c\x1fZertifikat des ZDA'
|
||||
b' f\xc3\xbcr die QES0\x06\x04\x01E'
|
||||
b'\x01\x01\xff\xa1\x080\x060\x04\x04'
|
||||
b'\x02\xc0\x000:0&\x0c$Zertifikat des'
|
||||
b' Inhabers f\xc3\xbcr die QES0\x06'
|
||||
b'\x04\x01F\x01\x01\x00\xa1\x080\x060'
|
||||
b'\x04\x04\x02\xc0\x01'))
|
||||
# EF.AOD / EF.AODF
|
||||
cia.append(TransparentStructureEF(parent=cia, fid=0x4408,
|
||||
data='0/0\x0f\x0c\teSign-PIN\x03\x02'
|
||||
'\x06@0\x03\x04\x01\x01\xa1\x170\x15'
|
||||
'\x03\x03\x02H\x1c\n\x01\x01\x02\x01'
|
||||
'\x06\x02\x01\x00\x80\x01\x810\x02'
|
||||
'\x04\x00'))
|
||||
data=b'0/0\x0f\x0c\teSign-PIN\x03\x02'
|
||||
b'\x06@0\x03\x04\x01\x01\xa1\x170\x15'
|
||||
b'\x03\x03\x02H\x1c\n\x01\x01\x02\x01'
|
||||
b'\x06\x02\x01\x00\x80\x01\x810\x02'
|
||||
b'\x04\x00'))
|
||||
self.mf.append(cia)
|
||||
|
||||
# DF.eSign
|
||||
esign = DF(parent=self.mf, fid=0xfffd,
|
||||
dfname='\xA0\x00\x00\x01\x67\x45\x53\x49\x47\x4E')
|
||||
dfname=b'\xA0\x00\x00\x01\x67\x45\x53\x49\x47\x4E')
|
||||
|
||||
# ZDA certificate
|
||||
esign.append(TransparentStructureEF(parent=esign, fid=0xC000, data=''))
|
||||
esign.append(TransparentStructureEF(parent=esign, fid=0xC000, data=b''))
|
||||
# User's certificate
|
||||
esign.append(TransparentStructureEF(parent=esign, fid=0xC001, data=''))
|
||||
esign.append(TransparentStructureEF(parent=esign, fid=0xC001, data=b''))
|
||||
self.mf.append(esign)
|
||||
|
||||
self.sam = nPA_SAM(eid_pin="111111".encode('ascii'), can="222222".encode('ascii'),
|
||||
@@ -609,51 +609,51 @@ class CardGenerator(object):
|
||||
puk="3333333333".encode('ascii'), qes_pin="444444".encode('ascii'), mf=self.mf)
|
||||
# FIXME: add CVCA for inspection systems and signature terminals. Here
|
||||
# we only add the eID CVCA.
|
||||
self.sam.current_SE.cvca = "\x7f\x21\x82\x01\xb6\x7f\x4e\x82\x01\x6e"\
|
||||
"\x5f\x29\x01\x00\x42\x0e\x44\x45\x43\x56"\
|
||||
"\x43\x41\x65\x49\x44\x30\x30\x31\x30\x32"\
|
||||
"\x7f\x49\x82\x01\x1d\x06\x0a\x04\x00\x7f"\
|
||||
"\x00\x07\x02\x02\x02\x02\x03\x81\x20\xa9"\
|
||||
"\xfb\x57\xdb\xa1\xee\xa9\xbc\x3e\x66\x0a"\
|
||||
"\x90\x9d\x83\x8d\x72\x6e\x3b\xf6\x23\xd5"\
|
||||
"\x26\x20\x28\x20\x13\x48\x1d\x1f\x6e\x53"\
|
||||
"\x77\x82\x20\x7d\x5a\x09\x75\xfc\x2c\x30"\
|
||||
"\x57\xee\xf6\x75\x30\x41\x7a\xff\xe7\xfb"\
|
||||
"\x80\x55\xc1\x26\xdc\x5c\x6c\xe9\x4a\x4b"\
|
||||
"\x44\xf3\x30\xb5\xd9\x83\x20\x26\xdc\x5c"\
|
||||
"\x6c\xe9\x4a\x4b\x44\xf3\x30\xb5\xd9\xbb"\
|
||||
"\xd7\x7c\xbf\x95\x84\x16\x29\x5c\xf7\xe1"\
|
||||
"\xce\x6b\xcc\xdc\x18\xff\x8c\x07\xb6\x84"\
|
||||
"\x41\x04\x8b\xd2\xae\xb9\xcb\x7e\x57\xcb"\
|
||||
"\x2c\x4b\x48\x2f\xfc\x81\xb7\xaf\xb9\xde"\
|
||||
"\x27\xe1\xe3\xbd\x23\xc2\x3a\x44\x53\xbd"\
|
||||
"\x9a\xce\x32\x62\x54\x7e\xf8\x35\xc3\xda"\
|
||||
"\xc4\xfd\x97\xf8\x46\x1a\x14\x61\x1d\xc9"\
|
||||
"\xc2\x77\x45\x13\x2d\xed\x8e\x54\x5c\x1d"\
|
||||
"\x54\xc7\x2f\x04\x69\x97\x85\x20\xa9\xfb"\
|
||||
"\x57\xdb\xa1\xee\xa9\xbc\x3e\x66\x0a\x90"\
|
||||
"\x9d\x83\x8d\x71\x8c\x39\x7a\xa3\xb5\x61"\
|
||||
"\xa6\xf7\x90\x1e\x0e\x82\x97\x48\x56\xa7"\
|
||||
"\x86\x41\x04\x33\x47\xec\xf9\x6f\xfb\x4b"\
|
||||
"\xd9\xb8\x55\x4e\xfb\xcc\xfc\x7d\x0b\x24"\
|
||||
"\x2f\x10\x71\xe2\x9b\x4c\x9c\x62\x2c\x79"\
|
||||
"\xe3\x39\xd8\x40\xaf\x67\xbe\xb9\xb9\x12"\
|
||||
"\x69\x22\x65\xd9\xc1\x6c\x62\x57\x3f\x45"\
|
||||
"\x79\xff\xd4\xde\x2d\xe9\x2b\xab\x40\x9d"\
|
||||
"\xd5\xc5\xd4\x82\x44\xa9\xf7\x87\x01\x01"\
|
||||
"\x5f\x20\x0e\x44\x45\x43\x56\x43\x41\x65"\
|
||||
"\x49\x44\x30\x30\x31\x30\x32\x7f\x4c\x12"\
|
||||
"\x06\x09\x04\x00\x7f\x00\x07\x03\x01\x02"\
|
||||
"\x02\x53\x05\xfe\x0f\x01\xff\xff\x5f\x25"\
|
||||
"\x06\x01\x00\x01\x00\x01\x08\x5f\x24\x06"\
|
||||
"\x01\x03\x01\x00\x01\x08\x5f\x37\x40\x50"\
|
||||
"\x67\x14\x5c\x68\xca\xe9\x52\x0f\x5b\xb3"\
|
||||
"\x48\x17\xf1\xca\x9c\x43\x59\x3d\xb5\x64"\
|
||||
"\x06\xc6\xa3\xb0\x06\xcb\xf3\xf3\x14\xe7"\
|
||||
"\x34\x9a\xcf\x0c\xc6\xbf\xeb\xcb\xde\xfd"\
|
||||
"\x10\xb4\xdc\xf0\xf2\x31\xda\x56\x97\x7d"\
|
||||
"\x88\xf9\xf9\x01\x82\xd1\x99\x07\x6a\x56"\
|
||||
"\x50\x64\x51"
|
||||
self.sam.current_SE.cvca = b"\x7f\x21\x82\x01\xb6\x7f\x4e\x82\x01\x6e"\
|
||||
b"\x5f\x29\x01\x00\x42\x0e\x44\x45\x43\x56"\
|
||||
b"\x43\x41\x65\x49\x44\x30\x30\x31\x30\x32"\
|
||||
b"\x7f\x49\x82\x01\x1d\x06\x0a\x04\x00\x7f"\
|
||||
b"\x00\x07\x02\x02\x02\x02\x03\x81\x20\xa9"\
|
||||
b"\xfb\x57\xdb\xa1\xee\xa9\xbc\x3e\x66\x0a"\
|
||||
b"\x90\x9d\x83\x8d\x72\x6e\x3b\xf6\x23\xd5"\
|
||||
b"\x26\x20\x28\x20\x13\x48\x1d\x1f\x6e\x53"\
|
||||
b"\x77\x82\x20\x7d\x5a\x09\x75\xfc\x2c\x30"\
|
||||
b"\x57\xee\xf6\x75\x30\x41\x7a\xff\xe7\xfb"\
|
||||
b"\x80\x55\xc1\x26\xdc\x5c\x6c\xe9\x4a\x4b"\
|
||||
b"\x44\xf3\x30\xb5\xd9\x83\x20\x26\xdc\x5c"\
|
||||
b"\x6c\xe9\x4a\x4b\x44\xf3\x30\xb5\xd9\xbb"\
|
||||
b"\xd7\x7c\xbf\x95\x84\x16\x29\x5c\xf7\xe1"\
|
||||
b"\xce\x6b\xcc\xdc\x18\xff\x8c\x07\xb6\x84"\
|
||||
b"\x41\x04\x8b\xd2\xae\xb9\xcb\x7e\x57\xcb"\
|
||||
b"\x2c\x4b\x48\x2f\xfc\x81\xb7\xaf\xb9\xde"\
|
||||
b"\x27\xe1\xe3\xbd\x23\xc2\x3a\x44\x53\xbd"\
|
||||
b"\x9a\xce\x32\x62\x54\x7e\xf8\x35\xc3\xda"\
|
||||
b"\xc4\xfd\x97\xf8\x46\x1a\x14\x61\x1d\xc9"\
|
||||
b"\xc2\x77\x45\x13\x2d\xed\x8e\x54\x5c\x1d"\
|
||||
b"\x54\xc7\x2f\x04\x69\x97\x85\x20\xa9\xfb"\
|
||||
b"\x57\xdb\xa1\xee\xa9\xbc\x3e\x66\x0a\x90"\
|
||||
b"\x9d\x83\x8d\x71\x8c\x39\x7a\xa3\xb5\x61"\
|
||||
b"\xa6\xf7\x90\x1e\x0e\x82\x97\x48\x56\xa7"\
|
||||
b"\x86\x41\x04\x33\x47\xec\xf9\x6f\xfb\x4b"\
|
||||
b"\xd9\xb8\x55\x4e\xfb\xcc\xfc\x7d\x0b\x24"\
|
||||
b"\x2f\x10\x71\xe2\x9b\x4c\x9c\x62\x2c\x79"\
|
||||
b"\xe3\x39\xd8\x40\xaf\x67\xbe\xb9\xb9\x12"\
|
||||
b"\x69\x22\x65\xd9\xc1\x6c\x62\x57\x3f\x45"\
|
||||
b"\x79\xff\xd4\xde\x2d\xe9\x2b\xab\x40\x9d"\
|
||||
b"\xd5\xc5\xd4\x82\x44\xa9\xf7\x87\x01\x01"\
|
||||
b"\x5f\x20\x0e\x44\x45\x43\x56\x43\x41\x65"\
|
||||
b"\x49\x44\x30\x30\x31\x30\x32\x7f\x4c\x12"\
|
||||
b"\x06\x09\x04\x00\x7f\x00\x07\x03\x01\x02"\
|
||||
b"\x02\x53\x05\xfe\x0f\x01\xff\xff\x5f\x25"\
|
||||
b"\x06\x01\x00\x01\x00\x01\x08\x5f\x24\x06"\
|
||||
b"\x01\x03\x01\x00\x01\x08\x5f\x37\x40\x50"\
|
||||
b"\x67\x14\x5c\x68\xca\xe9\x52\x0f\x5b\xb3"\
|
||||
b"\x48\x17\xf1\xca\x9c\x43\x59\x3d\xb5\x64"\
|
||||
b"\x06\xc6\xa3\xb0\x06\xcb\xf3\xf3\x14\xe7"\
|
||||
b"\x34\x9a\xcf\x0c\xc6\xbf\xeb\xcb\xde\xfd"\
|
||||
b"\x10\xb4\xdc\xf0\xf2\x31\xda\x56\x97\x7d"\
|
||||
b"\x88\xf9\xf9\x01\x82\xd1\x99\x07\x6a\x56"\
|
||||
b"\x50\x64\x51"
|
||||
|
||||
def __generate_cryptoflex(self):
|
||||
"""Generate the Filesystem and SAM of a cryptoflex card"""
|
||||
@@ -662,7 +662,7 @@ class CardGenerator(object):
|
||||
self.mf = CryptoflexMF()
|
||||
self.mf.append(TransparentStructureEF(parent=self.mf, fid=0x0002,
|
||||
filedescriptor=0x01,
|
||||
data="\x00\x00\x00\x01\x00\x01\x00\x00")) # EF.ICCSN
|
||||
data=b"\x00\x00\x00\x01\x00\x01\x00\x00")) # EF.ICCSN
|
||||
self.sam = CryptoflexSAM(self.mf)
|
||||
|
||||
def generateCard(self):
|
||||
|
||||
@@ -74,7 +74,7 @@ def tlv_unpack(data):
|
||||
data = data[1:]
|
||||
length = length_
|
||||
|
||||
value = data[:length]
|
||||
value = b"".join(inttostring(i) for i in data[:length])
|
||||
rest = data[length:]
|
||||
|
||||
return ber_class, constructed, tag, length, value, rest
|
||||
@@ -114,12 +114,12 @@ def tlv_find_tag(tlv_data, tag, num_results=None):
|
||||
|
||||
|
||||
def pack(tlv_data, recalculate_length=False):
|
||||
result = []
|
||||
result = b""
|
||||
|
||||
for data in tlv_data:
|
||||
tag, length, value = data[:3]
|
||||
if tag in (0xff, 0x00):
|
||||
result.append(inttostring(tag))
|
||||
result = result + inttostring(tag)
|
||||
continue
|
||||
|
||||
if not isinstance(value, bytes):
|
||||
@@ -143,9 +143,9 @@ def pack(tlv_data, recalculate_length=False):
|
||||
assert len(l) < 0x7f
|
||||
l = inttostring(0x80 | len(l)) + l
|
||||
|
||||
result.append(t)
|
||||
result.append(l)
|
||||
result.append(value)
|
||||
result = result + t
|
||||
result = result + l
|
||||
result = result + value
|
||||
|
||||
return b"".join(result)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user