#include <stdlib.h>
#include <stdio.h>
#include <include/ecctk-prototype.h>
#include <include/ecctk-ecc.h>
s2byte decrypt_file_asym()
{
s4byte ret = -1;
s2byte algo = ECCTK_ECC_ALGO_ECIES;
s1byte infile[] = "protected_file",
outfile[] = "unprotected_file",
kprvfile[] = "private_key_file";
KPRV_CTX *kprv;
kprv = ReadFileKprvCtx(kprvfile);
if (kprv == NULL)
{
fprintf(stderr, "Read private key on %s failed\n", kprvfile);
return EXIT_FAILURE;
}
ret = InitializeEcctkAll();
if (ret != ECCTK_ECC_NO_ERROR)
{
fprintf(stderr, "InitializeEcctkAll failed (%d)\n", ret);
return EXIT_FAILURE;
}
switch (algo)
{
case ECCTK_ECC_ALGO_ECIES:
ret = DecryptFileEcies(infile, outfile, kprv, NULL);
break;
case ECCTK_ECC_ALGO_PSEC3:
ret = DecryptFilePsec3(infile, outfile, kprv, NULL);
break;
default:
ret = -1;
break;
}
if (ret != ECCTK_ECC_NO_ERROR)
fprintf(stderr, "Decryp %s failed (Error : %ld)\n", infile, ret);
else
fprintf(stdout, "Decrypt %s success, %s generated\n", infile, outfile);
KprvCtxFree(kprv);
FreeEcctkAll();
return EXIT_SUCCESS;
}