Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

added libtommath-0.20

  • Loading branch information...
commit 0fe7a2d4fff9dc12418eef835bac61d086cb573a 1 parent ef490f3
Tom St Denis authored sjaeckel committed
View
BIN  bn.pdf
Binary file not shown
View
2  bn.tex
@@ -1,7 +1,7 @@
\documentclass[]{article}
\begin{document}
-\title{LibTomMath v0.19 \\ A Free Multiple Precision Integer Library \\ http://math.libtomcrypt.org }
+\title{LibTomMath v0.20 \\ A Free Multiple Precision Integer Library \\ http://math.libtomcrypt.org }
\author{Tom St Denis \\ tomstdenis@iahu.ca}
\maketitle
\newpage
View
1  bn_mp_exptmod_fast.c
@@ -80,7 +80,6 @@ mp_exptmod_fast (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode)
if (((P->used * 2 + 1) < MP_WARRAY) &&
P->used < (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) {
redux = fast_mp_montgomery_reduce;
-
} else {
/* use slower baselien method */
redux = mp_montgomery_reduce;
View
4 changes.txt
@@ -1,3 +1,7 @@
+June 8th, 2003
+v0.20 -- Removed the book from the package. Added the TDCAL license document.
+ -- This release is officially pure-bred TDCAL again [last officially TDCAL based release was v0.16]
+
June 6th, 2003
v0.19 -- Fixed a bug in mp_montgomery_reduce() which was introduced when I tweaked mp_rshd() in the previous release.
Essentially the digits were not trimmed before the compare which cause a subtraction to occur all the time.
View
3  etc/2kprime.1
@@ -1,2 +1 @@
-256-bits (k = 36113) = 115792089237316195423570985008687907853269984665640564039457584007913129603823
-512-bits (k = 38117) = 13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006045979
+259-bits (k = 17745) = 926336713898529563388567880069503262826159877325124512315660672063305037101743
View
2  etc/2kprime.c
@@ -7,7 +7,7 @@ int sizes[] = {256, 512, 768, 1024, 1536, 2048, 3072, 4096};
int main(void)
{
char buf[2000];
- int x, y, t;
+ int x, y;
mp_int q, p;
FILE *out;
clock_t t1;
View
5 makefile
@@ -1,6 +1,6 @@
CFLAGS += -I./ -Wall -W -Wshadow -O3 -fomit-frame-pointer -funroll-loops
-VERSION=0.19
+VERSION=0.20
default: libtommath.a
@@ -103,5 +103,6 @@ clean:
zipup: clean manual poster
perl gen.pl ; mv mpi.c pre_gen/ ; \
cd .. ; rm -rf ltm* libtommath-$(VERSION) ; mkdir libtommath-$(VERSION) ; \
- cp -R ./libtommath/* ./libtommath-$(VERSION)/ ; tar -c libtommath-$(VERSION)/* > ltm-$(VERSION).tar ; \
+ cp -R ./libtommath/* ./libtommath-$(VERSION)/ ; cp tdcal.pdf ./libtommath-$(VERSION)/ ; cd ./libtommath-$(VERSION) ; rm -f tommath.src tommath.tex tommath.out ; cd pics ; rm -f * ; cd .. ; cd .. ; ls ; \
+ tar -c libtommath-$(VERSION)/* > ltm-$(VERSION).tar ; \
bzip2 -9vv ltm-$(VERSION).tar ; zip -9 -r ltm-$(VERSION).zip libtommath-$(VERSION)/*
View
BIN  pics/expt_state.sxd
Binary file not shown
View
BIN  pics/expt_state.tif
Binary file not shown
View
23 pics/makefile
@@ -1,23 +0,0 @@
-# makes the images... yeah
-
-default: pses
-
-
-sliding_window.ps: sliding_window.tif
- tiff2ps -c -e sliding_window.tif > sliding_window.ps
-
-expt_state.ps: expt_state.tif
- tiff2ps -c -e expt_state.tif > expt_state.ps
-
-sliding_window.pdf: sliding_window.ps
- epstopdf sliding_window.ps
-
-expt_state.pdf: expt_state.ps
- epstopdf expt_state.ps
-
-pses: sliding_window.ps expt_state.ps
-pdfes: sliding_window.pdf expt_state.pdf
-
-clean:
- rm -rf *.ps *.pdf .xvpics
-
View
BIN  pics/sliding_window.TIF
Binary file not shown
View
BIN  pics/sliding_window.sxd
Binary file not shown
View
BIN  poster.pdf
Binary file not shown
View
1  pre_gen/mpi.c
@@ -2155,7 +2155,6 @@ mp_exptmod_fast (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode)
if (((P->used * 2 + 1) < MP_WARRAY) &&
P->used < (1 << ((CHAR_BIT * sizeof (mp_word)) - (2 * DIGIT_BIT)))) {
redux = fast_mp_montgomery_reduce;
-
} else {
/* use slower baselien method */
redux = mp_montgomery_reduce;
View
BIN  tdcal.pdf
Binary file not shown
View
143 tommath.out
@@ -1,143 +0,0 @@
-\BOOKMARK [0][-]{chapter.1}{Introduction}{}
-\BOOKMARK [1][-]{section.1.1}{Multiple Precision Arithmetic}{chapter.1}
-\BOOKMARK [2][-]{subsection.1.1.1}{The Need for Multiple Precision Arithmetic}{section.1.1}
-\BOOKMARK [2][-]{subsection.1.1.2}{Multiple Precision Arithmetic}{section.1.1}
-\BOOKMARK [2][-]{subsection.1.1.3}{Benefits of Multiple Precision Arithmetic}{section.1.1}
-\BOOKMARK [2][-]{subsection.1.1.4}{Basis of Operations}{section.1.1}
-\BOOKMARK [1][-]{section.1.2}{Purpose of This Text}{chapter.1}
-\BOOKMARK [1][-]{section.1.3}{Discussion and Notation}{chapter.1}
-\BOOKMARK [2][-]{subsection.1.3.1}{Notation}{section.1.3}
-\BOOKMARK [2][-]{subsection.1.3.2}{Work Effort}{section.1.3}
-\BOOKMARK [1][-]{section.1.4}{Exercises}{chapter.1}
-\BOOKMARK [0][-]{chapter.2}{Introduction to LibTomMath}{}
-\BOOKMARK [1][-]{section.2.1}{What is LibTomMath?}{chapter.2}
-\BOOKMARK [1][-]{section.2.2}{Goals of LibTomMath}{chapter.2}
-\BOOKMARK [1][-]{section.2.3}{Choice of LibTomMath}{chapter.2}
-\BOOKMARK [2][-]{subsection.2.3.1}{Code Base}{section.2.3}
-\BOOKMARK [2][-]{subsection.2.3.2}{API Simplicity}{section.2.3}
-\BOOKMARK [2][-]{subsection.2.3.3}{Optimizations}{section.2.3}
-\BOOKMARK [2][-]{subsection.2.3.4}{Portability and Stability}{section.2.3}
-\BOOKMARK [2][-]{subsection.2.3.5}{Choice}{section.2.3}
-\BOOKMARK [0][-]{chapter.3}{Getting Started}{}
-\BOOKMARK [1][-]{section.3.1}{Library Basics}{chapter.3}
-\BOOKMARK [1][-]{section.3.2}{What is a Multiple Precision Integer?}{chapter.3}
-\BOOKMARK [2][-]{subsection.3.2.1}{The mp\137int structure}{section.3.2}
-\BOOKMARK [1][-]{section.3.3}{Argument Passing}{chapter.3}
-\BOOKMARK [1][-]{section.3.4}{Return Values}{chapter.3}
-\BOOKMARK [1][-]{section.3.5}{Initialization and Clearing}{chapter.3}
-\BOOKMARK [2][-]{subsection.3.5.1}{Initializing an mp\137int}{section.3.5}
-\BOOKMARK [2][-]{subsection.3.5.2}{Clearing an mp\137int}{section.3.5}
-\BOOKMARK [1][-]{section.3.6}{Other Initialization Routines}{chapter.3}
-\BOOKMARK [2][-]{subsection.3.6.1}{Initializing Variable Sized mp\137int Structures}{section.3.6}
-\BOOKMARK [2][-]{subsection.3.6.2}{Creating a Clone}{section.3.6}
-\BOOKMARK [2][-]{subsection.3.6.3}{Multiple Integer Initializations And Clearings}{section.3.6}
-\BOOKMARK [1][-]{section.3.7}{Maintenance}{chapter.3}
-\BOOKMARK [2][-]{subsection.3.7.1}{Augmenting Integer Precision}{section.3.7}
-\BOOKMARK [2][-]{subsection.3.7.2}{Clamping Excess Digits}{section.3.7}
-\BOOKMARK [0][-]{chapter.4}{Basic Operations}{}
-\BOOKMARK [1][-]{section.4.1}{Copying an Integer}{chapter.4}
-\BOOKMARK [1][-]{section.4.2}{Zeroing an Integer}{chapter.4}
-\BOOKMARK [1][-]{section.4.3}{Sign Manipulation}{chapter.4}
-\BOOKMARK [2][-]{subsection.4.3.1}{Absolute Value}{section.4.3}
-\BOOKMARK [2][-]{subsection.4.3.2}{Integer Negation}{section.4.3}
-\BOOKMARK [1][-]{section.4.4}{Small Constants}{chapter.4}
-\BOOKMARK [2][-]{subsection.4.4.1}{Setting Small Constants}{section.4.4}
-\BOOKMARK [2][-]{subsection.4.4.2}{Setting Large Constants}{section.4.4}
-\BOOKMARK [1][-]{section.4.5}{Comparisons}{chapter.4}
-\BOOKMARK [2][-]{subsection.4.5.1}{Unsigned Comparisions}{section.4.5}
-\BOOKMARK [2][-]{subsection.4.5.2}{Signed Comparisons}{section.4.5}
-\BOOKMARK [0][-]{chapter.5}{Basic Arithmetic}{}
-\BOOKMARK [1][-]{section.5.1}{Building Blocks}{chapter.5}
-\BOOKMARK [1][-]{section.5.2}{Addition and Subtraction}{chapter.5}
-\BOOKMARK [2][-]{subsection.5.2.1}{Low Level Addition}{section.5.2}
-\BOOKMARK [2][-]{subsection.5.2.2}{Low Level Subtraction}{section.5.2}
-\BOOKMARK [2][-]{subsection.5.2.3}{High Level Addition}{section.5.2}
-\BOOKMARK [2][-]{subsection.5.2.4}{High Level Subtraction}{section.5.2}
-\BOOKMARK [1][-]{section.5.3}{Bit and Digit Shifting}{chapter.5}
-\BOOKMARK [2][-]{subsection.5.3.1}{Multiplication by Two}{section.5.3}
-\BOOKMARK [2][-]{subsection.5.3.2}{Division by Two}{section.5.3}
-\BOOKMARK [1][-]{section.5.4}{Polynomial Basis Operations}{chapter.5}
-\BOOKMARK [2][-]{subsection.5.4.1}{Multiplication by x}{section.5.4}
-\BOOKMARK [2][-]{subsection.5.4.2}{Division by x}{section.5.4}
-\BOOKMARK [1][-]{section.5.5}{Powers of Two}{chapter.5}
-\BOOKMARK [2][-]{subsection.5.5.1}{Multiplication by Power of Two}{section.5.5}
-\BOOKMARK [2][-]{subsection.5.5.2}{Division by Power of Two}{section.5.5}
-\BOOKMARK [2][-]{subsection.5.5.3}{Remainder of Division by Power of Two}{section.5.5}
-\BOOKMARK [0][-]{chapter.6}{Multiplication and Squaring}{}
-\BOOKMARK [1][-]{section.6.1}{The Multipliers}{chapter.6}
-\BOOKMARK [1][-]{section.6.2}{Multiplication}{chapter.6}
-\BOOKMARK [2][-]{subsection.6.2.1}{The Baseline Multiplication}{section.6.2}
-\BOOKMARK [2][-]{subsection.6.2.2}{Faster Multiplication by the ``Comba'' Method}{section.6.2}
-\BOOKMARK [2][-]{subsection.6.2.3}{Polynomial Basis Multiplication}{section.6.2}
-\BOOKMARK [2][-]{subsection.6.2.4}{Karatsuba Multiplication}{section.6.2}
-\BOOKMARK [2][-]{subsection.6.2.5}{Toom-Cook 3-Way Multiplication}{section.6.2}
-\BOOKMARK [2][-]{subsection.6.2.6}{Signed Multiplication}{section.6.2}
-\BOOKMARK [1][-]{section.6.3}{Squaring}{chapter.6}
-\BOOKMARK [2][-]{subsection.6.3.1}{The Baseline Squaring Algorithm}{section.6.3}
-\BOOKMARK [2][-]{subsection.6.3.2}{Faster Squaring by the ``Comba'' Method}{section.6.3}
-\BOOKMARK [2][-]{subsection.6.3.3}{Polynomial Basis Squaring}{section.6.3}
-\BOOKMARK [2][-]{subsection.6.3.4}{Karatsuba Squaring}{section.6.3}
-\BOOKMARK [2][-]{subsection.6.3.5}{Toom-Cook Squaring}{section.6.3}
-\BOOKMARK [2][-]{subsection.6.3.6}{High Level Squaring}{section.6.3}
-\BOOKMARK [0][-]{chapter.7}{Modular Reduction}{}
-\BOOKMARK [1][-]{section.7.1}{Basics of Modular Reduction}{chapter.7}
-\BOOKMARK [1][-]{section.7.2}{The Barrett Reduction}{chapter.7}
-\BOOKMARK [2][-]{subsection.7.2.1}{Fixed Point Arithmetic}{section.7.2}
-\BOOKMARK [2][-]{subsection.7.2.2}{Choosing a Radix Point}{section.7.2}
-\BOOKMARK [2][-]{subsection.7.2.3}{Trimming the Quotient}{section.7.2}
-\BOOKMARK [2][-]{subsection.7.2.4}{Trimming the Residue}{section.7.2}
-\BOOKMARK [2][-]{subsection.7.2.5}{The Barrett Algorithm}{section.7.2}
-\BOOKMARK [2][-]{subsection.7.2.6}{The Barrett Setup Algorithm}{section.7.2}
-\BOOKMARK [1][-]{section.7.3}{The Montgomery Reduction}{chapter.7}
-\BOOKMARK [2][-]{subsection.7.3.1}{Digit Based Montgomery Reduction}{section.7.3}
-\BOOKMARK [2][-]{subsection.7.3.2}{Baseline Montgomery Reduction}{section.7.3}
-\BOOKMARK [2][-]{subsection.7.3.3}{Faster ``Comba'' Montgomery Reduction}{section.7.3}
-\BOOKMARK [2][-]{subsection.7.3.4}{Montgomery Setup}{section.7.3}
-\BOOKMARK [1][-]{section.7.4}{The Diminished Radix Algorithm}{chapter.7}
-\BOOKMARK [2][-]{subsection.7.4.1}{Choice of Moduli}{section.7.4}
-\BOOKMARK [2][-]{subsection.7.4.2}{Choice of k}{section.7.4}
-\BOOKMARK [2][-]{subsection.7.4.3}{Restricted Diminished Radix Reduction}{section.7.4}
-\BOOKMARK [2][-]{subsection.7.4.4}{Unrestricted Diminished Radix Reduction}{section.7.4}
-\BOOKMARK [1][-]{section.7.5}{Algorithm Comparison}{chapter.7}
-\BOOKMARK [0][-]{chapter.8}{Exponentiation}{}
-\BOOKMARK [1][-]{section.8.1}{Exponentiation Basics}{chapter.8}
-\BOOKMARK [2][-]{subsection.8.1.1}{Single Digit Exponentiation}{section.8.1}
-\BOOKMARK [1][-]{section.8.2}{k-ary Exponentiation}{chapter.8}
-\BOOKMARK [2][-]{subsection.8.2.1}{Optimal Values of k}{section.8.2}
-\BOOKMARK [2][-]{subsection.8.2.2}{Sliding-Window Exponentiation}{section.8.2}
-\BOOKMARK [1][-]{section.8.3}{Modular Exponentiation}{chapter.8}
-\BOOKMARK [2][-]{subsection.8.3.1}{Barrett Modular Exponentiation}{section.8.3}
-\BOOKMARK [1][-]{section.8.4}{Quick Power of Two}{chapter.8}
-\BOOKMARK [0][-]{chapter.9}{Higher Level Algorithms}{}
-\BOOKMARK [1][-]{section.9.1}{Integer Division with Remainder}{chapter.9}
-\BOOKMARK [1][-]{section.9.2}{Single Digit Helpers}{chapter.9}
-\BOOKMARK [2][-]{subsection.9.2.1}{Single Digit Addition}{section.9.2}
-\BOOKMARK [2][-]{subsection.9.2.2}{Single Digit Subtraction}{section.9.2}
-\BOOKMARK [2][-]{subsection.9.2.3}{Single Digit Multiplication}{section.9.2}
-\BOOKMARK [2][-]{subsection.9.2.4}{Single Digit Division}{section.9.2}
-\BOOKMARK [2][-]{subsection.9.2.5}{Single Digit Modulo}{section.9.2}
-\BOOKMARK [2][-]{subsection.9.2.6}{Single Digit Root Extraction}{section.9.2}
-\BOOKMARK [1][-]{section.9.3}{Random Number Generation}{chapter.9}
-\BOOKMARK [1][-]{section.9.4}{Formatted Output}{chapter.9}
-\BOOKMARK [2][-]{subsection.9.4.1}{Getting The Output Size}{section.9.4}
-\BOOKMARK [2][-]{subsection.9.4.2}{Generating Radix-n Output}{section.9.4}
-\BOOKMARK [2][-]{subsection.9.4.3}{Reading Radix-n Input}{section.9.4}
-\BOOKMARK [1][-]{section.9.5}{Unformatted Output}{chapter.9}
-\BOOKMARK [2][-]{subsection.9.5.1}{Getting The Output Size}{section.9.5}
-\BOOKMARK [2][-]{subsection.9.5.2}{Generating Output}{section.9.5}
-\BOOKMARK [2][-]{subsection.9.5.3}{Reading Input}{section.9.5}
-\BOOKMARK [0][-]{chapter.10}{Number Theoretic Algorithms}{}
-\BOOKMARK [1][-]{section.10.1}{Greatest Common Divisor}{chapter.10}
-\BOOKMARK [1][-]{section.10.2}{Least Common Multiple}{chapter.10}
-\BOOKMARK [1][-]{section.10.3}{Jacobi Symbol Computation}{chapter.10}
-\BOOKMARK [1][-]{section.10.4}{Modular Inverse}{chapter.10}
-\BOOKMARK [2][-]{subsection.10.4.1}{General Case}{section.10.4}
-\BOOKMARK [2][-]{subsection.10.4.2}{Odd Moduli}{section.10.4}
-\BOOKMARK [1][-]{section.10.5}{Primality Tests}{chapter.10}
-\BOOKMARK [2][-]{subsection.10.5.1}{Trial Division}{section.10.5}
-\BOOKMARK [2][-]{subsection.10.5.2}{The Fermat Test}{section.10.5}
-\BOOKMARK [2][-]{subsection.10.5.3}{The Miller-Rabin Test}{section.10.5}
-\BOOKMARK [2][-]{subsection.10.5.4}{Primality Test in a Bottle}{section.10.5}
-\BOOKMARK [2][-]{subsection.10.5.5}{The Next Prime}{section.10.5}
-\BOOKMARK [1][-]{section.10.6}{Root Extraction}{chapter.10}
-\BOOKMARK [0][-]{appendix*.16}{Appendix}{}
View
4,675 tommath.src
0 additions, 4,675 deletions not shown
View
8,141 tommath.tex
0 additions, 8,141 deletions not shown
Please sign in to comment.
Something went wrong with that request. Please try again.