Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/external/isc/libsodium/dist/src/libsodium/crypto_core/ed...
details: https://anonhg.NetBSD.org/src/rev/f38bfb30d859
branches: trunk
changeset: 975029:f38bfb30d859
user: riastradh <riastradh%NetBSD.org@localhost>
date: Thu Aug 20 21:20:47 2020 +0000
description:
Split ge25519_scalarmult up in order to reduce stack usage.
diffstat:
sys/external/isc/libsodium/dist/src/libsodium/crypto_core/ed25519/ref10/ed25519_ref10.c | 32 +++++++--
1 files changed, 23 insertions(+), 9 deletions(-)
diffs (59 lines):
diff -r 685cf10e0d3b -r f38bfb30d859 sys/external/isc/libsodium/dist/src/libsodium/crypto_core/ed25519/ref10/ed25519_ref10.c
--- a/sys/external/isc/libsodium/dist/src/libsodium/crypto_core/ed25519/ref10/ed25519_ref10.c Thu Aug 20 21:20:37 2020 +0000
+++ b/sys/external/isc/libsodium/dist/src/libsodium/crypto_core/ed25519/ref10/ed25519_ref10.c Thu Aug 20 21:20:47 2020 +0000
@@ -748,18 +748,11 @@
p is public
*/
-void
-ge25519_scalarmult(ge25519_p3 *h, const unsigned char *a, const ge25519_p3 *p)
+static void __noinline
+ge25519_scalarmult_cache(ge25519_cached pi[static 8], const ge25519_p3 *p)
{
- signed char e[64];
- signed char carry;
- ge25519_p1p1 r;
- ge25519_p2 s;
ge25519_p1p1 t1;
ge25519_p3 p2, p3, p4, pt;
- ge25519_cached pi[8];
- ge25519_cached t;
- int i;
ge25519_p3_to_cached(&pi[1 - 1], p); /* p */
@@ -790,6 +783,18 @@
ge25519_p3_dbl(&t1, &p4);
ge25519_p1p1_to_p3(&pt, &t1);
ge25519_p3_to_cached(&pi[8 - 1], &pt); /* 8p = 2*4p */
+}
+
+static void __noinline
+ge25519_scalarmult_cached(ge25519_p3 *h, const unsigned char *a,
+ const ge25519_p3 *p, const ge25519_cached pi[static 8])
+{
+ signed char e[64];
+ signed char carry;
+ ge25519_p1p1 r;
+ ge25519_p2 s;
+ ge25519_cached t;
+ int i;
for (i = 0; i < 32; ++i) {
e[2 * i + 0] = (a[i] >> 0) & 15;
@@ -831,6 +836,15 @@
ge25519_p1p1_to_p3(h, &r);
}
+void
+ge25519_scalarmult(ge25519_p3 *h, const unsigned char *a, const ge25519_p3 *p)
+{
+ ge25519_cached pi[8];
+
+ ge25519_scalarmult_cache(pi, p);
+ ge25519_scalarmult_cached(h, a, p, pi);
+}
+
/*
h = a * B (with precomputation)
where a = a[0]+256*a[1]+...+256^31 a[31]
Home |
Main Index |
Thread Index |
Old Index