]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - common/iso14443crc.c
Client cleanup and restructuring. Stage 1...
[proxmark3-svn] / common / iso14443crc.c
diff --git a/common/iso14443crc.c b/common/iso14443crc.c
new file mode 100644 (file)
index 0000000..250a4ee
--- /dev/null
@@ -0,0 +1,31 @@
+#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
Impressum, Datenschutz