/*****************************************************************************/ /* */ /* LEFT-SHIFT 512 BITS */ /* 10/16/09 (dkc) */ /* */ /*****************************************************************************/ void lshift512(unsigned int A[16], unsigned int B[16], unsigned int shift) { B[0]=A[0]; B[1]=A[1]; B[2]=A[2]; B[3]=A[3]; B[4]=A[4]; B[5]=A[5]; B[6]=A[6]; B[7]=A[7]; B[8]=A[8]; B[9]=A[9]; B[10]=A[10]; B[11]=A[11]; B[12]=A[12]; B[13]=A[13]; B[14]=A[14]; B[15]=A[15]; while (shift>31) { B[0]=B[1]; B[1]=B[2]; B[2]=B[3]; B[3]=B[4]; B[4]=B[5]; B[5]=B[6]; B[6]=B[7]; B[7]=B[8]; B[8]=B[9]; B[9]=B[10]; B[10]=B[11]; B[11]=B[12]; B[12]=B[13]; B[13]=B[14]; B[14]=B[15]; B[15]=0; shift=shift-32; } if (shift==0) return; B[0]=(B[0]<<shift)|(B[1]>>(32-shift)); B[1]=(B[1]<<shift)|(B[2]>>(32-shift)); B[2]=(B[2]<<shift)|(B[3]>>(32-shift)); B[3]=(B[3]<<shift)|(B[4]>>(32-shift)); B[4]=(B[4]<<shift)|(B[5]>>(32-shift)); B[5]=(B[5]<<shift)|(B[6]>>(32-shift)); B[6]=(B[6]<<shift)|(B[7]>>(32-shift)); B[7]=(B[7]<<shift)|(B[8]>>(32-shift)); B[8]=(B[8]<<shift)|(B[9]>>(32-shift)); B[9]=(B[9]<<shift)|(B[10]>>(32-shift)); B[10]=(B[10]<<shift)|(B[11]>>(32-shift)); B[11]=(B[11]<<shift)|(B[12]>>(32-shift)); B[12]=(B[12]<<shift)|(B[13]>>(32-shift)); B[13]=(B[13]<<shift)|(B[14]>>(32-shift)); B[14]=(B[14]<<shift)|(B[15]>>(32-shift)); B[15]=B[15]<<shift; return; }