TOOLS for Apple-CryptKit curve generation/testing. 24 Apr 2001 REC The state-of-the-art in ECC (elliptic-curve cryptography) is in a well known mode of imperfection. For example, it is very easy to generate CM (complex-multiplication) curves, with known order and parameters; yet, it is suspected by some (though unproven in any sense of rigor) that better security accrues if curves are entirely "random" in the sense of random base prime p, and random (a,b) under minimal constraints such as prime curve order, etc. Thus the collection of this Directory is a potpourri of various tools, including a Schoof implementation (schoof.c, schoofs.c) for arbitrary curves. As expected, said implementation is very slow, yet we have used it for some of the current CryptKit curves, while for other curves we have used the fast CM methods, and for yet other curves we have borrowed recommended parameters from other investigators. Contained in this Directory are various C sources: * curvegen.c, curvegenFEE.c Utility for generating CM curves, links to other sources as shown in comment atop source. * factor.c Utility for factoring such as curve orders; see comment atop source. * giants.c, ellproj.c, fmodule.c, tools.c Number-theoretical library sources, having standard and some ECC-specific tools. * schoof.c, shoofs.c Curve-order finder, using the celebratd Schoof algorithm When run, you input p, a, b (Weierstrass parameterization) and out comes the curve order, sometimes after a very long wait. The source schoofs.c is a "sieving Schoof" method as explained in the References below, for finding curves of prime-or-nearly-prime order (along with the same constraint for twists). together with Mathematica sources: * curverecords.nb A program to test current CryptKit points/orders. * FEED affine.nb, FEEDsansY.nb Programs for testing FEED, in particular the integrity of any choice for x1Minus (a coordinate for the twist curve). References Crandall R and Pomerance C, "Prime numbers: a computational perspective," Springer-Verlag, 2001. Crandall, R. E., U.S. Patents #5159632 (1992), #5271061 (1993), #5463690 (1994), "Method and apparatus for public key exchange in a cryptographic system." Crandall, R. E. 1996 U. S. Patent #5581616, "Method and apparatus for Digital Signature Authentication."