libgpuverify

Signature verification on GPUs (WiP)
Log | Files | Refs | README | LICENSE

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:
Msource/gmp.c | 30+++++++++++++++++++-----------
Msource/gmp.h | 5++++-
Msource/lib-gpu-verify.c | 4++--
Msource/montgomery.c | 5-----
Mxcode/lib-gpu-verify.xcodeproj/project.xcworkspace/xcuserdata/cedriczwahlen.xcuserdatad/UserInterfaceState.xcuserstate | 0
Mxcode/lib-gpu-verify.xcodeproj/xcuserdata/cedriczwahlen.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist | 56++++++++++++++++++++------------------------------------
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>