Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Dmitry Baryshkov
nettle
Commits
d6c8f92a
Commit
d6c8f92a
authored
Oct 03, 2014
by
Niels Möller
Browse files
Enable ecc-modinv-test, also with mini-gmp.
parent
5d39ab92
Changes
2
Hide whitespace changes
Inline
Side-by-side
ChangeLog
View file @
d6c8f92a
2014-10-03 Niels Möller <nisse@lysator.liu.se>
* testsuite/ecc-mod-test.c [NETTLE_USE_MINI_GMP]: Enable test.
(ref_mod): Use mpz_
mod and mpz_limbs_copy
, instead of mpn_
tdiv_qr
.
* testsuite/ecc-mod
inv
-test.c [NETTLE_USE_MINI_GMP]: Enable test.
(ref_mod
inv
): Use mpz_
gcdext
, instead of mpn_
gcdext
.
(test_modulo): Replace gmp_fprintf calls by plain fprintf and
mpn_out_str.
* testsuite/ecc-mod-test.c [NETTLE_USE_MINI_GMP]: Enable test.
(ref_mod): Use mpz_mod and mpz_limbs_copy, instead of mpn_tdiv_qr.
(test_modulo): Replace gmp_fprintf calls.
* testsuite/testutils.c (mpn_out_str): New function, needed to
replace uses of gmp_fprintf.
...
...
testsuite/ecc-modinv-test.c
View file @
d6c8f92a
#include
"testutils.h"
#if NETTLE_USE_MINI_GMP
void
test_main
(
void
)
{
SKIP
();
}
#else
/* ! NETTLE_USE_MINI_GMP */
static
int
ref_modinv
(
mp_limb_t
*
rp
,
const
mp_limb_t
*
ap
,
const
mp_limb_t
*
mp
,
mp_size_t
mn
)
{
mp_limb_t
tp
[
4
*
(
mn
+
1
)];
mp_limb_t
*
up
=
tp
;
mp_limb_t
*
vp
=
tp
+
mn
+
1
;
mp_limb_t
*
gp
=
tp
+
2
*
(
mn
+
1
);
mp_limb_t
*
sp
=
tp
+
3
*
(
mn
+
1
);
mp_size_t
gn
,
sn
;
mpz_t
g
,
s
,
a
,
m
;
int
res
;
mpn_copyi
(
up
,
ap
,
mn
);
mpn_copyi
(
vp
,
mp
,
mn
);
gn
=
mpn_gcdext
(
gp
,
sp
,
&
sn
,
up
,
mn
,
vp
,
mn
);
if
(
gn
!=
1
||
gp
[
0
]
!=
1
)
return
0
;
mpz_init
(
g
);
mpz_init
(
s
);
mpz_roinit_n
(
a
,
ap
,
mn
);
mpz_roinit_n
(
m
,
mp
,
mn
);
if
(
sn
<
0
)
mpn_sub
(
sp
,
mp
,
mn
,
sp
,
-
sn
);
else
if
(
sn
<
mn
)
/* Zero-pad. */
mpn_zero
(
sp
+
sn
,
mn
-
sn
);
mpz_gcdext
(
g
,
s
,
NULL
,
a
,
m
);
if
(
mpz_cmp_ui
(
g
,
1
)
==
0
)
{
if
(
mpz_sgn
(
s
)
<
0
)
{
mpz_add
(
s
,
s
,
m
);
ASSERT
(
mpz_sgn
(
s
)
>
0
);
}
mpz_limbs_copy
(
rp
,
s
,
mn
);
res
=
1
;
}
else
res
=
0
;
mpn_copyi
(
rp
,
sp
,
mn
);
return
1
;
mpz_clear
(
g
);
mpz_clear
(
s
);
return
res
;
}
static
int
...
...
@@ -70,10 +66,11 @@ test_modulo (gmp_randstate_t rands, const char *name,
{
fprintf
(
stderr
,
"%s->invert failed for zero input (bit size %u):
\n
"
,
name
,
m
->
bit_size
);
gmp_fprintf
(
stderr
,
"p = %Nx
\n
"
"t = %Nx (bad)
\n
"
,
m
->
m
,
m
->
size
,
ai
,
m
->
size
);
fprintf
(
stderr
,
"p = "
);
mpn_out_str
(
stderr
,
16
,
m
->
m
,
m
->
size
);
fprintf
(
stderr
,
"
\n
t = "
);
mpn_out_str
(
stderr
,
16
,
ai
,
m
->
size
);
fprintf
(
stderr
,
" (bad)
\n
"
);
abort
();
}
...
...
@@ -84,10 +81,12 @@ test_modulo (gmp_randstate_t rands, const char *name,
{
fprintf
(
stderr
,
"%s->invert failed for a = p input (bit size %u):
\n
"
,
name
,
m
->
bit_size
);
gmp_fprintf
(
stderr
,
"p = %Nx
\n
"
"t = %Nx (bad)
\n
"
,
m
->
m
,
m
->
size
,
ai
,
m
->
size
);
fprintf
(
stderr
,
"p = "
);
mpn_out_str
(
stderr
,
16
,
m
->
m
,
m
->
size
);
fprintf
(
stderr
,
"
\n
t = "
);
mpn_out_str
(
stderr
,
16
,
ai
,
m
->
size
);
fprintf
(
stderr
,
" (bad)
\n
"
);
abort
();
}
...
...
@@ -112,13 +111,15 @@ test_modulo (gmp_randstate_t rands, const char *name,
{
fprintf
(
stderr
,
"%s->invert failed (test %u, bit size %u):
\n
"
,
name
,
j
,
m
->
bit_size
);
gmp_fprintf
(
stderr
,
"a = %Zx
\n
"
"p = %Nx
\n
"
"t = %Nx (bad)
\n
"
"r = %Nx
\n
"
,
r
,
m
->
m
,
m
->
size
,
ai
,
m
->
size
,
ref
,
m
->
size
);
fprintf
(
stderr
,
"a = "
);
mpz_out_str
(
stderr
,
16
,
r
);
fprintf
(
stderr
,
"
\n
p = "
);
mpn_out_str
(
stderr
,
16
,
m
->
m
,
m
->
size
);
fprintf
(
stderr
,
"
\n
t = "
);
mpn_out_str
(
stderr
,
16
,
ai
,
m
->
size
);
fprintf
(
stderr
,
" (bad)
\n
r = "
);
mpn_out_str
(
stderr
,
16
,
ref
,
m
->
size
);
abort
();
}
...
...
@@ -145,4 +146,3 @@ test_main (void)
}
gmp_randclear
(
rands
);
}
#endif
/* ! NETTLE_USE_MINI_GMP */
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment