I am trying to write a python script to access the IC in an eMRTD as per ICAO Doc 9303. Everything is going swimmingly until I come to the part where I need to calculate a MAC using ISO 9797-1 Algorithm 3 (padding mode 2).
In Appendix D-3, the MAC of E.IFD 72C29C2371CC9BDB65B779B8E8D37B29ECC154AA56A8799FAE2F498F76ED92F2
using K.MAC of 7962D9ECE03D1ACD4C76089DCE131543
is meant to return 5F1448EEA8AD90A7
.
However, when I calculate the MAC, it returns AAE3F35132ED3465
. This is the return when I run through the steps step-by-step using pyDes (ECB mode and manually xoring as appropriate) and when I use the code as written here.
I am clearly missing something - would love any help!