Assignment: Write a program that calculates the authentication cryptograpms for Javacard secure messaging (for GXP211 PK (IS)). Use any programming language, any crypto library, no user interface is required (just a source code with constants definition is ok). See annex D of the GP specifications and the worked example below. Worked example: Host challenge: 01 02 03 04 05 06 07 08 Card challenge: A1 A2 A3 A4 A5 A6 A7 A8 Static ENC key: CA CA CA CA CA CA CA CA 2D 2D 2D 2D 2D 2D 2D 2D Static MAC key: 2D 2D 2D 2D 2D 2D 2D 2D CA CA CA CA CA CA CA CA Derivation data (combined challenges): A5 A6 A7 A8 01 02 03 04 A1 A2 A3 A4 05 06 07 08 Session ENC key (encrypted ECB derivation data with static ENC key): 73 64 4D A1 E5 BC BF 93 FB 79 29 88 CA B3 42 53 Crypled ENC session key (odd bytes replaced with 2D, even with CA): 2D CA 2D 2D 2D CA 2D 2D 2D 2D 2D CA CA 2D CA 2D Session MAC key (encrypted ECB derivation data with static MAC key): 7B D9 B6 31 1E 31 15 69 2D 94 F3 FB 63 CC 81 D6 Crypled MAC session key: 2D 2D CA 2D CA 2D 2D 2D 2D CA 2D 2D 2D CA 2D CA Base for calculating cryptograms (concat of challenges and 80 00..): 01 02 03 04 05 06 07 08 A1 A2 A3 A4 A5 A6 A7 A8 80 00 00 00 00 00 00 00 Card cryptogram (CBC encryption of base with session ENC): E6 27 6A F8 34 A4 5B 26 Base for calculating cryptograms (concat of challenges and 80 00..): A1 A2 A3 A4 A5 A6 A7 A8 01 02 03 04 05 06 07 08 80 00 00 00 00 00 00 00 Host cryptogram: C4 D5 5A 91 9E 52 2E CB