4    -- Added prototypes for NSFEEPublicKey convenience methods to NSCryptors.h
 
   7    * Alpha version to dreece and crandall 13 Aug 1996
 
   8    * FEE_KEY_VERSION 3, FEE_KEYSTRING_VERSION 1
 
  11    -- Added KeyStringFormat.doc
 
  12    -- Deleted -publicKeyData, keyWithPublicKeyData (public keys now always
 
  13       represented as strings)
 
  14    -- Beefed up range and validity checking in:
 
  16          -- new_hexstr_from_key()
 
  17          -- +keyWithPublicKeyString
 
  18    -- Added check for valid_hexstr() and NULL hexstr_to_key() in
 
  19       +digitalSignatureWithDataRepresentation
 
  20    -- Added and enforced MAX_UNAME_LENGTH
 
  21    -- added key_equal(_plus, other->_plus) to -[NSFEEPublicKey isEqual:]
 
  22    -- last version with NSGiantIntegers.m, utilities.m, NSFastEllipticCurve.m
 
  26    * FEE_KEYSTRING_VERSION = 2
 
  27      FEE_KEYSTRING_VERSION_MIN = 1
 
  28    -- Major rewrite of all top-level classes; ported bulk of logic to
 
  29       portable C code. ObjC API (in NSCryptors.h, NSDESCryptor.h) unchanged.
 
  32    * Alpha version sent to REC 6 Sep 1996 and to dreece 12 Sep 96
 
  33    -- Added platform.[ch]
 
  34    -- Fixed (b<n), (sign<0) case in gmersennemod() to allow for arbitrary n.
 
  35    -- Added feeHashReinit() to feeHash.[hc].
 
  36    -- Rewrote feeGenPrivate(). Hashes password and pads to (size of curve
 
  37       order)++, then takes result mod curve order.
 
  38    -- Added set_priv_key_data(), and removed its function from
 
  39       new_public_with_key(); deleted new_public_with_key().
 
  40    -- Initial changes for compiling on NT.
 
  43    * Sent to REC for testing 1 Oct 96
 
  44    -- first version to be (more or less) fully functional on NT
 
  45    -- tolerate non-hex leading and trailing characters in public key string
 
  46    -- Fixed --size underflow bug in normal_subg()
 
  47    -- Added enc64 routines
 
  50    * First version to compile & run OK on OpenStep/NT
 
  51    * Alpha version sent to dreece (17 Oct 96) and Avie (18 Oct 96)
 
  52    -- Added class names to CryptKit.def (was CryptKit.def.src - no longer
 
  53       builds C-only DLL from win.mak!)
 
  54    -- Updated to 4.1 pb_makefiles
 
  55    -- misc. Makefile tweaks to compile on NT
 
  56    -- Misc. tweaks for warning-free compile on NT
 
  57    -- ifdef'd out DllMain()
 
  60     * First integration into cryptdev master tree, 12 Nov 1996
 
  61     * CFILE_VERSION = CFILE_MIN_VERSION = 1
 
  62     -- Added feeCipherFile and NSCipherFile
 
  63     -- Added sigSigner out param to feePubKeyVerifySignature()
 
  64     -- Made enc64, dec64 more robust and more Microsoft-tolerant
 
  65     -- feeGenPrivate() returns error if private key data too short
 
  68     * Integrated into cryptdev master tree, 20 Dec 1996
 
  69     * Sent to J. Landwehr with first NT version of ICE 20 Dec 1996
 
  70     * COMMON_PUBLIC_KEY_STRING_VERSION = 2
 
  71     * COMMON_FEE_SIG_VERSION
 
  72     * Major changes to keystring and signature format, compatible with
 
  73       JavaFEE-4 and backwards compatible with older CryptKit keys and
 
  75     * Verfified to work with ICE (JavaDemo-4) running on an NT server
 
  76     -- Added debugging code to DES.c, MD5.c
 
  77     -- Added mersennePrimes[24..26]
 
  78     -- Newlines optional in dec64() and isValidEnc64().
 
  79     -- Added byteRep support to utilities.c
 
  82     -- New curveParams mechanism, with IEEE-approved curve parameters
 
  83     -- Old curve param 'a' is 'c'; new params b, c, x1OrderPlus x1OrderMinus
 
  84     -- This version doesn't *use* the new curve params in elliptic algebra;
 
  85        it's an interim version for testing. DVT suite (ckutils/cktest) still
 
  86        works at depths 0 thru 4.
 
  87     -- NO API CHANGES since CryptKit-16.
 
  88     -- key strings and signatures still compatible with CryptKit-16 and
 
  90     -- Deleted mersennePrimes[], set_crypt_params(), new_public_com(),
 
  92     -- Most fields in keystruct now superceded by curveParams *cp
 
  93     -- Added setGiantSize() kludge, replaces weird call to borrowGiant(*exp)
 
  95     -- Added copyGiant(), giant_to_int()
 
  96     -- Removed a bunch of dead files from project
 
  97     -- Removed *_to_hexstr() from utilities.c
 
  98     -- Fixed "pad too short bug" in small depth cases in feePubKeyCreatePad()
 
 101    * Integrated into cryptdev master tree, 31 Jan 1997
 
 102    * Completely broke backward compatibility with old key strings and
 
 104    * FEE_SIG_VERSION = 3
 
 105    * PUBLIC_KEY_STRING_VERSION = 3
 
 106    * Old 2:1 FEED renamed feeFEEDExp (feeFEEDExp.c, names start with
 
 107      feeFEEDExp). New 1:1 FEE is feeFEED.c. A #define in feeFEED.h redirects
 
 108      client's feeFEED calls to feeFEEDexp
 
 109    -- New elliptic math using all curveParams fields
 
 110    -- Cleaned up all which_curve/twist code to use CURVE_MINUS/CURVE_PLUS
 
 111    -- plus curves now used exclusively except for in FEED decrypt, which
 
 113    -- Moved all byteRep code from utilities.c to byteRep.c.
 
 114    -- Added curveOrderJustify(), use it to trim private key data and
 
 115       signature random data to [2, curveOrder]
 
 116    -- curveParams[4] now has full parameters
 
 117    -- ENGINE_127_BITS version, with hard-coded 127 bit elliptic() in
 
 118       engineNSA127.c, no longer builds - obsolete (hopefully)
 
 119    -- Fixed negation bug in gmersennemod() (a long-standing FEE bug)
 
 120    -- Fixed n[words-1] == 0 bug in extractbits() (ditto)
 
 121    -- Added keyWithPrivateString:depth:usageName: to NSFEEPublicKey
 
 122    -- Deleted obsolete #defines from NSFastEllipticCurve.c, including those
 
 123       for signature_compare()
 
 124    -- Added FEE_PROFILE logic
 
 125    -- Now have unified giant-to-byteRep mechanism via serializeGiant and
 
 126       deserializeGiant. Deleted canonicalize_ints(), canonicalize_shorts(),
 
 127       giant_cleanse(), data_to_giant()
 
 128    -- Removed all *_to_hexstr and hexstr_to* code
 
 131    * First version known to be bit-for-bit compatible with JavaFEE.
 
 132      keys, signatures, ciphertext, and cipherfiles. Tested against
 
 134    * Integrated in cryptdev master 13 Feb 1997.
 
 135    -- Broke backward compatibility with CipherFiles. CFILE_VERSION = 1.
 
 136    -- First working 1:1 FEED, in feeFEED.c. Old 2:1 FEED, now in feeFEEDExp.c,
 
 138    -- Fixed zero bug in gcompg().
 
 139    -- CipherFile uses portable byte rep; added CFE_FEED and CFE_FEEDExp types
 
 140    -- New optimized numer_plus(), denom_double(), and numer_times()
 
 141    -- Added maxShorts and minBytes to curveParams
 
 142    -- Added explicit SIGN_PLUS, SIGN_MINUS as 's' arg to elliptic_add()
 
 143    -- newGiant() no longer modifies CurrentMaxShorts or giant stack
 
 144    -- Added FEE_DEPTH_192_M529891
 
 145    -- Added feeFEEDCipherTextSize(), feeFEEDExpCipherTextSize()
 
 146    -- Fixed platform dependencies in MD5.c
 
 147    -- All borrowGiant() calls in NSFastEllipticCurve,c specify explicit
 
 148       giant size (usually curveParams.maxShorts)
 
 149    -- #ifdef'd out matric math routines in NSGiantIntegers.c
 
 150    -- Added FEE_DEPTH_192_M529891
 
 151    -- CurveParams.c now assumes all fields have valid giants
 
 152    -- feeCipherfile now has four encrTypes - CFE_PublicDES, CFE_RandDES,
 
 153       CFE_FEED, CFE_FEEDExp
 
 156    * Integrated in cryptdev master 20 Feb 1997.
 
 157    -- CipherFile - was {key1,key2}, is {sendPubKey,otherKey}
 
 158    -- Broke out common defines into CipherFileTypes.h
 
 159    -- NSCipher returns nil properly on otherKeyData, sigSata, sendPubKeyData
 
 160    -- Added enc64WithLines; dec64 ignores all whitespace
 
 161    -- Broke out encrType-specific functions in CipherFile{FEED,DES}
 
 164    * Integrated in cryptdev master 7 Mar 1997.
 
 165    * Sent to REC 7 Mar 1997.
 
 166    -- Added curve depth = 3; q=40, k=213
 
 167    -- cleaned up CryptKit.h, NSCryptors.h
 
 168    -- updated Makefile for backup purposes
 
 169    -- Moved NSFEEPublicKey interface into its own file
 
 170    -- Added mulgTime profiling stat
 
 171    -- Deleted len = par->minBytes kludge from make_pad()
 
 172    -- was iszero(); is isZero()
 
 173    -- made bitlen() assertion conditional on FEE_DEBUG
 
 174    -- Trimmed plainBlockSize by one byte if q mod 8 = 0 in feeFEED,
 
 175       feeFEEEDExp. This is an incompatible change! But I don't think anyone
 
 176       was using the last version....
 
 179    * Integrated into cryptdev master 31 Mar 1997
 
 180    -- New NSMD5Hash class
 
 181    -- Rewrote NSDESCryptor using feeDES
 
 182    -- NSDataDigester was interface, is protocol
 
 183    -- Deleted digestObjectsWithKeys method from NSDataDigester
 
 184    -- Deleted NSRequestConcreteImplementation from NSDESCryptor and
 
 185       NSRandomNumberGenerator
 
 186    -- Rewrote NSRandomNumberGenerator using feeRandom
 
 187    -- Cleaned up misc. #ifdefs and stale code
 
 188    -- Put DES per-instance variables in struct _desInst
 
 189    -- Fixed memory leaks in feePubKeyCreateKeyString(), feeFEED.c
 
 190    -- Removed ANSI C headers from Public Header; framework is now strictly
 
 194    * Integrated into cryptdev master 1 May 1997
 
 195    * Associated with ComDemo announcement 1 May 1997
 
 196    -- No functional changes, only debugging printfs
 
 199    * Integrated into cryptdev master 11 June 1997
 
 200    -- Mods to build on Mac CodeWarrior
 
 201       -- was #import, is #include
 
 202       -- mods to platform.[ch]
 
 203       -- lots of compiler warning fixes, mainly due to MW's inability to
 
 204          implicitly cast unsigned char * to char *
 
 207    * Integrated into cryptdev master 18 June 1997
 
 208    -- New divg_via_recip(), modg_via_recip(), make_recip()
 
 209    -- new per-curveParams fields x1OrderPlusRecip and lesserX1OrderRecip
 
 210    -- Added lesserX1OrderJustify(), x1OrderPlusJustify(), binvg_cp()
 
 211    -- Added new multiple stack borrowGiant() mechanism
 
 212    -- All calls to borrowGiant() and newGiant() explicitly pass needed size;
 
 213       no more borrowGiant(0)
 
 214    -- Deleted old (i.e., obsolete and/or debugging) code from
 
 215       NSGiantIntegers.c and NSFastEllipticCurve.c
 
 216    -- Added description of FEED and FEEDExp ciphertext to ByteRep.doc
 
 217    -- Marked KeyStringFormat.doc as obsolete
 
 220    -- Implemented ECDSA in feeECDSA.[ch]
 
 221    -- Added binvg_orderPlus(), x1OrderPlusMod()
 
 222    -- Added generic signature encode/decode to byteRep.[ch]