D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
usr
/
local
/
src
/
Python-3.9.9
/
Modules
/
_sha3
/
kcp
/
Filename :
KeccakP-1600-unrolling.macros
back
Copy
/* Implementation by the Keccak, Keyak and Ketje Teams, namely, Guido Bertoni, Joan Daemen, Michaƫl Peeters, Gilles Van Assche and Ronny Van Keer, hereby denoted as "the implementer". For more information, feedback or questions, please refer to our websites: http://keccak.noekeon.org/ http://keyak.noekeon.org/ http://ketje.noekeon.org/ To the extent possible under law, the implementer has waived all copyright and related or neighboring rights to the source code in this file. http://creativecommons.org/publicdomain/zero/1.0/ */ #if (defined(FullUnrolling)) #define rounds24 \ prepareTheta \ thetaRhoPiChiIotaPrepareTheta( 0, A, E) \ thetaRhoPiChiIotaPrepareTheta( 1, E, A) \ thetaRhoPiChiIotaPrepareTheta( 2, A, E) \ thetaRhoPiChiIotaPrepareTheta( 3, E, A) \ thetaRhoPiChiIotaPrepareTheta( 4, A, E) \ thetaRhoPiChiIotaPrepareTheta( 5, E, A) \ thetaRhoPiChiIotaPrepareTheta( 6, A, E) \ thetaRhoPiChiIotaPrepareTheta( 7, E, A) \ thetaRhoPiChiIotaPrepareTheta( 8, A, E) \ thetaRhoPiChiIotaPrepareTheta( 9, E, A) \ thetaRhoPiChiIotaPrepareTheta(10, A, E) \ thetaRhoPiChiIotaPrepareTheta(11, E, A) \ thetaRhoPiChiIotaPrepareTheta(12, A, E) \ thetaRhoPiChiIotaPrepareTheta(13, E, A) \ thetaRhoPiChiIotaPrepareTheta(14, A, E) \ thetaRhoPiChiIotaPrepareTheta(15, E, A) \ thetaRhoPiChiIotaPrepareTheta(16, A, E) \ thetaRhoPiChiIotaPrepareTheta(17, E, A) \ thetaRhoPiChiIotaPrepareTheta(18, A, E) \ thetaRhoPiChiIotaPrepareTheta(19, E, A) \ thetaRhoPiChiIotaPrepareTheta(20, A, E) \ thetaRhoPiChiIotaPrepareTheta(21, E, A) \ thetaRhoPiChiIotaPrepareTheta(22, A, E) \ thetaRhoPiChiIota(23, E, A) \ #define rounds12 \ prepareTheta \ thetaRhoPiChiIotaPrepareTheta(12, A, E) \ thetaRhoPiChiIotaPrepareTheta(13, E, A) \ thetaRhoPiChiIotaPrepareTheta(14, A, E) \ thetaRhoPiChiIotaPrepareTheta(15, E, A) \ thetaRhoPiChiIotaPrepareTheta(16, A, E) \ thetaRhoPiChiIotaPrepareTheta(17, E, A) \ thetaRhoPiChiIotaPrepareTheta(18, A, E) \ thetaRhoPiChiIotaPrepareTheta(19, E, A) \ thetaRhoPiChiIotaPrepareTheta(20, A, E) \ thetaRhoPiChiIotaPrepareTheta(21, E, A) \ thetaRhoPiChiIotaPrepareTheta(22, A, E) \ thetaRhoPiChiIota(23, E, A) \ #elif (Unrolling == 12) #define rounds24 \ prepareTheta \ for(i=0; i<24; i+=12) { \ thetaRhoPiChiIotaPrepareTheta(i , A, E) \ thetaRhoPiChiIotaPrepareTheta(i+ 1, E, A) \ thetaRhoPiChiIotaPrepareTheta(i+ 2, A, E) \ thetaRhoPiChiIotaPrepareTheta(i+ 3, E, A) \ thetaRhoPiChiIotaPrepareTheta(i+ 4, A, E) \ thetaRhoPiChiIotaPrepareTheta(i+ 5, E, A) \ thetaRhoPiChiIotaPrepareTheta(i+ 6, A, E) \ thetaRhoPiChiIotaPrepareTheta(i+ 7, E, A) \ thetaRhoPiChiIotaPrepareTheta(i+ 8, A, E) \ thetaRhoPiChiIotaPrepareTheta(i+ 9, E, A) \ thetaRhoPiChiIotaPrepareTheta(i+10, A, E) \ thetaRhoPiChiIotaPrepareTheta(i+11, E, A) \ } \ #define rounds12 \ prepareTheta \ thetaRhoPiChiIotaPrepareTheta(12, A, E) \ thetaRhoPiChiIotaPrepareTheta(13, E, A) \ thetaRhoPiChiIotaPrepareTheta(14, A, E) \ thetaRhoPiChiIotaPrepareTheta(15, E, A) \ thetaRhoPiChiIotaPrepareTheta(16, A, E) \ thetaRhoPiChiIotaPrepareTheta(17, E, A) \ thetaRhoPiChiIotaPrepareTheta(18, A, E) \ thetaRhoPiChiIotaPrepareTheta(19, E, A) \ thetaRhoPiChiIotaPrepareTheta(20, A, E) \ thetaRhoPiChiIotaPrepareTheta(21, E, A) \ thetaRhoPiChiIotaPrepareTheta(22, A, E) \ thetaRhoPiChiIota(23, E, A) \ #elif (Unrolling == 6) #define rounds24 \ prepareTheta \ for(i=0; i<24; i+=6) { \ thetaRhoPiChiIotaPrepareTheta(i , A, E) \ thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \ thetaRhoPiChiIotaPrepareTheta(i+2, A, E) \ thetaRhoPiChiIotaPrepareTheta(i+3, E, A) \ thetaRhoPiChiIotaPrepareTheta(i+4, A, E) \ thetaRhoPiChiIotaPrepareTheta(i+5, E, A) \ } \ #define rounds12 \ prepareTheta \ for(i=12; i<24; i+=6) { \ thetaRhoPiChiIotaPrepareTheta(i , A, E) \ thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \ thetaRhoPiChiIotaPrepareTheta(i+2, A, E) \ thetaRhoPiChiIotaPrepareTheta(i+3, E, A) \ thetaRhoPiChiIotaPrepareTheta(i+4, A, E) \ thetaRhoPiChiIotaPrepareTheta(i+5, E, A) \ } \ #elif (Unrolling == 4) #define rounds24 \ prepareTheta \ for(i=0; i<24; i+=4) { \ thetaRhoPiChiIotaPrepareTheta(i , A, E) \ thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \ thetaRhoPiChiIotaPrepareTheta(i+2, A, E) \ thetaRhoPiChiIotaPrepareTheta(i+3, E, A) \ } \ #define rounds12 \ prepareTheta \ for(i=12; i<24; i+=4) { \ thetaRhoPiChiIotaPrepareTheta(i , A, E) \ thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \ thetaRhoPiChiIotaPrepareTheta(i+2, A, E) \ thetaRhoPiChiIotaPrepareTheta(i+3, E, A) \ } \ #elif (Unrolling == 3) #define rounds24 \ prepareTheta \ for(i=0; i<24; i+=3) { \ thetaRhoPiChiIotaPrepareTheta(i , A, E) \ thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \ thetaRhoPiChiIotaPrepareTheta(i+2, A, E) \ copyStateVariables(A, E) \ } \ #define rounds12 \ prepareTheta \ for(i=12; i<24; i+=3) { \ thetaRhoPiChiIotaPrepareTheta(i , A, E) \ thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \ thetaRhoPiChiIotaPrepareTheta(i+2, A, E) \ copyStateVariables(A, E) \ } \ #elif (Unrolling == 2) #define rounds24 \ prepareTheta \ for(i=0; i<24; i+=2) { \ thetaRhoPiChiIotaPrepareTheta(i , A, E) \ thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \ } \ #define rounds12 \ prepareTheta \ for(i=12; i<24; i+=2) { \ thetaRhoPiChiIotaPrepareTheta(i , A, E) \ thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \ } \ #elif (Unrolling == 1) #define rounds24 \ prepareTheta \ for(i=0; i<24; i++) { \ thetaRhoPiChiIotaPrepareTheta(i , A, E) \ copyStateVariables(A, E) \ } \ #define rounds12 \ prepareTheta \ for(i=12; i<24; i++) { \ thetaRhoPiChiIotaPrepareTheta(i , A, E) \ copyStateVariables(A, E) \ } \ #else #error "Unrolling is not correctly specified!" #endif