I am currently working with the NXP NTAG 424 chips, which feature AES-128 encryption.
This chip requires the computation of a crc32 checkvalue whenever a new key is set (see the datasheet 11.6.1/Page 67). According to the data sheet, the crc is "computed according to IEEE Std802.3-2008". The application note (6.16.1/page 39) even gives an example for this :
new_key: F3847D627727ED3BC9C4CC050489B966
CRC32(new_key): 789DFADC
However when I try to replicate the results using python and the binascii crc32 library, the result is different:
>>> from binascii import unhexlify, crc32
>>> new_key = unhexlify('F3847D627727ED3BC9C4CC050489B966')
>>> print(hex(crc32(new_key)))
0x23056287 # Not the CRC I was looking for
This document often reverses byte order, however the command
>>> print(hex(crc32(new_key[::-1])))
0x9453faa7
also brings no joy.
So the question is: What am I doing wrong? I tried consulting the cited standard, but with my superficial knowledge I could not spot any difference between the standard crc32 and the algorithm cited in the IEEE standard.