--- /dev/null
+#include "iso14443crc.h"\r
+\r
+static unsigned short UpdateCrc14443(unsigned char ch, unsigned short *lpwCrc)\r
+{\r
+ ch = (ch ^ (unsigned char) ((*lpwCrc) & 0x00FF));\r
+ ch = (ch ^ (ch << 4));\r
+ *lpwCrc = (*lpwCrc >> 8) ^ ((unsigned short) ch << 8) ^\r
+ ((unsigned short) ch << 3) ^ ((unsigned short) ch >> 4);\r
+ return (*lpwCrc);\r
+}\r
+\r
+void ComputeCrc14443(int CrcType,\r
+ unsigned char *Data, int Length,\r
+ unsigned char *TransmitFirst,\r
+ unsigned char *TransmitSecond)\r
+{\r
+ unsigned char chBlock;\r
+ unsigned short wCrc=CrcType;\r
+\r
+ do {\r
+ chBlock = *Data++;\r
+ UpdateCrc14443(chBlock, &wCrc);\r
+ } while (--Length);\r
+\r
+ if (CrcType == CRC_14443_B)\r
+ wCrc = ~wCrc; /* ISO/IEC 13239 (formerly ISO/IEC 3309) */\r
+\r
+ *TransmitFirst = (unsigned char) (wCrc & 0xFF);\r
+ *TransmitSecond = (unsigned char) ((wCrc >> 8) & 0xFF);\r
+ return;\r
+}\r