updates.
[silc.git] / lib / silccrypt / tests / test_aes.c
diff --git a/lib/silccrypt/tests/test_aes.c b/lib/silccrypt/tests/test_aes.c
new file mode 100644 (file)
index 0000000..7f7d81b
--- /dev/null
@@ -0,0 +1,62 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "silcincludes.h"
+
+#include "aes.h"
+
+int main()
+{
+       int i;
+       unsigned char key[256];
+       unsigned char plain[256];
+       unsigned char plain2[256];
+       unsigned char cipher[256];
+       unsigned char iv[256];
+       void *context;
+
+       memset(&key, 0, sizeof(key));
+       memset(&plain, 0, sizeof(plain));
+       memset(&plain2, 0, sizeof(plain2));
+       memset(&cipher, 0, sizeof(cipher));
+       memset(&iv, 0, sizeof(iv));
+
+       context = malloc(silc_aes_context_len());
+
+       fprintf(stderr, "\nKey:\n");
+       for (i = 0; i < (sizeof(key) / 2); i += 2) {
+               fprintf(stderr, "%02x%02x ", key[i], key[i+1]);
+       }
+
+       fprintf(stderr, "\nSetting key\n");
+       silc_aes_set_key(context, key, 256);
+
+       fprintf(stderr, "\nPlaintext:\n");
+       for (i = 0; i < (sizeof(plain) / 2); i += 2) {
+               plain[i] = i;
+               plain[i+1] = i+1;
+               fprintf(stderr, "%02x%02x ", plain[i], plain[i+1]);
+       }
+
+       fprintf(stderr, "\n\nEncrypting\n");
+       silc_aes_encrypt_cbc(context, plain, cipher, 256, iv);
+
+       fprintf(stderr, "Ciphertext:\n");
+       for (i = 0; i < (sizeof(cipher)/2); i += 2) {
+               fprintf(stderr, "%02x", cipher[i]);
+               fprintf(stderr, "%02x ", cipher[i+1]);
+       }
+
+       memset(&iv, 0, sizeof(iv));
+
+       fprintf(stderr, "\n\nDecrypting\n");
+       silc_aes_decrypt_cbc(context, cipher, plain2, 256, iv);
+
+       fprintf(stderr, "Decryptedtext:\n");
+       for (i = 0; i < (sizeof(plain2)/2); i += 2) {
+               fprintf(stderr, "%02x", plain2[i]);
+               fprintf(stderr, "%02x ", plain2[i+1]);
+       }
+       fprintf(stderr, "\nDone\n");
+
+       return 0;
+}