1 CryptKit change log 2 3CryptKit-8 4 -- Added prototypes for NSFEEPublicKey convenience methods to NSCryptors.h 5 6CryptKit-9 7 * Alpha version to dreece and crandall 13 Aug 1996 8 * FEE_KEY_VERSION 3, FEE_KEYSTRING_VERSION 1 9 10CryptKit-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 25CryptKit-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 31CryptKit-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 42CryptKit-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 49CryptKit-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 59CryptKit-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 67CryptKit-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 81CryptKit-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 100CryptKit-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 130CryptKit-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 155CryptKit-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 163CryptKit-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 178CryptKit-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 193CryptKit-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 198CryptKit-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 206CryptKit-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 219CryptKit-26 220 -- Implemented ECDSA in feeECDSA.[ch] 221 -- Added binvg_orderPlus(), x1OrderPlusMod() 222 -- Added generic signature encode/decode to byteRep.[ch] 223