2 * Copyright (C) 2005, 2010-2024 Free Software Foundation, Inc.
3 * Written by Simon Josefsson
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3, or (at your option)
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, see <https://www.gnu.org/licenses/>. */
26 main (int argc
, char *argv
[])
33 printf ("gc_init() failed\n");
39 char key
[] = "\x00\x00\x00\x00\x00\x00\x00\x00"
40 "\x00\x00\x00\x00\x00\x00\x00\x00";
41 char pt
[] = "\x00\x00\x00\x00\x00\x00\x00\x00"
42 "\x00\x00\x00\x00\x00\x00\x00\x00";
43 char ct
[] = "\xC3\x4C\x05\x2C\xC0\xDA\x8D\x73"
44 "\x45\x1A\xFE\x5F\x03\xBE\x29\x7F";
48 rc
= gc_cipher_open (GC_AES128
, GC_ECB
, &ctx
);
52 rc
= gc_cipher_setkey (ctx
, 16, key
);
58 for (round
= 0; round
< 10000; round
++)
60 rc
= gc_cipher_encrypt_inline (ctx
, 16, buf
);
63 printf ("encrypt failed %d\n", rc
);
68 if (memcmp (buf
, ct
, 16) != 0)
71 printf ("expected:\n");
72 for (i
= 0; i
< 16; i
++)
73 printf ("%02x ", ct
[i
] & 0xFF);
74 printf ("\ncomputed:\n");
75 for (i
= 0; i
< 16; i
++)
76 printf ("%02x ", buf
[i
] & 0xFF);
81 for (round
= 0; round
< 10000; round
++)
83 rc
= gc_cipher_decrypt_inline (ctx
, 16, buf
);
86 printf ("decrypt failed %d\n", rc
);
91 if (memcmp (buf
, pt
, 16) != 0)
94 printf ("expected:\n");
95 for (i
= 0; i
< 16; i
++)
96 printf ("%02x ", pt
[i
] & 0xFF);
97 printf ("\ncomputed:\n");
98 for (i
= 0; i
< 16; i
++)
99 printf ("%02x ", buf
[i
] & 0xFF);
104 gc_cipher_close (ctx
);
110 char iv
[] = "\x00\x00\x00\x00\x00\x00\x00\x00"
111 "\x00\x00\x00\x00\x00\x00\x00\x00";
112 char key
[] = "\x00\x00\x00\x00\x00\x00\x00\x00"
113 "\x00\x00\x00\x00\x00\x00\x00\x00";
114 char pt
[] = "\x00\x00\x00\x00\x00\x00\x00\x00"
115 "\x00\x00\x00\x00\x00\x00\x00\x00";
116 char ct
[] = "\x66\xe9\x4b\xd4\xef\x8a\x2c\x3b"
117 "\x88\x4c\xfa\x59\xca\x34\x2b\x2e";
118 gc_cipher_handle ctx
;
121 rc
= gc_cipher_open (GC_AES128
, GC_CBC
, &ctx
);
125 rc
= gc_cipher_setkey (ctx
, 16, key
);
129 rc
= gc_cipher_setiv (ctx
, 16, iv
);
133 memcpy (buf
, pt
, 16);
135 for (round
= 0; round
< 10000; round
++)
137 rc
= gc_cipher_encrypt_inline (ctx
, 16, buf
);
140 printf ("encrypt failed %d\n", rc
);
145 if (memcmp (buf
, ct
, 16) != 0)
148 printf ("expected:\n");
149 for (i
= 0; i
< 16; i
++)
150 printf ("%02x ", ct
[i
] & 0xFF);
151 printf ("\ncomputed:\n");
152 for (i
= 0; i
< 16; i
++)
153 printf ("%02x ", buf
[i
] & 0xFF);
158 gc_cipher_close (ctx
);