Change rol8() to rol() to work with buffers of any length.

This commit is contained in:
Romain Tartiere 2010-10-29 12:01:57 +00:00
parent 7278740a03
commit 13f03a60bb
4 changed files with 9 additions and 9 deletions

View file

@ -117,7 +117,7 @@ typedef enum {
void *mifare_cryto_preprocess_data (MifareTag tag, void *data, size_t *nbytes, int communication_settings); void *mifare_cryto_preprocess_data (MifareTag tag, void *data, size_t *nbytes, int communication_settings);
void *mifare_cryto_postprocess_data (MifareTag tag, void *data, ssize_t *nbytes, int communication_settings); void *mifare_cryto_postprocess_data (MifareTag tag, void *data, ssize_t *nbytes, int communication_settings);
void mifare_cbc_des (MifareDESFireKey key, uint8_t *data, size_t data_size, MifareDirection direction, int mac); void mifare_cbc_des (MifareDESFireKey key, uint8_t *data, size_t data_size, MifareDirection direction, int mac);
void rol8(uint8_t *data); void rol (uint8_t *data, const size_t len);
void *assert_crypto_buffer_size (MifareTag tag, size_t nbytes); void *assert_crypto_buffer_size (MifareTag tag, size_t nbytes);
#define MIFARE_ULTRALIGHT_PAGE_COUNT 16 #define MIFARE_ULTRALIGHT_PAGE_COUNT 16

View file

@ -354,7 +354,7 @@ mifare_desfire_authenticate (MifareTag tag, uint8_t key_no, MifareDESFireKey key
uint8_t PCD_r_RndB[8]; uint8_t PCD_r_RndB[8];
memcpy (PCD_r_RndB, PICC_RndB, 8); memcpy (PCD_r_RndB, PICC_RndB, 8);
rol8 (PCD_r_RndB); rol (PCD_r_RndB, 8);
uint8_t token[16]; uint8_t token[16];
memcpy (token, PCD_RndA, 8); memcpy (token, PCD_RndA, 8);
@ -378,7 +378,7 @@ mifare_desfire_authenticate (MifareTag tag, uint8_t key_no, MifareDESFireKey key
uint8_t PCD_RndA_s[8]; uint8_t PCD_RndA_s[8];
memcpy (PCD_RndA_s, PCD_RndA, 8); memcpy (PCD_RndA_s, PCD_RndA, 8);
rol8 (PCD_RndA_s); rol (PCD_RndA_s, 8);
if (0 != memcmp (PCD_RndA_s, PICC_RndA_s, 8)) { if (0 != memcmp (PCD_RndA_s, PICC_RndA_s, 8)) {

View file

@ -43,13 +43,13 @@ xor8 (uint8_t *ivect, uint8_t *data)
} }
void void
rol8(uint8_t *data) rol(uint8_t *data, const size_t len)
{ {
uint8_t first = data[0]; uint8_t first = data[0];
for (int i = 0; i < 7; i++) { for (size_t i = 0; i < len-1; i++) {
data[i] = data[i+1]; data[i] = data[i+1];
} }
data[7] = first; data[len-1] = first;
} }
/* /*

View file

@ -22,11 +22,11 @@
#include "freefare_internal.h" #include "freefare_internal.h"
void void
test_mifare_rol8 (void) test_mifare_rol (void)
{ {
uint8_t data[8] = "01234567"; uint8_t data[8] = "01234567";
rol8 (data); rol (data, sizeof (data));
cut_assert_equal_memory ("12345670", 8, data, 8, cut_message ("Wrong data")); cut_assert_equal_memory ("12345670", 8, data, sizeof (data), cut_message ("Wrong data"));
} }
void void