Steffen Jaeckel
ec7f25200f
add fp_rand()
...
it's a port of the function in libtommath
2014-08-14 21:19:14 +02:00
Steffen Jaeckel
56438df4cf
test/mtest/stest: improve a bit
...
fix compiler warnings
make internal buffer size dependant on its possible size
fix return values
2014-08-14 21:18:23 +02:00
Steffen Jaeckel
0b1ad14d7b
makefile: rework a bit
2014-08-14 21:17:11 +02:00
Steffen Jaeckel
03334b30b4
mont: make INNERMUL register clobber list equal to the 64bit version
2014-08-14 21:17:11 +02:00
Steffen Jaeckel
14bb3e83ca
gen.pl: update to current directory structure
2014-08-14 21:17:11 +02:00
Steffen Jaeckel
ec6c224b09
fix sqr_comba compiler warnings
2014-08-11 17:54:09 +02:00
Steffen Jaeckel
72fe8e48ba
montgomery reduce: change #ifdef
...
as INNERMUL8 is only defined where it is available, simply check if it's
defined and don't check again for the arch
2014-07-20 16:08:35 +02:00
Steffen Jaeckel
06ef0be491
tfm.h: add missing prototype of fp_radix_size()
2014-06-21 13:24:22 +02:00
Steffen Jaeckel
7882b0370d
ed1a1e90e9
was not only a x86-64 problem
2014-06-21 13:24:03 +02:00
Steffen Jaeckel
60cf64919f
fp_read_radix: port modifications from libtommath
2014-06-15 18:35:31 +02:00
Steffen Jaeckel
74df3d9970
demo/stest: print ident string
2014-06-15 18:34:15 +02:00
Steffen Jaeckel
1e129bf61e
demo/test: enable montogomery and prime tests per default
2014-06-14 18:17:47 +02:00
Steffen Jaeckel
06e1cd7216
fix compiler warning
2014-06-14 17:39:18 +02:00
Steffen Jaeckel
c6b1b8e2f1
fix ulong64 typedef that led to broken builds for several platforms
...
x86_64-w64-mingw32 and 32Bit mode on 64Bit system
x86_64-w64-mingw32-gcc
'gcc -m32'
'gcc -mx32'
2014-06-14 17:39:10 +02:00
Steffen Jaeckel
9671aa83e1
update makefile to be able to define a target platform prefix
2014-06-14 17:27:51 +02:00
Steffen Jaeckel
cbb1821bb9
don't require mtest when compiling test
2014-06-14 17:21:03 +02:00
Steffen Jaeckel
c81aac2674
demo/test: fix some compiler warnings
2014-06-12 19:38:15 +02:00
Steffen Jaeckel
019beee1c7
update makefiles
2014-06-12 18:20:38 +02:00
Steffen Jaeckel
ed1a1e90e9
fix clobber list for x86-64 assembler
2014-06-12 18:20:32 +02:00
Steffen Jaeckel
be2ca4880d
Regenerate sqr comba files
2014-06-12 18:20:11 +02:00
Steffen Jaeckel
bdeafda752
Regenerate mul comba files
2014-06-12 18:19:53 +02:00
Steffen Jaeckel
3cabe12a21
mul generator: update preamble not to compile the code if it's not required
2014-06-12 18:08:34 +02:00
Steffen Jaeckel
8c8d763389
sqr generator: update preamble not to compile the code if it's not required
2014-06-12 18:08:10 +02:00
Steffen Jaeckel
2d5b8206fa
also patch fp_mul() as proposed by tom on the ML [1]
...
[1] https://groups.google.com/forum/#!topic/libtom/MdbS1vcLhCU
2014-06-12 18:06:26 +02:00
Steffen Jaeckel
a7804acf42
implement 50f587c36f
as proposed by tom
2014-06-12 18:04:03 +02:00
Steffen Jaeckel
e8163eb74a
fixup 3f7a1dca3b
2014-06-12 18:01:58 +02:00
Steffen Jaeckel
82aeb1d824
change DIGIT_BIT define to be able to test e.g. FP_SIZE in a macro
2014-06-12 17:59:22 +02:00
Steffen Jaeckel
540e3ecbc1
Realign mult generators with existing files in repo.
...
NB: fp_mul_comba32() is hand-optimized and has to be hand-crafted after
re-generation
2014-06-12 17:40:58 +02:00
Steffen Jaeckel
39b18f774c
fix compiler warnings
2014-06-12 17:36:49 +02:00
Steffen Jaeckel
86e7c59ff4
trim trailing spaces/clean-up
2014-06-12 17:35:54 +02:00
Steffen Jaeckel
bea9b1cc22
Merge remote-tracking branch 'rasky/bugfix_sqr_bufferoverflow'
2014-06-12 11:31:39 +02:00
Steffen Jaeckel
7993b1b66c
regenerate fp_sqr_comba_small_set.c
2014-06-12 11:00:30 +02:00
Steffen Jaeckel
6673bd99ce
minor fixes to really reproduce original files
2014-06-12 10:58:54 +02:00
Steffen Jaeckel
f8227a0dd9
trim trailing spaces
2014-06-12 10:58:39 +02:00
Steffen Jaeckel
f5b5bc09fb
Revert "Bugfix: clear the exceeding destination digits."
...
This reverts commit 50f587c36f
.
2014-06-12 10:50:19 +02:00
Steffen Jaeckel
7d003805ad
Revert "Regenerate sqr comba files with bugfix"
...
This reverts commit ab4374299c
.
2014-06-12 10:50:03 +02:00
Steffen Jaeckel
bfa4582842
Merge pull request #2 from rasky/bugfix_sqr_destdigits
...
Bugfix sqr destdigits, c.f. 50f587c36f
for further explanation
2011-09-21 03:31:20 -07:00
Giovanni Bajo
3f7a1dca3b
Fix for buffer overflows in fp_mul.
2011-09-20 12:06:44 +02:00
Giovanni Bajo
c32affe350
Bugfix: fix buffer overflow with comba sqr
...
The comba sqr code does not check the maximum bounds of fp_int; eg:
if you invoke fp_sqr_comba_20, it will write 40 digits to the
destination even if FP_SIZE < 40. This is correct for achieving high
speeds, but it means that it is the caller's responsibility to check for
such overflows.
fp_sqr.c only checks for numeric overflows (a->used * 2 >= FP_SIZE)
though. This means that if you call fp_sqr() with a small number (say
1), and your FP_SIZE is 10, and you have enabled a fp_sqr_comba_8, it
will overflow your buffer by writing 16 digits.
Since the exact subset of active comba multipliers/sqrs are up to the user
(in tfm.h), we fix the code never to invoke them if they can cause
overflows.
2011-09-20 12:06:44 +02:00
Giovanni Bajo
ab4374299c
Regenerate sqr comba files with bugfix
2011-09-20 11:37:23 +02:00
Giovanni Bajo
782c6e52de
Realign generators with existing files in repo.
2011-09-20 11:36:41 +02:00
Giovanni Bajo
8f059cd52f
Add makefile for sqr generators
2011-09-20 11:35:51 +02:00
Giovanni Bajo
50f587c36f
Bugfix: clear the exceeding destination digits.
...
Currently, the fp_sqr_comba_* functions do not fully clear the destination
number, but only overwrites the digits they care about. Eg: if
you call a comba4, it will overwrite the first 8 digits and leave
the others unchanged.
On the other hand, fp_mul_comba_* functions do *not* check incoming
unused digits (relying on the guarantee that they must be zero),
so they will happily compute the wrong result if those digits
are not empty. Testcase for a 32-bit system:
char buf[64];
fp_int num, num2, d;
memset(buf, 0xFF, sizeof(buf);
fp_read_unsigned_bin(&num, buf);
fp_set(&d, 1);
fp_sqr_comba_3(&d, &num);
// now num is { 0x1, 0x0, 0x0, 0x0, 0x0, 0x0,
// 0xFFFFFFFF, 0xFFFFFFFF ... }
// only first 6 digits have been written, but even
// if num.used is correctly set to 6, this can trigger
// bugs.
// Create a number larger than 6 digits
fp_2expt(&num2, 8*32+4);
fp_mul_comba_8(&num, &num2, &num2);
// wrong result has been computed, because the first 8
// digits of num have been read and multiplied
// even if num->used == 6, relying on the fact that
// they should be zero.
2011-09-20 11:02:53 +02:00
Steffen Jaeckel
da5fa59f2c
fixed bug in testcase reported by martins.mozeiko@gmail.com
2011-03-27 19:57:48 +02:00
Steffen Jaeckel
1e90accef6
added testcase of problem reported by martins.mozeiko@gmail.com
2011-03-27 19:34:36 +02:00
Steffen Jaeckel
eb5075e7fc
added typecast in fp_read_radix() to suppress compiler warning
2011-03-27 19:33:53 +02:00
Steffen Jaeckel
f340961df9
added gitignore
2011-03-27 19:33:13 +02:00
Steffen Jaeckel
a1ac91d15e
after multiple objections of libtom users [1], we decided to change licensing
...
to a dual licensing model.
[1] https://groups.google.com/group/libtom/browse_thread/thread/d7b67bc6410250b3
2011-01-19 10:28:48 +01:00
Steffen Jaeckel
6efcb2e5e0
Re-licensed all code under WTFPL, c.f. http://sam.zoy.org/wtfpl/
2010-10-26 16:02:37 +02:00
Patrick Oppenlander
cfb7c1e52e
fix register constraints in fp_montgomery_reduce
2010-07-22 10:29:12 +02:00