Develop and Download Open Source Software

Browse Subversion Repository

Diff of /branches/mty-makai/mty.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 121 by chapuni, Sun Apr 15 06:23:51 2007 UTC revision 122 by chapuni, Mon Apr 16 07:32:08 2007 UTC
# Line 627  key_init() Line 627  key_init()
627    
628  /***************************************************************  /***************************************************************
629   *   *
630     *      固定キーの生成
631     *
632     *      一見 Big Endian に非対応のように見えるだろうが
633     *      随所でに散らばっている kludge により
634     *      ALU_T が 64 ビットである限り、これで問題なく動く。
635     *
636     */
637    
638    static
639    void
640    key_init_sk(struct KEY *key)
641    {
642      int i, j;
643      int o;
644      uint64_t m;
645    
646      for (i = 5, m = 0xFFFFFFFF00000000ULL;
647               i >= 0;
648               m ^= (m >> (1 << --i)))
649            {
650              o = tr_pc1[7][6 - i] - 1;
651              printf("%d:%d->%2d: %08X%08X\n",
652                             N_Q, i, o,
653                             (unsigned)(m >> 32),
654                             (unsigned)m);
655              for (j = 0; j < N_Q; j++)
656                    if (o < 28)
657                      key->k[0][0][o     ].q[j] = key->k[0][1][o     ].q[j] = m;
658                    else
659                      key->k[1][0][o - 28].q[j] = key->k[1][1][o - 28].q[j] = m;
660            }
661    #if N_STRIDE==7
662      /* bit 6 は Little Endian として扱う */
663      o = 0;
664      assert(tr_pc1[7][0] - 1 == o);
665      assert(N_Q == 2);
666      key->k[0][0][o].q[0] = key->k[0][1][o].q[0] = 0x0000000000000000ULL;
667      key->k[0][0][o].q[1] = key->k[0][1][o].q[1] = 0xFFFFFFFFFFFFFFFFULL;
668    #endif
669    }
670    
671    /***************************************************************
672     *
673   *      Salt のセット   *      Salt のセット
674   *      オペランドのオフセットを書き換えて回ってるので注意   *      オペランドのオフセットを書き換えて回ってるので注意
675   *   *
# Line 740  log_printf(FILE *ofp, char const *fmt, . Line 783  log_printf(FILE *ofp, char const *fmt, .
783   *   *
784   */   */
785    
 /* 定数項 */  
 #if N_STRIDE == 7  
 static SLICE const sk6[N_STRIDE] =  
 {  
   {0xAAAAAAAAUL, 0xAAAAAAAAUL, 0xAAAAAAAAUL, 0xAAAAAAAAUL},  
   {0xCCCCCCCCUL, 0xCCCCCCCCUL, 0xCCCCCCCCUL, 0xCCCCCCCCUL},  
   {0xF0F0F0F0UL, 0xF0F0F0F0UL, 0xF0F0F0F0UL, 0xF0F0F0F0UL},  
   {0xFF00FF00UL, 0xFF00FF00UL, 0xFF00FF00UL, 0xFF00FF00UL},  
   {0xFFFF0000UL, 0xFFFF0000UL, 0xFFFF0000UL, 0xFFFF0000UL},  
   {0x00000000UL, 0xFFFFFFFFUL, 0x00000000UL, 0xFFFFFFFFUL},  
   {0x00000000UL, 0x00000000UL, 0xFFFFFFFFUL, 0xFFFFFFFFUL},  
 };  
 #elif N_STRIDE == 6  
 static SLICE const sk6[N_STRIDE] =  
 {  
   {0xAAAAAAAAUL, 0xAAAAAAAAUL},  
   {0xCCCCCCCCUL, 0xCCCCCCCCUL},  
   {0xF0F0F0F0UL, 0xF0F0F0F0UL},  
   {0xFF00FF00UL, 0xFF00FF00UL},  
   {0xFFFF0000UL, 0xFFFF0000UL},  
   {0x00000000UL, 0xFFFFFFFFUL},  
 };  
 #endif  
   
786  ALIGN_PREFIX(16) struct KEY key64 ALIGN_SUFFIX(16);  ALIGN_PREFIX(16) struct KEY key64 ALIGN_SUFFIX(16);
787  ALIGN_PREFIX(16) struct PARAM param64 ALIGN_SUFFIX(16);  ALIGN_PREFIX(16) struct PARAM param64 ALIGN_SUFFIX(16);
788    
# Line 815  main(int argc, char *argv[]) Line 834  main(int argc, char *argv[])
834    for (i = 0; i < N_ALU; i++)    for (i = 0; i < N_ALU; i++)
835          param64.t[T_INV].a[i] = -1;          param64.t[T_INV].a[i] = -1;
836    
837    /* 固定キーのコピー */    /* 固定キーの生成 */
838    for (i = 0; i < N_STRIDE; i++)    key_init_sk(&key64);
         {  
           int o = tr_pc1[7][6 - i] - 1;  
           if (o < 28)  
                 {  
                   key64.k[0][0][o] = key64.k[0][1][o] = sk6[i];  
                 }  
           else  
                 {  
                   o -= 28;  
                   key64.k[1][0][o] = key64.k[1][1][o] = sk6[i];  
                 }  
         }  
839    
840    /* キースケジュールをここに押し込めておく    /* キースケジュールをここに押し込めておく
841           従来は crypt64.S 内で完結するように引いていた */           従来は crypt64.S 内で完結するように引いていた */

Legend:
Removed from v.121  
changed lines
  Added in v.122

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26