Beispiel #1
0
/**
 Self-test the hash
 @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled
 */  
int  sha512_256_test(void)
{
#ifndef LTC_TEST
    return CRYPT_NOP;
#else    
         
    int i;
     hash_state md;
 
    uint8_t tmp[32];
    
    static const struct {
        char *msg;
        unsigned char hash[32];
    } tests[] = {
        { "abc",
            {   0x53, 0x04, 0x8e, 0x26, 0x81, 0x94, 0x1e, 0xf9, 
                0x9b, 0x2e, 0x29, 0xb7, 0x6b, 0x4c, 0x7d, 0xab, 
                0xe4, 0xc2, 0xd0, 0xc6, 0x34, 0xfc, 0x6d, 0x46, 
                0xe0, 0xe2, 0xf1, 0x31, 0x07, 0xe7, 0xaf, 0x23 }
        },
        { "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
            {   0x39, 0x28, 0xe1, 0x84, 0xfb, 0x86, 0x90, 0xf8, 
                0x40, 0xda, 0x39, 0x88, 0x12, 0x1d, 0x31, 0xbe, 
                0x65, 0xcb, 0x9d, 0x3e, 0xf8, 0x3e, 0xe6, 0x14, 
                0x6f, 0xea, 0xc8, 0x61, 0xe1, 0x9b, 0x56, 0x3a
             }
        },
    };

     for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) {
        sha512_256_init(&md);
        sha512_256_process(&md, (unsigned char *)tests[i].msg, (unsigned long)strlen(tests[i].msg));
        sha512_256_done(&md, tmp);
           
         if (XMEMCMP(tmp, tests[i].hash, 32) != 0) {
            return CRYPT_FAIL_TESTVECTOR;
        }
    }

     
     
     return CRYPT_OK;
#endif
}
Beispiel #2
0
/**
  Self-test the hash
  @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled
*/
int  sha512_256_test(void)
{
 #ifndef LTC_TEST
    return CRYPT_NOP;
 #else
  static const struct {
      const char *msg;
      unsigned char hash[32];
  } tests[] = {
    { "abc",
      { 0x53, 0x04, 0x8E, 0x26, 0x81, 0x94, 0x1E, 0xF9,
        0x9B, 0x2E, 0x29, 0xB7, 0x6B, 0x4C, 0x7D, 0xAB,
        0xE4, 0xC2, 0xD0, 0xC6, 0x34, 0xFC, 0x6D, 0x46,
        0xE0, 0xE2, 0xF1, 0x31, 0x07, 0xE7, 0xAF, 0x23 }
    },
    { "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
      { 0x39, 0x28, 0xE1, 0x84, 0xFB, 0x86, 0x90, 0xF8,
        0x40, 0xDA, 0x39, 0x88, 0x12, 0x1D, 0x31, 0xBE,
        0x65, 0xCB, 0x9D, 0x3E, 0xF8, 0x3E, 0xE6, 0x14,
        0x6F, 0xEA, 0xC8, 0x61, 0xE1, 0x9B, 0x56, 0x3A }
    },
  };

  int i;
  unsigned char tmp[32];
  hash_state md;

  for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) {
      sha512_256_init(&md);
      sha512_256_process(&md, (unsigned char*)tests[i].msg, (unsigned long)strlen(tests[i].msg));
      sha512_256_done(&md, tmp);
      if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "SHA512-265", i)) {
         return CRYPT_FAIL_TESTVECTOR;
      }
  }
  return CRYPT_OK;
 #endif
}