Makefile, ocbgen: Support Ukrainian `Kalyna' block cipher.
[ocb-tv] / Makefile
index 084eacb..7b7e554 100644 (file)
--- a/Makefile
+++ b/Makefile
 
 all::
 
+V                       = 0
+v_tag                   = $(call v_tag_$V,$1)
+v_tag_0                         = @printf "  %-8s %s\n" "$1" "$@";
+V_AT                    = $(V_AT_$V)
+V_AT_0                  = @
+
 misc128_K0              = 000102030405060708090a0b0c0d0e0f
 misc128_K1              = 0f0e0d0c0b0a09080706050403020100
 
@@ -32,11 +38,15 @@ misc192_K1           = 17161514131211100f0e0d0c0b0a09080706050403020100
 misc256_K0              = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
 misc256_K1              = 1f1e1d1c1b1a191817161514131211100f0e0d0c0b0a09080706050403020100
 
+misc512_K0              = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f
+misc512_K1              = 3f3e3d3c3b3a393837363534333231302f2e2d2c2b2a292827262524232221201f1e1d1c1b1a191817161514131211100f0e0d0c0b0a09080706050403020100
+
 b64_N0                  = 554433221100
 b96_N0                  = 887766554433221100
 b128_N0                         = bbaa99887766554433221100
 b192_N0                         = 2110ffeeddccbbaa99887766554433221100
 b256_N0                         = 8776655443322110ffeeddccbbaa99887766554433221100
+b512_N0                         = aa9998887776665554443332221110000ffeeddccbbaa9988776655443322110ffeeddccbbaa99887766554433221100
 
 BLKC                   += des3
 des3_PRETTY             = 3DES
@@ -70,6 +80,34 @@ rijndael256_K0                = $(misc256_K0)
 rijndael256_K1          = $(misc256_K1)
 rijndael256_KSZS        = $(aes_KSZS)
 
+ifdef HAVE_KALYNA
+BLKC                   += $(KALYNA)
+endif
+
+KALYNA                 += kalyna128
+kalyna128_PRETTY        = Kalyna-128
+kalyna128_NAME          = kalyna128
+kalyna128_BLKSZ                 = 128
+kalyna128_K0            = $(misc128_K0)
+kalyna128_K1            = $(misc128_K1)
+kalyna128_KSZS          = 128 256
+
+KALYNA                 += kalyna256
+kalyna256_PRETTY        = Kalyna-256
+kalyna256_NAME          = kalyna256
+kalyna256_BLKSZ                 = 256
+kalyna256_K0            = $(misc256_K0)
+kalyna256_K1            = $(misc256_K1)
+kalyna256_KSZS          = 256 512
+
+KALYNA                 += kalyna512
+kalyna512_PRETTY        = Kalyna-512
+kalyna512_NAME          = kalyna512
+kalyna512_BLKSZ                 = 512
+kalyna512_K0            = $(misc512_K0)
+kalyna512_K1            = $(misc512_K1)
+kalyna512_KSZS          = 512
+
 define def-lraes
 LRAES                  += $1
 BLKC                   += lraes$1
@@ -87,10 +125,18 @@ $(eval $(call def-lraes,128,128))
 $(eval $(call def-lraes,192,192))
 $(eval $(call def-lraes,256,256))
 
+BLKC                   += dlraes512
+dlraes512_PRETTY        = DLRAES512
+dlraes512_NAME          = dlraes512
+dlraes512_BLKSZ                 = 512
+dlraes512_K0            = $(misc256_K0)
+dlraes512_K1            = $(misc256_K1)
+dlraes512_KSZS          = $(aes_KSZS)
+
 BLKSZS                  = $(sort $(foreach c,$(BLKC),$($c_BLKSZ)))
 
 auto.mk: Makefile
-       set -e; exec >$@.new; \
+       $(call v_tag,GEN)set -e; exec >$@.new; \
        echo '### -*-makefile-*- AUTOMATICALLY GENERATED: DO NOT EDIT'; \
        $(foreach b,$(BLKSZS),b$b_N0=$(b$b_N0); ) \
        \
@@ -110,7 +156,7 @@ auto.mk: Makefile
          \
          eval n0=\$$b$${blksz}_N0; \
          N0=$$(echo $$n0 | tr a-f A-F); \
-         n1=$$(echo "16o 16i $$N0 D + p" | dc | tr A-F a-f); \
+         n1=$$(echo "16o 16i $$N0 D + p" | dc | tr A-F a-f | tr -d '\\\n'); \
          nsz=$$(( 4*($$(echo $$n0 | wc -c) - 1) )); \
          echo "b$${blksz}_N1 = $$n1"; \
          echo "b$${blksz}_NSZ0 = $$nsz"; \
@@ -140,31 +186,31 @@ blkc-nsz0          = $(b$(call blkc-blksz,$1)_NSZ0)
 TARGETS                        += $(OCBKAT0)
 OCBKAT0                         = $(foreach b,$(BLKC), ocb3-$b-t$(b$($b_BLKSZ)_TSZ0)-n$(b$($b_BLKSZ)_NSZ0).kat)
 $(OCBKAT0): ocb3-%: ocbgen Makefile
-       ./ocbgen >$@.new ocb3 $(call blkc-name,$*) kat \
+       $(call v_tag,KAT)./ocbgen >$@.new ocb3 $(call blkc-name,$*) kat \
                $(call blkc-k0,$*) $(call blkc-n0,$*)+ \
                $$(( $(call blkc-tsz0,$*)/8 )) $(call blkc-hmszs,$*)
-                       mv $@.new $@
+       $(V_AT)mv $@.new $@
 
 TARGETS                        += $(OCBKAT1)
 OCBKAT1                         = $(foreach b,$(BLKC), ocb3-$b-t$(b$($b_BLKSZ)_TSZ1)-n$(b$($b_BLKSZ)_NSZ0).kat)
 $(OCBKAT1): ocb3-%: ocbgen Makefile
-       ./ocbgen >$@.new ocb3 $(call blkc-name,$*) kat \
+       $(call v_tag,KAT)./ocbgen >$@.new ocb3 $(call blkc-name,$*) kat \
                $(call blkc-k1,$*) $(call blkc-n0,$*)+ \
                $$(( $(call blkc-tsz1,$*)/8 )) $(call blkc-hmszs,$*)
-                       mv $@.new $@
+       $(V_AT)mv $@.new $@
 
 TARGETS                        += $(OCBVERBOSE)
 OCBVERBOSE              = $(foreach b,$(BLKC), ocb3-$b-t$(b$($b_BLKSZ)_TSZ0)-n$(b$($b_BLKSZ)_NSZ0).verbose)
 $(OCBVERBOSE): ocb3-%: ocbgen Makefile
-       ./ocbgen >$@.new -v ocb3 $(call blkc-name,$*) kat \
+       $(call v_tag,VERBOSE)./ocbgen >$@.new -v ocb3 $(call blkc-name,$*) kat \
                $(call blkc-k0,$*) $(call blkc-n1,$*) \
                $$(( $(call blkc-tsz0,$*)/8 )) $(call blkc-hmszv,$*)
-                       mv $@.new $@
+       $(V_AT)mv $@.new $@
 
 TARGETS                        += $(OCBMCT)
 OCBMCT                  = $(foreach b,$(BLKC), ocb3-$b-n$(b$($b_BLKSZ)_NSZ0).mct)
 $(OCBMCT): ocb3-%: ocbgen Makefile
-       set -e; \
+       $(call v_tag,MCT)set -e; \
        for t in \
                $(call blkc-tsz0,$*) \
                $(call blkc-tsz1,$*) \
@@ -176,21 +222,28 @@ $(OCBMCT): ocb3-%: ocbgen Makefile
            ./ocbgen ocb3 $(call blkc-name,$*) mct \
                $$(( $$k/8 )) $$(( $(call blkc-nsz0,$*)/8 )) $$(( $$t/8 )); \
          done; \
-       done >$@.new; \
-       mv $@.new $@
+       done >$@.new
+       $(V_AT)mv $@.new $@
 
 lraes64_M0              = 0011223344556677
 lraes96_M0              = 00112233445566778899aabb
 lraes128_M0             = 00112233445566778899aabbccddeeff
 lraes192_M0             = 00112233445566778899aabbccddeeff0112233445566778
 lraes256_M0             = 00112233445566778899aabbccddeeff0112233445566778899aabbccddeeff0
+lraes512_M0             = 00112233445566778899aabbccddeeff0112233445566778899aabbccddeeff00000111122223333444455556666777788889999aaaabbbbccccddddeeeeffff
 
 TARGETS                        += $(LRAESVERBOSE)
-LRAESVERBOSE            = $(foreach k,$(LRAES), lraes$k.verbose)
+LRAESVERBOSE            = $(foreach w,$(LRAES), lraes$w.verbose)
 $(LRAESVERBOSE): lraes%.verbose: ocbgen Makefile
-       ./ocbgen >$@.new ocb3 rijndael lraes $$(( $*/8 )) \
-               $(lraes$*_K0) $(lraes$*_M0) && \
-               mv $@.new $@
+       $(call v_tag,LRAES)./ocbgen >$@.new ocb3 rijndael lraes $$(( $*/8 )) \
+               $(lraes$*_K0) $(lraes$*_M0)
+       $(V_AT)mv $@.new $@
+
+TARGETS                        += dlraes512.verbose
+dlraes512.verbose: ocbgen Makefile
+       $(call v_tag,LRAES)./ocbgen >$@.new ocb3 lraes256 lraes 64 \
+               $(dlraes512_K0) $(lraes512_M0)
+       $(V_AT)mv $@.new $@
 
 all:: $(TARGETS)