mirror of
https://github.com/rdolbeau/VexRiscvBPluginGenerator.git
synced 2025-04-18 18:44:42 -04:00
100 lines
2.8 KiB
C
100 lines
2.8 KiB
C
/*
|
|
* crypto_core/try.c version 20200406
|
|
* D. J. Bernstein
|
|
* Public domain.
|
|
* Auto-generated by trygen.py; do not edit.
|
|
*/
|
|
|
|
#include "crypto_core.h"
|
|
#include "try.h"
|
|
|
|
const char *primitiveimplementation = crypto_core_IMPLEMENTATION;
|
|
|
|
#ifdef SMALL
|
|
#define LOOPS 512
|
|
#else
|
|
#define LOOPS 4096
|
|
#endif
|
|
|
|
static unsigned char *h;
|
|
static unsigned char *n;
|
|
static unsigned char *k;
|
|
static unsigned char *c;
|
|
static unsigned char *h2;
|
|
static unsigned char *n2;
|
|
static unsigned char *k2;
|
|
static unsigned char *c2;
|
|
#define hlen crypto_core_OUTPUTBYTES
|
|
#define nlen crypto_core_INPUTBYTES
|
|
#define klen crypto_core_KEYBYTES
|
|
#define clen crypto_core_CONSTBYTES
|
|
|
|
void preallocate(void)
|
|
{
|
|
}
|
|
|
|
void allocate(void)
|
|
{
|
|
unsigned long long alloclen = 0;
|
|
if (alloclen < crypto_core_OUTPUTBYTES) alloclen = crypto_core_OUTPUTBYTES;
|
|
if (alloclen < crypto_core_INPUTBYTES) alloclen = crypto_core_INPUTBYTES;
|
|
if (alloclen < crypto_core_KEYBYTES) alloclen = crypto_core_KEYBYTES;
|
|
if (alloclen < crypto_core_CONSTBYTES) alloclen = crypto_core_CONSTBYTES;
|
|
h = alignedcalloc(alloclen);
|
|
n = alignedcalloc(alloclen);
|
|
k = alignedcalloc(alloclen);
|
|
c = alignedcalloc(alloclen);
|
|
h2 = alignedcalloc(alloclen);
|
|
n2 = alignedcalloc(alloclen);
|
|
k2 = alignedcalloc(alloclen);
|
|
c2 = alignedcalloc(alloclen);
|
|
}
|
|
|
|
void predoit(void)
|
|
{
|
|
}
|
|
|
|
void doit(void)
|
|
{
|
|
crypto_core(h,n,k,c);
|
|
}
|
|
|
|
void test(void)
|
|
{
|
|
unsigned long long loop;
|
|
|
|
for (loop = 0;loop < LOOPS;++loop) {
|
|
|
|
output_prepare(h2,h,hlen);
|
|
input_prepare(n2,n,nlen);
|
|
input_prepare(k2,k,klen);
|
|
input_prepare(c2,c,clen);
|
|
if (crypto_core(h,n,k,c) != 0) fail("crypto_core returns nonzero");
|
|
checksum(h,hlen);
|
|
output_compare(h2,h,hlen,"crypto_core");
|
|
input_compare(n2,n,nlen,"crypto_core");
|
|
input_compare(k2,k,klen,"crypto_core");
|
|
input_compare(c2,c,clen,"crypto_core");
|
|
|
|
double_canary(h2,h,hlen);
|
|
double_canary(n2,n,nlen);
|
|
double_canary(k2,k,klen);
|
|
double_canary(c2,c,clen);
|
|
if (crypto_core(h2,n2,k2,c2) != 0) fail("crypto_core returns nonzero");
|
|
if (memcmp(h2,h,hlen) != 0) fail("crypto_core is nondeterministic");
|
|
|
|
double_canary(h2,h,hlen);
|
|
double_canary(n2,n,nlen);
|
|
double_canary(k2,k,klen);
|
|
double_canary(c2,c,clen);
|
|
if (crypto_core(n2,n2,k,c) != 0) fail("crypto_core with n=h overlap returns nonzero");
|
|
if (memcmp(n2,h,hlen) != 0) fail("crypto_core does not handle n=h overlap");
|
|
memcpy(n2,n,nlen);
|
|
if (crypto_core(k2,n,k2,c) != 0) fail("crypto_core with k=h overlap returns nonzero");
|
|
if (memcmp(k2,h,hlen) != 0) fail("crypto_core does not handle k=h overlap");
|
|
memcpy(k2,k,klen);
|
|
if (crypto_core(c2,n,k,c2) != 0) fail("crypto_core with c=h overlap returns nonzero");
|
|
if (memcmp(c2,h,hlen) != 0) fail("crypto_core does not handle c=h overlap");
|
|
memcpy(c2,c,clen);
|
|
}
|
|
}
|