CryptKit change log
CryptKit-8
-- Added prototypes for NSFEEPublicKey convenience methods to NSCryptors.h
CryptKit-9
* Alpha version to dreece and crandall 13 Aug 1996
* FEE_KEY_VERSION 3, FEE_KEYSTRING_VERSION 1
CryptKit-10
-- Added KeyStringFormat.doc
-- Deleted -publicKeyData, keyWithPublicKeyData (public keys now always
represented as strings)
-- Beefed up range and validity checking in:
-- hexstr_to_giant()
-- new_hexstr_from_key()
-- +keyWithPublicKeyString
-- Added check for valid_hexstr() and NULL hexstr_to_key() in
+digitalSignatureWithDataRepresentation
-- Added and enforced MAX_UNAME_LENGTH
-- added key_equal(_plus, other->_plus) to -[NSFEEPublicKey isEqual:]
-- last version with NSGiantIntegers.m, utilities.m, NSFastEllipticCurve.m
as ObjC files
CryptKit-11
* FEE_KEYSTRING_VERSION = 2
FEE_KEYSTRING_VERSION_MIN = 1
-- Major rewrite of all top-level classes; ported bulk of logic to
portable C code. ObjC API (in NSCryptors.h, NSDESCryptor.h) unchanged.
CryptKit-12
* Alpha version sent to REC 6 Sep 1996 and to dreece 12 Sep 96
-- Added platform.[ch]
-- Fixed (b<n), (sign<0) case in gmersennemod() to allow for arbitrary n.
-- Added feeHashReinit() to feeHash.[hc].
-- Rewrote feeGenPrivate(). Hashes password and pads to (size of curve
order)++, then takes result mod curve order.
-- Added set_priv_key_data(), and removed its function from
new_public_with_key(); deleted new_public_with_key().
-- Initial changes for compiling on NT.
CryptKit-13
* Sent to REC for testing 1 Oct 96
-- first version to be (more or less) fully functional on NT
-- tolerate non-hex leading and trailing characters in public key string
-- Fixed --size underflow bug in normal_subg()
-- Added enc64 routines
CryptKit-14
* First version to compile & run OK on OpenStep/NT
* Alpha version sent to dreece (17 Oct 96) and Avie (18 Oct 96)
-- Added class names to CryptKit.def (was CryptKit.def.src - no longer
builds C-only DLL from win.mak!)
-- Updated to 4.1 pb_makefiles
-- misc. Makefile tweaks to compile on NT
-- Misc. tweaks for warning-free compile on NT
-- ifdef'd out DllMain()
CryptKit-15
* First integration into cryptdev master tree, 12 Nov 1996
* CFILE_VERSION = CFILE_MIN_VERSION = 1
-- Added feeCipherFile and NSCipherFile
-- Added sigSigner out param to feePubKeyVerifySignature()
-- Made enc64, dec64 more robust and more Microsoft-tolerant
-- feeGenPrivate() returns error if private key data too short
CryptKit-16
* Integrated into cryptdev master tree, 20 Dec 1996
* Sent to J. Landwehr with first NT version of ICE 20 Dec 1996
* COMMON_PUBLIC_KEY_STRING_VERSION = 2
* COMMON_FEE_SIG_VERSION
* Major changes to keystring and signature format, compatible with
JavaFEE-4 and backwards compatible with older CryptKit keys and
signatures.
* Verfified to work with ICE (JavaDemo-4) running on an NT server
-- Added debugging code to DES.c, MD5.c
-- Added mersennePrimes[24..26]
-- Newlines optional in dec64() and isValidEnc64().
-- Added byteRep support to utilities.c
CryptKit-17
-- New curveParams mechanism, with IEEE-approved curve parameters
-- Old curve param 'a' is 'c'; new params b, c, x1OrderPlus x1OrderMinus
-- This version doesn't *use* the new curve params in elliptic algebra;
it's an interim version for testing. DVT suite (ckutils/cktest) still
works at depths 0 thru 4.
-- NO API CHANGES since CryptKit-16.
-- key strings and signatures still compatible with CryptKit-16 and
JavaFEE-4
-- Deleted mersennePrimes[], set_crypt_params(), new_public_com(),
key_copy()
-- Most fields in keystruct now superceded by curveParams *cp
-- Added setGiantSize() kludge, replaces weird call to borrowGiant(*exp)
in set_crypt_params()
-- Added copyGiant(), giant_to_int()
-- Removed a bunch of dead files from project
-- Removed *_to_hexstr() from utilities.c
-- Fixed "pad too short bug" in small depth cases in feePubKeyCreatePad()
CryptKit-18
* Integrated into cryptdev master tree, 31 Jan 1997
* Completely broke backward compatibility with old key strings and
signatures.
* FEE_SIG_VERSION = 3
* PUBLIC_KEY_STRING_VERSION = 3
* Old 2:1 FEED renamed feeFEEDExp (feeFEEDExp.c, names start with
feeFEEDExp). New 1:1 FEE is feeFEED.c. A #define in feeFEED.h redirects
client's feeFEED calls to feeFEEDexp
-- New elliptic math using all curveParams fields
-- Cleaned up all which_curve/twist code to use CURVE_MINUS/CURVE_PLUS
-- plus curves now used exclusively except for in FEED decrypt, which
uses both curves
-- Moved all byteRep code from utilities.c to byteRep.c.
-- Added curveOrderJustify(), use it to trim private key data and
signature random data to [2, curveOrder]
-- curveParams[4] now has full parameters
-- ENGINE_127_BITS version, with hard-coded 127 bit elliptic() in
engineNSA127.c, no longer builds - obsolete (hopefully)
-- Fixed negation bug in gmersennemod() (a long-standing FEE bug)
-- Fixed n[words-1] == 0 bug in extractbits() (ditto)
-- Added keyWithPrivateString:depth:usageName: to NSFEEPublicKey
-- Deleted obsolete #defines from NSFastEllipticCurve.c, including those
for signature_compare()
-- Added FEE_PROFILE logic
-- Now have unified giant-to-byteRep mechanism via serializeGiant and
deserializeGiant. Deleted canonicalize_ints(), canonicalize_shorts(),
giant_cleanse(), data_to_giant()
-- Removed all *_to_hexstr and hexstr_to* code
CryptKit-19
* First version known to be bit-for-bit compatible with JavaFEE.
keys, signatures, ciphertext, and cipherfiles. Tested against
JavaFEE-5.
* Integrated in cryptdev master 13 Feb 1997.
-- Broke backward compatibility with CipherFiles. CFILE_VERSION = 1.
-- First working 1:1 FEED, in feeFEED.c. Old 2:1 FEED, now in feeFEEDExp.c,
unchanged.
-- Fixed zero bug in gcompg().
-- CipherFile uses portable byte rep; added CFE_FEED and CFE_FEEDExp types
-- New optimized numer_plus(), denom_double(), and numer_times()
-- Added maxShorts and minBytes to curveParams
-- Added explicit SIGN_PLUS, SIGN_MINUS as 's' arg to elliptic_add()
-- newGiant() no longer modifies CurrentMaxShorts or giant stack
-- Added FEE_DEPTH_192_M529891
-- Added feeFEEDCipherTextSize(), feeFEEDExpCipherTextSize()
-- Fixed platform dependencies in MD5.c
-- All borrowGiant() calls in NSFastEllipticCurve,c specify explicit
giant size (usually curveParams.maxShorts)
-- #ifdef'd out matric math routines in NSGiantIntegers.c
-- Added FEE_DEPTH_192_M529891
-- CurveParams.c now assumes all fields have valid giants
-- feeCipherfile now has four encrTypes - CFE_PublicDES, CFE_RandDES,
CFE_FEED, CFE_FEEDExp
CryptKit-20
* Integrated in cryptdev master 20 Feb 1997.
-- CipherFile - was {key1,key2}, is {sendPubKey,otherKey}
-- Broke out common defines into CipherFileTypes.h
-- NSCipher returns nil properly on otherKeyData, sigSata, sendPubKeyData
-- Added enc64WithLines; dec64 ignores all whitespace
-- Broke out encrType-specific functions in CipherFile{FEED,DES}
CryptKit-21
* Integrated in cryptdev master 7 Mar 1997.
* Sent to REC 7 Mar 1997.
-- Added curve depth = 3; q=40, k=213
-- cleaned up CryptKit.h, NSCryptors.h
-- updated Makefile for backup purposes
-- Moved NSFEEPublicKey interface into its own file
-- Added mulgTime profiling stat
-- Deleted len = par->minBytes kludge from make_pad()
-- was iszero(); is isZero()
-- made bitlen() assertion conditional on FEE_DEBUG
-- Trimmed plainBlockSize by one byte if q mod 8 = 0 in feeFEED,
feeFEEEDExp. This is an incompatible change! But I don't think anyone
was using the last version....
CryptKit-22
* Integrated into cryptdev master 31 Mar 1997
-- New NSMD5Hash class
-- Rewrote NSDESCryptor using feeDES
-- NSDataDigester was interface, is protocol
-- Deleted digestObjectsWithKeys method from NSDataDigester
-- Deleted NSRequestConcreteImplementation from NSDESCryptor and
NSRandomNumberGenerator
-- Rewrote NSRandomNumberGenerator using feeRandom
-- Cleaned up misc. #ifdefs and stale code
-- Put DES per-instance variables in struct _desInst
-- Fixed memory leaks in feePubKeyCreateKeyString(), feeFEED.c
-- Removed ANSI C headers from Public Header; framework is now strictly
ObjC
CryptKit-23
* Integrated into cryptdev master 1 May 1997
* Associated with ComDemo announcement 1 May 1997
-- No functional changes, only debugging printfs
CryptKit-24
* Integrated into cryptdev master 11 June 1997
-- Mods to build on Mac CodeWarrior
-- was #import, is #include
-- mods to platform.[ch]
-- lots of compiler warning fixes, mainly due to MW's inability to
implicitly cast unsigned char * to char *
CryptKit-25
* Integrated into cryptdev master 18 June 1997
-- New divg_via_recip(), modg_via_recip(), make_recip()
-- new per-curveParams fields x1OrderPlusRecip and lesserX1OrderRecip
-- Added lesserX1OrderJustify(), x1OrderPlusJustify(), binvg_cp()
-- Added new multiple stack borrowGiant() mechanism
-- All calls to borrowGiant() and newGiant() explicitly pass needed size;
no more borrowGiant(0)
-- Deleted old (i.e., obsolete and/or debugging) code from
NSGiantIntegers.c and NSFastEllipticCurve.c
-- Added description of FEED and FEEDExp ciphertext to ByteRep.doc
-- Marked KeyStringFormat.doc as obsolete
CryptKit-26
-- Implemented ECDSA in feeECDSA.[ch]
-- Added binvg_orderPlus(), x1OrderPlusMod()
-- Added generic signature encode/decode to byteRep.[ch]