changes
  1                           CryptKit change log
  2  
  3  CryptKit-8
  4     -- Added prototypes for NSFEEPublicKey convenience methods to NSCryptors.h
  5  
  6  CryptKit-9
  7     * Alpha version to dreece and crandall 13 Aug 1996
  8     * FEE_KEY_VERSION 3, FEE_KEYSTRING_VERSION 1
  9  
 10  CryptKit-10
 11     -- Added KeyStringFormat.doc
 12     -- Deleted -publicKeyData, keyWithPublicKeyData (public keys now always
 13        represented as strings)
 14     -- Beefed up range and validity checking in:
 15           -- hexstr_to_giant()
 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
 23        as ObjC files
 24  
 25  CryptKit-11
 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.
 30  
 31  CryptKit-12
 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.
 41  
 42  CryptKit-13
 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
 48  
 49  CryptKit-14
 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()
 58  
 59  CryptKit-15
 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
 66  
 67  CryptKit-16
 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
 74        signatures.
 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
 80  
 81  CryptKit-17
 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
 89         JavaFEE-4
 90      -- Deleted mersennePrimes[], set_crypt_params(), new_public_com(),
 91         key_copy()
 92      -- Most fields in keystruct now superceded by curveParams *cp
 93      -- Added setGiantSize() kludge, replaces weird call to borrowGiant(*exp)
 94         in set_crypt_params()
 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()
 99  
100  CryptKit-18
101     * Integrated into cryptdev master tree, 31 Jan 1997
102     * Completely broke backward compatibility with old key strings and
103       signatures.
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
112        uses both curves
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
129  
130  CryptKit-19
131     * First version known to be bit-for-bit compatible with JavaFEE.
132       keys, signatures, ciphertext, and cipherfiles. Tested against
133       JavaFEE-5.
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,
137        unchanged.
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
154  
155  CryptKit-20
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}
162  
163  CryptKit-21
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....
177  
178  CryptKit-22
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
191        ObjC
192  
193  CryptKit-23
194     * Integrated into cryptdev master 1 May 1997
195     * Associated with ComDemo announcement 1 May 1997
196     -- No functional changes, only debugging printfs
197  
198  CryptKit-24
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 *
205  
206  CryptKit-25
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
218  
219  CryptKit-26
220     -- Implemented ECDSA in feeECDSA.[ch]
221     -- Added binvg_orderPlus(), x1OrderPlusMod()
222     -- Added generic signature encode/decode to byteRep.[ch]