X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/80e2389990082500d76eb566d4946be3e786c3ef..d8f41ccd20de16f8ebe2ccc84d47bf1cb2b26bbb:/Security/libsecurity_cryptkit/lib/feeDebug.h diff --git a/Security/libsecurity_cryptkit/lib/feeDebug.h b/Security/libsecurity_cryptkit/lib/feeDebug.h new file mode 100644 index 00000000..878e3c77 --- /dev/null +++ b/Security/libsecurity_cryptkit/lib/feeDebug.h @@ -0,0 +1,194 @@ +/* + File: feeDebug.h + + Contains: Debug macros. + + + Copyright: Copyright (c) 1998,2011,2014 Apple Inc. + All rights reserved. + + Change History (most recent first): + + <9> 10/06/98 ap Changed to compile with C++. + + To Do: +*/ + +/* Copyright (c) 1998,2011,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. + *************************************************************************** + */ + +#ifndef _CK_FEEDEBUG_H_ +#define _CK_FEEDEBUG_H_ + +#include "giantIntegers.h" +#include "elliptic.h" +#include "curveParams.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef NDEBUG +#define FEE_DEBUG 0 +#else +#define FEE_DEBUG 1 +#endif + +/* + * In utilities.c... + */ +extern void printGiant(const giant x); +extern void printGiantHex(const giant x); +extern void printGiantExp(const giant x); +extern void printKey(const key k); +extern void printCurveParams(const curveParams *p); + +#if FEE_DEBUG + +#define dbgLog(x) printf x + + +#else /* FEE_DEBUG */ + +#define dbgLog(x) + +#endif /* FEE_DEBUG */ + +/* + * Profiling. + */ +#define FEE_PROFILE 0 /* general purpose profile */ +#define ELL_PROFILE 0 /* ell_even/ell_odd only */ + +#if (FEE_PROFILE || ELL_PROFILE) +#include +#endif /* (FEE_PROFILE || ELL_PROFILE) */ + +/* + * Place this macro after the last local and before any code in a routine + * to profile. + */ +#define CPROF_START \ + struct tsval _profStartTime; \ + struct tsval _profEndTime; \ + kern_timestamp(&_profStartTime); + +/* + * This one goes at the end of the routine, just before the (only) return. + * There must be a static accumulator (an unsigned int) on a per-routine basis. + */ +#define CPROF_END(accum) \ + kern_timestamp(&_profEndTime); \ + accum += (_profEndTime.low_val - _profStartTime.low_val); + +/* + * Increment a profiling counter. + */ +#define CPROF_INCR(ctr) ctr++ + +#if FEE_PROFILE + +#define PROF_START CPROF_START +#define PROF_END(a) CPROF_END(a) +#define PROF_INCR(ctr) CPROF_INCR(ctr) + +/* + * As of 14 Apr 1998, we no longer time mulg or gsquare calls with this + * mechanism; the time overhead is the same magnitude as the mulg. Instead + * we'll just count the mulgs and gsquares. + */ +#define PROF_TIME_MULGS 0 + + +/* + * Fundamental ops + */ +extern unsigned ellAddTime; +extern unsigned whichCurveTime; +extern unsigned ellipticTime; +extern unsigned sigCompTime; + +/* + * low-level primitives + */ +extern unsigned numerDoubleTime; +extern unsigned numerPlusTime; +extern unsigned numerTimesTime; +extern unsigned denomDoubleTime; +extern unsigned denomTimesTime; +extern unsigned powerModTime; +extern unsigned modgTime; +extern unsigned binvauxTime; + +/* + * Counters for calculating microseconds per {mulg, feemod, ...} + */ +extern unsigned numMulg; +extern unsigned numFeemod; +extern unsigned numGsquare; +extern unsigned numBorrows; + +extern void clearProfile(); + +#else /* FEE_PROFILE */ +#define PROF_START +#define PROF_END(a) +#define PROF_INCR(ctr) +#endif /* FEE_PROFILE */ + +#if ELL_PROFILE +extern unsigned ellOddTime; +extern unsigned ellEvenTime; +extern unsigned numEllOdds; +extern unsigned numEllEvens; +extern void clearEllProfile(); + +#define EPROF_START CPROF_START +#define EPROF_END(a) CPROF_END(a) +#define EPROF_INCR(ctr) CPROF_INCR(ctr) + +#else /* ELL_PROFILE */ +#define EPROF_START +#define EPROF_END(a) +#define EPROF_INCR(ctr) +#endif /* ELL_PROFILE */ + +/* + * NULL gets defined externally if FEE_DEBUG is true.. + */ +#if !FEE_DEBUG +#ifndef NULL +#define NULL ((void *)0) +#endif /* NULL */ +#endif /* !FEE_DEBUG */ + +#if FEE_DEBUG + +#include "platform.h" + +#define CKASSERT(expression) \ + ((expression) ? (void)0 : \ + (printf ("Assertion failed: " #expression \ + ", file " __FILE__ ", line %d.\n", __LINE__), \ + CKRaise("Assertion Failure"))) + +#else /* FEE_DEBUG */ + +#define CKASSERT(expression) + +#endif /* FEE_DEBUG */ + +#ifdef __cplusplus +} +#endif + +#endif /* _CK_FEEDEBUG_H_ */