#include <stdlib.h>
#include <stdio.h>
#include <include/ecctk-prototype.h>
#include <include/ecctk-ecc.h>
s2byte verify_stream()
{
s4byte ret = -1;
s2byte algo = ECCTK_ECC_ALGO_ECNR;
s1byte kpubfile[] = "public_key_file",
signfile[] = "signature_file";
u1byte in[] = "Elliptic Curve Cryptographic ToolKit";
s4byte in_size = sizeof(in);
KPUB_CTX *kpub;
SIGN_CTX *sign;
kpub = ReadFileKpubCtx(kpubfile);
if (kpub == NULL)
{
fprintf(stderr, "Read public key on %s failed\n", kpubfile);
return EXIT_FAILURE;
}
sign = ReadFileSignCtx(signfile);
if (sign == NULL)
{
fprintf(stderr, "Read signature on %s failed\n", signfile);
KpubCtxFree(kpub);
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_ECDSA:
ret = VerifyStreamEcdsa(in, in_size, sign, kpub);
break;
case ECCTK_ECC_ALGO_ECNR:
ret = VerifyStreamEcnr(in, in_size, sign, kpub);
break;
default:
ret = -1;
break;
}
if (ret != ECCTK_ECC_NO_ERROR)
fprintf(stderr, "Verify stream failed (Error : %ld)\n", ret);
else
fprintf(stdout, "Verify stream success\n");
KpubCtxFree(kpub);
SignCtxFree(sign);
FreeEcctkAll();
return EXIT_SUCCESS;
}