pqc/crypto_sign/qtesla-p-I/clean/CDT32.h
Sebastian 56a0fcb135 qTESLA (#239)
* Copied qTESLA-p-I round2 (2019-08-19) code

* Code compiles, NIST-KAT works

* Included detached signature API

* Generated testvectors

* Fixed name in api.h

* code style

* Fixed error in Makefile

* Passing pytest

* Fixing types (uint8_t bytes and size_t indices)

* Replaced SHAKE with SHAKE128 where necessary

* Fixed bug: (signed) integer overflow

* Added qTESLA-p-III

* Code is now independent of machine endianness

* repaired Microsoft makefile
2019-10-21 14:26:27 +02:00

110 lines
3.6 KiB
C

#ifndef PQCLEAN_QTESLAPI_CLEAN_CDTSAMP
#define PQCLEAN_QTESLAPI_CLEAN_CDTSAMP
/*************************************************************************************
* qTESLA: an efficient post-quantum signature scheme based on the R-LWE problem
*
* Abstract: CDT constants for the Gaussian sampler
**************************************************************************************/
#include "params.h"
#include <stdint.h>
// Sigma = 8.5, 64-bit precision
#define CDT_ROWS 78
#define CDT_COLS 2
static const int32_t cdt_v[CDT_ROWS * CDT_COLS] = {
0x00000000L, 0x00000000L, // 0
0x0601F22AL, 0x280663D4L, // 1
0x11F09FFAL, 0x162FE23DL, // 2
0x1DA089E9L, 0x437226E8L, // 3
0x28EAB25DL, 0x04C51FE2L, // 4
0x33AC2F26L, 0x14FDBA70L, // 5
0x3DC767DCL, 0x4565C960L, // 6
0x4724FC62L, 0x3342C78AL, // 7
0x4FB448F4L, 0x5229D06DL, // 8
0x576B8599L, 0x7423407FL, // 9
0x5E4786DAL, 0x3210BAF7L, // 10
0x644B2C92L, 0x431B3947L, // 11
0x697E90CEL, 0x77C362C4L, // 12
0x6DEE0B96L, 0x2798C9CEL, // 13
0x71A92144L, 0x5765FCE4L, // 14
0x74C16FD5L, 0x1E2A0990L, // 15
0x7749AC92L, 0x0DF36EEBL, // 16
0x7954BFA4L, 0x28079289L, // 17
0x7AF5067AL, 0x2EDC2050L, // 18
0x7C3BC17CL, 0x123D5E7BL, // 19
0x7D38AD76L, 0x2A9381D9L, // 20
0x7DF9C5DFL, 0x0E868CA7L, // 21
0x7E8B2ABAL, 0x18E5C811L, // 22
0x7EF7237CL, 0x00908272L, // 23
0x7F4637C5L, 0x6DBA5126L, // 24
0x7F7F5707L, 0x4A52EDEBL, // 25
0x7FA808CCL, 0x23290599L, // 26
0x7FC4A083L, 0x69BDF2D5L, // 27
0x7FD870CAL, 0x42275558L, // 28
0x7FE5FB5DL, 0x3EF82C1BL, // 29
0x7FEF1BFAL, 0x6C03A362L, // 30
0x7FF52D4EL, 0x316C2C8CL, // 31
0x7FF927BAL, 0x12AE54AFL, // 32
0x7FFBBA43L, 0x749CC0E2L, // 33
0x7FFD5E3DL, 0x4524AD91L, // 34
0x7FFE6664L, 0x535785B5L, // 35
0x7FFF0A41L, 0x0B291681L, // 36
0x7FFF6E81L, 0x132C3D6FL, // 37
0x7FFFAAFEL, 0x4DBC6BEDL, // 38
0x7FFFCEFDL, 0x7A1E2D14L, // 39
0x7FFFE41EL, 0x4C6EC115L, // 40
0x7FFFF059L, 0x319503C8L, // 41
0x7FFFF754L, 0x5DDD0D40L, // 42
0x7FFFFB43L, 0x0B9E9823L, // 43
0x7FFFFD71L, 0x76B81AE1L, // 44
0x7FFFFEA3L, 0x7E66A1ECL, // 45
0x7FFFFF49L, 0x26F6E191L, // 46
0x7FFFFFA1L, 0x2FA31694L, // 47
0x7FFFFFCFL, 0x5247BEC9L, // 48
0x7FFFFFE7L, 0x4F4127C7L, // 49
0x7FFFFFF3L, 0x6FAA69FDL, // 50
0x7FFFFFFAL, 0x0630D073L, // 51
0x7FFFFFFDL, 0x0F2957BBL, // 52
0x7FFFFFFEL, 0x4FD29432L, // 53
0x7FFFFFFFL, 0x2CFAD60DL, // 54
0x7FFFFFFFL, 0x5967A930L, // 55
0x7FFFFFFFL, 0x6E4C9DFFL, // 56
0x7FFFFFFFL, 0x77FDCCC8L, // 57
0x7FFFFFFFL, 0x7C6CE89EL, // 58
0x7FFFFFFFL, 0x7E6D116FL, // 59
0x7FFFFFFFL, 0x7F50FA31L, // 60
0x7FFFFFFFL, 0x7FB50089L, // 61
0x7FFFFFFFL, 0x7FE04C2DL, // 62
0x7FFFFFFFL, 0x7FF2C7C1L, // 63
0x7FFFFFFFL, 0x7FFA8FE3L, // 64
0x7FFFFFFFL, 0x7FFDCB1BL, // 65
0x7FFFFFFFL, 0x7FFF1DE2L, // 66
0x7FFFFFFFL, 0x7FFFA6B7L, // 67
0x7FFFFFFFL, 0x7FFFDD39L, // 68
0x7FFFFFFFL, 0x7FFFF2A3L, // 69
0x7FFFFFFFL, 0x7FFFFAEFL, // 70
0x7FFFFFFFL, 0x7FFFFE1BL, // 71
0x7FFFFFFFL, 0x7FFFFF4DL, // 72
0x7FFFFFFFL, 0x7FFFFFBFL, // 73
0x7FFFFFFFL, 0x7FFFFFE9L, // 74
0x7FFFFFFFL, 0x7FFFFFF8L, // 75
0x7FFFFFFFL, 0x7FFFFFFDL, // 76
0x7FFFFFFFL, 0x7FFFFFFFL, // 77
}; // cdt_v
// memory requirements:
// 2048 samples: 25512 bytes
// 1024 samples: 13224 bytes
// 512 samples: 7080 bytes
// 256 samples: 4008 bytes
// 128 samples: 2472 bytes
// 64 samples: 1704 bytes
// 32 samples: 1320 bytes
// table alone: 624 bytes
#endif