-rw-r--r-- 15481 libntruprime-20240825/command/ntruprime-test_decode_761x3.c raw
/* ----- decode/761x3, derived from supercop/crypto_decode/try.c */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <ntruprime.h>
#include "ntruprime_test.h"
#define fail ((ok = 0),printf)
static const char *decode_761x3_checksums[] = {
"4c0c26f31b56408c408d7cc98224222b70725c2aaa0ea3faa44579acf5c624de",
"31ec97bfbababd015c022fc21d5f56f772f99978811edb78222560b43668194f",
} ;
static void (*crypto_decode)(void *,const unsigned char *);
#define crypto_decode_STRBYTES ntruprime_decode_761x3_STRBYTES
#define crypto_decode_ITEMS ntruprime_decode_761x3_ITEMS
#define crypto_decode_ITEMBYTES ntruprime_decode_761x3_ITEMBYTES
static void *storage_decode_761x3_x;
static unsigned char *test_decode_761x3_x;
static void *storage_decode_761x3_s;
static unsigned char *test_decode_761x3_s;
static void *storage_decode_761x3_x2;
static unsigned char *test_decode_761x3_x2;
static void *storage_decode_761x3_s2;
static unsigned char *test_decode_761x3_s2;
#define precomputed_decode_761x3_NUM 4
static const unsigned char precomputed_decode_761x3_x[precomputed_decode_761x3_NUM][crypto_decode_ITEMS] = {
{-1,1,1,2,1,2,1,1,2,0,1,0,-1,-1,2,1,0,1,1,0,-1,-1,2,0,1,2,2,0,2,-1,0,1,0,2,1,2,0,2,2,-1,2,1,-1,-1,2,-1,0,1,0,2,1,-1,-1,1,2,2,1,2,-1,1,2,2,0,-1,-1,0,0,1,2,1,0,0,2,1,-1,1,0,2,-1,-1,1,2,0,2,1,1,1,-1,0,0,2,0,0,-1,-1,0,-1,2,1,2,2,1,2,2,1,-1,0,1,-1,2,2,0,-1,-1,2,-1,1,0,2,1,0,0,2,2,2,1,2,1,-1,0,2,2,0,1,1,-1,-1,2,-1,1,0,0,2,0,1,0,0,1,1,0,2,0,-1,0,2,2,1,-1,-1,2,-1,2,0,0,0,-1,1,0,0,-1,0,2,0,0,0,2,2,-1,0,0,-1,1,-1,-1,-1,0,-1,0,1,0,2,1,-1,1,2,-1,-1,-1,-1,0,1,2,0,1,-1,0,1,2,1,-1,-1,0,0,1,0,1,-1,-1,0,2,2,1,0,1,2,0,2,2,2,0,0,1,0,-1,2,2,0,0,2,-1,0,0,-1,0,-1,0,-1,0,2,-1,0,-1,-1,2,1,1,-1,-1,0,2,1,1,1,-1,0,0,2,1,-1,2,0,-1,0,0,1,1,-1,1,-1,2,2,0,-1,1,0,1,2,0,2,2,-1,2,2,0,-1,2,2,-1,1,2,2,-1,2,2,2,0,-1,-1,0,-1,0,1,2,0,2,0,1,0,2,1,0,2,2,-1,-1,1,0,0,0,-1,0,-1,2,2,2,0,-1,1,1,0,0,1,2,-1,2,2,1,-1,0,1,0,-1,1,-1,2,-1,-1,-1,1,2,2,0,2,1,1,2,1,2,0,1,-1,0,0,0,0,1,0,0,-1,0,-1,0,-1,0,1,2,0,1,-1,1,2,-1,-1,1,1,-1,1,2,1,0,-1,2,-1,-1,0,-1,-1,-1,1,2,1,-1,2,0,-1,2,1,2,-1,2,2,-1,2,2,0,1,0,0,2,1,-1,2,-1,1,2,2,-1,-1,2,-1,-1,2,2,-1,1,-1,2,-1,0,-1,1,2,2,1,-1,2,1,-1,1,1,1,2,2,2,1,2,-1,1,2,-1,-1,1,0,0,0,0,0,0,-1,1,2,0,1,2,-1,0,1,2,1,1,1,0,1,-1,1,0,1,1,0,-1,1,1,0,-1,2,1,2,0,-1,0,0,1,2,1,1,0,0,-1,2,2,2,2,0,0,2,0,0,-1,0,2,-1,1,-1,1,0,2,-1,-1,1,-1,-1,-1,1,1,0,2,-1,1,2,-1,0,0,-1,1,2,-1,0,1,0,1,-1,0,-1,-1,1,2,1,2,-1,2,0,-1,-1,0,2,0,-1,0,2,0,2,2,-1,-1,2,2,2,2,-1,0,2,-1,-1,-1,0,2,2,2,1,-1,-1,0,2,1,1,1,1,0,1,2,-1,0,2,2,0,0,2,1,2,0,-1,0,0,1,1,2,-1,-1,1,0,-1,-1,-1,-1,-1,2,1,1,1,1,2,1,1,2,2,0,2,2,0,-1,2,0,2,2,-1,1,2,2,-1,0,0,-1,-1,0,2,1,1,2,-1,-1,0,1,-1,-1,-1,0,1,-1,2,2,0,0,-1,1,0,0,0,1,0,2,1,-1,0,-1,-1,2,2,0,0,1,1,1,0,1,-1,2,2,2,0,0,-1,0,1,0,2,2,2,0,0,2,2,-1,-1,2,1,-1,-1,2,-1,0,-1,-1,2,0,-1,2,2,-1,1,0,-1,2,-1,2,2,0,2,1,1,1,0,0,-1,1,0,1,2,2,-1,0,-1},
{0,0,2,0,-1,2,-1,0,-1,-1,-1,-1,2,-1,1,-1,0,-1,0,1,0,-1,0,2,-1,0,2,0,0,2,1,-1,1,1,0,2,1,2,1,0,0,1,-1,1,2,2,2,2,1,0,2,2,2,-1,-1,0,-1,0,-1,0,0,0,-1,1,0,-1,2,-1,2,-1,2,-1,2,0,0,-1,1,-1,1,2,2,2,1,2,0,1,-1,1,-1,0,1,1,-1,0,0,1,2,-1,0,2,1,0,1,0,-1,-1,0,1,1,2,2,1,2,1,0,0,1,0,1,0,1,0,2,1,-1,0,-1,-1,2,2,2,1,2,2,2,-1,1,-1,2,0,2,-1,1,2,1,0,0,-1,2,-1,-1,0,1,0,-1,0,2,0,0,0,1,0,-1,0,2,-1,1,0,2,1,-1,2,0,0,-1,1,-1,0,-1,2,-1,0,1,-1,1,-1,1,0,-1,2,1,2,-1,2,-1,0,1,1,2,1,1,-1,1,-1,1,1,2,-1,2,2,0,1,1,0,-1,-1,2,2,-1,0,0,1,0,-1,0,2,0,0,0,-1,1,1,2,-1,-1,2,1,0,-1,1,0,0,1,2,2,2,1,2,-1,0,0,-1,0,2,0,1,2,0,0,0,0,1,-1,0,-1,2,1,-1,0,0,-1,-1,0,0,2,-1,-1,1,2,-1,2,2,0,0,2,0,2,1,-1,-1,0,-1,1,2,2,1,0,1,2,1,2,0,-1,-1,1,-1,1,-1,1,0,1,-1,0,1,-1,2,-1,1,1,1,1,1,-1,-1,0,2,2,-1,1,0,0,2,0,-1,0,0,1,1,0,1,-1,-1,-1,1,1,0,0,1,0,2,2,1,0,-1,0,1,-1,1,2,-1,-1,-1,0,1,1,2,2,0,-1,-1,2,-1,-1,0,0,2,1,2,2,0,-1,1,2,-1,-1,-1,-1,-1,2,-1,2,0,-1,1,0,1,2,0,1,2,-1,0,1,2,1,2,1,-1,2,-1,1,1,2,0,-1,-1,-1,1,2,0,1,2,2,0,0,1,-1,0,-1,-1,-1,1,-1,1,1,1,2,2,0,2,0,1,0,-1,1,-1,0,2,-1,1,1,1,2,-1,1,0,2,-1,1,2,2,1,1,0,2,2,1,1,2,2,0,0,1,2,1,-1,2,0,-1,0,0,-1,1,0,1,1,0,0,1,1,2,2,-1,0,2,-1,2,-1,1,0,-1,2,-1,1,0,2,0,2,-1,0,-1,-1,2,-1,0,2,1,0,1,0,-1,1,1,-1,0,0,1,1,2,0,2,-1,1,1,1,2,1,1,0,1,0,-1,0,1,0,0,-1,-1,1,1,1,1,0,2,2,1,-1,-1,0,-1,2,1,-1,0,-1,0,2,-1,2,2,-1,1,-1,2,2,2,2,0,-1,2,0,-1,2,0,1,-1,-1,2,1,2,2,0,2,0,2,1,0,-1,0,0,2,-1,2,2,-1,1,1,2,0,0,2,2,1,2,2,1,0,1,2,2,-1,-1,0,0,2,2,2,0,0,-1,-1,0,0,2,2,0,-1,2,1,2,0,0,2,0,0,2,0,-1,0,2,2,-1,-1,1,1,-1,0,1,0,2,1,1,2,-1,0,-1,-1,0,-1,0,2,1,1,1,-1,-1,0,-1,2,2,2,1,1,1,1,1,1,2,1,0,2,-1,0,0,0,1,2,-1,2,1,2,2,-1,2,-1,2,2,1,-1,1,0,0,2,1,-1,0,0,1,0,1,2,1,0,1,2,-1,0,-1,2,1,-1,1,1,0,0,-1,-1,0,-1,1,1,1,2,0,0,-1,1,1,1,-1,1,-1,1,0,2,2,1,2,2,-1,1},
{-1,-1,0,0,0,0,0,-1,1,0,-1,2,-1,0,0,-1,1,0,1,-1,-1,1,-1,2,2,1,1,-1,1,-1,1,2,1,1,2,0,2,1,1,0,1,-1,-1,2,0,-1,1,-1,1,1,1,-1,1,1,-1,0,1,1,0,-1,-1,0,-1,2,2,2,-1,-1,2,0,1,2,0,-1,1,-1,2,1,2,-1,1,0,2,2,2,-1,2,0,1,0,0,0,-1,0,2,1,2,-1,0,1,0,0,1,0,2,1,1,-1,0,-1,1,0,-1,2,0,2,0,-1,0,1,-1,0,1,2,2,-1,-1,-1,1,0,-1,0,0,0,-1,2,-1,-1,1,-1,1,0,2,1,1,0,2,0,1,-1,-1,0,2,2,2,-1,-1,-1,-1,-1,2,0,0,2,2,1,-1,-1,2,-1,0,0,1,2,1,0,2,1,-1,2,0,1,0,1,0,1,1,2,-1,1,0,1,0,0,0,-1,0,-1,0,-1,-1,-1,1,-1,0,-1,1,-1,-1,2,0,1,0,2,2,2,2,-1,2,-1,2,1,-1,-1,1,1,2,-1,-1,0,2,1,0,2,0,2,1,1,1,-1,1,0,0,1,-1,2,1,2,1,2,-1,0,-1,-1,2,-1,-1,0,2,0,2,-1,-1,0,-1,-1,2,-1,2,0,0,-1,1,-1,0,-1,2,-1,2,-1,2,1,2,0,-1,-1,2,-1,2,2,2,2,1,1,0,1,2,2,2,2,-1,0,0,0,0,2,2,2,-1,-1,2,1,2,2,-1,-1,0,1,-1,2,-1,2,2,1,-1,2,0,1,0,-1,2,-1,0,2,2,-1,-1,0,0,2,0,0,0,2,0,-1,-1,0,-1,-1,-1,0,-1,1,-1,-1,-1,-1,-1,2,2,1,2,1,0,1,0,2,2,-1,2,1,0,1,1,-1,0,-1,1,0,2,-1,1,0,-1,-1,2,1,0,1,2,1,1,0,0,1,0,0,0,2,1,-1,0,-1,-1,2,1,2,-1,0,1,1,1,2,1,2,-1,-1,0,2,0,1,2,2,1,-1,1,1,1,0,2,0,2,-1,1,1,0,2,0,1,-1,1,2,1,2,0,0,1,0,-1,-1,-1,0,0,0,1,1,0,2,-1,1,2,-1,-1,0,1,2,2,1,0,-1,-1,0,1,0,2,2,0,2,2,-1,0,0,1,-1,-1,1,1,2,1,2,-1,0,1,0,1,1,-1,-1,-1,1,2,-1,2,2,2,2,2,2,-1,2,1,-1,1,2,-1,2,0,0,-1,2,1,1,2,-1,1,-1,1,1,0,0,1,0,2,2,0,-1,2,1,-1,0,2,-1,0,-1,1,2,1,-1,-1,2,1,1,-1,2,1,0,0,-1,1,-1,0,0,2,0,0,2,1,2,0,0,0,-1,0,-1,2,2,-1,1,2,1,0,0,0,1,1,0,2,-1,-1,0,2,-1,-1,1,0,1,-1,1,1,2,-1,-1,1,2,-1,0,2,-1,-1,2,2,-1,-1,2,2,0,-1,1,2,-1,-1,0,2,2,0,1,2,-1,2,0,1,1,1,2,2,2,-1,-1,-1,1,0,-1,-1,0,0,-1,-1,1,-1,2,2,1,-1,0,1,1,2,2,-1,2,2,0,2,-1,-1,-1,2,2,-1,0,1,2,1,1,1,2,2,-1,2,-1,1,2,1,0,1,0,2,0,-1,0,0,2,0,0,0,2,2,2,-1,1,0,0,2,2,1,1,2,-1,2,2,-1,1,2,2,0,1,2,-1,-1,1,2,0,1,0,-1,0,0,-1,0,1,2,1,-1,2,0,0,0,0,0,-1,0,-1,2,0,0,0,-1,-1,-1,2,0,-1,-1,2,-1,1,2,0,-1,-1},
{2,0,0,1,1,1,1,0,2,1,1,-1,2,0,2,0,-1,1,0,1,1,1,2,1,1,0,2,-1,-1,1,1,2,0,1,2,1,1,2,2,0,2,0,2,1,-1,1,0,0,1,-1,-1,2,2,1,-1,1,2,2,2,0,2,0,2,0,2,0,0,-1,1,-1,0,2,1,0,2,1,-1,-1,1,2,0,1,0,0,2,-1,-1,1,1,2,-1,0,0,0,0,0,2,0,0,1,-1,-1,1,1,-1,1,1,2,2,0,2,1,-1,-1,-1,0,0,-1,-1,-1,1,-1,1,1,0,2,1,-1,0,0,-1,-1,1,2,1,2,0,2,2,0,2,-1,-1,1,1,0,0,1,2,0,0,-1,-1,1,0,0,2,1,2,2,0,-1,1,0,0,2,1,-1,2,2,-1,1,1,1,-1,1,-1,1,2,0,-1,0,0,2,0,2,-1,0,0,0,-1,2,1,0,-1,0,1,1,-1,0,1,0,0,2,0,-1,-1,-1,0,0,2,-1,1,2,0,2,0,1,2,1,2,1,-1,-1,-1,1,1,0,1,1,-1,1,2,2,-1,1,-1,-1,1,0,0,1,0,0,0,2,1,1,-1,0,0,-1,-1,1,0,-1,0,1,1,2,-1,-1,2,-1,2,2,0,1,2,-1,-1,0,-1,-1,2,2,-1,2,2,0,2,1,1,2,1,1,-1,2,-1,2,1,-1,0,0,1,1,0,2,0,-1,0,1,-1,-1,1,2,1,1,1,1,0,0,1,2,-1,0,1,2,1,0,1,1,1,0,1,-1,0,0,0,0,1,1,1,2,-1,-1,-1,2,1,-1,-1,2,2,-1,1,-1,0,0,0,2,2,2,-1,-1,2,-1,1,2,1,0,2,-1,-1,1,1,1,2,-1,1,2,2,0,0,1,2,1,2,1,1,0,-1,1,0,-1,1,1,1,1,0,-1,-1,2,1,2,-1,2,-1,0,2,0,1,1,0,2,-1,2,1,0,-1,-1,0,-1,-1,-1,-1,-1,1,-1,0,2,1,-1,0,0,0,2,0,1,0,2,0,-1,-1,-1,1,2,1,-1,2,1,-1,2,2,0,2,0,1,1,-1,2,0,0,1,0,1,0,1,2,0,0,2,2,1,0,0,1,0,-1,2,0,1,-1,-1,1,0,-1,2,2,0,2,2,-1,0,2,2,0,-1,1,0,-1,2,0,2,0,-1,-1,-1,-1,-1,0,0,2,1,-1,-1,2,0,0,2,2,0,0,2,-1,0,1,-1,0,0,-1,0,2,0,1,2,1,2,-1,0,0,2,2,-1,-1,2,0,2,1,-1,-1,-1,0,1,0,2,2,1,0,1,1,-1,-1,1,1,-1,0,1,2,0,0,2,-1,2,2,2,1,1,1,1,2,-1,2,1,1,0,-1,1,2,-1,1,0,-1,0,-1,2,2,-1,0,-1,1,-1,1,-1,-1,-1,2,-1,2,1,2,-1,1,0,2,-1,1,0,2,0,1,1,-1,2,2,0,-1,0,2,-1,2,1,0,1,0,2,1,0,-1,-1,-1,1,1,2,1,2,0,2,-1,1,1,1,-1,1,-1,0,0,-1,-1,1,0,1,0,0,1,-1,-1,1,0,0,-1,0,0,0,0,1,1,0,2,-1,-1,-1,2,0,-1,-1,2,-1,2,-1,1,2,-1,-1,2,1,-1,0,1,1,-1,0,1,2,0,0,2,1,2,-1,1,-1,2,0,2,2,-1,0,0,0,0,2,1,-1,0,-1,2,2,-1,-1,2,1,1,2,-1,2,-1,1,-1,1,2,-1,-1,-1,2,0,1,2,0,1,-1,2,0,2,1,1,-1,0,2,-1,-1,0,2,-1,2,0,2,2,2,0,-1,1},
} ;
static const unsigned char precomputed_decode_761x3_s[precomputed_decode_761x3_NUM][crypto_decode_STRBYTES] = {
{232,174,103,176,105,112,126,147,237,61,11,147,45,248,142,31,148,91,139,13,222,42,117,65,236,251,146,124,48,182,245,187,244,41,140,117,150,118,244,194,92,97,209,213,83,8,68,182,56,64,158,228,66,153,208,155,247,151,241,53,69,68,19,172,208,42,181,28,165,200,135,121,207,199,227,243,7,145,119,182,61,88,17,127,104,57,47,25,50,224,183,238,73,149,69,68,158,56,40,110,12,1,46,199,206,243,89,203,248,48,60,50,225,203,162,254,142,131,85,133,231,228,106,98,26,26,123,148,107,241,95,23,141,216,32,160,141,83,56,153,4,238,28,116,116,15,255,52,208,47,180,106,78,95,123,148,14,6,192,170,235,247,113,143,79,65,235,144,64,242,133,149,45,193,151,154,252,69,246,215,195,194,4,199,99,204,183,90,152,79,20},
{117,76,0,35,145,209,116,45,218,110,137,255,246,67,68,133,49,51,23,226,239,137,164,148,211,102,144,190,91,102,182,4,191,63,114,227,22,67,70,87,70,99,203,133,196,36,98,236,76,186,34,58,159,6,79,25,93,161,195,134,229,239,20,157,87,73,44,5,53,56,95,183,16,190,185,7,34,38,201,168,10,61,214,81,154,128,150,189,145,56,144,126,48,212,126,56,0,115,152,231,228,46,163,7,120,126,73,128,168,223,25,210,168,99,227,107,175,95,46,71,97,90,250,52,99,140,221,4,211,102,40,165,55,234,154,145,5,170,189,16,75,52,143,252,199,113,194,126,183,81,243,232,245,190,249,80,127,65,125,236,117,29,61,40,217,58,65,180,10,241,171,234,54,149,179,207,188,88,75,153,155,19,139,22,132,122,161,34,246,62,138},
{80,21,198,20,38,200,43,226,122,107,194,33,42,74,26,196,15,231,33,59,246,115,86,180,147,101,43,97,220,145,228,3,70,197,32,182,118,66,63,0,215,11,83,110,203,153,233,152,21,17,32,33,156,253,51,11,58,180,221,42,150,236,78,48,116,67,48,23,18,51,123,48,255,154,255,84,253,176,15,201,188,156,49,61,212,213,65,64,8,192,187,217,179,41,97,99,176,185,150,213,18,236,164,238,208,249,162,118,163,157,184,151,1,149,54,14,249,6,217,247,148,160,59,153,2,206,255,179,56,23,235,136,150,125,44,77,184,176,178,133,212,181,87,196,227,86,218,208,96,162,131,211,240,240,225,208,231,156,250,3,6,5,242,146,62,223,192,147,171,207,184,217,81,87,63,214,235,60,126,14,158,81,228,114,85,196,21,112,48,30,156},
{151,106,43,119,152,186,54,232,185,126,183,88,194,139,127,119,23,210,182,224,89,131,78,85,151,160,232,183,64,1,162,45,5,238,125,131,150,23,88,251,97,45,143,138,120,212,77,197,70,74,214,1,53,222,185,11,104,138,143,96,89,173,20,24,233,48,159,67,240,124,235,202,44,165,29,9,174,90,78,110,106,82,165,14,44,60,82,253,48,110,131,58,126,185,107,24,170,193,206,116,218,108,16,0,210,82,157,29,224,178,124,167,92,102,94,111,25,39,24,223,211,135,113,7,64,45,92,95,147,20,157,59,245,112,11,100,111,10,74,94,243,171,206,26,142,17,79,136,192,236,216,216,41,31,205,102,27,160,123,163,34,5,102,9,22,85,218,192,193,140,195,146,146,215,142,220,83,181,196,195,58,35,14,156,39,183,210,208,220,31,114},
} ;
static void test_decode_761x3_impl(long long impl)
{
unsigned char *x = test_decode_761x3_x;
unsigned char *s = test_decode_761x3_s;
unsigned char *x2 = test_decode_761x3_x2;
unsigned char *s2 = test_decode_761x3_s2;
long long xwords = crypto_decode_ITEMS;
long long xlen;
long long slen = crypto_decode_STRBYTES;
if (targeti && strcmp(targeti,".") && strcmp(targeti,ntruprime_dispatch_decode_761x3_implementation(impl))) return;
if (targetn && atol(targetn) != impl) return;
if (impl >= 0) {
crypto_decode = ntruprime_dispatch_decode_761x3(impl);
printf("decode_761x3 %lld implementation %s compiler %s\n",impl,ntruprime_dispatch_decode_761x3_implementation(impl),ntruprime_dispatch_decode_761x3_compiler(impl));
} else {
crypto_decode = ntruprime_decode_761x3;
printf("decode_761x3 selected implementation %s compiler %s\n",ntruprime_decode_761x3_implementation(),ntruprime_decode_761x3_compiler());
}
for (long long checksumbig = 0;checksumbig < 2;++checksumbig) {
long long loops = checksumbig ? 4096 : 1024;
checksum_clear();
for (long long loop = 0;loop < loops;++loop) {
xlen = xwords*crypto_decode_ITEMBYTES;
output_prepare(x2,x,xlen);
input_prepare(s2,s,slen);
secret(s,slen);
crypto_decode(x,s);
public(s,slen);
public(x,xlen);
endianness(x,xwords,crypto_decode_ITEMBYTES);
checksum(x,xlen);
output_compare(x2,x,xlen,"crypto_decode");
input_compare(s2,s,slen,"crypto_decode");
double_canary(x2,x,xlen);
double_canary(s2,s,slen);
secret(s2,slen);
crypto_decode(x2,s2);
public(s2,slen);
public(x2,xlen);
endianness(x2,xwords,crypto_decode_ITEMBYTES);
if (memcmp(x2,x,xlen) != 0) fail("failure: crypto_decode is nondeterministic\n");
}
checksum_expected(decode_761x3_checksums[checksumbig]);
}
for (long long precomp = 0;precomp < precomputed_decode_761x3_NUM;++precomp) {
output_prepare(x2,x,crypto_decode_ITEMS*crypto_decode_ITEMBYTES);
input_prepare(s2,s,crypto_decode_STRBYTES);
memcpy(s,precomputed_decode_761x3_s[precomp],crypto_decode_STRBYTES);
memcpy(s2,precomputed_decode_761x3_s[precomp],crypto_decode_STRBYTES);
crypto_decode(x,s);
if (memcmp(x,precomputed_decode_761x3_x[precomp],crypto_decode_ITEMS*crypto_decode_ITEMBYTES)) {
fail("failure: crypto_decode fails precomputed test vectors\n");
printf("expected x: ");
for (long long pos = 0;pos < crypto_decode_ITEMS*crypto_decode_ITEMBYTES;++pos) printf("%02x",((unsigned char *) precomputed_decode_761x3_x[precomp])[pos]);
printf("\n");
printf("received x: ");
for (long long pos = 0;pos < crypto_decode_ITEMS*crypto_decode_ITEMBYTES;++pos) printf("%02x",x[pos]);
printf("\n");
}
output_compare(x2,x,crypto_decode_ITEMS*crypto_decode_ITEMBYTES,"crypto_decode");
input_compare(s2,s,crypto_decode_STRBYTES,"crypto_decode");
}
}
void test_decode_761x3(void)
{
long long maxalloc = 0;
if (targeto && strcmp(targeto,"decode")) return;
if (targetp && strcmp(targetp,"761x3")) return;
storage_decode_761x3_x = callocplus(crypto_decode_ITEMS*crypto_decode_ITEMBYTES);
test_decode_761x3_x = aligned(storage_decode_761x3_x,crypto_decode_ITEMS*crypto_decode_ITEMBYTES);
if (crypto_decode_ITEMS*crypto_decode_ITEMBYTES > maxalloc) maxalloc = crypto_decode_ITEMS*crypto_decode_ITEMBYTES;
storage_decode_761x3_s = callocplus(crypto_decode_STRBYTES);
test_decode_761x3_s = aligned(storage_decode_761x3_s,crypto_decode_STRBYTES);
if (crypto_decode_STRBYTES > maxalloc) maxalloc = crypto_decode_STRBYTES;
storage_decode_761x3_x2 = callocplus(maxalloc);
test_decode_761x3_x2 = aligned(storage_decode_761x3_x2,crypto_decode_ITEMS*crypto_decode_ITEMBYTES);
storage_decode_761x3_s2 = callocplus(maxalloc);
test_decode_761x3_s2 = aligned(storage_decode_761x3_s2,crypto_decode_STRBYTES);
for (long long offset = 0;offset < 1;++offset) {
if (targetoffset && atol(targetoffset) != offset) continue;
if (offset && valgrind) break;
printf("decode_761x3 offset %lld\n",offset);
for (long long impl = -1;impl < ntruprime_numimpl_decode_761x3();++impl)
forked(test_decode_761x3_impl,impl);
++test_decode_761x3_x;
++test_decode_761x3_s;
++test_decode_761x3_x2;
++test_decode_761x3_s2;
}
free(storage_decode_761x3_s2);
free(storage_decode_761x3_x2);
free(storage_decode_761x3_s);
free(storage_decode_761x3_x);
}
#undef crypto_decode_STRBYTES
#undef crypto_decode_ITEMS
#undef crypto_decode_ITEMBYTES