[Fwd: Re: [Help-gnutls] libgcrypt]

Werner Koch wk at gnupg.org
Fri May 23 20:09:56 CEST 2008


Hi,

There might be an alignment problem.

  #define W (ctx->keySched2)
    for (r = 1; r < ctx->ROUNDS; r++)
      {
        w = W[r][0];
        *((u32*)w) = *((u32*)U1[w[0]]) ^ *((u32*)U2[w[1]])
          ^ *((u32*)U3[w[2]]) ^ *((u32*)U4[w[3]]);
  
W is 

    union
    {
      PROPERLY_ALIGNED_TYPE dummy;
      byte keyschedule[MAXROUNDS+1][4][4];	
    } u2;
  } RIJNDAEL_context;
  
  #define keySched  u1.keyschedule
  #define keySched2 u2.keyschedule

Thus it should be properly aligned.  Well, on a 32 bit boundary for
array elements > 0.  Ux is might not be properly aligned, hwoever all
compilers I know place tables on a word boundary and thus there should
be no problem.

We never had any problems with that code, it is really old and thus can
be believied to be matured.  It is used in gpg as well.  Thus I wonder
what is special on your setup.

What we need are hardware information and the config.log from the
libgcrypt build as well as a log of the make run.


Salam-Shalom,

   Werner

-- 
Die Gedanken sind frei.  Auschnahme regelt ein Bundeschgesetz.




More information about the Gcrypt-devel mailing list