Skip to content

Commit 6f48e06

Browse files
authored
Merge pull request wolfSSL#9647 from SparkiDev/sp_volatile_op_fix
SP volatile op fix
2 parents caa6429 + 37b20fa commit 6f48e06

File tree

7 files changed

+128
-96
lines changed

7 files changed

+128
-96
lines changed

wolfcrypt/src/sp_arm32.c

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -75318,7 +75318,7 @@ static void sp_256_proj_point_dbl_n_8(sp_point_256* p, int i,
7531875318
sp_digit* x;
7531975319
sp_digit* y;
7532075320
sp_digit* z;
75321-
volatile int n = i;
75321+
volatile int n = i - 1;
7532275322

7532375323
x = p->x;
7532475324
y = p->y;
@@ -75330,9 +75330,9 @@ static void sp_256_proj_point_dbl_n_8(sp_point_256* p, int i,
7533075330
sp_256_mont_sqr_8(w, z, p256_mod, p256_mp_mod);
7533175331
sp_256_mont_sqr_8(w, w, p256_mod, p256_mp_mod);
7533275332
#ifndef WOLFSSL_SP_SMALL
75333-
while (--n > 0)
75333+
while (n > 0)
7533475334
#else
75335-
while (--n >= 0)
75335+
while (n >= 0)
7533675336
#endif
7533775337
{
7533875338
/* A = 3*(X^2 - W) */
@@ -75363,6 +75363,7 @@ static void sp_256_proj_point_dbl_n_8(sp_point_256* p, int i,
7536375363
/* y = 2*A*(B - X) - Y^4 */
7536475364
sp_256_mont_mul_8(y, b, a, p256_mod, p256_mp_mod);
7536575365
sp_256_mont_sub_8(y, y, t1, p256_mod);
75366+
n = n - 1;
7536675367
}
7536775368
#ifndef WOLFSSL_SP_SMALL
7536875369
/* A = 3*(X^2 - W) */
@@ -93332,7 +93333,7 @@ static void sp_384_proj_point_dbl_n_12(sp_point_384* p, int i,
9333293333
sp_digit* x;
9333393334
sp_digit* y;
9333493335
sp_digit* z;
93335-
volatile int n = i;
93336+
volatile int n = i - 1;
9333693337

9333793338
x = p->x;
9333893339
y = p->y;
@@ -93344,9 +93345,9 @@ static void sp_384_proj_point_dbl_n_12(sp_point_384* p, int i,
9334493345
sp_384_mont_sqr_12(w, z, p384_mod, p384_mp_mod);
9334593346
sp_384_mont_sqr_12(w, w, p384_mod, p384_mp_mod);
9334693347
#ifndef WOLFSSL_SP_SMALL
93347-
while (--n > 0)
93348+
while (n > 0)
9334893349
#else
93349-
while (--n >= 0)
93350+
while (n >= 0)
9335093351
#endif
9335193352
{
9335293353
/* A = 3*(X^2 - W) */
@@ -93377,6 +93378,7 @@ static void sp_384_proj_point_dbl_n_12(sp_point_384* p, int i,
9337793378
/* y = 2*A*(B - X) - Y^4 */
9337893379
sp_384_mont_mul_12(y, b, a, p384_mod, p384_mp_mod);
9337993380
sp_384_mont_sub_12(y, y, t1, p384_mod);
93381+
n = n - 1;
9338093382
}
9338193383
#ifndef WOLFSSL_SP_SMALL
9338293384
/* A = 3*(X^2 - W) */
@@ -120444,7 +120446,7 @@ static void sp_521_proj_point_dbl_n_17(sp_point_521* p, int i,
120444120446
sp_digit* x;
120445120447
sp_digit* y;
120446120448
sp_digit* z;
120447-
volatile int n = i;
120449+
volatile int n = i - 1;
120448120450

120449120451
x = p->x;
120450120452
y = p->y;
@@ -120456,9 +120458,9 @@ static void sp_521_proj_point_dbl_n_17(sp_point_521* p, int i,
120456120458
sp_521_mont_sqr_17(w, z, p521_mod, p521_mp_mod);
120457120459
sp_521_mont_sqr_17(w, w, p521_mod, p521_mp_mod);
120458120460
#ifndef WOLFSSL_SP_SMALL
120459-
while (--n > 0)
120461+
while (n > 0)
120460120462
#else
120461-
while (--n >= 0)
120463+
while (n >= 0)
120462120464
#endif
120463120465
{
120464120466
/* A = 3*(X^2 - W) */
@@ -120489,6 +120491,7 @@ static void sp_521_proj_point_dbl_n_17(sp_point_521* p, int i,
120489120491
/* y = 2*A*(B - X) - Y^4 */
120490120492
sp_521_mont_mul_17(y, b, a, p521_mod, p521_mp_mod);
120491120493
sp_521_mont_sub_17(y, y, t1, p521_mod);
120494+
n = n - 1;
120492120495
}
120493120496
#ifndef WOLFSSL_SP_SMALL
120494120497
/* A = 3*(X^2 - W) */
@@ -150311,7 +150314,7 @@ static void sp_1024_proj_point_dbl_n_32(sp_point_1024* p, int i,
150311150314
sp_digit* x;
150312150315
sp_digit* y;
150313150316
sp_digit* z;
150314-
volatile int n = i;
150317+
volatile int n = i - 1;
150315150318

150316150319
x = p->x;
150317150320
y = p->y;
@@ -150323,9 +150326,9 @@ static void sp_1024_proj_point_dbl_n_32(sp_point_1024* p, int i,
150323150326
sp_1024_mont_sqr_32(w, z, p1024_mod, p1024_mp_mod);
150324150327
sp_1024_mont_sqr_32(w, w, p1024_mod, p1024_mp_mod);
150325150328
#ifndef WOLFSSL_SP_SMALL
150326-
while (--n > 0)
150329+
while (n > 0)
150327150330
#else
150328-
while (--n >= 0)
150331+
while (n >= 0)
150329150332
#endif
150330150333
{
150331150334
/* A = 3*(X^2 - W) */
@@ -150356,6 +150359,7 @@ static void sp_1024_proj_point_dbl_n_32(sp_point_1024* p, int i,
150356150359
/* y = 2*A*(B - X) - Y^4 */
150357150360
sp_1024_mont_mul_32(y, b, a, p1024_mod, p1024_mp_mod);
150358150361
sp_1024_mont_sub_32(y, y, t1, p1024_mod);
150362+
n = n - 1;
150359150363
}
150360150364
#ifndef WOLFSSL_SP_SMALL
150361150365
/* A = 3*(X^2 - W) */

wolfcrypt/src/sp_arm64.c

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23280,7 +23280,7 @@ static void sp_256_proj_point_dbl_n_4(sp_point_256* p, int i,
2328023280
sp_digit* x;
2328123281
sp_digit* y;
2328223282
sp_digit* z;
23283-
volatile int n = i;
23283+
volatile int n = i - 1;
2328423284

2328523285
x = p->x;
2328623286
y = p->y;
@@ -23292,9 +23292,9 @@ static void sp_256_proj_point_dbl_n_4(sp_point_256* p, int i,
2329223292
sp_256_mont_sqr_4(w, z, p256_mod, p256_mp_mod);
2329323293
sp_256_mont_sqr_4(w, w, p256_mod, p256_mp_mod);
2329423294
#ifndef WOLFSSL_SP_SMALL
23295-
while (--n > 0)
23295+
while (n > 0)
2329623296
#else
23297-
while (--n >= 0)
23297+
while (n >= 0)
2329823298
#endif
2329923299
{
2330023300
/* A = 3*(X^2 - W) */
@@ -23323,6 +23323,7 @@ static void sp_256_proj_point_dbl_n_4(sp_point_256* p, int i,
2332323323
/* y = 2*A*(B - X) - Y^4 */
2332423324
sp_256_mont_mul_4(y, b, a, p256_mod, p256_mp_mod);
2332523325
sp_256_mont_sub_4(y, y, t1, p256_mod);
23326+
n = n - 1;
2332623327
}
2332723328
#ifndef WOLFSSL_SP_SMALL
2332823329
/* A = 3*(X^2 - W) */
@@ -43892,7 +43893,7 @@ static void sp_384_proj_point_dbl_n_6(sp_point_384* p, int i,
4389243893
sp_digit* x;
4389343894
sp_digit* y;
4389443895
sp_digit* z;
43895-
volatile int n = i;
43896+
volatile int n = i - 1;
4389643897

4389743898
x = p->x;
4389843899
y = p->y;
@@ -43904,9 +43905,9 @@ static void sp_384_proj_point_dbl_n_6(sp_point_384* p, int i,
4390443905
sp_384_mont_sqr_6(w, z, p384_mod, p384_mp_mod);
4390543906
sp_384_mont_sqr_6(w, w, p384_mod, p384_mp_mod);
4390643907
#ifndef WOLFSSL_SP_SMALL
43907-
while (--n > 0)
43908+
while (n > 0)
4390843909
#else
43909-
while (--n >= 0)
43910+
while (n >= 0)
4391043911
#endif
4391143912
{
4391243913
/* A = 3*(X^2 - W) */
@@ -43937,6 +43938,7 @@ static void sp_384_proj_point_dbl_n_6(sp_point_384* p, int i,
4393743938
/* y = 2*A*(B - X) - Y^4 */
4393843939
sp_384_mont_mul_6(y, b, a, p384_mod, p384_mp_mod);
4393943940
sp_384_mont_sub_6(y, y, t1, p384_mod);
43941+
n = n - 1;
4394043942
}
4394143943
#ifndef WOLFSSL_SP_SMALL
4394243944
/* A = 3*(X^2 - W) */
@@ -71836,7 +71838,7 @@ static void sp_521_proj_point_dbl_n_9(sp_point_521* p, int i,
7183671838
sp_digit* x;
7183771839
sp_digit* y;
7183871840
sp_digit* z;
71839-
volatile int n = i;
71841+
volatile int n = i - 1;
7184071842

7184171843
x = p->x;
7184271844
y = p->y;
@@ -71848,9 +71850,9 @@ static void sp_521_proj_point_dbl_n_9(sp_point_521* p, int i,
7184871850
sp_521_mont_sqr_9(w, z, p521_mod, p521_mp_mod);
7184971851
sp_521_mont_sqr_9(w, w, p521_mod, p521_mp_mod);
7185071852
#ifndef WOLFSSL_SP_SMALL
71851-
while (--n > 0)
71853+
while (n > 0)
7185271854
#else
71853-
while (--n >= 0)
71855+
while (n >= 0)
7185471856
#endif
7185571857
{
7185671858
/* A = 3*(X^2 - W) */
@@ -71881,6 +71883,7 @@ static void sp_521_proj_point_dbl_n_9(sp_point_521* p, int i,
7188171883
/* y = 2*A*(B - X) - Y^4 */
7188271884
sp_521_mont_mul_9(y, b, a, p521_mod, p521_mp_mod);
7188371885
sp_521_mont_sub_9(y, y, t1, p521_mod);
71886+
n = n - 1;
7188471887
}
7188571888
#ifndef WOLFSSL_SP_SMALL
7188671889
/* A = 3*(X^2 - W) */
@@ -115498,7 +115501,7 @@ static void sp_1024_proj_point_dbl_n_16(sp_point_1024* p, int i,
115498115501
sp_digit* x;
115499115502
sp_digit* y;
115500115503
sp_digit* z;
115501-
volatile int n = i;
115504+
volatile int n = i - 1;
115502115505

115503115506
x = p->x;
115504115507
y = p->y;
@@ -115510,9 +115513,9 @@ static void sp_1024_proj_point_dbl_n_16(sp_point_1024* p, int i,
115510115513
sp_1024_mont_sqr_16(w, z, p1024_mod, p1024_mp_mod);
115511115514
sp_1024_mont_sqr_16(w, w, p1024_mod, p1024_mp_mod);
115512115515
#ifndef WOLFSSL_SP_SMALL
115513-
while (--n > 0)
115516+
while (n > 0)
115514115517
#else
115515-
while (--n >= 0)
115518+
while (n >= 0)
115516115519
#endif
115517115520
{
115518115521
/* A = 3*(X^2 - W) */
@@ -115543,6 +115546,7 @@ static void sp_1024_proj_point_dbl_n_16(sp_point_1024* p, int i,
115543115546
/* y = 2*A*(B - X) - Y^4 */
115544115547
sp_1024_mont_mul_16(y, b, a, p1024_mod, p1024_mp_mod);
115545115548
sp_1024_mont_sub_16(y, y, t1, p1024_mod);
115549+
n = n - 1;
115546115550
}
115547115551
#ifndef WOLFSSL_SP_SMALL
115548115552
/* A = 3*(X^2 - W) */

wolfcrypt/src/sp_armthumb.c

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -100770,7 +100770,7 @@ static void sp_256_proj_point_dbl_n_8(sp_point_256* p, int i,
100770100770
sp_digit* x;
100771100771
sp_digit* y;
100772100772
sp_digit* z;
100773-
volatile int n = i;
100773+
volatile int n = i - 1;
100774100774

100775100775
x = p->x;
100776100776
y = p->y;
@@ -100782,9 +100782,9 @@ static void sp_256_proj_point_dbl_n_8(sp_point_256* p, int i,
100782100782
sp_256_mont_sqr_8(w, z, p256_mod, p256_mp_mod);
100783100783
sp_256_mont_sqr_8(w, w, p256_mod, p256_mp_mod);
100784100784
#ifndef WOLFSSL_SP_SMALL
100785-
while (--n > 0)
100785+
while (n > 0)
100786100786
#else
100787-
while (--n >= 0)
100787+
while (n >= 0)
100788100788
#endif
100789100789
{
100790100790
/* A = 3*(X^2 - W) */
@@ -100815,6 +100815,7 @@ static void sp_256_proj_point_dbl_n_8(sp_point_256* p, int i,
100815100815
/* y = 2*A*(B - X) - Y^4 */
100816100816
sp_256_mont_mul_8(y, b, a, p256_mod, p256_mp_mod);
100817100817
sp_256_mont_sub_8(y, y, t1, p256_mod);
100818+
n = n - 1;
100818100819
}
100819100820
#ifndef WOLFSSL_SP_SMALL
100820100821
/* A = 3*(X^2 - W) */
@@ -111184,7 +111185,7 @@ static void sp_384_proj_point_dbl_n_12(sp_point_384* p, int i,
111184111185
sp_digit* x;
111185111186
sp_digit* y;
111186111187
sp_digit* z;
111187-
volatile int n = i;
111188+
volatile int n = i - 1;
111188111189

111189111190
x = p->x;
111190111191
y = p->y;
@@ -111196,9 +111197,9 @@ static void sp_384_proj_point_dbl_n_12(sp_point_384* p, int i,
111196111197
sp_384_mont_sqr_12(w, z, p384_mod, p384_mp_mod);
111197111198
sp_384_mont_sqr_12(w, w, p384_mod, p384_mp_mod);
111198111199
#ifndef WOLFSSL_SP_SMALL
111199-
while (--n > 0)
111200+
while (n > 0)
111200111201
#else
111201-
while (--n >= 0)
111202+
while (n >= 0)
111202111203
#endif
111203111204
{
111204111205
/* A = 3*(X^2 - W) */
@@ -111229,6 +111230,7 @@ static void sp_384_proj_point_dbl_n_12(sp_point_384* p, int i,
111229111230
/* y = 2*A*(B - X) - Y^4 */
111230111231
sp_384_mont_mul_12(y, b, a, p384_mod, p384_mp_mod);
111231111232
sp_384_mont_sub_12(y, y, t1, p384_mod);
111233+
n = n - 1;
111232111234
}
111233111235
#ifndef WOLFSSL_SP_SMALL
111234111236
/* A = 3*(X^2 - W) */
@@ -124383,7 +124385,7 @@ static void sp_521_proj_point_dbl_n_17(sp_point_521* p, int i,
124383124385
sp_digit* x;
124384124386
sp_digit* y;
124385124387
sp_digit* z;
124386-
volatile int n = i;
124388+
volatile int n = i - 1;
124387124389

124388124390
x = p->x;
124389124391
y = p->y;
@@ -124395,9 +124397,9 @@ static void sp_521_proj_point_dbl_n_17(sp_point_521* p, int i,
124395124397
sp_521_mont_sqr_17(w, z, p521_mod, p521_mp_mod);
124396124398
sp_521_mont_sqr_17(w, w, p521_mod, p521_mp_mod);
124397124399
#ifndef WOLFSSL_SP_SMALL
124398-
while (--n > 0)
124400+
while (n > 0)
124399124401
#else
124400-
while (--n >= 0)
124402+
while (n >= 0)
124401124403
#endif
124402124404
{
124403124405
/* A = 3*(X^2 - W) */
@@ -124428,6 +124430,7 @@ static void sp_521_proj_point_dbl_n_17(sp_point_521* p, int i,
124428124430
/* y = 2*A*(B - X) - Y^4 */
124429124431
sp_521_mont_mul_17(y, b, a, p521_mod, p521_mp_mod);
124430124432
sp_521_mont_sub_17(y, y, t1, p521_mod);
124433+
n = n - 1;
124431124434
}
124432124435
#ifndef WOLFSSL_SP_SMALL
124433124436
/* A = 3*(X^2 - W) */
@@ -208692,7 +208695,7 @@ static void sp_1024_proj_point_dbl_n_32(sp_point_1024* p, int i,
208692208695
sp_digit* x;
208693208696
sp_digit* y;
208694208697
sp_digit* z;
208695-
volatile int n = i;
208698+
volatile int n = i - 1;
208696208699

208697208700
x = p->x;
208698208701
y = p->y;
@@ -208704,9 +208707,9 @@ static void sp_1024_proj_point_dbl_n_32(sp_point_1024* p, int i,
208704208707
sp_1024_mont_sqr_32(w, z, p1024_mod, p1024_mp_mod);
208705208708
sp_1024_mont_sqr_32(w, w, p1024_mod, p1024_mp_mod);
208706208709
#ifndef WOLFSSL_SP_SMALL
208707-
while (--n > 0)
208710+
while (n > 0)
208708208711
#else
208709-
while (--n >= 0)
208712+
while (n >= 0)
208710208713
#endif
208711208714
{
208712208715
/* A = 3*(X^2 - W) */
@@ -208737,6 +208740,7 @@ static void sp_1024_proj_point_dbl_n_32(sp_point_1024* p, int i,
208737208740
/* y = 2*A*(B - X) - Y^4 */
208738208741
sp_1024_mont_mul_32(y, b, a, p1024_mod, p1024_mp_mod);
208739208742
sp_1024_mont_sub_32(y, y, t1, p1024_mod);
208743+
n = n - 1;
208740208744
}
208741208745
#ifndef WOLFSSL_SP_SMALL
208742208746
/* A = 3*(X^2 - W) */

0 commit comments

Comments
 (0)