Skip to content

Commit e989e69

Browse files
committed
Change CRHBYTES to 64 and use SHAKE-256 for s1 and s2
1 parent 71c1e9e commit e989e69

File tree

13 files changed

+98
-94
lines changed

13 files changed

+98
-94
lines changed

SHA256SUMS

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
e0dc8c8ace688e43a25fca7fe095030023315a3531c7b526ed80be2338f2245f tvecs2
2-
691b9541f65fd2dfacad28c360ebd2091cea7eecb7533ffd807a4037eb21772a tvecs2aes
3-
c73f18b1b06ef2cb6263c5e6a5b48fb180d187a0778d54a608d9662e19662012 tvecs3
4-
d5a912bd32570d907bc8b186449912259be0d0cf29cae60ff311954aa5ca06d5 tvecs3aes
5-
4801a29b7d5979422d1a0ad39e26bfb8b7af60ef46f494e2ed4db3d406cfa2ce tvecs5
6-
23d83c4df50e8af9765b4a7323389a6baa75772e144ba4f5bafb5cea5da5c0bb tvecs5aes
1+
5df7c85e4a59487314781403c0d75327cec95efd1761933c378256d18dc555ed tvecs2
2+
8b1d8701df94514aaa9bb0bdf2e1da942d924cb21c9e4bc0590cd9e5c6166738 tvecs2aes
3+
eab054f82fdc543bdc4cc8dd95ccac1ecaa0fc1e263f07b7b828d51349c1a8f4 tvecs3
4+
920b6fe1ea8e974c7b531274ff23dd6202b2c78b040c99bf9f85d88a9bbbefbf tvecs3aes
5+
1f9c89ed0a2ac925d660263335f2ef02ae471049d4d32b51d823c86d6257031f tvecs5
6+
9db9a8a86204f8f4e8be5311029e3393efd00ccf21b4b02c2d1ff1faab6ea25f tvecs5aes

avx2/poly.c

