]> git.cryptolib.org Git - arm-crypto-lib.git/blob - bmw/f0-opt-table2.txt
Adding Khazad
[arm-crypto-lib.git] / bmw / f0-opt-table2.txt
1                   /-------------- 3 --------------\
2                   |                               |
3                   +-- 2 --v-- 3 --v-- 3 --v-- 1 --+
4                   |       |       |       |       |
5         q[ 0] = (+ h[ 5] - h[ 7] + h[10] + h[13] + h[14]);
6         q[ 1] = (+ h[ 6] - h[ 8] + h[11] + h[14] - h[15]);
7         q[ 2] = (+ h[ 7] + h[ 9] - h[12] + h[15] + h[ 0]);
8         q[ 3] = (+ h[ 8] - h[10] + h[13] + h[ 0] - h[ 1]);
9         q[ 4] = (+ h[ 9] - h[11] - h[14] + h[ 1] + h[ 2]);
10         q[ 5] = (+ h[10] - h[12] + h[15] - h[ 2] + h[ 3]);
11         q[ 6] = (- h[11] + h[13] - h[ 0] - h[ 3] + h[ 4]);
12         q[ 7] = (- h[12] - h[14] + h[ 1] - h[ 4] - h[ 5]);
13         q[ 8] = (+ h[13] - h[15] + h[ 2] - h[ 5] - h[ 6]);
14         q[ 9] = (+ h[14] + h[ 0] - h[ 3] + h[ 6] - h[ 7]);
15         q[10] = (+ h[15] - h[ 1] - h[ 4] - h[ 7] + h[ 8]);
16         q[11] = (- h[ 0] - h[ 2] - h[ 5] + h[ 8] + h[ 9]);
17         q[12] = (+ h[ 1] + h[ 3] - h[ 6] - h[ 9] + h[10]);
18         q[13] = (+ h[ 2] + h[ 4] + h[ 7] + h[10] + h[11]);
19         q[14] = (+ h[ 3] - h[ 5] + h[ 8] - h[11] - h[12]);
20         q[15] = (- h[ 4] - h[ 6] - h[ 9] + h[12] + h[13]);
21
22                                  A       B       C       D       E       F       G   
23         q[ 0] = (+ h[ 5] - h[ 7] + h[10] + h[13] + h[14]);
24         q[ 3] = (+ h[ 8] - h[10] + h[13] + h[ 0] - h[ 1]);
25         q[ 6] = (- h[11] + h[13] - h[ 0] - h[ 3] + h[ 4]);
26         q[ 9] = (+ h[14] + h[ 0] - h[ 3] + h[ 6] - h[ 7]);
27         q[12] = (+ h[ 1] + h[ 3] - h[ 6] - h[ 9] + h[10]);
28         q[15] = (- h[ 4] - h[ 6] - h[ 9] + h[12] + h[13]);
29         q[ 2] = (+ h[ 7] + h[ 9] - h[12] + h[15] + h[ 0]);
30         q[ 5] = (+ h[10] - h[12] + h[15] - h[ 2] + h[ 3]);
31         q[ 8] = (+ h[13] - h[15] + h[ 2] - h[ 5] - h[ 6]);
32         q[11] = (- h[ 0] - h[ 2] - h[ 5] + h[ 8] + h[ 9]);
33         q[14] = (+ h[ 3] - h[ 5] + h[ 8] - h[11] - h[12]);
34         q[ 1] = (+ h[ 6] - h[ 8] + h[11] + h[14] - h[15]);
35         q[ 4] = (+ h[ 9] - h[11] - h[14] + h[ 1] + h[ 2]);
36         q[ 7] = (- h[12] - h[14] + h[ 1] - h[ 4] - h[ 5]);
37         q[10] = (+ h[15] - h[ 1] - h[ 4] - h[ 7] + h[ 8]);
38         q[13] = (+ h[ 2] + h[ 4] + h[ 7] + h[10] + h[11]);
39 ;-- (1)
40         Q = 0; A=5; B=7; C=10; D=13; E=14; F=11; G=8;
41         Q = * A * B * C * D * E
42         Q+=3; A=G; G=F; F=E; E+=3; B=C; C=D; D+=3; 
43 ;-- (2)
44               G=5; F=8; E=11; C=7; D=10;
45
46
47 /* signs */
48
49 +-+++
50 +-++-
51 -+--+
52 ++-+-
53 ++--+
54 ---++
55 ++-++
56 +-+-+
57 +-+--
58 ---++
59 +-+--
60 +-++-
61 +--++
62 --+--
63 +---+
64 +++++
65
66  +---------- 0x4222 / 0x2224
67  | +-------- 0x3AF7 / 0x7FA3
68  | | +------ 0xC725 / 0x527C
69  | | | +---- 0x4956 / 0x6594
70  | | | | +-- 0x50D2 / 0x2D05
71  | | | | |
72 ;---------- 
73  0 1 0 0 0  -- 0x08
74  0 1 0 0 1  -- 0x09
75  1 0 1 1 0  -- 0x16
76  0 0 1 0 1  -- 0x05
77 ;----------
78  0 0 1 1 0  -- 0x06
79  1 1 1 0 0  -- 0x1C
80  0 0 1 0 0  -- 0x04
81  0 1 0 1 0  -- 0x0A
82 ;----------
83  0 1 0 1 1  -- 0x0B
84  1 1 1 0 0  -- 0x1C
85  0 1 0 1 1  -- 0x0B
86  0 1 0 0 1  -- 0x09
87 ;----------
88  0 1 1 0 0  -- 0x0C
89  1 1 0 1 1  -- 0x1B
90  0 1 1 1 0  -- 0x0E
91  0 0 0 0 0      -- 0x00
92  ;---------
93  
94 /* signs (in order 0..15) */
95 +-+++
96 +-++-
97 ++-++
98 +-++-
99 +--++
100 +-+-+
101 -+--+
102 --+--
103 +-+--
104 ++-+-
105 +---+
106 ---++
107 ++--+
108 +++++
109 +-+--
110 ---++
111  
112  0 1 0 0 0  -- 0x08
113  0 1 0 0 1  -- 0x09
114  0 0 1 0 0  -- 0x04
115  0 1 0 0 1  -- 0x05
116  0 1 1 0 0  -- 0x0C
117  0 1 0 1 0  -- 0x0A
118  1 0 1 1 0  -- 0x16
119  1 1 0 1 1  -- 0x1D
120  0 1 0 1 1  -- 0x0D
121  0 0 1 0 1  -- 0x05
122  0 1 1 1 0  -- 0x0E
123  1 1 1 0 0  -- 0x1C
124  0 0 1 1 0  -- 0x06
125  0 0 0 0 0  -- 0x00
126  0 1 0 1 1  -- 0x0D
127  1 1 1 0 0  -- 0x1C
128  
129