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