Index: Makefile =================================================================== RCS file: /var/users/js3guj/cvs/js3guj/palmkey/Makefile,v retrieving revision 1.1.1.1 retrieving revision 1.3 diff -u -r1.1.1.1 -r1.3 --- Makefile 2003/04/27 05:53:05 1.1.1.1 +++ Makefile 2003/07/24 03:01:51 1.3 @@ -1,7 +1,7 @@ ICONTEXT = PalmKey APPID = Pkey -VERSION = 0.9.0 +VERSION = 0.9.0-chitianzi INCLUDES = -I.. @@ -10,6 +10,8 @@ BUILDPRC = build-prc PILRC = pilrc SED = sed +#DEFINES = -DERROR_CHECK_LEVEL=ERROR_CHECK_PARTIAL -DRFC2289 +DEFINES = -DERROR_CHECK_LEVEL=ERROR_CHECK_FULL -DRFC2289 CFLAGS = -O2 -Wall -mno-own-gp -D__DEFINE_TYPES_ $(DEFINES) $(INCLUDES) @@ -45,3 +47,6 @@ clean: rm -f *.[oa] md[45]/*.o sha1/sha1.o palmkey palmkey.rcp *.bin *.stamp *.[pg]rc + +dict.o: palmkey_rcp.h +palmkey.o: palmkey_rcp.h Index: palmkey.c =================================================================== RCS file: /var/users/js3guj/cvs/js3guj/palmkey/palmkey.c,v retrieving revision 1.1.1.1 retrieving revision 1.3 diff -u -r1.1.1.1 -r1.3 --- palmkey.c 2003/04/27 05:53:05 1.1.1.1 +++ palmkey.c 2003/05/28 15:57:46 1.3 @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: palmkey_diff.txt,v 1.1 2003/07/24 03:35:29 js3guj Exp $ + * $Id: palmkey_diff.txt,v 1.1 2003/07/24 03:35:29 js3guj Exp $ */ #include @@ -332,9 +332,16 @@ static void do_sha1(char *buf) { EventType event; +#ifdef RFC2289 + char results[8]; +#else UInt32 results[5]; +#endif SHA1_CTX *sha; int i; +#ifdef RFC2289 + int j, k; +#endif /* Allocate sha1 context structure. */ sha = MemPtrNew(sizeof(SHA1_CTX)); @@ -343,12 +350,35 @@ /* Initialize context, add our string, and compute the hash. */ SHA1Init(sha); SHA1Update(sha, buf, StrLen(buf)); +#ifdef RFC2289 + SHA1Final(NULL, sha); +#else SHA1Final((unsigned char *)results, sha); +#endif /* Fold the 160 bit result into 64 bits. */ +#ifdef RFC2289 + sha->state[0] ^= sha->state[2]; + sha->state[1] ^= sha->state[3]; + sha->state[0] ^= sha->state[4]; +#else results[0] ^= results[2]; results[1] ^= results[3]; results[0] ^= results[4]; +#endif + +#ifdef RFC2289 + /* + * Copy the resulting 64 bits to the result buffer in little endian + * fasshin (analogous to the way MD4Final() and MD5Final() do). + */ + for (j=k=0; k<8; j++, k+=4) { + results[k] = (unsigned char)(sha->state[j] & 0xff); + results[k+1] = (unsigned char)((sha->state[j] >> 8) & 0xff); + results[k+2] = (unsigned char)((sha->state[j] >> 16) & 0xff); + results[k+3] = (unsigned char)((sha->state[j] >> 24) & 0xff); + } +#endif /* Reset the cancelled variable. */ prgCancelled = 0; @@ -360,11 +390,29 @@ for (i = 0; i < (count > 99 ? 100 : count); i++) { SHA1Init(sha); SHA1Update(sha, (unsigned char *)results, 8); - SHA1Final((unsigned char *)results, sha); +#ifdef RFC2289 + SHA1Final(NULL, sha); - results[0] ^= results[2]; - results[1] ^= results[3]; - results[0] ^= results[4]; + sha->state[0] ^= sha->state[2]; + sha->state[1] ^= sha->state[3]; + sha->state[0] ^= sha->state[4]; +#else + SHA1Final((unsigned char *)results, sha); + + results[0] ^= results[2]; + results[1] ^= results[3]; + results[0] ^= results[4]; +#endif + +#ifdef RFC2289 + /* See above. */ + for (j=k=0; k<8; j++, k+=4) { + results[k] = (unsigned char)(sha->state[j] & 0xff); + results[k+1] = (unsigned char)((sha->state[j] >> 8) & 0xff); + results[k+2] = (unsigned char)((sha->state[j] >> 16) & 0xff); + results[k+3] = (unsigned char)((sha->state[j] >> 24) & 0xff); + } +#endif } count -= i; @@ -663,18 +711,13 @@ FatalErrorIf(fld == NULL, NullPtrMsg, file, __LINE__); FldSetTextHandle(fld, (MemHandle)tmp); } - - /* Remove the english button if the dictionary is not present. */ - if (dict == 0) { - ctl = GetObjectPtr(frm, ResponseEngFormat); - CtlHideControl(ctl); - } } static Boolean MainViewHandleEvent(EventPtr event) { Boolean handled = false; FormPtr frm; + ControlPtr ctl; /* Check out eType to see what kind of event this is. */ switch(event->eType) { @@ -690,9 +733,20 @@ handled = true; break; case ResponseEngFormat: - format = ResponseEngFormat; - MainViewShowResponse(); - handled = false; + if (dict == 0) { + FrmAlert(EnglishDictAlert); + frm = FrmGetFormPtr(MainView); + FatalErrorIf(frm == NULL, NullPtrMsg, file, __LINE__); + ctl = GetObjectPtr(frm, ResponseEngFormat); + CtlSetValue(ctl, 0); + ctl = GetObjectPtr(frm, ResponseHexFormat); + CtlSetValue(ctl, 1); + } + else { + format = ResponseEngFormat; + MainViewShowResponse(); + } + handled = false; break; case ResponseHexFormat: format = ResponseHexFormat; Index: palmkey.rcp.in =================================================================== RCS file: /var/users/js3guj/cvs/js3guj/palmkey/palmkey.rcp.in,v retrieving revision 1.1.1.1 retrieving revision 1.4 diff -u -r1.1.1.1 -r1.4 --- palmkey.rcp.in 2003/04/27 05:53:05 1.1.1.1 +++ palmkey.rcp.in 2003/07/24 03:01:51 1.4 @@ -23,7 +23,7 @@ // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF // SUCH DAMAGE. // -// $Id: palmkey_diff.txt,v 1.1 2003/07/24 03:35:29 js3guj Exp $ +// $Id: palmkey_diff.txt,v 1.1 2003/07/24 03:35:29 js3guj Exp $ // #include "palmkey_rcp.h" @@ -42,29 +42,27 @@ BEGIN TITLE "PalmKey" - LABEL "Algorithm:" ID HashLabel AT (16 17) USABLE - POPUPTRIGGER "" ID HashListTrigger AT (60 PrevTop AUTO AUTO) LEFTANCHOR + LABEL "Algorithm:" ID HashLabel AT (RIGHT@64 20) USABLE FONT 1 + POPUPTRIGGER "" ID HashListTrigger AT (67 PrevTop AUTO AUTO) LEFTANCHOR LIST "otp-md4" "otp-md5" "otp-sha1" ID HashList AT (PrevLeft PrevTop AUTO AUTO) NONUSABLE VISIBLEITEMS 3 POPUPLIST ID HashListTrigger HashList - LABEL "Count:" ID CountLabel AT (32 30) USABLE - FIELD ID CountField at (60 PrevTop 22 11) USABLE NUMERIC EDITABLE UNDERLINED SINGLELINE MAXCHARS 4 + LABEL "Count:" ID CountLabel AT (RIGHT@64 PrevTop+13) USABLE FONT 1 + FIELD ID CountField at (67 PrevTop 22 11) USABLE NUMERIC EDITABLE UNDERLINED SINGLELINE MAXCHARS 4 - LABEL "Seed:" ID SeedLabel AT (36 43) USABLE - FIELD ID SeedField AT (60 PrevTop 90 11) USABLE EDITABLE UNDERLINED SINGLELINE MAXCHARS 16 + LABEL "Seed:" ID SeedLabel AT (RIGHT@64 PrevTop+13) USABLE FONT 1 + FIELD ID SeedField AT (67 PrevTop 90 11) USABLE EDITABLE UNDERLINED SINGLELINE MAXCHARS 16 - LABEL "Passphrase:" ID PassphraseLabel AT (10 56) USABLE - FIELD ID PassphraseField AT (60 PrevTop 90 11) USABLE EDITABLE UNDERLINED SINGLELINE MAXCHARS 64 - - BUTTON "Compute" ID ComputeButton AT (30 72 AUTO AUTO) USABLE FRAME - BUTTON "Clear" ID ClearButton AT (95 PrevTop AUTO AUTO) USABLE FRAME - - LABEL "Response:" ID ResponseLabel AT (0 127) USABLE - PUSHBUTTON "Eng" ID ResponseEngFormat AT (107 123 25 AUTO) USABLE GROUP 1 + LABEL "Passphrase:" ID PassphraseLabel AT (RIGHT@64 PrevTop+13) USABLE FONT 1 + FIELD ID PassphraseField AT (67 PrevTop 90 33) USABLE EDITABLE UNDERLINED MULTIPLELINES MAXCHARS 64 + LABEL "Format:" ID ResponseFormatLabel AT (RIGHT@64 PrevTop+37) USABLE FONT 1 + PUSHBUTTON "Eng" ID ResponseEngFormat AT (PrevRight+4 PrevTop 25 AUTO) USABLE GROUP 1 PUSHBUTTON "Hex" ID ResponseHexFormat AT (PrevLeft+26 PrevTop 25 AUTO) USABLE GROUP 1 - FIELD ID ResponseField AT (0 138 160 11) USABLE NONEDITABLE SINGLELINE MAXCHARS 29 - - GRAFFITISTATEINDICATOR AT (150 150) + LABEL "Response:" ID ResponseLabel AT (5 PrevTop+15) USABLE FONT 1 + FIELD ID ResponseField AT (PrevLeft PrevTop+13 150 11) USABLE NONEDITABLE SINGLELINE MAXCHARS 29 + BUTTON "Compute" ID ComputeButton AT (1 147 AUTO AUTO) USABLE FRAME + BUTTON "Clear" ID ClearButton AT (PrevRight+6 PrevTop AUTO AUTO) USABLE FRAME + GRAFFITISTATEINDICATOR AT (135 150) END MENU ID MainViewMenu @@ -75,8 +73,10 @@ MENUITEM "Cut" ID 10001 "X" MENUITEM "Copy" ID 10002 "C" MENUITEM "Paste" ID 10003 "P" + MENUITEM "Select All" ID 10004 "S" MENUITEM SEPARATOR MENUITEM "Keyboard" ID 10006 "K" + MENUITEM "Graffiti Help" ID 10007 "G" END PULLDOWN "Options" @@ -94,8 +94,18 @@ LABEL "Copyright 2000 by Jason Fritcher" AUTOID AT (CENTER PREVBOTTOM) LABEL "All Rights Reserved." AUTOID AT (CENTER PREVBOTTOM) LABEL "http://palmkey.sourceforge.net/" AUTOID AT (CENTER PREVBOTTOM+PREVHEIGHT) + LABEL "Slightly modified by" AUTOID AT (CENTER PREVBOTTOM+PREVHEIGHT) + LABEL "chitianzi@yahoo.com" AUTOID AT (CENTER PREVBOTTOM) BUTTON "Ok" AUTOID AT (CENTER 139 30 12) +END + +ALERT ID EnglishDictAlert +ERROR +BEGIN + TITLE "English Dictionary is not found" + MESSAGE "English Dictionary is not present. You have to install it to use this feature." + BUTTONS "Ok" END ALERT ID InputAlert Index: palmkey_rcp.h =================================================================== RCS file: /var/users/js3guj/cvs/js3guj/palmkey/palmkey_rcp.h,v retrieving revision 1.1.1.1 retrieving revision 1.3 diff -u -r1.1.1.1 -r1.3 --- palmkey_rcp.h 2003/04/27 05:53:05 1.1.1.1 +++ palmkey_rcp.h 2003/05/28 15:57:46 1.3 @@ -23,7 +23,7 @@ // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF // SUCH DAMAGE. // -// $Id: palmkey_diff.txt,v 1.1 2003/07/24 03:35:29 js3guj Exp $ +// $Id: palmkey_diff.txt,v 1.1 2003/07/24 03:35:29 js3guj Exp $ // #define AppID 1000 @@ -48,10 +48,11 @@ #define ComputeButton 1050 #define ClearButton 1051 -#define ResponseLabel 1060 +#define ResponseFormatLabel 1060 #define ResponseEngFormat 1061 #define ResponseHexFormat 1062 -#define ResponseField 1063 +#define ResponseLabel 1063 +#define ResponseField 1064 #define MainViewMenu 1000 #define AboutMenuID 1001 @@ -62,6 +63,7 @@ #define RomAlert 1000 #define InputAlert 1001 #define FatalAlert 1002 +#define EnglishDictAlert 1003 #define NullPtrMsg 1000