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

« back to all changes in this revision

Viewing changes to libtomcrypt/demos/test/dsa_test.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
 
#include "test.h"
2
 
 
3
 
#ifdef MDSA
4
 
 
5
 
int dsa_test(void)
6
 
{
7
 
   unsigned char msg[16], out[1024], out2[1024];
8
 
   unsigned long x;
9
 
   int stat1, stat2;
10
 
   dsa_key key, key2;
11
 
 
12
 
   /* make a random key */
13
 
   DO(dsa_make_key(&test_yarrow, find_prng("yarrow"), 20, 128, &key));
14
 
 
15
 
   /* verify it */
16
 
   DO(dsa_verify_key(&key, &stat1));
17
 
   if (stat1 == 0) { printf("dsa_verify_key "); return 1; }
18
 
 
19
 
   /* sign the message */
20
 
   x = sizeof(out);
21
 
   DO(dsa_sign_hash(msg, sizeof(msg), out, &x, &test_yarrow, find_prng("yarrow"), &key));
22
 
 
23
 
   /* verify it once */
24
 
   DO(dsa_verify_hash(out, x, msg, sizeof(msg), &stat1, &key));
25
 
 
26
 
   /* Modify and verify again */
27
 
   msg[0] ^= 1;
28
 
   DO(dsa_verify_hash(out, x, msg, sizeof(msg), &stat2, &key));
29
 
   msg[0] ^= 1;
30
 
   if (!(stat1 == 1 && stat2 == 0)) { printf("dsa_verify %d %d", stat1, stat2); return 1; }
31
 
 
32
 
   /* test exporting it */
33
 
   x = sizeof(out2);
34
 
   DO(dsa_export(out2, &x, PK_PRIVATE, &key));
35
 
   DO(dsa_import(out2, x, &key2));
36
 
 
37
 
   /* verify a signature with it */
38
 
   DO(dsa_verify_hash(out, x, msg, sizeof(msg), &stat1, &key2));
39
 
   if (stat1 == 0) { printf("dsa_verify (import private) %d ", stat1); return 1; }
40
 
   dsa_free(&key2);
41
 
 
42
 
   /* export as public now */
43
 
   x = sizeof(out2);
44
 
   DO(dsa_export(out2, &x, PK_PUBLIC, &key));
45
 
   DO(dsa_import(out2, x, &key2));
46
 
   /* verify a signature with it */
47
 
   DO(dsa_verify_hash(out, x, msg, sizeof(msg), &stat1, &key2));
48
 
   if (stat1 == 0) { printf("dsa_verify (import public) %d ", stat1); return 1; }
49
 
   dsa_free(&key2);
50
 
   dsa_free(&key);
51
 
 
52
 
   return 0;
53
 
}
54
 
 
55
 
#else
56
 
 
57
 
int dsa_test(void)
58
 
{
59
 
  printf("NOP");
60
 
  return 0;
61
 
}
62
 
 
63
 
#endif