arm-crypto-lib/bmw/f0-opt-table2.txt

129 lines
3.1 KiB
Plaintext

/-------------- 3 --------------\
| |
+-- 2 --v-- 3 --v-- 3 --v-- 1 --+
| | | | |
q[ 0] = (+ h[ 5] - h[ 7] + h[10] + h[13] + h[14]);
q[ 1] = (+ h[ 6] - h[ 8] + h[11] + h[14] - h[15]);
q[ 2] = (+ h[ 7] + h[ 9] - h[12] + h[15] + h[ 0]);
q[ 3] = (+ h[ 8] - h[10] + h[13] + h[ 0] - h[ 1]);
q[ 4] = (+ h[ 9] - h[11] - h[14] + h[ 1] + h[ 2]);
q[ 5] = (+ h[10] - h[12] + h[15] - h[ 2] + h[ 3]);
q[ 6] = (- h[11] + h[13] - h[ 0] - h[ 3] + h[ 4]);
q[ 7] = (- h[12] - h[14] + h[ 1] - h[ 4] - h[ 5]);
q[ 8] = (+ h[13] - h[15] + h[ 2] - h[ 5] - h[ 6]);
q[ 9] = (+ h[14] + h[ 0] - h[ 3] + h[ 6] - h[ 7]);
q[10] = (+ h[15] - h[ 1] - h[ 4] - h[ 7] + h[ 8]);
q[11] = (- h[ 0] - h[ 2] - h[ 5] + h[ 8] + h[ 9]);
q[12] = (+ h[ 1] + h[ 3] - h[ 6] - h[ 9] + h[10]);
q[13] = (+ h[ 2] + h[ 4] + h[ 7] + h[10] + h[11]);
q[14] = (+ h[ 3] - h[ 5] + h[ 8] - h[11] - h[12]);
q[15] = (- h[ 4] - h[ 6] - h[ 9] + h[12] + h[13]);
A B C D E F G
q[ 0] = (+ h[ 5] - h[ 7] + h[10] + h[13] + h[14]);
q[ 3] = (+ h[ 8] - h[10] + h[13] + h[ 0] - h[ 1]);
q[ 6] = (- h[11] + h[13] - h[ 0] - h[ 3] + h[ 4]);
q[ 9] = (+ h[14] + h[ 0] - h[ 3] + h[ 6] - h[ 7]);
q[12] = (+ h[ 1] + h[ 3] - h[ 6] - h[ 9] + h[10]);
q[15] = (- h[ 4] - h[ 6] - h[ 9] + h[12] + h[13]);
q[ 2] = (+ h[ 7] + h[ 9] - h[12] + h[15] + h[ 0]);
q[ 5] = (+ h[10] - h[12] + h[15] - h[ 2] + h[ 3]);
q[ 8] = (+ h[13] - h[15] + h[ 2] - h[ 5] - h[ 6]);
q[11] = (- h[ 0] - h[ 2] - h[ 5] + h[ 8] + h[ 9]);
q[14] = (+ h[ 3] - h[ 5] + h[ 8] - h[11] - h[12]);
q[ 1] = (+ h[ 6] - h[ 8] + h[11] + h[14] - h[15]);
q[ 4] = (+ h[ 9] - h[11] - h[14] + h[ 1] + h[ 2]);
q[ 7] = (- h[12] - h[14] + h[ 1] - h[ 4] - h[ 5]);
q[10] = (+ h[15] - h[ 1] - h[ 4] - h[ 7] + h[ 8]);
q[13] = (+ h[ 2] + h[ 4] + h[ 7] + h[10] + h[11]);
;-- (1)
Q = 0; A=5; B=7; C=10; D=13; E=14; F=11; G=8;
Q = * A * B * C * D * E
Q+=3; A=G; G=F; F=E; E+=3; B=C; C=D; D+=3;
;-- (2)
G=5; F=8; E=11; C=7; D=10;
/* signs */
+-+++
+-++-
-+--+
++-+-
++--+
---++
++-++
+-+-+
+-+--
---++
+-+--
+-++-
+--++
--+--
+---+
+++++
+---------- 0x4222 / 0x2224
| +-------- 0x3AF7 / 0x7FA3
| | +------ 0xC725 / 0x527C
| | | +---- 0x4956 / 0x6594
| | | | +-- 0x50D2 / 0x2D05
| | | | |
;----------
0 1 0 0 0 -- 0x08
0 1 0 0 1 -- 0x09
1 0 1 1 0 -- 0x16
0 0 1 0 1 -- 0x05
;----------
0 0 1 1 0 -- 0x06
1 1 1 0 0 -- 0x1C
0 0 1 0 0 -- 0x04
0 1 0 1 0 -- 0x0A
;----------
0 1 0 1 1 -- 0x0B
1 1 1 0 0 -- 0x1C
0 1 0 1 1 -- 0x0B
0 1 0 0 1 -- 0x09
;----------
0 1 1 0 0 -- 0x0C
1 1 0 1 1 -- 0x1B
0 1 1 1 0 -- 0x0E
0 0 0 0 0 -- 0x00
;---------
/* signs (in order 0..15) */
+-+++
+-++-
++-++
+-++-
+--++
+-+-+
-+--+
--+--
+-+--
++-+-
+---+
---++
++--+
+++++
+-+--
---++
0 1 0 0 0 -- 0x08
0 1 0 0 1 -- 0x09
0 0 1 0 0 -- 0x04
0 1 0 0 1 -- 0x05
0 1 1 0 0 -- 0x0C
0 1 0 1 0 -- 0x0A
1 0 1 1 0 -- 0x16
1 1 0 1 1 -- 0x1D
0 1 0 1 1 -- 0x0D
0 0 1 0 1 -- 0x05
0 1 1 1 0 -- 0x0E
1 1 1 0 0 -- 0x1C
0 0 1 1 0 -- 0x06
0 0 0 0 0 -- 0x00
0 1 0 1 1 -- 0x0D
1 1 1 0 0 -- 0x1C