#ifndef SEMQ_SELFTEST_VECTORS_H
#define SEMQ_SELFTEST_VECTORS_H
#include <stdint.h>
#define SEMQI_KAT_ROWS 3u
static const uint32_t SEMQI_KAT_INPUT_38[SEMQI_KAT_ROWS * 38u] = {
0x3e6dd3f4u, 0xbd69aad5u, 0xbe81d052u, 0xbdbdd9d9u, 0xbded0d3eu, 0xbe15a10eu,
0x3e34e2c6u, 0x3d368f3bu, 0x3df1967bu, 0x3e2422e7u, 0xbd717bc6u, 0x3e3637d2u,
0x3dd027f7u, 0x3e662614u, 0x3e3c5736u, 0x3e75774bu, 0x3d2e893cu, 0x3e05596eu,
0x3e49141bu, 0xbe9f6be4u, 0xbd284443u, 0xbd767b12u, 0xbc34ba66u, 0x3c0c41a8u,
0x3d8ea519u, 0x3d3c4c4du, 0xbdd03827u, 0x3e8a62c5u, 0x3ee223e4u, 0xbca441dbu,
0xbab2ee4fu, 0x3df13d1au, 0xbe7b5467u, 0x3e0ab74au, 0x3c32ab79u, 0xbe074762u,
0xbe03e967u, 0x3d5a4cb4u, 0x3ca61d5fu, 0x3ca61d5fu, 0xbd792c0fu, 0xbd792c0fu,
0x3da61d5fu, 0x3da61d5fu, 0xbdcfa4b7u, 0xbdcfa4b7u, 0x3e261d5fu, 0x3e261d5fu,
0xbe646863u, 0xbe646863u, 0x3e792c0fu, 0x3e792c0fu, 0xbe9bbb89u, 0xbe9bbb89u,
0x3e4ec88cu, 0x3df1ec9eu, 0xbe317761u, 0x3dcd772au, 0xbe1c4bf0u, 0xbe4f93e8u,
0x3e23c9d9u, 0xbd09084au, 0xbe514d1du, 0x3dbf9aa4u, 0x3e2184d9u, 0xbe3103d6u,
0x3e28cb21u, 0xbe2aaf41u, 0x3dd698cbu, 0xbe174c8du, 0xbd04214fu, 0x3e17a8a0u,
0x3ca3688du, 0x3e52fd8bu, 0xbd59a7d9u, 0x3e6fc7eeu, 0x00000000u, 0xba10ddd4u,
0xba25fd1eu, 0xba4eaca0u, 0xb904d426u, 0x3f69ef3du, 0xb9783971u, 0x00000000u,
0xba35448bu, 0xb9db4ce6u, 0xb9cfc223u, 0xba1dddf0u, 0xba736f5eu, 0x3a063beau,
0x00000000u, 0xb9d638c4u, 0xb99d329bu, 0xbecff11au, 0x3a5fbe5eu, 0x3a214621u,
0x392af3cbu, 0x00000000u, 0xba6fd23eu, 0xba75af8fu, 0x3a2313b5u, 0xb9ed78aeu,
0xba0ba2e0u, 0x385493a4u, 0x00000000u, 0xba25e4d2u, 0x3a5d288du, 0xb95121efu,
0xb94e245fu, 0xba6a0b71u, 0x394cce7du, 0x00000000u, 0xba532ed7u, 0x39d3418eu
};
static const uint32_t SEMQI_KAT_INPUT_44[SEMQI_KAT_ROWS * 44u] = {
0xbdfc0b18u, 0x3cfd6699u, 0xbe3d4444u, 0xbe9e960eu, 0xbda3aea3u, 0xbe0a14b2u,
0xbe335309u, 0xbcad8e94u, 0xbd8be7f4u, 0xbe6aad85u, 0xbdeecc6du, 0xbd70b4a7u,
0xbe395910u, 0xbe6fab57u, 0x3b694fbdu, 0xbdec6aa7u, 0xbd46b739u, 0xbd905515u,
0xbdaa0355u, 0xbd92dfc8u, 0x3cff32c5u, 0x3e0e615cu, 0x3db2fee2u, 0xbdb0ad40u,
0xbd24e65cu, 0x3d351ed4u, 0x3e70637bu, 0x3db0df4bu, 0x3d0eba8au, 0x3e2f9510u,
0x3eb12f64u, 0x3d0d5542u, 0x3dba7fd9u, 0xbeaa22d4u, 0xbd73c244u, 0xbdce29a5u,
0xbe834ed7u, 0xbe61128fu, 0x3d7ea710u, 0xbe1326adu, 0xbd4ac094u, 0xbdebf8a3u,
0xbe7e64aeu, 0xbd3c14b5u, 0x3c9a5fb2u, 0x3c9a5fb2u, 0xbd678f8bu, 0xbd678f8bu,
0x3d9a5fb2u, 0x3d9a5fb2u, 0xbdc0f79eu, 0xbdc0f79eu, 0x3e1a5fb2u, 0x3e1a5fb2u,
0xbe544395u, 0xbe544395u, 0x3e678f8bu, 0x3e678f8bu, 0xbe90b9b7u, 0xbe90b9b7u,
0xbdacf555u, 0xbe5078afu, 0xbe4e78e3u, 0x3e2b7459u, 0xbd48da41u, 0xbbfeb2a8u,
0x3d6eb861u, 0x3e369e6bu, 0x3e2daa1du, 0xbd4aa1f5u, 0x3e66a75cu, 0xbe5a5b42u,
0x3d9f348au, 0x3d30f3abu, 0x3e02b6c5u, 0x3e578549u, 0xbdab946fu, 0x3e370902u,
0xbe2fcb55u, 0xbe369980u, 0xbe0a18a5u, 0xbcacc1eau, 0xbe64033bu, 0x3d0e4113u,
0x3d3df7b1u, 0x3e0abc4fu, 0xbdb50462u, 0x3e16148eu, 0x00000000u, 0x39943fcfu,
0x3a4ecd3bu, 0xba042d16u, 0x3a2ec5a6u, 0x3f69ef23u, 0xb8da4d5bu, 0x00000000u,
0x3a5cfc8du, 0x3a77f669u, 0x3a534cd0u, 0x3998ababu, 0xba195499u, 0x3a2da719u,
0x00000000u, 0x37398a8fu, 0xba2d08dbu, 0xbecff103u, 0x386d54f0u, 0xb8caf87bu,
0xb9a77ac5u, 0x00000000u, 0x3a574a61u, 0xb798141au, 0xba80ee45u, 0xba4b8277u,
0x3a2e87b5u, 0xba050499u, 0x00000000u, 0xba61068cu, 0xba833d08u, 0xba260fb1u,
0x3a5681dfu, 0x3a446f6fu, 0x3a42c67du, 0x00000000u, 0x3a6ec9bau, 0xb93818aeu,
0xba669613u, 0x3973d56bu, 0x38b402b0u, 0x39f50fc4u, 0x00000000u, 0x38f67b6du
};
static const uint8_t SEMQI_KAT_ORBIT_50_38[114] = {
0x03, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x09, 0x02, 0x06, 0x08, 0x0c, 0x09,
0x05, 0x02, 0x09, 0x03, 0x02, 0x07, 0x01, 0x10, 0x0b, 0x0c, 0x0a, 0x00,
0x03, 0x02, 0x0e, 0x05, 0x04, 0x0a, 0x00, 0x06, 0x0c, 0x07, 0x01, 0x10,
0x0f, 0x03, 0x01, 0x01, 0x0c, 0x0c, 0x04, 0x04, 0x0e, 0x0e, 0x08, 0x08,
0x0b, 0x0b, 0x03, 0x03, 0x0f, 0x0f, 0x01, 0x06, 0x12, 0x05, 0x11, 0x0a,
0x08, 0x0b, 0x0a, 0x05, 0x08, 0x12, 0x08, 0x11, 0x05, 0x10, 0x0b, 0x07,
0x01, 0x01, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
static const uint8_t SEMQI_KAT_PHASE_8_44[33] = {
0x17, 0x01, 0x01, 0x21, 0x01, 0x35, 0x46, 0x45, 0x12, 0x20, 0x01, 0x15,
0x15, 0x15, 0x15, 0x71, 0x50, 0x33, 0x54, 0x16, 0x70, 0x65, 0x36, 0x75,
0x45, 0x66, 0x21, 0x37, 0x30, 0x02, 0x44, 0x73, 0x65
};
static const uint8_t SEMQI_KAT_PHASE_32_38[57] = {
0x0e, 0x01, 0x04, 0x11, 0x14, 0x19, 0x15, 0x14, 0x16, 0x0a, 0x04, 0x1c,
0x12, 0x19, 0x0f, 0x18, 0x1d, 0x08, 0x1e, 0x14, 0x04, 0x14, 0x04, 0x14,
0x04, 0x14, 0x04, 0x12, 0x1d, 0x04, 0x0e, 0x1d, 0x0b, 0x0b, 0x0b, 0x19,
0x17, 0x19, 0x08, 0x04, 0x18, 0x1f, 0x02, 0x05, 0x1d, 0x08, 0x07, 0x13,
0x10, 0x04, 0x0c, 0x1f, 0x08, 0x0e, 0x06, 0x10, 0x1d
};
static const uint8_t SEMQI_KAT_QUANT_4_38[45] = {
0xc6, 0x92, 0x98, 0x2d, 0x5c, 0xdb, 0xac, 0x07, 0x80, 0x64, 0x7e, 0xa0,
0x2b, 0x13, 0x02, 0x24, 0xd0, 0x26, 0xb6, 0xf4, 0x6f, 0xae, 0x1a, 0x15,
0x6a, 0x65, 0x35, 0x28, 0x0d, 0x03, 0x04, 0x80, 0x83, 0x00, 0x00, 0x12,
0x18, 0x49, 0x02, 0x04, 0x48, 0x10, 0x00, 0x09, 0x02
};
static const uint8_t SEMQI_KAT_QUANT_16_38[72] = {
0x5b, 0x30, 0x52, 0x0e, 0x96, 0xf5, 0x0a, 0x5c, 0x77, 0xde, 0xd2, 0xe6,
0x27, 0x04, 0x80, 0x53, 0x96, 0xfe, 0x01, 0xa8, 0xcc, 0x42, 0x63, 0x24,
0x31, 0x8e, 0x41, 0x69, 0x29, 0x18, 0xaf, 0xc5, 0xf9, 0x7b, 0xb9, 0x22,
0x7a, 0xd2, 0x0d, 0x8a, 0x5e, 0x84, 0x51, 0x3d, 0xe1, 0x42, 0x2d, 0x36,
0x10, 0x00, 0x00, 0x3e, 0x80, 0x00, 0x00, 0x00, 0x20, 0x04, 0xe0, 0x41,
0x08, 0x21, 0x00, 0x10, 0x00, 0x08, 0x01, 0x04, 0x00, 0x40, 0x08, 0x20
};
typedef struct {
uint32_t op;
uint32_t p1;
uint32_t dim;
uint32_t bytes_per_vector;
const uint32_t* input;
const uint8_t* expected;
} semqi_kat_t;
static const semqi_kat_t SEMQI_KAT[] = {
{ SEMQ_ORBIT, 50u, 38u, 38u, SEMQI_KAT_INPUT_38, SEMQI_KAT_ORBIT_50_38 },
{ SEMQ_PHASE, 8u, 44u, 11u, SEMQI_KAT_INPUT_44, SEMQI_KAT_PHASE_8_44 },
{ SEMQ_PHASE, 32u, 38u, 19u, SEMQI_KAT_INPUT_38, SEMQI_KAT_PHASE_32_38 },
{ SEMQ_QUANT, 4u, 38u, 15u, SEMQI_KAT_INPUT_38, SEMQI_KAT_QUANT_4_38 },
{ SEMQ_QUANT, 16u, 38u, 24u, SEMQI_KAT_INPUT_38, SEMQI_KAT_QUANT_16_38 },
};
#endif