- if (memcmp(out, in, 8) != 0) {
- printf("ecb idea error decrypting\n");
- printf("got :");
- for (i = 0; i < 8; i++)
- printf("%02X ", out[i]);
- printf("\n");
- printf("expected:");
- for (i = 0; i < 8; i++)
- printf("%02X ", in[i]);
- printf("\n");
- err = 3;
- }
-
- if (err == 0)
- printf("ecb idea ok\n");
-
- memcpy(iv, k, 8);
- IDEA_cbc_encrypt((unsigned char *)text, out, strlen(text) + 1, &key, iv,
- 1);
- memcpy(iv, k, 8);
- IDEA_cbc_encrypt(out, out, 8, &dkey, iv, 0);
- IDEA_cbc_encrypt(&(out[8]), &(out[8]), strlen(text) + 1 - 8, &dkey, iv,
- 0);
- if (memcmp(text, out, strlen(text) + 1) != 0) {
- printf("cbc idea bad\n");
- err = 4;
- } else
- printf("cbc idea ok\n");
-
- printf("cfb64 idea ");
- if (cfb64_test(cfb_cipher64)) {
- printf("bad\n");
- err = 5;
- } else
- printf("ok\n");
-
- EXIT(err);
+ return TEST_mem_eq(out, IDEA_BLOCK, in, sizeof(in));
+}
+
+static int test_idea_cbc(void)
+{
+ IDEA_KEY_SCHEDULE key, dkey;
+ unsigned char iv[IDEA_BLOCK];
+ const size_t text_len = sizeof(text);
+
+ IDEA_set_encrypt_key(k, &key);
+ IDEA_set_decrypt_key(&key, &dkey);
+ memcpy(iv, k, sizeof(iv));
+ IDEA_cbc_encrypt((unsigned char *)text, out, text_len, &key, iv, 1);
+ memcpy(iv, k, sizeof(iv));
+ IDEA_cbc_encrypt(out, out, IDEA_BLOCK, &dkey, iv, 0);
+ IDEA_cbc_encrypt(&out[8], &out[8], text_len - 8, &dkey, iv, 0);
+ return TEST_mem_eq(text, text_len, out, text_len);