------------------------------------------------------------ -- Copyright: 2011 George Mason University, Virginia USA -- http://www.iis.ee.ethz.ch/~sha3 ------------------------------------------------------------ -- ===================================================================== -- Copyright © 2010-2011 by Cryptographic Engineering Research Group (CERG), -- ECE Department, George Mason University -- Fairfax, VA, U.S.A. -- ===================================================================== library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; use work.sha3_pkg.all; use work.groestl_pkg.all; -- Groestl ShiftRow implemented as combinational function -- possible generics values: hs = {GROESTL_DATA_SIZE_SMALL, GROESTL_DATA_SIZE_BIG} -- they are corresponding to 256 and 512 versions respectively -- 2011-09-28 - kgf - separated architectures entity groestl_shiftrowp is generic (n :integer := GROESTL_DATA_SIZE_SMALL); port( input : in std_logic_vector(n-1 downto 0); output : out std_logic_vector(n-1 downto 0)); end groestl_shiftrowp; architecture rtl of groestl_shiftrowp is begin gen256: if n=GROESTL_DATA_SIZE_SMALL generate output <= input(511 downto 504) & input(439 downto 432) & input(367 downto 360) & input(295 downto 288) & input(223 downto 216) & input(151 downto 144) & input(79 downto 72) & input(7 downto 0) & input(447 downto 440) & input(375 downto 368) & input(303 downto 296) & input(231 downto 224) & input(159 downto 152) & input(87 downto 80) & input(15 downto 8) & input(455 downto 448) & input(383 downto 376) & input(311 downto 304) & input(239 downto 232) & input(167 downto 160) & input(95 downto 88) & input(23 downto 16) & input(463 downto 456) & input(391 downto 384) & input(319 downto 312) & input(247 downto 240) & input(175 downto 168) & input(103 downto 96) & input(31 downto 24) & input(471 downto 464) & input(399 downto 392) & input(327 downto 320) & input(255 downto 248) & input(183 downto 176) & input(111 downto 104) & input(39 downto 32) & input(479 downto 472) & input(407 downto 400) & input(335 downto 328) & input(263 downto 256) & input(191 downto 184) & input(119 downto 112) & input(47 downto 40) & input(487 downto 480) & input(415 downto 408) & input(343 downto 336) & input(271 downto 264) & input(199 downto 192) & input(127 downto 120) & input(55 downto 48) & input(495 downto 488) & input(423 downto 416) & input(351 downto 344) & input(279 downto 272) & input(207 downto 200) & input(135 downto 128) & input(63 downto 56) & input(503 downto 496) & input(431 downto 424) & input(359 downto 352) & input(287 downto 280) & input(215 downto 208) & input(143 downto 136) & input(71 downto 64); end generate; gen512: if n=GROESTL_DATA_SIZE_BIG generate output <= input(1023 downto 1016) & input(951 downto 944) & input(879 downto 872) & input(807 downto 800) & input(735 downto 728) & input(663 downto 656) & input(591 downto 584) & input(263 downto 256) & input(959 downto 952) & input(887 downto 880) & input(815 downto 808) & input(743 downto 736) & input(671 downto 664) & input(599 downto 592) & input(527 downto 520) & input(199 downto 192) & input(895 downto 888) & input(823 downto 816) & input(751 downto 744) & input(679 downto 672) & input(607 downto 600) & input(535 downto 528) & input(463 downto 456) & input(135 downto 128) & input(831 downto 824) & input(759 downto 752) & input(687 downto 680) & input(615 downto 608) & input(543 downto 536) & input(471 downto 464) & input(399 downto 392) & input(71 downto 64) & input(767 downto 760) & input(695 downto 688) & input(623 downto 616) & input(551 downto 544) & input(479 downto 472) & input(407 downto 400) & input(335 downto 328) & input(7 downto 0) & input(703 downto 696) & input(631 downto 624) & input(559 downto 552) & input(487 downto 480) & input(415 downto 408) & input(343 downto 336) & input(271 downto 264) & input(967 downto 960) & input(639 downto 632) & input(567 downto 560) & input(495 downto 488) & input(423 downto 416) & input(351 downto 344) & input(279 downto 272) & input(207 downto 200) & input(903 downto 896) & input(575 downto 568) & input(503 downto 496) & input(431 downto 424) & input(359 downto 352) & input(287 downto 280) & input(215 downto 208) & input(143 downto 136) & input(839 downto 832) & input(511 downto 504) & input(439 downto 432) & input(367 downto 360) & input(295 downto 288) & input(223 downto 216) & input(151 downto 144) & input(79 downto 72) & input(775 downto 768) & input(447 downto 440) & input(375 downto 368) & input(303 downto 296) & input(231 downto 224) & input(159 downto 152) & input(87 downto 80) & input(15 downto 8) & input(711 downto 704) & input(383 downto 376) & input(311 downto 304) & input(239 downto 232) & input(167 downto 160) & input(95 downto 88) & input(23 downto 16) & input(975 downto 968) & input(647 downto 640) & input(319 downto 312) & input(247 downto 240) & input(175 downto 168) & input(103 downto 96) & input(31 downto 24) & input(983 downto 976) & input(911 downto 904) & input(583 downto 576) & input(255 downto 248) & input(183 downto 176) & input(111 downto 104) & input(39 downto 32) & input(991 downto 984) & input(919 downto 912) & input(847 downto 840) & input(519 downto 512) & input(191 downto 184) & input(119 downto 112) & input(47 downto 40) & input(999 downto 992) & input(927 downto 920) & input(855 downto 848) & input(783 downto 776) & input(455 downto 448) & input(127 downto 120) & input(55 downto 48) & input(1007 downto 1000) & input(935 downto 928) & input(863 downto 856) & input(791 downto 784) & input(719 downto 712) & input(391 downto 384) & input(63 downto 56) & input(1015 downto 1008) & input(943 downto 936) & input(871 downto 864) & input(799 downto 792) & input(727 downto 720) & input(655 downto 648) & input(327 downto 320); end generate; end architecture rtl;