#include #include #include int main(int argc, char **argv) { char *str2 = NULL, *str = NULL; int i, n; u_char ivec[16]; if (argc < 4) return 1; printf("String=%s\nKey=%s IV=%s\n\n", argv[1], argv[2], argv[3]); /* encode */ memset(ivec, 0, sizeof ivec); strlcpy((char*) ivec, argv[3], sizeof ivec); printf("io_ctr_AES() -> %d\n", (n = io_ctr_AES((u_char*) argv[1], strlen(argv[1]), (u_char**) &str, (u_char*) argv[2], ivec))); printf("Cipher: "); for (i = 0; i < n; i++) printf("%02hhx", str[i]); printf("\n"); /* decode */ memset(ivec, 0, sizeof ivec); strlcpy((char*) ivec, argv[3], sizeof ivec); printf("io_ctr_AES() -> %d\n", (n = io_ctr_AES((u_char*) str, n, (u_char**) &str2, (u_char*) argv[2], ivec))); printf("Plain: "); for (i = 0; i < n; i++) printf("%c", str2[i]); printf("\n"); printf("\n\n"); if (!strcmp(argv[1], str2)) printf("%s == %s ... Test passed\n", argv[1], str2); else printf("%s != %s ... Test FAILED\n", argv[1], str2); if (str) free(str); if (str2) free(str2); return 0; }