~ubuntu-branches/ubuntu/utopic/dropbear/utopic-proposed

« back to all changes in this revision

Viewing changes to libtomcrypt/sha384.c

  • Committer: Bazaar Package Importer
  • Author(s): Matt Johnston
  • Date: 2005-12-08 19:20:21 UTC
  • mfrom: (1.2.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20051208192021-nyp9rwnt77nsg6ty
Tags: 0.47-1
* New upstream release.
* SECURITY: Fix incorrect buffer sizing.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* LibTomCrypt, modular cryptographic library -- Tom St Denis
2
 
 *
3
 
 * LibTomCrypt is a library that provides various cryptographic
4
 
 * algorithms in a highly modular and flexible manner.
5
 
 *
6
 
 * The library is free for all purposes without any express
7
 
 * guarantee it works.
8
 
 *
9
 
 * Tom St Denis, tomstdenis@iahu.ca, http://libtomcrypt.org
10
 
 */
11
 
 
12
 
/* included in sha512.c */
13
 
 
14
 
const struct _hash_descriptor sha384_desc =
15
 
{
16
 
    "sha384",
17
 
    4,
18
 
    48,
19
 
    128,
20
 
 
21
 
    /* DER identifier */
22
 
    { 0x30, 0x41, 0x30, 0x0D, 0x06, 0x09, 0x60, 0x86, 
23
 
      0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x02, 0x05, 
24
 
      0x00, 0x04, 0x30 },
25
 
    19,
26
 
 
27
 
    &sha384_init,
28
 
    &sha512_process,
29
 
    &sha384_done,
30
 
    &sha384_test
31
 
};
32
 
 
33
 
int sha384_init(hash_state * md)
34
 
{
35
 
    _ARGCHK(md != NULL);
36
 
 
37
 
    md->sha512.curlen = 0;
38
 
    md->sha512.length = 0;
39
 
    md->sha512.state[0] = CONST64(0xcbbb9d5dc1059ed8);
40
 
    md->sha512.state[1] = CONST64(0x629a292a367cd507);
41
 
    md->sha512.state[2] = CONST64(0x9159015a3070dd17);
42
 
    md->sha512.state[3] = CONST64(0x152fecd8f70e5939);
43
 
    md->sha512.state[4] = CONST64(0x67332667ffc00b31);
44
 
    md->sha512.state[5] = CONST64(0x8eb44a8768581511);
45
 
    md->sha512.state[6] = CONST64(0xdb0c2e0d64f98fa7);
46
 
    md->sha512.state[7] = CONST64(0x47b5481dbefa4fa4);
47
 
    return CRYPT_OK;
48
 
}
49
 
 
50
 
int sha384_done(hash_state * md, unsigned char *hash)
51
 
{
52
 
   unsigned char buf[64];
53
 
 
54
 
   _ARGCHK(md != NULL);
55
 
   _ARGCHK(hash != NULL);
56
 
 
57
 
    if (md->sha512.curlen >= sizeof(md->sha512.buf)) {
58
 
       return CRYPT_INVALID_ARG;
59
 
    }
60
 
 
61
 
   sha512_done(md, buf);
62
 
   XMEMCPY(hash, buf, 48);
63
 
#ifdef CLEAN_STACK
64
 
   zeromem(buf, sizeof(buf));
65
 
#endif
66
 
   return CRYPT_OK;
67
 
}
68
 
 
69
 
int  sha384_test(void)
70
 
{
71
 
 #ifndef LTC_TEST
72
 
    return CRYPT_NOP;
73
 
 #else    
74
 
  static const struct {
75
 
      char *msg;
76
 
      unsigned char hash[48];
77
 
  } tests[] = {
78
 
    { "abc",
79
 
      { 0xcb, 0x00, 0x75, 0x3f, 0x45, 0xa3, 0x5e, 0x8b,
80
 
        0xb5, 0xa0, 0x3d, 0x69, 0x9a, 0xc6, 0x50, 0x07,
81
 
        0x27, 0x2c, 0x32, 0xab, 0x0e, 0xde, 0xd1, 0x63,
82
 
        0x1a, 0x8b, 0x60, 0x5a, 0x43, 0xff, 0x5b, 0xed,
83
 
        0x80, 0x86, 0x07, 0x2b, 0xa1, 0xe7, 0xcc, 0x23,
84
 
        0x58, 0xba, 0xec, 0xa1, 0x34, 0xc8, 0x25, 0xa7 }
85
 
    },
86
 
    { "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
87
 
      { 0x09, 0x33, 0x0c, 0x33, 0xf7, 0x11, 0x47, 0xe8,
88
 
        0x3d, 0x19, 0x2f, 0xc7, 0x82, 0xcd, 0x1b, 0x47,
89
 
        0x53, 0x11, 0x1b, 0x17, 0x3b, 0x3b, 0x05, 0xd2,
90
 
        0x2f, 0xa0, 0x80, 0x86, 0xe3, 0xb0, 0xf7, 0x12,
91
 
        0xfc, 0xc7, 0xc7, 0x1a, 0x55, 0x7e, 0x2d, 0xb9,
92
 
        0x66, 0xc3, 0xe9, 0xfa, 0x91, 0x74, 0x60, 0x39 }
93
 
    },
94
 
  };
95
 
 
96
 
  int i;
97
 
  unsigned char tmp[48];
98
 
  hash_state md;
99
 
 
100
 
  for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) {
101
 
      sha384_init(&md);
102
 
      sha384_process(&md, (unsigned char*)tests[i].msg, (unsigned long)strlen(tests[i].msg));
103
 
      sha384_done(&md, tmp);
104
 
      if (memcmp(tmp, tests[i].hash, 48) != 0) {
105
 
         return CRYPT_FAIL_TESTVECTOR;
106
 
      }
107
 
  }
108
 
  return CRYPT_OK;
109
 
 #endif
110
 
}
111
 
 
112
 
 
113
 
 
114
 
 
115