Ulf Möller
15156cce0e
bn_part_sub_word prototype.
2000-12-08 19:10:33 +00:00
Bodo Möller
8dea52fa42
Fix some things that look like bugs.
...
One problem that looked like a problem in bn_recp.c at first turned
out to be a BN_mul bug. An example is given in bn_recp.c; finding
the bug responsible for this is left as an exercise.
2000-12-07 22:06:09 +00:00
Bodo Möller
f7356b677b
TEST_MUL and TEST_SQR added.
2000-12-07 11:11:10 +00:00
Bodo Möller
80d89e6a6a
Sign-related fixes (and tests).
...
BN_mod_exp_mont does not work properly yet if modulus m
is negative (we want computations to be carried out
modulo |m|).
2000-12-07 08:48:58 +00:00
Bodo Möller
bc5f2740d2
Move 'q->neg = 0' to those places where it is needed
...
(just in cases someone uses a negative modulus)
2000-12-07 07:55:26 +00:00
Bodo Möller
aa66eba7c8
BN_mod_sqrt documentation/comment
2000-12-06 21:33:58 +00:00
Ulf Möller
3bb4736289
remove a comment that shouldn't have been there any more
2000-12-06 16:30:23 +00:00
Bodo Möller
bac685417a
Faster BN_mod_sqrt algorithm for p == 5 (8).
2000-12-06 12:25:33 +00:00
Bodo Möller
0a52d38b31
Use bc's "print" feature whenever it is available,
...
not just on certain platforms.
2000-12-06 10:32:55 +00:00
Ulf Möller
a6576c56dd
remove useless instruction
2000-12-06 04:48:50 +00:00
Ulf Möller
240f516939
Intel assembler version for bn_sub_part_words(). I haven't got
...
reliable timings yet, please try it out!
2000-12-06 04:16:38 +00:00
Ulf Möller
aecb0b018f
test_mod_mul is useful, let's run it more often.
2000-12-06 04:14:30 +00:00
Ulf Möller
90e7ce363a
Use assert as in the rest of the BN library.
2000-12-05 02:00:40 +00:00
Richard Levitte
6a2347ee45
Remove the last bn_wexpand()s that made us break constness. Of
...
course, that means we need to handle the cases where the two arrays to
bn_mul_recursive() and bn_mul_part_recursive() differ in size.
I haven't yet changed the comments that describe bn_mul_recursive()
and bn_mul_part_recursive(). I want this to be tested by more people
before I consider this change final. Please test away!
2000-12-04 17:11:59 +00:00
Bodo Möller
e5164b7041
Change error message to "bignum too long"
2000-12-04 09:24:54 +00:00
Bodo Möller
addb309ad6
include <limits.h>
2000-12-03 09:55:08 +00:00
Bodo Möller
152a689cf9
Don't allow BIGNUMs to become so large that computations with dmax
...
might overflow.
2000-12-03 09:39:04 +00:00
Richard Levitte
c21c35e6a4
Add a comment to explain the purpose of bn_cmp_part_words().
2000-12-02 21:16:13 +00:00
Ulf Möller
b26f84cbbd
last commit was wrong. Now it works. :)
2000-12-02 20:51:47 +00:00
Ulf Möller
0dba0613ea
argl
2000-12-02 19:34:42 +00:00
Ulf Möller
ea1b7fe6d4
forgot to remove the loop variable
2000-12-02 16:20:04 +00:00
Ulf Möller
db88223baa
Loops like this one:
...
if (bp == NULL)
for (j=0; j<10000; j++)
BN_add(&c,&a,&b);
seem to be pretty useless, and bp never is NULL anyway.
2000-12-02 16:13:27 +00:00
Ulf Möller
111482cf2e
New function BN_bntest_rand() to detect more BN library bugs.
...
The bn_cmp_part_words bug was only caught in the BN_mod_mul() test,
not in the BN_mul() test, so apparently the choice of parameters in
some cases is bad.
2000-12-02 07:32:57 +00:00
Ulf Möller
52a1bab2d9
Fix bn_cmp_part_words() and move it to bn_lib.c.
2000-12-02 07:28:43 +00:00
Bodo Möller
5a12df5c40
functionality for BN_mod_sqrt timings
2000-12-01 09:41:21 +00:00
Bodo Möller
b5a25a430a
"make depend"
2000-12-01 08:48:42 +00:00
Bodo Möller
12cfcc128c
Fix the recently introduced test that checks if the result is 0
2000-11-30 22:58:27 +00:00
Bodo Möller
fc2e05c2d5
Fix BN_rshift, which caused lots of trouble.
2000-11-30 22:34:57 +00:00
Bodo Möller
b2993bdea1
Remove randomness from the test. These constants give me a segment
...
violation in test_kron on a 32 bit system.
2000-11-30 21:03:13 +00:00
Bodo Möller
470fa98f8a
BN_mod_exp(r,a,p,m,ctx) should not be called with r == p.
...
But even if this is avoided, there are still segmentation violations
(during one of the BN_free()s at the end of test_kron
in some cases, in other cases during BN_kronecker, or
later in BN_sqrt; choosing a different exponentiation
algorithm in bntest.c appears to influence when the SIGSEGV
takes place).
2000-11-30 20:03:24 +00:00
Bodo Möller
de6e207db6
It's "#elif", not "#elsif".
2000-11-30 19:35:51 +00:00
Bodo Möller
db5bda670f
Changes to Lenka's Montgomery implementation.
...
Submitted by: Lenka Fibikova
2000-11-30 17:35:17 +00:00
Bodo Möller
19cda70045
Corrections to the comments in BN_mod_inverse.
2000-11-30 12:53:53 +00:00
Bodo Möller
04ca16890b
BN_mod_exp problems ...
2000-11-30 11:47:04 +00:00
Bodo Möller
25439b76ad
Move reduction step from BN_mod_exp to BN_mod_exp_mont_word.
...
Fix BN_mod_exp_simple for a==0 (mod m).
Skip useless round in BN_mod_sqrt (1 is always a square, no need
to test BN_kronecker for it).
2000-11-30 09:45:26 +00:00
Bodo Möller
ac445acf69
bn_modfs.c is no longer needed, a BN_sqrt implementation
...
exists in bn_sqrt.c now
2000-11-30 00:43:41 +00:00
Bodo Möller
77ac92d00a
Fix bntest.c problem -- one of the primes got lost
2000-11-30 00:37:49 +00:00
Bodo Möller
73c2522c7c
Handle special cases correctly in exponentation functions.
...
test_bn still fails in the BN_sqrt test because
small primes appear to turn into zero for no
obvious reason, leading to "div by zero" errors.
2000-11-30 00:33:18 +00:00
Bodo Möller
cd2eebfd64
BN_sqrt
2000-11-30 00:18:19 +00:00
Bodo Möller
01e62900c7
BN_legendre is no longer needed now that OpenSSL has BN_kronecker.
2000-11-29 19:59:59 +00:00
Bodo Möller
eb1f1b0a34
Fix BN_kronecker so that it works correctly if 'a' is negative
...
(we need the two's complement of BN_lsw then).
2000-11-29 19:26:33 +00:00
Bodo Möller
14697d9d6d
BN_to_montgomery expects its inputs to be in the interval 0 .. modulus-1,
...
so we have to reduce the random numbers used in test_mont.
Before this change, test_mont failed in [debug-]solaris-sparcv9-gcc
configurations ("Montgomery multiplication test failed!" because
the multiplication result obtained with Montgomery multiplication
differed from the result obtained by BN_mod_mul).
Substituing the old version of bn_gcd.c (BN_mod_inverse) did not avoid
the problem.
The strange thing is that it I did not observe any problems
when using debug-solaris-sparcv8-gcc and solaris-sparcv9-cc,
as well as when compiling OpenSSL 0.9.6 in the solaric-sparcv9-gcc
configuration on the same system.
2000-11-29 18:08:24 +00:00
Bodo Möller
429b8162c6
add missing braces
2000-11-29 16:43:03 +00:00
Bodo Möller
03a0848922
Fix warnings in expspeed.c (but the segmentation fault remains)
...
Improve readability of bn_shift.c.
Add comment in bn_lib.c (why zero data between top and max?)
Change bntest.c output for BN_kronecker test
2000-11-29 13:40:08 +00:00
Bodo Möller
9161672950
BN_bin2bn did *not* contain an off-by-one error;
...
I'm still investigating what caused the segementation fault
(maybe "make clean; make" will cure it ...).
But BN_bin2bn should always reset ret->neg.
2000-11-29 12:53:41 +00:00
Bodo Möller
a08bcccc67
Expand expspeed.c to make BN_kronecker timings.
...
This caused a segmentation fault in calls to malloc, so I cleaned up
bn_lib.c a little so that it is easier to see what is going on.
The bug turned out to be an off-by-one error in BN_bin2bn.
2000-11-29 12:32:10 +00:00
Bodo Möller
bdec3c5323
Implement BN_kronecker test.
...
Modify "CHANGES" entry for BN_mod_inverse (it's not just avoiding BN_div
that increases performance, avoiding BN_mul also helps)
2000-11-29 11:06:50 +00:00
Bodo Möller
b6cafbd7d8
Make BN_mod_inverse a little faster
2000-11-29 09:57:13 +00:00
Bodo Möller
499e167fda
Improve BN_mod_inverse performance.
...
Get the BN_mod_exp_mont bugfix (for handling negative inputs) correct
this time.
2000-11-29 09:41:19 +00:00
Richard Levitte
0135e33511
Copy and paste error... bn_add_part_words() should of course call
...
bn_add_words(), not bn_sub_words()...
2000-11-29 09:36:48 +00:00