#include <stdlib.h>
#include <stdio.h>
#include <include/ecctk-prototype.h>
#include <include/ecctk-cipher.h>
#include <include/ecctk-ecc.h>
s2byte generate_cipher()
{
s4byte ret = -1;
#ifndef ECCTK_EVALUATION
u1byte algo = ECCTK_CIPHER_ALGO_RIJNDAEL,
#else
u1byte algo = ECCTK_CIPHER_ALGO_BLOWFISH,
#endif
mode = ECCTK_CIPHER_MODE_OFB,
compress = ECCTK_COMPRESS_ON,
*iv;
s2byte keysize = CipherAlgorithmKeySize(algo),
ivsize = CipherAlgorithmIVSize(algo);
s1byte cipherfile[] = "cipher_file";
ECC_CIPHER_CTX *cipher;
iv = GenerateRandom(ivsize * 8);
if (iv == NULL)
{
fprintf(stderr, "Generate random iv failed\n");
return EXIT_FAILURE;
}
cipher = CreateEccCipherCtx(algo, mode, compress, keysize, ivsize, iv);
if (cipher == NULL)
{
fprintf(stderr, "Create cipher context failed\n");
free(iv);
return EXIT_FAILURE;
}
free(iv);
ret = WriteFileEccCipherCtx(cipherfile, cipher);
if (ret != ECCTK_ECC_NO_ERROR)
{
fprintf(stderr, "Write cipher context on %s failed (Error : %ld)\n", cipherfile, ret);
EccCipherCtxFree(cipher);
return EXIT_FAILURE;
}
fprintf(stdout, "Create cipher context success\n");
EccCipherCtxFree(cipher);
return EXIT_SUCCESS;
}