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.
27 v_tag
= $(call v_tag_
$V,$1)
28 v_tag_0
= @printf
" %-8s %s\n" "$1" "$@";
32 misc128_K0
= 000102030405060708090a0b0c0d0e0f
33 misc128_K1
= 0f0e0d0c0b0a09080706050403020100
35 misc192_K0
= 000102030405060708090a0b0c0d0e0f1011121314151617
36 misc192_K1
= 17161514131211100f0e0d0c0b0a09080706050403020100
38 misc256_K0
= 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
39 misc256_K1
= 1f1e1d1c1b1a191817161514131211100f0e0d0c0b0a09080706050403020100
41 misc512_K0
= 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f
42 misc512_K1
= 3f3e3d3c3b3a393837363534333231302f2e2d2c2b2a292827262524232221201f1e1d1c1b1a191817161514131211100f0e0d0c0b0a09080706050403020100
45 b96_N0
= 887766554433221100
46 b128_N0
= bbaa99887766554433221100
47 b192_N0
= 2110ffeeddccbbaa99887766554433221100
48 b256_N0
= 8776655443322110ffeeddccbbaa99887766554433221100
49 b512_N0
= aa9998887776665554443332221110000ffeeddccbbaa9988776655443322110ffeeddccbbaa99887766554433221100
55 des3_K0
= 010102020404070708080b0b0d0d0e0e1010131315151616
56 des3_K1
= fefedcdcbaba98987676545432321010fedcba9876543210
57 des3_KSZS
= 64 128 192
63 aes_K0
= $(misc128_K0
)
64 aes_K1
= $(misc128_K1
)
65 aes_KSZS
= 128 192 256
68 rijndael192_PRETTY
= Rijndael192
69 rijndael192_NAME
= rijndael192
70 rijndael192_BLKSZ
= 192
71 rijndael192_K0
= $(misc192_K0
)
72 rijndael192_K1
= $(misc192_K1
)
73 rijndael192_KSZS
= $(aes_KSZS
)
76 rijndael256_PRETTY
= Rijndael256
77 rijndael256_NAME
= rijndael256
78 rijndael256_BLKSZ
= 256
79 rijndael256_K0
= $(misc256_K0
)
80 rijndael256_K1
= $(misc256_K1
)
81 rijndael256_KSZS
= $(aes_KSZS
)
86 lraes
$1_PRETTY = LRAES
$1
87 lraes
$1_NAME = lraes
$1
89 lraes
$1_K0 = $(misc
$2_K0)
90 lraes
$1_K1 = $(misc
$2_K1)
91 lraes
$1_KSZS = $(aes_KSZS
)
94 $(eval
$(call def-lraes
,64,128))
95 $(eval
$(call def-lraes
,96,128))
96 $(eval
$(call def-lraes
,128,128))
97 $(eval
$(call def-lraes
,192,192))
98 $(eval
$(call def-lraes
,256,256))
101 dlraes512_PRETTY
= DLRAES512
102 dlraes512_NAME
= dlraes512
103 dlraes512_BLKSZ
= 512
104 dlraes512_K0
= $(misc256_K0
)
105 dlraes512_K1
= $(misc256_K1
)
106 dlraes512_KSZS
= $(aes_KSZS
)
108 BLKSZS
= $(sort $(foreach c
,$(BLKC
),$($c_BLKSZ)))
111 $(call v_tag
,GEN
)set
-e
; exec
>$@.new
; \
112 echo
'### -*-makefile-*- AUTOMATICALLY GENERATED: DO NOT EDIT'; \
113 $(foreach b
,$(BLKSZS
),b
$b_N0=$(b
$b_N0); ) \
115 for blksz in
$(BLKSZS
); do \
118 for i in
1 2 3 4 5; do \
119 w
=$$(( $$i*$$blksz/16 )); \
120 hm
="$$hm $$w,$$w $$w,0 0,$$w"; \
122 echo
"b$${blksz}_HMSZS = $$hm"; \
123 echo
"b$${blksz}_HMSZV = $$w,$$w"; \
125 printf
"b$${blksz}_TSZ0 = %d\n" $$(( $$blksz )); \
126 printf
"b$${blksz}_TSZ1 = %d\n" $$(( $$blksz*3/4 )); \
127 printf
"b$${blksz}_TSZ2 = %d\n" $$(( $$blksz/2 )); \
129 eval n0
=\
$$b$${blksz}_N0
; \
130 N0
=$$(echo
$$n0 | tr a-f A-F
); \
131 n1
=$$(echo
"16o 16i $$N0 D + p" | dc | tr A-F a-f | tr
-d
'\\\n'); \
132 nsz
=$$(( 4*($$(echo
$$n0 | wc
-c
) - 1) )); \
133 echo
"b$${blksz}_N1 = $$n1"; \
134 echo
"b$${blksz}_NSZ0 = $$nsz"; \
141 blkc
= $(word 1,$(subst -, ,$(subst .
, ,$1)))
142 blkc-blksz
= $($(call blkc
,$1)_BLKSZ
)
143 blkc-pretty
= $($(call blkc
,$1)_PRETTY
)
144 blkc-name
= $($(call blkc
,$1)_NAME
)
145 blkc-k0
= $($(call blkc
,$1)_K0
)
146 blkc-k1
= $($(call blkc
,$1)_K1
)
147 blkc-kszs
= $($(call blkc
,$1)_KSZS
)
149 blkc-hmszs
= $(b
$(call blkc-blksz
,$1)_HMSZS
)
150 blkc-hmszv
= $(b
$(call blkc-blksz
,$1)_HMSZV
)
151 blkc-tsz0
= $(b
$(call blkc-blksz
,$1)_TSZ0
)
152 blkc-tsz1
= $(b
$(call blkc-blksz
,$1)_TSZ1
)
153 blkc-tsz2
= $(b
$(call blkc-blksz
,$1)_TSZ2
)
154 blkc-n0
= $(b
$(call blkc-blksz
,$1)_N0
)
155 blkc-n1
= $(b
$(call blkc-blksz
,$1)_N1
)
156 blkc-nsz0
= $(b
$(call blkc-blksz
,$1)_NSZ0
)
158 TARGETS
+= $(OCBKAT0
)
159 OCBKAT0
= $(foreach b
,$(BLKC
), ocb3-
$b-t
$(b
$($b_BLKSZ)_TSZ0
)-n
$(b
$($b_BLKSZ)_NSZ0
).kat
)
160 $(OCBKAT0
): ocb3-
%: ocbgen Makefile
161 $(call v_tag
,KAT
).
/ocbgen
>$@.new ocb3
$(call blkc-name
,$*) kat \
162 $(call blkc-k0
,$*) $(call blkc-n0
,$*)+ \
163 $$(( $(call blkc-tsz0
,$*)/8 )) $(call blkc-hmszs
,$*)
166 TARGETS
+= $(OCBKAT1
)
167 OCBKAT1
= $(foreach b
,$(BLKC
), ocb3-
$b-t
$(b
$($b_BLKSZ)_TSZ1
)-n
$(b
$($b_BLKSZ)_NSZ0
).kat
)
168 $(OCBKAT1
): ocb3-
%: ocbgen Makefile
169 $(call v_tag
,KAT
).
/ocbgen
>$@.new ocb3
$(call blkc-name
,$*) kat \
170 $(call blkc-k1
,$*) $(call blkc-n0
,$*)+ \
171 $$(( $(call blkc-tsz1
,$*)/8 )) $(call blkc-hmszs
,$*)
174 TARGETS
+= $(OCBVERBOSE
)
175 OCBVERBOSE
= $(foreach b
,$(BLKC
), ocb3-
$b-t
$(b
$($b_BLKSZ)_TSZ0
)-n
$(b
$($b_BLKSZ)_NSZ0
).verbose
)
176 $(OCBVERBOSE
): ocb3-
%: ocbgen Makefile
177 $(call v_tag
,VERBOSE
).
/ocbgen
>$@.new
-v ocb3
$(call blkc-name
,$*) kat \
178 $(call blkc-k0
,$*) $(call blkc-n1
,$*) \
179 $$(( $(call blkc-tsz0
,$*)/8 )) $(call blkc-hmszv
,$*)
183 OCBMCT
= $(foreach b
,$(BLKC
), ocb3-
$b-n
$(b
$($b_BLKSZ)_NSZ0
).mct
)
184 $(OCBMCT
): ocb3-
%: ocbgen Makefile
185 $(call v_tag
,MCT
)set
-e
; \
187 $(call blkc-tsz0
,$*) \
188 $(call blkc-tsz1
,$*) \
189 $(call blkc-tsz2
,$*); \
191 for k in
$(call blkc-kszs
,$*); do \
192 printf
"OCB3-%s-%d-TAGLEN%d: " \
193 $(call blkc-pretty
,$*) $$k $$t; \
194 .
/ocbgen ocb3
$(call blkc-name
,$*) mct \
195 $$(( $$k/8 )) $$(( $(call blkc-nsz0
,$*)/8 )) $$(( $$t/8 )); \
200 lraes64_M0
= 0011223344556677
201 lraes96_M0
= 00112233445566778899aabb
202 lraes128_M0
= 00112233445566778899aabbccddeeff
203 lraes192_M0
= 00112233445566778899aabbccddeeff0112233445566778
204 lraes256_M0
= 00112233445566778899aabbccddeeff0112233445566778899aabbccddeeff0
205 lraes512_M0
= 00112233445566778899aabbccddeeff0112233445566778899aabbccddeeff00000111122223333444455556666777788889999aaaabbbbccccddddeeeeffff
207 TARGETS
+= $(LRAESVERBOSE
)
208 LRAESVERBOSE
= $(foreach w
,$(LRAES
), lraes
$w.verbose
)
209 $(LRAESVERBOSE
): lraes
%.verbose
: ocbgen Makefile
210 $(call v_tag
,LRAES
).
/ocbgen
>$@.new ocb3 rijndael lraes
$$(( $*/8 )) \
211 $(lraes
$*_K0
) $(lraes
$*_M0
)
214 TARGETS
+= dlraes512.verbose
215 dlraes512.verbose
: ocbgen Makefile
216 $(call v_tag
,LRAES
).
/ocbgen
>$@.new ocb3 lraes256 lraes
64 \
217 $(dlraes512_K0
) $(lraes512_M0
)
223 clean::; rm -f
$(CLEAN
)