]>
git.saurik.com Git - apple/security.git/blob - Security/libsecurity_cryptkit/lib/ellipticProj.h
1 /* Copyright (c) 1998,2011,2014 Apple Inc. All Rights Reserved.
3 * NOTICE: USE OF THE MATERIALS ACCOMPANYING THIS NOTICE IS SUBJECT
4 * TO THE TERMS OF THE SIGNED "FAST ELLIPTIC ENCRYPTION (FEE) REFERENCE
5 * SOURCE CODE EVALUATION AGREEMENT" BETWEEN APPLE, INC. AND THE
6 * ORIGINAL LICENSEE THAT OBTAINED THESE MATERIALS FROM APPLE,
7 * INC. ANY USE OF THESE MATERIALS NOT PERMITTED BY SUCH AGREEMENT WILL
8 * EXPOSE YOU TO LIABILITY.
9 ***************************************************************************
11 * ellipticProj.h - declaration of elliptic projective algebra routines.
16 * Changed to compile with C++.
21 #ifndef _CRYPTKIT_ELLIPTIC_PROJ_H_
22 #define _CRYPTKIT_ELLIPTIC_PROJ_H_
26 #if CRYPTKIT_ELL_PROJ_ENABLE
28 #include "giantIntegers.h"
29 #include "curveParams.h"
40 typedef pointProjStruct
*pointProj
;
42 pointProj
/* Allocates a new projective point. */
43 newPointProj(unsigned numDigits
);
45 void /* Frees point. */
46 freePointProj(pointProj pt
);
48 void /* Copies point to point; pt2 := pt1. */
49 ptopProj(pointProj pt1
, pointProj pt2
);
51 void /* Point doubling. */
52 ellDoubleProj(pointProj pt
, curveParams
*cp
);
54 void /* Point adding; pt0 := pt0 - pt1. */
55 ellAddProj(pointProj pt0
, pointProj pt1
, curveParams
*cp
);
57 void /* Point negation; pt := -pt. */
58 ellNegProj(pointProj pt
, curveParams
*cp
);
60 void /* Point subtraction; pt0 := pt0 - pt1. */
61 ellSubProj(pointProj pt0
, pointProj pt1
, curveParams
*cp
);
63 void /* pt := pt * k, result normalized */
64 ellMulProjSimple(pointProj pt0
, giant k
, curveParams
*cp
);
66 void /* General elliptic mul; pt1 := k*pt0. */
67 ellMulProj(pointProj pt0
, pointProj pt1
, giant k
, curveParams
*cp
);
69 void /* Generate normalized point (X, Y, 1) from given (x,y,z). */
70 normalizeProj(pointProj pt
, curveParams
*cp
);
72 void /* Find a point (x, y, 1) on the curve. */
73 findPointProj(pointProj pt
, giant seed
, curveParams
*cp
);
75 #endif /* CRYPTKIT_ELL_PROJ_ENABLE*/
76 #endif /* _CRYPTKIT_ELLIPTIC_PROJ_H_ */