commit 927f0d473ddb27bc4d619f17bbf7f5adcdc0e7d0
parent 18c0f09ae785b333426793029e4226e06a236f7e
Author: Cedric <cedric.zwahlen@students.bfh.ch>
Date: Thu, 23 Nov 2023 14:30:50 +0100
Change gmp to use static memory (no malloc)
It works, but not very polished
Diffstat:
6 files changed, 45 insertions(+), 55 deletions(-)
diff --git a/source/gmp.c b/source/gmp.c
@@ -333,7 +333,7 @@ gmp_default_realloc (void *old, size_t unused_old_size, size_t new_size)
static void
gmp_default_free (void *p, size_t unused_size)
{
- free (p);
+ //free (p);
}
static void * (*gmp_allocate_func) (size_t) = gmp_default_alloc;
@@ -1445,7 +1445,7 @@ mpz_init (mpz_t r)
r->_mp_alloc = 0;
r->_mp_size = 0;
- r->_mp_d = (mp_ptr) &dummy_limb;
+// r->_mp_d = (mp_ptr) &dummy_limb;
}
/* The utility of this function is a bit limited, since many functions
@@ -1460,7 +1460,7 @@ mpz_init2 (mpz_t r, mp_bitcnt_t bits)
r->_mp_alloc = rn;
r->_mp_size = 0;
- r->_mp_d = gmp_alloc_limbs (rn);
+ // r->_mp_d = gmp_alloc_limbs (rn);
}
void
@@ -1475,11 +1475,11 @@ mpz_realloc (mpz_t r, mp_size_t size)
{
size = GMP_MAX (size, 1);
- if (r->_mp_alloc)
- r->_mp_d = gmp_realloc_limbs (r->_mp_d, r->_mp_alloc, size);
- else
- r->_mp_d = gmp_alloc_limbs (size);
- r->_mp_alloc = size;
+ if (r->_mp_alloc) {}
+ // r->_mp_d = gmp_realloc_limbs (r->_mp_d, r->_mp_alloc, size);
+ else {}
+ // r->_mp_d = gmp_alloc_limbs (size);
+ //r->_mp_alloc = size;
if (GMP_ABS (r->_mp_size) > size)
r->_mp_size = 0;
@@ -1702,7 +1702,7 @@ static mpz_srcptr
mpz_roinit_normal_n (mpz_t x, mp_srcptr xp, mp_size_t xs)
{
x->_mp_alloc = 0;
- x->_mp_d = (mp_ptr) xp;
+ //x->_mp_d = (mp_ptr) xp;
x->_mp_size = xs;
return x;
}
@@ -1957,8 +1957,16 @@ mpz_neg (mpz_t r, const mpz_t u)
void
mpz_swap (mpz_t u, mpz_t v)
{
- MP_SIZE_T_SWAP (u->_mp_alloc, v->_mp_alloc);
- MPN_PTR_SWAP (u->_mp_d, u->_mp_size, v->_mp_d, v->_mp_size);
+ //MP_SIZE_T_SWAP (u->_mp_alloc, v->_mp_alloc);
+ //MPN_PTR_SWAP (u->_mp_d, u->_mp_size, v->_mp_d, v->_mp_size);
+
+ mpz_t temp;
+ mpz_init(temp);
+
+ *temp = *u;
+ *u = *v;
+ *v = *temp;
+
}
diff --git a/source/gmp.h b/source/gmp.h
@@ -79,7 +79,10 @@ typedef struct
int _mp_size; /* abs(_mp_size) is the number of limbs the
last field points to. If _mp_size is
negative this is a negative number. */
- mp_limb_t *_mp_d; /* Pointer to the limbs. */
+ //mp_limb_t *_mp_d; /* Pointer to the limbs. */
+
+ mp_limb_t _mp_d[256];
+
} __mpz_struct;
typedef __mpz_struct mpz_t[1];
diff --git a/source/lib-gpu-verify.c b/source/lib-gpu-verify.c
@@ -15,9 +15,9 @@ int main(int argc, char** argv)
//mont_go(res,"13", "0F", "C7",16);
- mont_go(res, "5BD6158BDE0AC0655B6FCEA57994011D18B6B3C9E5FF75C45FC1E5EC2C1F26D6AB8547A17C0BC15D40F4346CFE74CF4EB417E6850D45C3B49E9389DAF400BC5E5B3F5D8E1E45A23DD042A87E82703209F9EA9808A002FEC00C96A5F0D9B7673B4B0A224438D81C0A9CEAD0DD22802B409230072768E73688D63EAB1C9BC242FAEDCFE0C8478B38254BAAC07AD6F82A27A0C3893FCB604BB57158F9125027AECC91D55B364B5C2BB9FE07FB6AB69F5A65112A2B7D5A805CA9B2C1CB75D315DE345BA68100DD5E46FA3BA54B614C298E60EBAF95CEC738DA2513736ECE051D153CECAC29F4A432A5FEB287E2A1B8C4640C58FF9E9E7DB6889E4865D1F1C8CF4E47", "010001", "00BB5175E55C2F1BBAE52B0C1225F43385FF54B3BFEA88B42B21044328815B8742E303C843ABE76D147861AE92D563592EFD748BF2E5BE4D76793FB32FCF6B38F755D408D114C9DF89B3FAA77EDF0C9358AC3BC23C90CDAA8337927A3530DCF2AD6EFC023C96A7932F8A7935B9B3F5C84668B41FB39059A1B723A40D59A7B1BD03F56933D641409F2A49E614BBAA9F2573ED24899840585B73329A01071793332BA92A0C9033D7004B45FD01C3A850125FA2E4A40818F8E233B7B7595ABAB04B84AE88E4F7B516359EAB7C285F399A3EFF467113DDBDB17981F2F4F2DE405BA18863046570C1621AD9446CE8A3884893CEF50933CB60053B6862E2443CC8554121", 16);
+ mont_go(res, "5BD6158BDE0AC0655B6FCEA57994011D18B6B3C9E5FF75C45FC1E5EC2C1F26D6AB8547A17C0BC15D40F4346CFE74CF4EB417E6850D45C3B49E9389DAF400BC5E5B3F5D8E1E45A23DD042A87E82703209F9EA9808A002FEC00C96A5F0D9B7673B4B0A224438D81C0A9CEAD0DD22802B409230072768E73688D63EAB1C9BC242FAEDCFE0C8478B38254BAAC07AD6F82A27A0C3893FCB604BB57158F9125027AECC91D55B364B5C2BB9FE07FB6AB69F5A65112A2B7D5A805CA9B2C1CB75D315DE345BA68100DD5E46FA3BA54B614C298E60EBAF95CEC738DA2513736ECE051D153CECAC29F4A432A5FEB287E2A1B8C4640C58FF9E9E7DB6889E4865D1F1C8CF4E47", "010001", "00BB5175E55C2F1BBAE52B0C1225F43385FF54B3BFEA88B42B21044328815B8742E303C843ABE76D147861AE92D563592EFD748BF2E5BE4D76793FB32FCF6B38F755D408D114C9DF89B3FAA77EDF0C9358AC3BC23C90CDAA8337927A3530DCF2AD6EFC023C96A7932F8A7935B9B3F5C84668B41FB39059A1B723A40D59A7B1BD03F56933D641409F2A49E614BBAA9F2573ED24899840585B73329A01071793332BA92A0C9033D7004B45FD01C3A850125FA2E4A40818F8E233B7B7595ABAB04B84AE88E4F7B516359EAB7C285F399A3EFF467113DDBDB17981F2F4F2DE405BA18863046570C1621AD9446CE8A3884893CEF50933CB60053B6862E2443CC8554121", 16);
- // mont_go(res, "13", "0F", "31");
+ //mont_go(res, "13", "05", "31",10);
char str[2048];
diff --git a/source/montgomery.c b/source/montgomery.c
@@ -137,11 +137,6 @@ void mont_prepare(mpz_t b, mpz_t e, mpz_t m,
// calculate r, which must be larger than the modulo and also a power of 2
-
- // MARK: in fact, r should be 2^64 for 2048 bit ?
-
-
-
mpz_t one, oo; // some helper variables
mpz_init_set_si(one,1);
mpz_init_set_si(oo,0);
diff --git a/xcode/lib-gpu-verify.xcodeproj/project.xcworkspace/xcuserdata/cedriczwahlen.xcuserdatad/UserInterfaceState.xcuserstate b/xcode/lib-gpu-verify.xcodeproj/project.xcworkspace/xcuserdata/cedriczwahlen.xcuserdatad/UserInterfaceState.xcuserstate
Binary files differ.
diff --git a/xcode/lib-gpu-verify.xcodeproj/xcuserdata/cedriczwahlen.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/xcode/lib-gpu-verify.xcodeproj/xcuserdata/cedriczwahlen.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
@@ -1199,8 +1199,8 @@
filePath = "../source/montgomery.c"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
- startingLineNumber = "185"
- endingLineNumber = "185"
+ startingLineNumber = "180"
+ endingLineNumber = "180"
landmarkName = "mont_prepare(b, e, m, r, r_1, ni, M, x)"
landmarkType = "9">
<Locations>
@@ -2106,8 +2106,8 @@
filePath = "../source/montgomery.c"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
- startingLineNumber = "210"
- endingLineNumber = "210"
+ startingLineNumber = "205"
+ endingLineNumber = "205"
landmarkName = "mont_modexp(ret, a, e, M, n, ni, r, r_1)"
landmarkType = "9">
<Locations>
@@ -2541,8 +2541,8 @@
filePath = "../source/montgomery.c"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
- startingLineNumber = "166"
- endingLineNumber = "166"
+ startingLineNumber = "161"
+ endingLineNumber = "161"
landmarkName = "mont_prepare(b, e, m, r, r_1, ni, M, x)"
landmarkType = "9">
<Locations>
@@ -2589,8 +2589,8 @@
filePath = "../source/montgomery.c"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
- startingLineNumber = "158"
- endingLineNumber = "158"
+ startingLineNumber = "153"
+ endingLineNumber = "153"
landmarkName = "mont_prepare(b, e, m, r, r_1, ni, M, x)"
landmarkType = "9">
<Locations>
@@ -2653,8 +2653,8 @@
filePath = "../source/montgomery.c"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
- startingLineNumber = "189"
- endingLineNumber = "189"
+ startingLineNumber = "184"
+ endingLineNumber = "184"
landmarkName = "mont_modexp(ret, a, e, M, n, ni, r, r_1)"
landmarkType = "9">
<Locations>
@@ -2701,8 +2701,8 @@
filePath = "../source/montgomery.c"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
- startingLineNumber = "281"
- endingLineNumber = "281"
+ startingLineNumber = "276"
+ endingLineNumber = "276"
landmarkName = "mont_product(ret, a, b, r, r_1, n, ni)"
landmarkType = "9">
</BreakpointContent>
@@ -2717,8 +2717,8 @@
filePath = "../source/montgomery.c"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
- startingLineNumber = "203"
- endingLineNumber = "203"
+ startingLineNumber = "198"
+ endingLineNumber = "198"
landmarkName = "mont_modexp(ret, a, e, M, n, ni, r, r_1)"
landmarkType = "9">
</BreakpointContent>
@@ -2733,8 +2733,8 @@
filePath = "../source/montgomery.c"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
- startingLineNumber = "242"
- endingLineNumber = "242"
+ startingLineNumber = "237"
+ endingLineNumber = "237"
landmarkName = "mont_product(ret, a, b, r, r_1, n, ni)"
landmarkType = "9">
<Locations>
@@ -2789,22 +2789,6 @@
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
- uuid = "2B9576ED-05C4-47F0-A25F-4A84A7CDB9E4"
- shouldBeEnabled = "No"
- ignoreCount = "0"
- continueAfterRunningActions = "No"
- filePath = "../source/montgomery.c"
- startingColumnNumber = "9223372036854775807"
- endingColumnNumber = "9223372036854775807"
- startingLineNumber = "145"
- endingLineNumber = "145"
- landmarkName = "mont_prepare(b, e, m, r, r_1, ni, M, x)"
- landmarkType = "9">
- </BreakpointContent>
- </BreakpointProxy>
- <BreakpointProxy
- BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
- <BreakpointContent
uuid = "F04A400B-ECC0-4FC0-BDB1-F85652929E04"
shouldBeEnabled = "No"
ignoreCount = "0"
@@ -2812,8 +2796,8 @@
filePath = "../source/montgomery.c"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
- startingLineNumber = "288"
- endingLineNumber = "288"
+ startingLineNumber = "283"
+ endingLineNumber = "283"
landmarkName = "mont_mulmod(res, a, b, mod)"
landmarkType = "9">
</BreakpointContent>
@@ -2828,8 +2812,8 @@
filePath = "../source/montgomery.c"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
- startingLineNumber = "256"
- endingLineNumber = "256"
+ startingLineNumber = "251"
+ endingLineNumber = "251"
landmarkName = "mont_product(ret, a, b, r, r_1, n, ni)"
landmarkType = "9">
<Locations>