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]