Skip to content

Commit b094006

Browse files
Merge pull request #120 from formosa-crypto/fix/keccak_spill
fix keccak ref1 remove spill
2 parents 8baa43f + 1082339 commit b094006

File tree

2 files changed

+29
-4
lines changed

2 files changed

+29
-4
lines changed

src/common/keccak/keccak1600/amd64/ref1/keccakf1600.jinc

+1-4
Original file line numberDiff line numberDiff line change
@@ -130,23 +130,20 @@ inline fn __round_ref1(reg ptr u64[25] e a, reg u64 rc) -> reg ptr u64[25]
130130
inline fn __keccakf1600_ref1(reg ptr u64[25] a) -> reg ptr u64[25]
131131
{
132132
reg ptr u64[24] RC;
133-
stack ptr u64[24] s_RC;
134133
stack u64[25] s_e;
135134
reg ptr u64[25] e;
135+
136136
reg u64 c rc;
137137

138138
RC = KECCAK1600_RC;
139-
s_RC = RC;
140139
e = s_e;
141140

142141
c = 0;
143142
while (c < KECCAK_ROUNDS - 1)
144143
{
145-
RC = s_RC;
146144
rc = RC[(int) c];
147145
e = __round_ref1(e, a, rc);
148146

149-
RC = s_RC;
150147
rc = RC[(int) c + 1];
151148
a = __round_ref1(a, e, rc);
152149

src/crypto_kem/kyber/kyber768/amd64/ref/indcpa.jinc

+28
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,9 @@ fn __indcpa_enc(stack u64 sctp, reg ptr u8[32] msgp, reg u64 pkp, reg ptr u8[KYB
9898
reg u64 ctp;
9999
reg u16 t;
100100
reg u8 nonce;
101+
stack ptr u8[KYBER_SYMBYTES] noiseseed_s;
102+
103+
noiseseed_s = noiseseed;
101104

102105
pkpv = __polyvec_frombytes(pkp);
103106

@@ -116,20 +119,31 @@ fn __indcpa_enc(stack u64 sctp, reg ptr u8[32] msgp, reg u64 pkp, reg ptr u8[KYB
116119

117120
aat = __gen_matrix(publicseed, 1);
118121

122+
noiseseed = noiseseed_s;
119123
nonce = 0;
120124
sp[0:KYBER_N] = _poly_getnoise(sp[0:KYBER_N], noiseseed, nonce);
125+
126+
noiseseed = noiseseed_s;
121127
nonce = 1;
122128
sp[KYBER_N:KYBER_N] = _poly_getnoise(sp[KYBER_N:KYBER_N], noiseseed, nonce);
129+
130+
noiseseed = noiseseed_s;
123131
nonce = 2;
124132
sp[2*KYBER_N:KYBER_N] = _poly_getnoise(sp[2*KYBER_N:KYBER_N], noiseseed, nonce);
125133

134+
noiseseed = noiseseed_s;
126135
nonce = 3;
127136
ep[0:KYBER_N] = _poly_getnoise(ep[0:KYBER_N], noiseseed, nonce);
137+
138+
noiseseed = noiseseed_s;
128139
nonce = 4;
129140
ep[KYBER_N:KYBER_N] = _poly_getnoise(ep[KYBER_N:KYBER_N], noiseseed, nonce);
141+
142+
noiseseed = noiseseed_s;
130143
nonce = 5;
131144
ep[2*KYBER_N:KYBER_N] = _poly_getnoise(ep[2*KYBER_N:KYBER_N], noiseseed, nonce);
132145

146+
noiseseed = noiseseed_s;
133147
nonce = 6;
134148
epp = _poly_getnoise(epp, noiseseed, nonce);
135149

@@ -167,6 +181,9 @@ fn __iindcpa_enc(reg ptr u8[KYBER_CT_LEN] ctp, reg ptr u8[32] msgp, reg u64 pkp,
167181
reg u16 t;
168182
reg u8 nonce;
169183
stack ptr u8[KYBER_CT_LEN] sctp;
184+
stack ptr u8[KYBER_SYMBYTES] noiseseed_s;
185+
186+
noiseseed_s = noiseseed;
170187

171188
sctp = ctp;
172189

@@ -187,20 +204,31 @@ fn __iindcpa_enc(reg ptr u8[KYBER_CT_LEN] ctp, reg ptr u8[32] msgp, reg u64 pkp,
187204

188205
aat = __gen_matrix(publicseed, 1);
189206

207+
noiseseed = noiseseed_s;
190208
nonce = 0;
191209
sp[0:KYBER_N] = _poly_getnoise(sp[0:KYBER_N], noiseseed, nonce);
210+
211+
noiseseed = noiseseed_s;
192212
nonce = 1;
193213
sp[KYBER_N:KYBER_N] = _poly_getnoise(sp[KYBER_N:KYBER_N], noiseseed, nonce);
214+
215+
noiseseed = noiseseed_s;
194216
nonce = 2;
195217
sp[2*KYBER_N:KYBER_N] = _poly_getnoise(sp[2*KYBER_N:KYBER_N], noiseseed, nonce);
196218

219+
noiseseed = noiseseed_s;
197220
nonce = 3;
198221
ep[0:KYBER_N] = _poly_getnoise(ep[0:KYBER_N], noiseseed, nonce);
222+
223+
noiseseed = noiseseed_s;
199224
nonce = 4;
200225
ep[KYBER_N:KYBER_N] = _poly_getnoise(ep[KYBER_N:KYBER_N], noiseseed, nonce);
226+
227+
noiseseed = noiseseed_s;
201228
nonce = 5;
202229
ep[2*KYBER_N:KYBER_N] = _poly_getnoise(ep[2*KYBER_N:KYBER_N], noiseseed, nonce);
203230

231+
noiseseed = noiseseed_s;
204232
nonce = 6;
205233
epp = _poly_getnoise(epp, noiseseed, nonce);
206234

0 commit comments

Comments
 (0)