[svn] / ecrypt / trunk / submissions / mir-1 / mir1.h  

svn: ecrypt/trunk/submissions/mir-1/mir1.h

Diff for /ecrypt/trunk/submissions/mir-1/mir1.h between version 1 and 16

version 1, Sun Jun 26 18:46:26 2005 UTC version 16, Sun Jun 26 21:29:04 2005 UTC
Line 69 
Line 69 
   
 /* Several design constants */  /* Several design constants */
   
 const ull C0=0x1248842112488421I64;  const ull C0=U64C(0x1248842112488421);
 const ull C1=0x1248124812481248I64;  const ull C1=U64C(0x1248124812481248);
 const ull C3=0x4812481248124812I64;  const ull C3=U64C(0x4812481248124812);
   
 /* ------------------------------------------------------------------------- */  /* ------------------------------------------------------------------------- */
 /* Internal State Update... Building Block */  /* Internal State Update... Building Block */
 /* ------------------------------------------------------------------------- */  /* ------------------------------------------------------------------------- */
 #define Mir1_STATE_UPDATE                           \  #define Mir1_STATE_UPDATE                           \
      Int r0, r1, t0, t1, p0, p1, s, m0, m1, m2, m3; \       Int r0, r1, t0, t1, p0, p1, s, m0, m1, m2, m3; \
      t0.v  = p.x0.v << 1;                    \       t0.v  = ctx->x0.v << 1;                    \
      p1.v  = p.x3.v | C3;                    \       p1.v  = ctx->x3.v | C3;                    \
      p0.v  = p.x1.v | C1;                    \       p0.v  = ctx->x1.v | C1;                    \
      t1.v  = p.x2.v << 1;                    \       t1.v  = ctx->x2.v << 1;                    \
      m2.v  = p1.v * t0.v;                    \       m2.v  = p1.v * t0.v;                    \
      m3.v  = p0.v * t0.v;                    \       m3.v  = p0.v * t0.v;                    \
      m0.v  = p0.v * t1.v;                    \       m0.v  = p0.v * t1.v;                    \
      m1.v  = p1.v * t1.v;                    \       m1.v  = p1.v * t1.v;                    \
      r0.v  = p.x0.v & p.x1.v;                \       r0.v  = ctx->x0.v & ctx->x1.v;                \
      p.a.b.b0 ^= p.S[p.b.b.b0];              \       ctx->a.b.b0 ^= ctx->S[ctx->b.b.b0];              \
      p.a.b.b1 ^= p.S[p.b.b.b1];              \       ctx->a.b.b1 ^= ctx->S[ctx->b.b.b1];              \
      r1.v      = r0.v & p.x2.v;              \       r1.v      = r0.v & ctx->x2.v;              \
      p.a.b.b2 ^= p.S[p.b.b.b2];              \       ctx->a.b.b2 ^= ctx->S[ctx->b.b.b2];              \
      p.a.b.b3 ^= p.S[p.b.b.b3];              \       ctx->a.b.b3 ^= ctx->S[ctx->b.b.b3];              \
      s.v       = r1.v & p.x3.v;              \       s.v       = r1.v & ctx->x3.v;              \
      p.a.b.b4 ^= p.S[p.b.b.b4];              \       ctx->a.b.b4 ^= ctx->S[ctx->b.b.b4];              \
      p.a.b.b5 ^= p.S[p.b.b.b5];              \       ctx->a.b.b5 ^= ctx->S[ctx->b.b.b5];              \
      s.v       = (s.v + C0) ^ s.v;           \       s.v       = (s.v + C0) ^ s.v;           \
      p.a.b.b6 ^= p.S[p.b.b.b6];              \       ctx->a.b.b6 ^= ctx->S[ctx->b.b.b6];              \
      p.a.b.b7 ^= p.S[p.b.b.b7];              \       ctx->a.b.b7 ^= ctx->S[ctx->b.b.b7];              \
      p.x3.v   += (s.v & r1.v)   + m3.v;      \       ctx->x3.v   += (s.v & r1.v)   + m3.v;      \
      p.x2.v   += (s.v & r0.v)   + m2.v;      \       ctx->x2.v   += (s.v & r0.v)   + m2.v;      \
      r0.v      = (p.b.v << 29);              \       r0.v      = (ctx->b.v << 29);              \
      p.x1.v   += (s.v & p.x0.v) + m1.v;      \       ctx->x1.v   += (s.v & ctx->x0.v) + m1.v;      \
      r0.v     |= (p.b.v >> 35);              \       r0.v     |= (ctx->b.v >> 35);              \
      p.x0.v   +=  s.v           + m0.v;      \       ctx->x0.v   +=  s.v           + m0.v;      \
      r0.v     += p.x1.w.w1;                  \       r0.v     += ctx->x1.w.w1;                  \
      r0.w.w1  += p.x3.w.w1;                  \       r0.w.w1  += ctx->x3.w.w1;                  \
      p.b.w.w0  = p.a.w.w0 ^ p.x0.w.w1;       \       ctx->b.w.w0  = ctx->a.w.w0 ^ ctx->x0.w.w1;       \
      p.b.w.w1  = p.a.w.w1 ^ p.x2.w.w1;       \       ctx->b.w.w1  = ctx->a.w.w1 ^ ctx->x2.w.w1;       \
      p.a.v     = r0.v + p.b.v;       ctx->a.v     = r0.v + ctx->b.v;
   
   
 #endif  #endif


Generate output suitable for use with a patch program
Legend:
Removed from v.1  
changed lines
  Added in v.16

eSTREAM Project

Powered by ViewCVS 1.0-dev
(Powered by Apache)

ViewCVS and CVS Help