X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/5dd5f9ec28f304ca377c42fd7f711d6cf12b90e1..5c19dc3ae3bd8e40a9c028b0deddd50ff337692c:/Security/libsecurity_cryptkit/lib/curveParams.h?ds=inline diff --git a/Security/libsecurity_cryptkit/lib/curveParams.h b/Security/libsecurity_cryptkit/lib/curveParams.h deleted file mode 100644 index 47a87756..00000000 --- a/Security/libsecurity_cryptkit/lib/curveParams.h +++ /dev/null @@ -1,230 +0,0 @@ -/* Copyright (c) 1998,2011-2012,2014 Apple Inc. All Rights Reserved. - * - * NOTICE: USE OF THE MATERIALS ACCOMPANYING THIS NOTICE IS SUBJECT - * TO THE TERMS OF THE SIGNED "FAST ELLIPTIC ENCRYPTION (FEE) REFERENCE - * SOURCE CODE EVALUATION AGREEMENT" BETWEEN APPLE, INC. AND THE - * ORIGINAL LICENSEE THAT OBTAINED THESE MATERIALS FROM APPLE, - * INC. ANY USE OF THESE MATERIALS NOT PERMITTED BY SUCH AGREEMENT WILL - * EXPOSE YOU TO LIABILITY. - *************************************************************************** - * - * curveParams.h - FEE curve parameter functions - * - * Revision History - * ---------------- - * 9 Sep 98 at NeXT - * Added y1Plus for IEEE P1363 compliance. - * 20 Jan 98 at Apple - * Added primeType, m, basePrimeRecip. - * 11 Jun 97 at Apple - * Added x1OrderPlusRecip and lesserX1OrderRecip - * Disabled CP_SET_GIANT_SIZE hack - * 9 Jan 1997 at NeXT - * Major mods for IEEE-style parameters. - * 7 Aug 1996 at NeXT - * Created. - */ - -#ifndef _CK_CURVEPARAMS_H_ -#define _CK_CURVEPARAMS_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "giantIntegers.h" -#include "feeTypes.h" - -/* - * Parameters defining a specific elliptic curve (and its initial points). - */ -typedef struct { - - /* - * Basic characteristic of prime field (PT_FEE, etc.) - */ - feePrimeType primeType; - - /* - * Basic curve type (CT_MONTGOMERY, etc.) - * Note that FCT_ANSI is stored here as FCT_Weierstrass. - */ - feeCurveType curveType; - - /* - * Parameters defining the base prime (2^q - k) for - * FPT_FEE and FPT_Mersenne. For FPT_General, q is the - * prime size in bits and k is 0. - */ - unsigned q; - int k; - - /* - * For all primeTypes, the field is defined as F(basePrime**m). - * This library can only deal with m == 1 for now. - */ - unsigned m; - - /* - * coefficients in the following equation: - * y^2 = x^3 + (c * x^2) + (a * x) + b - */ - giant a; - giant b; - giant c; - - /* - * Initial public point x-coordinates. - * x1Minus not used for ECDSA; X9.62 curves don't have this field. - */ - giant x1Plus; - giant x1Minus; - - /* - * Y coordinate of normalized projective initial public - * point for plus curve. I.e., Initial point = {x1Plus, p1Plus, 1}. - * Only valid for curveType == CT_WEIERSTRASS. This is calculated - * when a new curveParams is created. - */ - giant y1Plus; - - /* - * Curve orders. These are prime, or have large prime factors. - * cOrderMinus not used for ECDSA; X9.62 curves don't have this field. - */ - giant cOrderPlus; - giant cOrderMinus; - - /* - * Point orders (the large prime factors of the respective - * curve orders). - * x1OrderMinus not used for ECDSA; X9.62 curves don't have this field. - */ - giant x1OrderPlus; - giant x1OrderMinus; - - /* - * The base prime. For PT_GENERAL, this is a basic defining - * characteristic of a curve; otherwise, it is derived as 2**q - k. - */ - giant basePrime; - - /* - * The remaining fields are calculated and stored here as an - * optimization. - */ - - /* - * The minimum size of a giant, in bytes, to represent any point - * on this curve. This is generally used only when serializing - * giants of a known size. - */ - unsigned minBytes; - - /* - * The maximum size of a giant, in giantDigits, to be used with all - * FEE arithmetic for this curve. This is generally used to alloc - * giants. - */ - unsigned maxDigits; - - /* - * Reciprocals of lesserX1Order() and x1OrderPlus. Calculated - * lazily by clients in the case of creation of a curveParams - * struct from a byteRep representation. - */ - giant x1OrderPlusRecip; - giant lesserX1OrderRecip; - - /* - * Reciprocal of basePrime. Only used for PT_GENERAL. - */ - giant basePrimeRecip; -} curveParams; - -#if 0 -/* - * Values for primeType. - */ -#define PT_MERSENNE 0 /* basePrime = 2**q - 1 */ -#define PT_FEE 1 /* basePrime = 2**q - k, k is "small" */ -#define PT_GENERAL 2 /* other prime modulus */ - -/* - * Values for curveType. Note that Atkin3 (a=0) and Atkin4 (b=0) are - * subsets of CT_WEIERSTRASS. - */ -#define CT_MONTGOMERY 0 /* a=1, b=0 */ -#define CT_WEIERSTRASS 1 /* c=0 */ -#define CT_GENERAL 4 /* other */ -#endif /* 0 */ - -/* - * Obtain a malloc'd curveParams for a specified feeDepth. - */ -curveParams *curveParamsForDepth(feeDepth depth); - -/* - * Obtain a malloc'd and uninitialized curveParams, to be init'd by caller - * (when matching existing curve params). - */ -curveParams *newCurveParams(void); - -/* - * Alloc and zero reciprocal giants, when maxDigits is known. - */ -void allocRecipGiants(curveParams *cp); - -/* - * Alloc a new curveParams struct as a copy of specified instance. - */ -curveParams *curveParamsCopy(curveParams *cp); - -/* - * Free a curveParams struct. - */ -void freeCurveParams(curveParams *cp); - -/* - * Returns 1 if two sets of curve parameters are equivalent, else returns 0. - */ -int curveParamsEquivalent(curveParams *cp1, curveParams *cp2); - -/* - * Obtain the lesser of {x1OrderPlus, x1OrderMinus}. Returned value is not - * malloc'd; it's a pointer to one of the orders in *cp. - */ -giant lesserX1Order(curveParams *cp); - -/* - * Prime the curveParams and giants modules for quick allocs of giants. - */ -void curveParamsInitGiants(void); - -/* - * Infer run-time calculated fields from a partially constructed curveParams. - */ -void curveParamsInferFields(curveParams *cp); - -/* - * Given key size in bits, obtain the asssociated depth. - * Returns FR_IllegalDepth if specify key size not found - * in current curve tables. - */ -feeReturn feeKeyBitsToDepth(unsigned keyBits, - feePrimeType primeType, /* FPT_Fefault means "best one" */ - feeCurveType curveType, /* FCT_Default means "best one" */ - feeDepth *depth); - -/* - * Obtain depth for specified curveParams - */ -feeReturn curveParamsDepth( - curveParams *cp, - feeDepth *depth); - -#ifdef __cplusplus -} -#endif - -#endif /* _CK_CURVEPARAMS_H_ */