aboutsummaryrefslogtreecommitdiffstats
path: root/src/math
Commit message (Collapse)AuthorAgeFilesLines
* Correct Doxygen commentlloyd2010-03-131-3/+3
|
* Small optimizationslloyd2010-03-131-6/+13
| | | | | Especially try to keep the size of inputs down, so it doesn't have to do an extra reduction step. Ideally this should be eliminated entirely.
* Kill stdio includelloyd2010-03-131-2/+0
|
* Unroll point multiply to look at two bits of scalar each iteration.lloyd2010-03-131-2/+24
| | | | Helps out quite a bit.
* Precompute a*rlloyd2010-03-132-2/+9
|
* More monty_mult cleanupslloyd2010-03-131-6/+4
|
* Small monty_mult cleanuplloyd2010-03-131-10/+8
|
* Inline/simplifiy monty multlloyd2010-03-131-31/+15
|
* Single word p-dashlloyd2010-03-131-3/+4
|
* Only need a single word from p_dash, so only save that single word.lloyd2010-03-131-94/+9
| | | | Remove hand-coded montgomery reduction, use bigint_mont_redc() instead
* Use Montgomery reduction for the important parts of PointGFp, usinglloyd2010-03-132-74/+78
| | | | | code cobbled together from 1.8/InSiTo. Faster than it was in 1.9.4, but still quite slow.
* Name args to bigint_{mul,sqr} in headerlloyd2010-03-131-5/+5
|
* Move monty params to curve, since only depend on the primelloyd2010-03-131-4/+37
|
* Add back code for montgomery PointGFp mult (not used atm)lloyd2010-03-132-14/+165
|
* Hide PointGFp constructorslloyd2010-03-132-7/+14
|
* Remove access to the Jacobian coordinate getters get_{x,y,z}, as welllloyd2010-03-132-33/+9
| | | | | | | | | | | | | | as the 4-argument constructor. Define operator==() in terms of the affine coordinates. Rewrite tests that assumed access to the Jacobian coodinates in terms of the affine coordinates. This change allows for using arbitrary coordinate systems in PointGFp, as long as it can convert to the normal affine coordinates (which are what is used by all ECC algorithms implemented currently, and probably all interesting ECC algorithms in general).
* Deconstify PK_Ops. It's quite reasonable that some op will want tolloyd2010-03-091-1/+1
| | | | | | | | | | | | | precompute only as needed, or will want to access some other expensive resource or etc. Change how the secret for generating blinding is done in cases where a PRNG isn't available. Use the operations public op to hide the secret, for instance the seed for a DH blinding variable is 2^x mod p. Make use of being able to mutate internal structures in the RW signer, since that does have access to a PRNG, so use it to initialize the blinder on first call to sign().
* Consolidate code for choosing a window size for fixed width windowlloyd2010-03-094-72/+41
| | | | exponentiation algorithms.
* Add back in blinding to RSA, RW, ElGamal, and DH.lloyd2010-03-083-85/+0
| | | | | | | | | | | | | | | | There are multiple unsatisfactory elements to the current solution, as compared to how blinding was previously done: Firstly, blinding is only used in the baseline implementations; the code using OpenSSL and GMP is not protected by blinding at all. Secondly, at the point we need to set up blinding, there is no access to a PRNG. Currently I am going with a quite nasty solution, of using a private key parameter to seed a simple PRNG constructed as: SHA-512(TS1 || private_key_param || public_key_param || TS2) I really want to fix both of these elements but I'm not sure how to do so easily.
* Inline Engine_Core::mod_exp into singler caller, and deletelloyd2010-03-051-2/+19
|
* Make the modulus visible in Modular_Reducerlloyd2010-03-051-0/+2
|
* Force high bit in random_prime as well (done by randomize currently, but ↵lloyd2010-03-051-0/+3
| | | | might not be later)
* Clarify exception text on get_affine when point is zerolloyd2010-03-051-2/+2
|
* Make two variants of OS2ECP, one taking pointer + length, and otherlloyd2010-03-022-13/+19
| | | | | (inlined) taking a MemoryRegion& that just forwards. This makes it possible to avoid an extra copy in ECDH::derive_key.
* Inline some simple PointGFp functionslloyd2010-03-022-51/+35
|
* Rename PointGFp::get_jac_proj_{x,y,z} simply get_{x,y,z}lloyd2010-03-021-3/+3
|
* Allow creating uninitialized PointGFp and CurveGFpslloyd2010-03-012-0/+10
|
* Rename mult2_in_place just mult2 (double would be better but is a keyword...)lloyd2010-03-012-6/+6
|
* Simplify mult2_in_place slightlylloyd2010-02-251-7/+3
|
* Move contents of gfpmath to numbertheory. Adjust dependencies.lloyd2010-02-255-15/+3
|
* Delete gfp_element.h and remove the gfpmath testslloyd2010-02-252-250/+0
|
* Hide MillerRabin_Test class (only used in numthry.cpp)lloyd2010-02-256-84/+84
| | | | | | Inline simple functions in Modular_Reducer Add Modular_Reducer::cube convenience function
* Cache the Modular_Reducer of p in CurveGFp; speedup of 3-4xlloyd2010-02-252-8/+11
|
* Remove GFpElement from check_invariants, remove includelloyd2010-02-251-20/+15
|
* create_random_point was not used anywhere, so remove itlloyd2010-02-252-28/+0
|
* s/GFpElement/Modular_Reducer/ in get_affine_{x,y}lloyd2010-02-251-14/+6
|
* Convert PointGFp::operator+= to using BigInt + Modular_Reducer instead oflloyd2010-02-251-34/+18
| | | | GFpElement
* Make PointGFp::mult2_in_place privatelloyd2010-02-252-20/+25
|
* Use Modular_Reducer instead of GFpElement in operator*=lloyd2010-02-251-13/+8
|
* Inline PointGFp constructorslloyd2010-02-252-51/+13
|
* In PointGFp::operator==, compare coordinates first, then the curvelloyd2010-02-251-4/+2
|
* There was only one caller of set_z_to_one (which was get_z_to_one) andlloyd2010-02-252-60/+24
| | | | | only one caller of get_z_to_one (in operator*=). Inline into operator*= and remove.
* Rewrite PointGFp::mult2_in_place to use plain BigInt plus a Modular_Reducerlloyd2010-02-251-47/+29
| | | | Clean up PointGFp::operator*=
* Hide PointGFp funcs set_z_to_one and get_z_to_onelloyd2010-02-251-15/+15
|
* Name vars in Modular_Reducer decllloyd2010-02-251-4/+4
|
* Inline GFpElementlloyd2010-02-253-172/+121
|
* Remove include of unused headerslloyd2010-02-251-3/+0
|
* Inline some simple GFpElement functions. Remove ostream << operatorlloyd2010-02-252-65/+15
|
* Move Illegal_Transformationlloyd2010-02-252-7/+7
|
* Remove point_{x,y,z} funcs, hide GFpElement entirelylloyd2010-02-253-33/+56
|