void rol() { uint16_t a = GET_EAB; uint8_t t = get_memb(a); rol8(t); set_memb(a, t); }
NC_LIBEXPORT(VOID) ncKeyShift(unsigned char* keybuf, int len) { for(int i = 0; i < (NC_ENC_PASSES - 1); i++) { bool f = false; for(int l = 0; l < len; l++) { if(f) rol8((unsigned char*)&keybuf[l], 2); else ror8((unsigned char*)&keybuf[2], 3); f = !f; } } }
BYTE GetMeshCheckSum(BYTE *pEDIDBuff, int N) { int i ; BYTE c, checksum ; for( i = 0, checksum = 0 ; i < N ; i++) { c = pEDIDBuff[i] ; EDID_DEBUG_PRINTF2(("c = %02X",(int)c)) ; c = rol8(c,i) ; EDID_DEBUG_PRINTF2(("-> %02X",(int)c)) ; EDID_DEBUG_PRINTF2(("MeshChecksum[%02X]: %02X",(int)i,(int)checksum)) ; checksum ^= c ; EDID_DEBUG_PRINTF2(("^%02X = %02X\n",(int)c,(int)checksum)) ; } return checksum ; }
static u8 lowpan_compress_addr_64(u8 **hc06_ptr, u8 shift, const struct in6_addr *ipaddr, const unsigned char *lladdr) { u8 val = 0; if (is_addr_mac_addr_based(ipaddr, lladdr)) val = 3; /* 0-bits */ else if (lowpan_is_iid_16_bit_compressable(ipaddr)) { /* compress IID to 16 bits xxxx::XXXX */ memcpy(*hc06_ptr, &ipaddr->s6_addr16[7], 2); *hc06_ptr += 2; val = 2; /* 16-bits */ } else { /* do not compress IID => xxxx::IID */ memcpy(*hc06_ptr, &ipaddr->s6_addr16[4], 8); *hc06_ptr += 8; val = 1; /* 64-bits */ } return rol8(val, shift); }
void rolb() { rol8(rb); }
void rola() { rol8(ra); }
int mifare_desfire_authenticate (MifareTag tag, uint8_t key_no, MifareDESFireKey key) { ASSERT_ACTIVE (tag); ASSERT_MIFARE_DESFIRE (tag); MIFARE_DESFIRE (tag)->last_picc_error = OPERATION_OK; MIFARE_DESFIRE (tag)->authenticated_key_no = NOT_YET_AUTHENTICATED; free (MIFARE_DESFIRE (tag)->session_key); MIFARE_DESFIRE (tag)->session_key = NULL; BUFFER_INIT (cmd1, 2); BUFFER_INIT (res, 9); BUFFER_APPEND (cmd1, 0x0A); BUFFER_APPEND (cmd1, key_no); DESFIRE_TRANSCEIVE (tag, cmd1, res); uint8_t PICC_E_RndB[8]; memcpy (PICC_E_RndB, res+1, 8); uint8_t PICC_RndB[8]; memcpy (PICC_RndB, PICC_E_RndB, 8); mifare_cbc_des (key, PICC_RndB, 8, MD_RECEIVE, 0); uint8_t PCD_RndA[8]; DES_random_key ((DES_cblock*)&PCD_RndA); uint8_t PCD_r_RndB[8]; memcpy (PCD_r_RndB, PICC_RndB, 8); rol8 (PCD_r_RndB); uint8_t token[16]; memcpy (token, PCD_RndA, 8); memcpy (token+8, PCD_r_RndB, 8); mifare_cbc_des (key, token, 16, MD_SEND, 0); BUFFER_INIT (cmd2, 17); BUFFER_APPEND (cmd2, 0xAF); BUFFER_APPEND_BYTES (cmd2, token, 16); DESFIRE_TRANSCEIVE (tag, cmd2, res); uint8_t PICC_E_RndA_s[8]; memcpy (PICC_E_RndA_s, res+1, 8); uint8_t PICC_RndA_s[8]; memcpy (PICC_RndA_s, PICC_E_RndA_s, 8); mifare_cbc_des (key, PICC_RndA_s, 8, MD_RECEIVE, 0); uint8_t PCD_RndA_s[8]; memcpy (PCD_RndA_s, PCD_RndA, 8); rol8 (PCD_RndA_s); if (0 != memcmp (PCD_RndA_s, PICC_RndA_s, 8)) { printf ("PCD_RndA_s != PICC_RndA_s"); return -1; } MIFARE_DESFIRE (tag)->authenticated_key_no = key_no; MIFARE_DESFIRE (tag)->session_key = mifare_desfire_session_key_new (PCD_RndA, PICC_RndB, key); return 0; }