#include <stdio.h>
#include <stdlib.h>
+#include "silcincludes.h"
+
+#include "twofish.h"
int main()
{
- int i, k, l;
+ 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_twofish_context_len());
fprintf(stderr, "\nKey:\n");
- for (i = 0; i < (sizeof(plain) / 2); i++) {
- key[i] = i;
- key[i+1] = i+1;
+ for (i = 0; i < (sizeof(key) / 2); i += 2) {
fprintf(stderr, "%02x%02x ", key[i], key[i+1]);
}
fprintf(stderr, "\nSetting key\n");
- set_key(key, 128);
+ silc_twofish_set_key(context, key, 256);
fprintf(stderr, "\nPlaintext:\n");
- for (i = 0; i < (sizeof(plain) / 2); i++) {
+ 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, "IV:\n");
+ for (i = 0; i < (sizeof(iv)/2); i += 2) {
+ fprintf(stderr, "%02x", iv[i]);
+ fprintf(stderr, "%02x ", iv[i+1]);
+ }
+
fprintf(stderr, "\n\nEncrypting\n");
+ silc_twofish_encrypt_cbc(context, plain, cipher, 256, iv);
+
fprintf(stderr, "Ciphertext:\n");
- l = 0;
- for (k = 0; k < 8; k++) {
- encrypt(&plain[l], &cipher[l]);
- for (i = 0; i < 16; i++) {
- fprintf(stderr, "%02x", cipher[l+i]);
- fprintf(stderr, "%02x ", cipher[l+i+1]);
- }
- l += 16;
+ for (i = 0; i < (sizeof(cipher)/2); i += 2) {
+ fprintf(stderr, "%02x", cipher[i]);
+ fprintf(stderr, "%02x ", cipher[i+1]);
+ }
+
+ fprintf(stderr, "IV:\n");
+ for (i = 0; i < (sizeof(iv)/2); i += 2) {
+ fprintf(stderr, "%02x", iv[i]);
+ fprintf(stderr, "%02x ", iv[i+1]);
}
fprintf(stderr, "\n\nDecrypting\n");
+ silc_twofish_decrypt_cbc(context, cipher, plain2, 256, iv);
+
+ fprintf(stderr, "IV:\n");
+ for (i = 0; i < (sizeof(iv)/2); i += 2) {
+ fprintf(stderr, "%02x", iv[i]);
+ fprintf(stderr, "%02x ", iv[i+1]);
+ }
fprintf(stderr, "Decryptedtext:\n");
- l = 0;
- for (k = 0; k < 8; k++) {
- decrypt(&cipher[l], &plain2[l]);
- for (i = 0; i < 16; i++) {
- fprintf(stderr, "%02x", plain2[l+i]);
- fprintf(stderr, "%02x ", plain2[l+i+1]);
- }
- l += 16;
+ for (i = 0; i < (sizeof(plain2)/2); i += 2) {
+ fprintf(stderr, "%02x", plain2[i]);
+ fprintf(stderr, "%02x ", plain2[i+1]);
}
- fprintf(stderr, "\nAll done.\n");
+ fprintf(stderr, "\nDone\n");
return 0;
}