3 ### Script to construct OCB test vectors
5 ### (c) 2017 Mark Wooding
8 ###----- Licensing notice ---------------------------------------------------
10 ### This program is free software; you can redistribute it and/or modify
11 ### it under the terms of the GNU General Public License as published by
12 ### the Free Software Foundation; either version 2 of the License, or
13 ### (at your option) any later version.
15 ### This program 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.
20 ### You should have received a copy of the GNU General Public License
21 ### along with this program; if not, write to the Free Software Foundation,
22 ### Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
26 misc128_K0
= 000102030405060708090a0b0c0d0e0f
27 misc128_K1
= 0f0e0d0c0b0a09080706050403020100
29 misc192_K0
= 000102030405060708090a0b0c0d0e0f1011121314151617
30 misc192_K1
= 17161514131211100f0e0d0c0b0a09080706050403020100
32 misc256_K0
= 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
33 misc256_K1
= 1f1e1d1c1b1a191817161514131211100f0e0d0c0b0a09080706050403020100
36 b96_N0
= 887766554433221100
37 b128_N0
= bbaa99887766554433221100
38 b192_N0
= 2110ffeeddccbbaa99887766554433221100
39 b256_N0
= 8776655443322110ffeeddccbbaa99887766554433221100
45 des3_K0
= 010102020404070708080b0b0d0d0e0e1010131315151616
46 des3_K1
= fefedcdcbaba98987676545432321010fedcba9876543210
47 des3_KSZS
= 64 128 192
53 aes_K0
= $(misc128_K0
)
54 aes_K1
= $(misc128_K1
)
55 aes_KSZS
= 128 192 256
58 rijndael192_PRETTY
= Rijndael192
59 rijndael192_NAME
= rijndael192
60 rijndael192_BLKSZ
= 192
61 rijndael192_K0
= $(misc192_K0
)
62 rijndael192_K1
= $(misc192_K1
)
63 rijndael192_KSZS
= $(aes_KSZS
)
66 rijndael256_PRETTY
= Rijndael256
67 rijndael256_NAME
= rijndael256
68 rijndael256_BLKSZ
= 256
69 rijndael256_K0
= $(misc256_K0
)
70 rijndael256_K1
= $(misc256_K1
)
71 rijndael256_KSZS
= $(aes_KSZS
)
76 lraes
$1_PRETTY = LRAES
$1
77 lraes
$1_NAME = lraes
$1
79 lraes
$1_K0 = $(misc
$2_K0)
80 lraes
$1_K1 = $(misc
$2_K1)
81 lraes
$1_KSZS = $(aes_KSZS
)
84 $(eval
$(call def-lraes
,64,128))
85 $(eval
$(call def-lraes
,96,128))
86 $(eval
$(call def-lraes
,128,128))
87 $(eval
$(call def-lraes
,192,192))
88 $(eval
$(call def-lraes
,256,256))
90 BLKSZS
= $(sort $(foreach c
,$(BLKC
),$($c_BLKSZ)))
93 set
-e
; exec
>$@.new
; \
94 echo
'### -*-makefile-*- AUTOMATICALLY GENERATED: DO NOT EDIT'; \
95 $(foreach b
,$(BLKSZS
),b
$b_N0=$(b
$b_N0); ) \
97 for blksz in
$(BLKSZS
); do \
100 for i in
1 2 3 4 5; do \
101 w
=$$(( $$i*$$blksz/16 )); \
102 hm
="$$hm $$w,$$w $$w,0 0,$$w"; \
104 echo
"b$${blksz}_HMSZS = $$hm"; \
105 echo
"b$${blksz}_HMSZV = $$w,$$w"; \
107 printf
"b$${blksz}_TSZ0 = %d\n" $$(( $$blksz )); \
108 printf
"b$${blksz}_TSZ1 = %d\n" $$(( $$blksz*3/4 )); \
109 printf
"b$${blksz}_TSZ2 = %d\n" $$(( $$blksz/2 )); \
111 eval n0
=\
$$b$${blksz}_N0
; \
112 N0
=$$(echo
$$n0 | tr a-f A-F
); \
113 n1
=$$(echo
"16o 16i $$N0 D + p" | dc | tr A-F a-f
); \
114 nsz
=$$(( 4*($$(echo
$$n0 | wc
-c
) - 1) )); \
115 echo
"b$${blksz}_N1 = $$n1"; \
116 echo
"b$${blksz}_NSZ0 = $$nsz"; \
123 blkc
= $(word 1,$(subst -, ,$(subst .
, ,$1)))
124 blkc-blksz
= $($(call blkc
,$1)_BLKSZ
)
125 blkc-pretty
= $($(call blkc
,$1)_PRETTY
)
126 blkc-name
= $($(call blkc
,$1)_NAME
)
127 blkc-k0
= $($(call blkc
,$1)_K0
)
128 blkc-k1
= $($(call blkc
,$1)_K1
)
129 blkc-kszs
= $($(call blkc
,$1)_KSZS
)
131 blkc-hmszs
= $(b
$(call blkc-blksz
,$1)_HMSZS
)
132 blkc-hmszv
= $(b
$(call blkc-blksz
,$1)_HMSZV
)
133 blkc-tsz0
= $(b
$(call blkc-blksz
,$1)_TSZ0
)
134 blkc-tsz1
= $(b
$(call blkc-blksz
,$1)_TSZ1
)
135 blkc-tsz2
= $(b
$(call blkc-blksz
,$1)_TSZ2
)
136 blkc-n0
= $(b
$(call blkc-blksz
,$1)_N0
)
137 blkc-n1
= $(b
$(call blkc-blksz
,$1)_N1
)
138 blkc-nsz0
= $(b
$(call blkc-blksz
,$1)_NSZ0
)
140 TARGETS
+= $(OCBKAT0
)
141 OCBKAT0
= $(foreach b
,$(BLKC
), ocb3-
$b-t
$(b
$($b_BLKSZ)_TSZ0
)-n
$(b
$($b_BLKSZ)_NSZ0
).kat
)
142 $(OCBKAT0
): ocb3-
%: ocbgen Makefile
143 .
/ocbgen
>$@.new ocb3
$(call blkc-name
,$*) kat \
144 $(call blkc-k0
,$*) $(call blkc-n0
,$*)+ \
145 $$(( $(call blkc-tsz0
,$*)/8 )) $(call blkc-hmszs
,$*)
148 TARGETS
+= $(OCBKAT1
)
149 OCBKAT1
= $(foreach b
,$(BLKC
), ocb3-
$b-t
$(b
$($b_BLKSZ)_TSZ1
)-n
$(b
$($b_BLKSZ)_NSZ0
).kat
)
150 $(OCBKAT1
): ocb3-
%: ocbgen Makefile
151 .
/ocbgen
>$@.new ocb3
$(call blkc-name
,$*) kat \
152 $(call blkc-k1
,$*) $(call blkc-n0
,$*)+ \
153 $$(( $(call blkc-tsz1
,$*)/8 )) $(call blkc-hmszs
,$*)
156 TARGETS
+= $(OCBVERBOSE
)
157 OCBVERBOSE
= $(foreach b
,$(BLKC
), ocb3-
$b-t
$(b
$($b_BLKSZ)_TSZ0
)-n
$(b
$($b_BLKSZ)_NSZ0
).verbose
)
158 $(OCBVERBOSE
): ocb3-
%: ocbgen Makefile
159 .
/ocbgen
>$@.new
-v ocb3
$(call blkc-name
,$*) kat \
160 $(call blkc-k0
,$*) $(call blkc-n1
,$*) \
161 $$(( $(call blkc-tsz0
,$*)/8 )) $(call blkc-hmszv
,$*)
165 OCBMCT
= $(foreach b
,$(BLKC
), ocb3-
$b-n
$(b
$($b_BLKSZ)_NSZ0
).mct
)
166 $(OCBMCT
): ocb3-
%: ocbgen Makefile
169 $(call blkc-tsz0
,$*) \
170 $(call blkc-tsz1
,$*) \
171 $(call blkc-tsz2
,$*); \
173 for k in
$(call blkc-kszs
,$*); do \
174 printf
"OCB3-%s-%d-TAGLEN%d: " \
175 $(call blkc-pretty
,$*) $$k $$t; \
176 .
/ocbgen ocb3
$(call blkc-name
,$*) mct \
177 $$(( $$k/8 )) $$(( $(call blkc-nsz0
,$*)/8 )) $$(( $$t/8 )); \
182 lraes64_M0
= 0011223344556677
183 lraes96_M0
= 00112233445566778899aabb
184 lraes128_M0
= 00112233445566778899aabbccddeeff
185 lraes192_M0
= 00112233445566778899aabbccddeeff0112233445566778
186 lraes256_M0
= 00112233445566778899aabbccddeeff0112233445566778899aabbccddeeff0
188 TARGETS
+= $(LRAESVERBOSE
)
189 LRAESVERBOSE
= $(foreach k
,$(LRAES
), lraes
$k.verbose
)
190 $(LRAESVERBOSE
): lraes
%.verbose
: ocbgen Makefile
191 .
/ocbgen
>$@.new ocb3 rijndael lraes
$$(( $*/8 )) \
192 $(lraes
$*_K0
) $(lraes
$*_M0
) && \
198 clean::; rm -f
$(CLEAN
)