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
42 b96_N0
= 887766554433221100
43 b128_N0
= bbaa99887766554433221100
44 b192_N0
= 2110ffeeddccbbaa99887766554433221100
45 b256_N0
= 8776655443322110ffeeddccbbaa99887766554433221100
51 des3_K0
= 010102020404070708080b0b0d0d0e0e1010131315151616
52 des3_K1
= fefedcdcbaba98987676545432321010fedcba9876543210
53 des3_KSZS
= 64 128 192
59 aes_K0
= $(misc128_K0
)
60 aes_K1
= $(misc128_K1
)
61 aes_KSZS
= 128 192 256
64 rijndael192_PRETTY
= Rijndael192
65 rijndael192_NAME
= rijndael192
66 rijndael192_BLKSZ
= 192
67 rijndael192_K0
= $(misc192_K0
)
68 rijndael192_K1
= $(misc192_K1
)
69 rijndael192_KSZS
= $(aes_KSZS
)
72 rijndael256_PRETTY
= Rijndael256
73 rijndael256_NAME
= rijndael256
74 rijndael256_BLKSZ
= 256
75 rijndael256_K0
= $(misc256_K0
)
76 rijndael256_K1
= $(misc256_K1
)
77 rijndael256_KSZS
= $(aes_KSZS
)
82 lraes
$1_PRETTY = LRAES
$1
83 lraes
$1_NAME = lraes
$1
85 lraes
$1_K0 = $(misc
$2_K0)
86 lraes
$1_K1 = $(misc
$2_K1)
87 lraes
$1_KSZS = $(aes_KSZS
)
90 $(eval
$(call def-lraes
,64,128))
91 $(eval
$(call def-lraes
,96,128))
92 $(eval
$(call def-lraes
,128,128))
93 $(eval
$(call def-lraes
,192,192))
94 $(eval
$(call def-lraes
,256,256))
96 BLKSZS
= $(sort $(foreach c
,$(BLKC
),$($c_BLKSZ)))
99 $(call v_tag
,GEN
)set
-e
; exec
>$@.new
; \
100 echo
'### -*-makefile-*- AUTOMATICALLY GENERATED: DO NOT EDIT'; \
101 $(foreach b
,$(BLKSZS
),b
$b_N0=$(b
$b_N0); ) \
103 for blksz in
$(BLKSZS
); do \
106 for i in
1 2 3 4 5; do \
107 w
=$$(( $$i*$$blksz/16 )); \
108 hm
="$$hm $$w,$$w $$w,0 0,$$w"; \
110 echo
"b$${blksz}_HMSZS = $$hm"; \
111 echo
"b$${blksz}_HMSZV = $$w,$$w"; \
113 printf
"b$${blksz}_TSZ0 = %d\n" $$(( $$blksz )); \
114 printf
"b$${blksz}_TSZ1 = %d\n" $$(( $$blksz*3/4 )); \
115 printf
"b$${blksz}_TSZ2 = %d\n" $$(( $$blksz/2 )); \
117 eval n0
=\
$$b$${blksz}_N0
; \
118 N0
=$$(echo
$$n0 | tr a-f A-F
); \
119 n1
=$$(echo
"16o 16i $$N0 D + p" | dc | tr A-F a-f | tr
-d
'\\\n'); \
120 nsz
=$$(( 4*($$(echo
$$n0 | wc
-c
) - 1) )); \
121 echo
"b$${blksz}_N1 = $$n1"; \
122 echo
"b$${blksz}_NSZ0 = $$nsz"; \
129 blkc
= $(word 1,$(subst -, ,$(subst .
, ,$1)))
130 blkc-blksz
= $($(call blkc
,$1)_BLKSZ
)
131 blkc-pretty
= $($(call blkc
,$1)_PRETTY
)
132 blkc-name
= $($(call blkc
,$1)_NAME
)
133 blkc-k0
= $($(call blkc
,$1)_K0
)
134 blkc-k1
= $($(call blkc
,$1)_K1
)
135 blkc-kszs
= $($(call blkc
,$1)_KSZS
)
137 blkc-hmszs
= $(b
$(call blkc-blksz
,$1)_HMSZS
)
138 blkc-hmszv
= $(b
$(call blkc-blksz
,$1)_HMSZV
)
139 blkc-tsz0
= $(b
$(call blkc-blksz
,$1)_TSZ0
)
140 blkc-tsz1
= $(b
$(call blkc-blksz
,$1)_TSZ1
)
141 blkc-tsz2
= $(b
$(call blkc-blksz
,$1)_TSZ2
)
142 blkc-n0
= $(b
$(call blkc-blksz
,$1)_N0
)
143 blkc-n1
= $(b
$(call blkc-blksz
,$1)_N1
)
144 blkc-nsz0
= $(b
$(call blkc-blksz
,$1)_NSZ0
)
146 TARGETS
+= $(OCBKAT0
)
147 OCBKAT0
= $(foreach b
,$(BLKC
), ocb3-
$b-t
$(b
$($b_BLKSZ)_TSZ0
)-n
$(b
$($b_BLKSZ)_NSZ0
).kat
)
148 $(OCBKAT0
): ocb3-
%: ocbgen Makefile
149 $(call v_tag
,KAT
).
/ocbgen
>$@.new ocb3
$(call blkc-name
,$*) kat \
150 $(call blkc-k0
,$*) $(call blkc-n0
,$*)+ \
151 $$(( $(call blkc-tsz0
,$*)/8 )) $(call blkc-hmszs
,$*)
154 TARGETS
+= $(OCBKAT1
)
155 OCBKAT1
= $(foreach b
,$(BLKC
), ocb3-
$b-t
$(b
$($b_BLKSZ)_TSZ1
)-n
$(b
$($b_BLKSZ)_NSZ0
).kat
)
156 $(OCBKAT1
): ocb3-
%: ocbgen Makefile
157 $(call v_tag
,KAT
).
/ocbgen
>$@.new ocb3
$(call blkc-name
,$*) kat \
158 $(call blkc-k1
,$*) $(call blkc-n0
,$*)+ \
159 $$(( $(call blkc-tsz1
,$*)/8 )) $(call blkc-hmszs
,$*)
162 TARGETS
+= $(OCBVERBOSE
)
163 OCBVERBOSE
= $(foreach b
,$(BLKC
), ocb3-
$b-t
$(b
$($b_BLKSZ)_TSZ0
)-n
$(b
$($b_BLKSZ)_NSZ0
).verbose
)
164 $(OCBVERBOSE
): ocb3-
%: ocbgen Makefile
165 $(call v_tag
,VERBOSE
).
/ocbgen
>$@.new
-v ocb3
$(call blkc-name
,$*) kat \
166 $(call blkc-k0
,$*) $(call blkc-n1
,$*) \
167 $$(( $(call blkc-tsz0
,$*)/8 )) $(call blkc-hmszv
,$*)
171 OCBMCT
= $(foreach b
,$(BLKC
), ocb3-
$b-n
$(b
$($b_BLKSZ)_NSZ0
).mct
)
172 $(OCBMCT
): ocb3-
%: ocbgen Makefile
173 $(call v_tag
,MCT
)set
-e
; \
175 $(call blkc-tsz0
,$*) \
176 $(call blkc-tsz1
,$*) \
177 $(call blkc-tsz2
,$*); \
179 for k in
$(call blkc-kszs
,$*); do \
180 printf
"OCB3-%s-%d-TAGLEN%d: " \
181 $(call blkc-pretty
,$*) $$k $$t; \
182 .
/ocbgen ocb3
$(call blkc-name
,$*) mct \
183 $$(( $$k/8 )) $$(( $(call blkc-nsz0
,$*)/8 )) $$(( $$t/8 )); \
188 lraes64_M0
= 0011223344556677
189 lraes96_M0
= 00112233445566778899aabb
190 lraes128_M0
= 00112233445566778899aabbccddeeff
191 lraes192_M0
= 00112233445566778899aabbccddeeff0112233445566778
192 lraes256_M0
= 00112233445566778899aabbccddeeff0112233445566778899aabbccddeeff0
194 TARGETS
+= $(LRAESVERBOSE
)
195 LRAESVERBOSE
= $(foreach k
,$(LRAES
), lraes
$k.verbose
)
196 $(LRAESVERBOSE
): lraes
%.verbose
: ocbgen Makefile
197 $(call v_tag
,LRAES
).
/ocbgen
>$@.new ocb3 rijndael lraes
$$(( $*/8 )) \
198 $(lraes
$*_K0
) $(lraes
$*_M0
)
204 clean::; rm -f
$(CLEAN
)