Initialize Tizen 2.3
[external/nettle.git] / testsuite / camellia-test.c
1 #include "testutils.h"
2 #include "camellia.h"
3
4 static void
5 test_invert(unsigned key_length, const uint8_t *key,
6             unsigned length, const uint8_t *cleartext,
7             const uint8_t *ciphertext)
8 {
9   struct camellia_ctx encrypt;
10   struct camellia_ctx decrypt;
11   uint8_t *data = xalloc(length);
12
13   camellia_set_encrypt_key (&encrypt, key_length, key);
14   camellia_crypt (&encrypt, length, data, cleartext);
15   
16   if (!MEMEQ(length, data, ciphertext))
17     {
18       fprintf(stderr, "test_invert: Encrypt failed:\nInput:");
19       print_hex(length, cleartext);
20       fprintf(stderr, "\nOutput: ");
21       print_hex(length, data);
22       fprintf(stderr, "\nExpected:");
23       print_hex(length, ciphertext);
24       fprintf(stderr, "\n");
25       FAIL();
26     }
27
28   camellia_invert_key (&decrypt, &encrypt);
29   camellia_crypt (&decrypt, length, data, data);
30
31   if (!MEMEQ(length, data, cleartext))
32     {
33       fprintf(stderr, "test_invert: Decrypt failed:\nInput:");
34       print_hex(length, ciphertext);
35       fprintf(stderr, "\nOutput: ");
36       print_hex(length, data);
37       fprintf(stderr, "\nExpected:");
38       print_hex(length, cleartext);
39       fprintf(stderr, "\n");
40       FAIL();
41     }
42   free (data);
43 }
44
45 int
46 test_main(void)
47 {
48   /* Test vectors from RFC 3713 */
49   /* 128 bit keys */
50   test_cipher(&nettle_camellia128,
51               HL("01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10"),
52               HL("01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10"),
53               H("67 67 31 38 54 96 69 73 08 57 06 56 48 ea be 43"));
54
55   /* 192 bit keys */
56   test_cipher(&nettle_camellia192, 
57               HL("01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10"
58                  "00 11 22 33 44 55 66 77"),
59               HL("01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10"),
60               H("b4 99 34 01 b3 e9 96 f8 4e e5 ce e7 d7 9b 09 b9"));
61
62   /* 256 bit keys */
63   test_cipher(&nettle_camellia256, 
64               HL("01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10"
65                  "00 11 22 33 44 55 66 77 88 99 aa bb cc dd ee ff"),
66               HL("01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10"),
67               H("9a cc 23 7d ff 16 d7 6c 20 ef 7c 91 9e 3a 75 09"));
68
69   /* Test camellia_invert_key with src != dst */
70   test_invert(HL("01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10"),
71               HL("01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10"),
72               H("67 67 31 38 54 96 69 73 08 57 06 56 48 ea be 43"));
73   
74   test_invert(HL("01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10"
75                  "00 11 22 33 44 55 66 77"),
76               HL("01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10"),
77               H("b4 99 34 01 b3 e9 96 f8 4e e5 ce e7 d7 9b 09 b9"));
78
79   test_invert(HL("01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10"
80                  "00 11 22 33 44 55 66 77 88 99 aa bb cc dd ee ff"),
81               HL("01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10"),
82               H("9a cc 23 7d ff 16 d7 6c 20 ef 7c 91 9e 3a 75 09"));
83   SUCCESS();
84 }