]> git.zerfleddert.de Git - proxmark3-svn/blob - client/loclass/cipher.h
Added some previous work of splitting ultralight to its own c-file, ported Pentura_Pr...
[proxmark3-svn] / client / loclass / cipher.h
1 /*****************************************************************************
2 * This file is part of iClassCipher. It is a reconstructon of the cipher engine
3 * used in iClass, and RFID techology.
4 *
5 * The implementation is based on the work performed by
6 * Flavio D. Garcia, Gerhard de Koning Gans, Roel Verdult and
7 * Milosch Meriac in the paper "Dismantling IClass".
8 *
9 * Copyright (C) 2014 Martin Holst Swende
10 *
11 * This is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License version 2 as published
13 * by the Free Software Foundation.
14 *
15 * This file is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with IClassCipher. If not, see <http://www.gnu.org/licenses/>.
22 ****************************************************************************/
23
24 #ifndef CIPHER_H
25 #define CIPHER_H
26 #include <stdint.h>
27
28 /**
29 * Definition 1 (Cipher state). A cipher state of iClass s is an element of F 40/2
30 * consisting of the following four components:
31 * 1. the left register l = (l 0 . . . l 7 ) ∈ F 8/2 ;
32 * 2. the right register r = (r 0 . . . r 7 ) ∈ F 8/2 ;
33 * 3. the top register t = (t 0 . . . t 15 ) ∈ F 16/2 .
34 * 4. the bottom register b = (b 0 . . . b 7 ) ∈ F 8/2 .
35 **/
36 typedef struct {
37 uint8_t l;
38 uint8_t r;
39 uint8_t b;
40 uint16_t t;
41 } State;
42
43 void printarr(char * name, uint8_t* arr, int len);
44 int calc_iclass_mac(uint8_t *cc_nr_p, int length, uint8_t *div_key_p, uint8_t *mac);
45
46 #endif // CIPHER_H
Impressum, Datenschutz