From 680433820190cca9441042cb835fb0d229f674a3 Mon Sep 17 00:00:00 2001
From: iceman1001 <iceman@iuse.se>
Date: Mon, 14 Nov 2016 21:41:18 +0100
Subject: [PATCH 1/1] FIX: 'LF PYRAMID' the crc8_MAXIM and crc16_DNP was
 calling the wrong crc method. (update2 is the older and correct version).  
 This solves the pyrmid issue with wrong checksums calculated. Thanks to
 @rookieatall  @marshmellow42 for pointing out the bug. ref:
 http://www.proxmark.org/forum/viewtopic.php?id=4006

---
 common/crc.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/common/crc.c b/common/crc.c
index 47e21426..f9a15234 100644
--- a/common/crc.c
+++ b/common/crc.c
@@ -68,7 +68,6 @@ void crc_update(crc_t *crc, uint32_t data, int data_width)
 	}
 }
 
-
 uint32_t crc_finish(crc_t *crc) {
 	uint32_t val = crc->state;
 	if (crc->refout) val = reflect(val, crc->order);
@@ -96,7 +95,7 @@ uint32_t CRC8Maxim(uint8_t *buff, size_t size) {
 	crc_t crc;
 	crc_init_ref(&crc, 8, 0x31, 0, 0, TRUE, TRUE);	
 	for ( int i=0; i < size; ++i)
-		crc_update(&crc, buff[i], 8);
+		crc_update2(&crc, buff[i], 8);
 	return crc_finish(&crc);
 }
 
@@ -139,7 +138,7 @@ uint32_t CRC16_DNP(uint8_t *buff, size_t size) {
 	crc_t crc;
 	crc_init_ref(&crc, 16, 0x3d65, 0, 0xffff, TRUE, TRUE);
 	for ( int i=0; i < size; ++i)
-		crc_update(&crc, buff[i], 8);
+		crc_update2(&crc, buff[i], 8);
 	
 	return BSWAP_16(crc_finish(&crc));
 }
-- 
2.39.5