Lines changed: 58 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -532,27 +532,27 @@ static unsigned int rej_eta(int32_t *a,
532532
* or AES256CTR(seed,nonce).
533533
*
534534
* Arguments: - poly *a: pointer to output polynomial
535-
* - const uint8_t seed[]: byte array with seed of length SEEDBYTES
535+
* - const uint8_t seed[]: byte array with seed of length CRHBYTES
536536
* - uint16_t nonce: 2-byte nonce
537537
**************************************************/
538538
void poly_uniform_eta_preinit(poly *a, stream128_state *state)
539539
{
540540
unsigned int ctr;
541-
ALIGNED_UINT8(REJ_UNIFORM_BUFLEN*STREAM128_BLOCKBYTES) buf;
541+
ALIGNED_UINT8(REJ_UNIFORM_ETA_BUFLEN) buf;
542542

543-
stream128_squeezeblocks(buf.coeffs, REJ_UNIFORM_ETA_NBLOCKS, state);
543+
stream256_squeezeblocks(buf.coeffs, REJ_UNIFORM_ETA_NBLOCKS, state);
544544
ctr = rej_eta_avx(a->coeffs, buf.coeffs);
545545

546546
while(ctr < N) {
547-
stream128_squeezeblocks(buf.coeffs, 1, state);
548-
ctr += rej_eta(a->coeffs + ctr, N - ctr, buf.coeffs, STREAM128_BLOCKBYTES);
547+
stream256_squeezeblocks(buf.coeffs, 1, state);
548+
ctr += rej_eta(a->coeffs + ctr, N - ctr, buf.coeffs, STREAM256_BLOCKBYTES);
549549
}
550550
}
551551

552-
void poly_uniform_eta(poly *a, const uint8_t seed[SEEDBYTES], uint16_t nonce)
552+
void poly_uniform_eta(poly *a, const uint8_t seed[CRHBYTES], uint16_t nonce)
553553
{
554-
stream128_state state;
555-
stream128_init(&state, seed, nonce);
554+
stream256_state state;
555+
stream256_init(&state, seed, nonce);
556556
poly_uniform_eta_preinit(a, &state);
557557
}
558558

@@ -561,7 +561,7 @@ void poly_uniform_eta_4x(poly *a0,
561561
poly *a1,
562562
poly *a2,
563563
poly *a3,
564-
const uint8_t seed[32],
564+
const uint8_t seed[64],
565565
uint16_t nonce0,
566566
uint16_t nonce1,
567567
uint16_t nonce2,
@@ -573,36 +573,41 @@ void poly_uniform_eta_4x(poly *a0,
573573
__m256i f;
574574
keccakx4_state state;
575575

576-
f = _mm256_loadu_si256((__m256i *)seed);
577-
_mm256_store_si256(buf[0].vec,f);
578-
_mm256_store_si256(buf[1].vec,f);
579-
_mm256_store_si256(buf[2].vec,f);
580-
_mm256_store_si256(buf[3].vec,f);
581-
582-
buf[0].coeffs[SEEDBYTES+0] = nonce0;
583-
buf[0].coeffs[SEEDBYTES+1] = nonce0 >> 8;
584-
buf[1].coeffs[SEEDBYTES+0] = nonce1;
585-
buf[1].coeffs[SEEDBYTES+1] = nonce1 >> 8;
586-
buf[2].coeffs[SEEDBYTES+0] = nonce2;
587-
buf[2].coeffs[SEEDBYTES+1] = nonce2 >> 8;
588-
buf[3].coeffs[SEEDBYTES+0] = nonce3;
589-
buf[3].coeffs[SEEDBYTES+1] = nonce3 >> 8;
590-
591-
shake128x4_absorb_once(&state, buf[0].coeffs, buf[1].coeffs, buf[2].coeffs, buf[3].coeffs, SEEDBYTES + 2);
592-
shake128x4_squeezeblocks(buf[0].coeffs, buf[1].coeffs, buf[2].coeffs, buf[3].coeffs, REJ_UNIFORM_ETA_NBLOCKS, &state);
576+
f = _mm256_loadu_si256((__m256i *)&seed[0]);
577+
_mm256_store_si256(&buf[0].vec[0],f);
578+
_mm256_store_si256(&buf[1].vec[0],f);
579+
_mm256_store_si256(&buf[2].vec[0],f);
580+
_mm256_store_si256(&buf[3].vec[0],f);
581+
f = _mm256_loadu_si256((__m256i *)&seed[32]);
582+
_mm256_store_si256(&buf[0].vec[1],f);
583+
_mm256_store_si256(&buf[1].vec[1],f);
584+
_mm256_store_si256(&buf[2].vec[1],f);
585+
_mm256_store_si256(&buf[3].vec[1],f);
586+
587+
buf[0].coeffs[64] = nonce0;
588+
buf[0].coeffs[65] = nonce0 >> 8;
589+
buf[1].coeffs[64] = nonce1;
590+
buf[1].coeffs[65] = nonce1 >> 8;
591+
buf[2].coeffs[64] = nonce2;
592+
buf[2].coeffs[65] = nonce2 >> 8;
593+
buf[3].coeffs[64] = nonce3;
594+
buf[3].coeffs[65] = nonce3 >> 8;
595+
596+
shake256x4_absorb_once(&state, buf[0].coeffs, buf[1].coeffs, buf[2].coeffs, buf[3].coeffs, 66);
597+
shake256x4_squeezeblocks(buf[0].coeffs, buf[1].coeffs, buf[2].coeffs, buf[3].coeffs, REJ_UNIFORM_ETA_NBLOCKS, &state);
593598

594599
ctr0 = rej_eta_avx(a0->coeffs, buf[0].coeffs);
595600
ctr1 = rej_eta_avx(a1->coeffs, buf[1].coeffs);
596601
ctr2 = rej_eta_avx(a2->coeffs, buf[2].coeffs);
597602
ctr3 = rej_eta_avx(a3->coeffs, buf[3].coeffs);
598603

599604
while(ctr0 < N || ctr1 < N || ctr2 < N || ctr3 < N) {
600-
shake128x4_squeezeblocks(buf[0].coeffs, buf[1].coeffs, buf[2].coeffs, buf[3].coeffs, 1, &state);
605+
shake256x4_squeezeblocks(buf[0].coeffs, buf[1].coeffs, buf[2].coeffs, buf[3].coeffs, 1, &state);
601606

602-
ctr0 += rej_eta(a0->coeffs + ctr0, N - ctr0, buf[0].coeffs, SHAKE128_RATE);
603-
ctr1 += rej_eta(a1->coeffs + ctr1, N - ctr1, buf[1].coeffs, SHAKE128_RATE);
604-
ctr2 += rej_eta(a2->coeffs + ctr2, N - ctr2, buf[2].coeffs, SHAKE128_RATE);
605-
ctr3 += rej_eta(a3->coeffs + ctr3, N - ctr3, buf[3].coeffs, SHAKE128_RATE);
607+
ctr0 += rej_eta(a0->coeffs + ctr0, N - ctr0, buf[0].coeffs, SHAKE256_RATE);
608+
ctr1 += rej_eta(a1->coeffs + ctr1, N - ctr1, buf[1].coeffs, SHAKE256_RATE);
609+
ctr2 += rej_eta(a2->coeffs + ctr2, N - ctr2, buf[2].coeffs, SHAKE256_RATE);
610+
ctr3 += rej_eta(a3->coeffs + ctr3, N - ctr3, buf[3].coeffs, SHAKE256_RATE);
606611
}
607612
}
608613
#endif
@@ -639,7 +644,7 @@ void poly_uniform_gamma1_4x(poly *a0,
639644
poly *a1,
640645
poly *a2,
641646
poly *a3,
642-
const uint8_t seed[48],
647+
const uint8_t seed[64],
643648
uint16_t nonce0,
644649
uint16_t nonce1,
645650
uint16_t nonce2,
@@ -648,29 +653,28 @@ void poly_uniform_gamma1_4x(poly *a0,
648653
ALIGNED_UINT8(POLY_UNIFORM_GAMMA1_NBLOCKS*STREAM256_BLOCKBYTES+14) buf[4];
649654
keccakx4_state state;
650655
__m256i f;
651-
__m128i g;
652656

653-
f = _mm256_loadu_si256((__m256i *)seed);
654-
_mm256_store_si256(buf[0].vec,f);
655-
_mm256_store_si256(buf[1].vec,f);
656-
_mm256_store_si256(buf[2].vec,f);
657-
_mm256_store_si256(buf[3].vec,f);
658-
g = _mm_loadu_si128((__m128i *)&seed[32]);
659-
_mm_store_si128((__m128i *)&buf[0].vec[1],g);
660-
_mm_store_si128((__m128i *)&buf[1].vec[1],g);
661-
_mm_store_si128((__m128i *)&buf[2].vec[1],g);
662-
_mm_store_si128((__m128i *)&buf[3].vec[1],g);
663-
664-
buf[0].coeffs[CRHBYTES + 0] = nonce0;
665-
buf[0].coeffs[CRHBYTES + 1] = nonce0 >> 8;
666-
buf[1].coeffs[CRHBYTES + 0] = nonce1;
667-
buf[1].coeffs[CRHBYTES + 1] = nonce1 >> 8;
668-
buf[2].coeffs[CRHBYTES + 0] = nonce2;
669-
buf[2].coeffs[CRHBYTES + 1] = nonce2 >> 8;
670-
buf[3].coeffs[CRHBYTES + 0] = nonce3;
671-
buf[3].coeffs[CRHBYTES + 1] = nonce3 >> 8;
672-
673-
shake256x4_absorb_once(&state, buf[0].coeffs, buf[1].coeffs, buf[2].coeffs, buf[3].coeffs, CRHBYTES + 2);
657+
f = _mm256_loadu_si256((__m256i *)&seed[0]);
658+
_mm256_store_si256(&buf[0].vec[0],f);
659+
_mm256_store_si256(&buf[1].vec[0],f);
660+
_mm256_store_si256(&buf[2].vec[0],f);
661+
_mm256_store_si256(&buf[3].vec[0],f);
662+
f = _mm256_loadu_si256((__m256i *)&seed[32]);
663+
_mm256_store_si256(&buf[0].vec[1],f);
664+
_mm256_store_si256(&buf[1].vec[1],f);
665+
_mm256_store_si256(&buf[2].vec[1],f);
666+
_mm256_store_si256(&buf[3].vec[1],f);
667+
668+
buf[0].coeffs[64] = nonce0;
669+
buf[0].coeffs[65] = nonce0 >> 8;
670+
buf[1].coeffs[64] = nonce1;
671+
buf[1].coeffs[65] = nonce1 >> 8;
672+
buf[2].coeffs[64] = nonce2;
673+
buf[2].coeffs[65] = nonce2 >> 8;
674+
buf[3].coeffs[64] = nonce3;
675+
buf[3].coeffs[65] = nonce3 >> 8;
676+
677+
shake256x4_absorb_once(&state, buf[0].coeffs, buf[1].coeffs, buf[2].coeffs, buf[3].coeffs, 66);
674678
shake256x4_squeezeblocks(buf[0].coeffs, buf[1].coeffs, buf[2].coeffs, buf[3].coeffs, POLY_UNIFORM_GAMMA1_NBLOCKS, &state);
675679

676680
polyz_unpack(a0, buf[0].coeffs);

avx2/poly.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ void poly_uniform(poly *a, const uint8_t seed[SEEDBYTES], uint16_t nonce);
4949
#define poly_uniform_eta_preinit DILITHIUM_NAMESPACE(poly_uniform_eta_preinit)
5050
void poly_uniform_eta_preinit(poly *a, stream128_state *state);
5151
#define poly_uniform_eta DILITHIUM_NAMESPACE(poly_uniform_eta)
52-
void poly_uniform_eta(poly *a, const uint8_t seed[SEEDBYTES], uint16_t nonce);
52+
void poly_uniform_eta(poly *a, const uint8_t seed[CRHBYTES], uint16_t nonce);
5353
#define poly_uniform_gamma1_preinit DILITHIUM_NAMESPACE(poly_uniform_gamma1_preinit)
5454
void poly_uniform_gamma1_preinit(poly *a, stream256_state *state);
5555
#define poly_uniform_gamma1 DILITHIUM_NAMESPACE(poly_uniform_gamma1)
@@ -73,7 +73,7 @@ void poly_uniform_eta_4x(poly *a0,
7373
poly *a1,
7474
poly *a2,
7575
poly *a3,
76-
const uint8_t seed[SEEDBYTES],
76+
const uint8_t seed[CRHBYTES],
7777
uint16_t nonce0,
7878
uint16_t nonce1,
7979
uint16_t nonce2,

avx2/polyvec.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -265,14 +265,14 @@ void polyvec_matrix_pointwise_montgomery(polyveck *t, const polyvecl mat[K], con
265265
/************ Vectors of polynomials of length L **************/
266266
/**************************************************************/
267267

268-
void polyvecl_uniform_eta(polyvecl *v, const uint8_t seed[SEEDBYTES], uint16_t nonce) {
268+
void polyvecl_uniform_eta(polyvecl *v, const uint8_t seed[CRHBYTES], uint16_t nonce) {
269269
unsigned int i;
270270

271271
for(i = 0; i < L; ++i)
272272
poly_uniform_eta(&v->vec[i], seed, nonce++);
273273
}
274274

275-
void polyvecl_uniform_gamma1(polyvecl *v, const uint8_t seed[SEEDBYTES], uint16_t nonce) {
275+
void polyvecl_uniform_gamma1(polyvecl *v, const uint8_t seed[CRHBYTES], uint16_t nonce) {
276276
unsigned int i;
277277

278278
for(i = 0; i < L; ++i)
@@ -388,7 +388,7 @@ int polyvecl_chknorm(const polyvecl *v, int32_t bound) {
388388
/************ Vectors of polynomials of length K **************/
389389
/**************************************************************/
390390

391-
void polyveck_uniform_eta(polyveck *v, const uint8_t seed[SEEDBYTES], uint16_t nonce) {
391+
void polyveck_uniform_eta(polyveck *v, const uint8_t seed[CRHBYTES], uint16_t nonce) {
392392
unsigned int i;
393393

394394
for(i = 0; i < K; ++i)

avx2/polyvec.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ typedef struct {
1111
} polyvecl;
1212

1313
#define polyvecl_uniform_eta DILITHIUM_NAMESPACE(polyvecl_uniform_eta)
14-
void polyvecl_uniform_eta(polyvecl *v, const uint8_t seed[SEEDBYTES], uint16_t nonce);
14+
void polyvecl_uniform_eta(polyvecl *v, const uint8_t seed[CRHBYTES], uint16_t nonce);
1515

1616
#define polyvecl_uniform_gamma1 DILITHIUM_NAMESPACE(polyvecl_uniform_gamma1)
17-
void polyvecl_uniform_gamma1(polyvecl *v, const uint8_t seed[SEEDBYTES], uint16_t nonce);
17+
void polyvecl_uniform_gamma1(polyvecl *v, const uint8_t seed[CRHBYTES], uint16_t nonce);
1818

1919
#define polyvecl_reduce DILITHIUM_NAMESPACE(polyvecl_reduce)
2020
void polyvecl_reduce(polyvecl *v);
@@ -46,7 +46,7 @@ typedef struct {
4646
} polyveck;
4747

4848
#define polyveck_uniform_eta DILITHIUM_NAMESPACE(polyveck_uniform_eta)
49-
void polyveck_uniform_eta(polyveck *v, const uint8_t seed[SEEDBYTES], uint16_t nonce);
49+
void polyveck_uniform_eta(polyveck *v, const uint8_t seed[CRHBYTES], uint16_t nonce);
5050

5151
#define polyveck_reduce DILITHIUM_NAMESPACE(polyveck_reduce)
5252
void polyveck_reduce(polyveck *v);

avx2/rejsample.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@
99
#define REJ_UNIFORM_BUFLEN (REJ_UNIFORM_NBLOCKS*STREAM128_BLOCKBYTES)
1010

1111
#if ETA == 2
12-
#define REJ_UNIFORM_ETA_NBLOCKS ((137+STREAM128_BLOCKBYTES-1)/STREAM128_BLOCKBYTES)
12+
#define REJ_UNIFORM_ETA_NBLOCKS ((136+STREAM256_BLOCKBYTES-1)/STREAM256_BLOCKBYTES)
1313
#elif ETA == 4
14-
#define REJ_UNIFORM_ETA_NBLOCKS ((228+STREAM128_BLOCKBYTES-1)/STREAM128_BLOCKBYTES)
14+
#define REJ_UNIFORM_ETA_NBLOCKS ((227+STREAM256_BLOCKBYTES-1)/STREAM256_BLOCKBYTES)
1515
#endif
16-
#define REJ_UNIFORM_ETA_BUFLEN (REJ_UNIFORM_ETA_NBLOCKS*STREAM128_BLOCKBYTES)
16+
#define REJ_UNIFORM_ETA_BUFLEN (REJ_UNIFORM_ETA_NBLOCKS*STREAM256_BLOCKBYTES)
1717

1818
#define idxlut DILITHIUM_NAMESPACE(idxlut)
1919
extern const uint8_t idxlut[256][8];

avx2/sign.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ static inline void polyvec_matrix_expand_row(polyvecl **row, polyvecl buf[2], co
7070
**************************************************/
7171
int crypto_sign_keypair(uint8_t *pk, uint8_t *sk) {
7272
unsigned int i;
73-
uint8_t seedbuf[3*SEEDBYTES];
73+
uint8_t seedbuf[2*SEEDBYTES + CRHBYTES];
7474
const uint8_t *rho, *rhoprime, *key;
7575
#ifdef DILITHIUM_USE_AES
7676
uint64_t nonce;
@@ -85,10 +85,10 @@ int crypto_sign_keypair(uint8_t *pk, uint8_t *sk) {
8585

8686
/* Get randomness for rho, rhoprime and key */
8787
randombytes(seedbuf, SEEDBYTES);
88-
shake256(seedbuf, 3*SEEDBYTES, seedbuf, SEEDBYTES);
88+
shake256(seedbuf, 2*SEEDBYTES + CRHBYTES, seedbuf, SEEDBYTES);
8989
rho = seedbuf;
9090
rhoprime = seedbuf + SEEDBYTES;
91-
key = seedbuf + 2*SEEDBYTES;
91+
key = seedbuf + SEEDBYTES + CRHBYTES;
9292

9393
/* Store rho, key */
9494
memcpy(pk, rho, SEEDBYTES);

ref/params.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#include "config.h"
55

66
#define SEEDBYTES 32
7-
#define CRHBYTES 48
7+
#define CRHBYTES 64
88
#define N 256
99
#define Q 8380417
1010
#define D 13

ref/poly.c

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -442,31 +442,31 @@ static unsigned int rej_eta(int32_t *a,
442442
* output stream from SHAKE256(seed|nonce) or AES256CTR(seed,nonce).
443443
*
444444
* Arguments: - poly *a: pointer to output polynomial
445-
* - const uint8_t seed[]: byte array with seed of length SEEDBYTES
445+
* - const uint8_t seed[]: byte array with seed of length CRHBYTES
446446
* - uint16_t nonce: 2-byte nonce
447447
**************************************************/
448448
#if ETA == 2
449-
#define POLY_UNIFORM_ETA_NBLOCKS ((136 + STREAM128_BLOCKBYTES - 1)/STREAM128_BLOCKBYTES)
449+
#define POLY_UNIFORM_ETA_NBLOCKS ((136 + STREAM256_BLOCKBYTES - 1)/STREAM256_BLOCKBYTES)
450450
#elif ETA == 4
451-
#define POLY_UNIFORM_ETA_NBLOCKS ((227 + STREAM128_BLOCKBYTES - 1)/STREAM128_BLOCKBYTES)
451+
#define POLY_UNIFORM_ETA_NBLOCKS ((227 + STREAM256_BLOCKBYTES - 1)/STREAM256_BLOCKBYTES)
452452
#endif
453453
void poly_uniform_eta(poly *a,
454-
const uint8_t seed[SEEDBYTES],
454+
const uint8_t seed[CRHBYTES],
455455
uint16_t nonce)
456456
{
457457
unsigned int ctr;
458-
unsigned int buflen = POLY_UNIFORM_ETA_NBLOCKS*STREAM128_BLOCKBYTES;
459-
uint8_t buf[POLY_UNIFORM_ETA_NBLOCKS*STREAM128_BLOCKBYTES];
460-
stream128_state state;
458+
unsigned int buflen = POLY_UNIFORM_ETA_NBLOCKS*STREAM256_BLOCKBYTES;
459+
uint8_t buf[POLY_UNIFORM_ETA_NBLOCKS*STREAM256_BLOCKBYTES];
460+
stream256_state state;
461461

462-
stream128_init(&state, seed, nonce);
463-
stream128_squeezeblocks(buf, POLY_UNIFORM_ETA_NBLOCKS, &state);
462+
stream256_init(&state, seed, nonce);
463+
stream256_squeezeblocks(buf, POLY_UNIFORM_ETA_NBLOCKS, &state);
464464

465465
ctr = rej_eta(a->coeffs, N, buf, buflen);
466466

467467
while(ctr < N) {
468-
stream128_squeezeblocks(buf, 1, &state);
469-
ctr += rej_eta(a->coeffs + ctr, N - ctr, buf, STREAM128_BLOCKBYTES);
468+
stream256_squeezeblocks(buf, 1, &state);
469+
ctr += rej_eta(a->coeffs + ctr, N - ctr, buf, STREAM256_BLOCKBYTES);
470470
}
471471
}
472472

ref/poly.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ void poly_uniform(poly *a,
4646
uint16_t nonce);
4747
#define poly_uniform_eta DILITHIUM_NAMESPACE(poly_uniform_eta)
4848
void poly_uniform_eta(poly *a,
49-
const uint8_t seed[SEEDBYTES],
49+
const uint8_t seed[CRHBYTES],
5050
uint16_t nonce);
5151
#define poly_uniform_gamma1 DILITHIUM_NAMESPACE(poly_uniform_gamma1)
5252
void poly_uniform_gamma1(poly *a,

0 commit comments

Comments
 (0)