This is NXPGPDelegate.m in view mode; [Download] [Up]
/* Generated by Interface Builder */ #import "NXPGPDelegate.h" #import "TextView.h" #import "Crypter.h" #import <appkit/publicWraps.h> #import <appkit/Application.h> #import <appkit/Listener.h> #import <appkit/Window.h> #import <appkit/Pasteboard.h> #import <appkit/FormCell.h> #import <appkit/TextField.h> #import <appkit/Text.h> #import <appkit/Form.h> #import <appkit/Button.h> #import <defaults/defaults.h> #import <appkit/NXCType.h> #import <streams/streams.h> #define DECRYPT 0 #define SIGN 1 #define DECRYPTINWIN 2 #import <libc.h> #import <stdio.h> #import <strings.h> #import <stdlib.h> #import <ctype.h> @implementation NXPGPDelegate -appDidInit:sender { id theListener = [NXApp appListener]; [theListener setServicesDelegate: self]; return self; } - appWillInit:sender { char name[64]; char temp[1024]; int namelen = 64,c; const char *secring; static NXDefaultsVector NXPGPDefaults = { {"PGPPATH", ""}, {"secring", ""}, {"userid", ""}, {"signWhenEncrypt","1"}, {NULL} }; NXRegisterDefaults ("NXPGP", NXPGPDefaults); sprintf (userid, NXGetDefaultValue ("NXPGP", "userid")); if (!strcmp (userid, "")) { gethostname (name, namelen); sprintf (userid, "%s@%s", getenv ("USER"), name); NXSetDefault ("NXPGP", "userid", userid); } sprintf (temp, NXGetDefaultValue ("NXPGP", "PGPPATH")); if (!strcmp (temp, "")) { sprintf (temp, "%s/.pgp", getenv ("HOME")); NXSetDefault ("NXPGP", "PGPPATH", temp); } secring = NXGetDefaultValue ("NXPGP", "secring"); [signForm setStringValue: userid at:1]; [PGPPATHForm setStringValue: temp at:0]; [signForm setStringValue: secring at:0]; sprintf (temp, NXGetDefaultValue ("NXPGP", "signWhenEncrypt")); if(isdigit(temp[0])) { c=temp[0]-60; [signSwitch setIntValue: c]; } else [signSwitch setIntValue:1]; [decryptWin setBackgroundGray:NX_LTGRAY]; decryptTextView =[[TextView alloc] setup:decryptWin]; decryptText =[decryptTextView getText:self]; [self clearText:decryptText]; [decryptTextView display]; [statusWin setBackgroundGray:NX_LTGRAY]; statusTextView =[[TextView alloc] setup:statusWin]; [statusTextView display]; statusText =[statusTextView getText:self]; [self clearText:statusText]; [statusTextView display]; [self setAll:self]; return self; } -(BOOL)appAcceptsAnotherFile:sender { return YES; } -(int)app:sender openFile:(const char *)name type:(const char *)type { char **outdata; int len=1024; char tt[strlen(name)+1]; strcpy(tt, name); ppMode = DECRYPT; [[passPhrasePanel center] makeKeyAndOrderFront:self]; [genericPassPhraseTextField selectText:self]; [self clearText:statusText]; previousApp =[NXApp activateSelf:YES]; if( [NXApp runModalFor:passPhrasePanel]!=1) { char *aFile; [NXApp activate:previousApp]; aFile=strtok(tt, "\t"); while(aFile) { outdata =[myCrypter decodeFile: aFile length:&len]; [statusText setText:outdata[1]]; if(returnLength) { //[pboard declareTypes: types num: 1 owner:self]; //[pboard writeType: NXAsciiPboardType data: outdata[0] length:returnLength]; } else { [statusWin makeKeyAndOrderFront:self]; } free (outdata[0]); free (outdata[1]); aFile=strtok(NULL, "\t"); } } else { [NXApp activate:previousApp]; [passPhrasePanel orderOut:self]; } [self clearPassPhrase:genericPassPhraseTextField]; return 1; } -settingsSet:(id) pboard userData:(const char *) userData error:(char **) msg { [NXApp activateSelf:YES]; [settingsWindow makeKeyAndOrderFront:self]; return self; } -encryptPBoard:(id) pboard userData:(const char *) userData error:(char **) msg { const char *types[1]; char **outdata; types[0] = NXAsciiPboardType; if (!strcmp ([pboard findAvailableTypeFrom: types num:1], NXAsciiPboardType)) { [pboard readType: NXAsciiPboardType data: &pbdata length:&datalen]; } else *msg = "No ASCII data."; [[encryptPanel center] makeKeyAndOrderFront:self]; [encryptToForm selectTextAt:0]; [self clearText:statusText]; previousApp =[NXApp activateSelf:YES]; if([NXApp runModalFor:encryptPanel]!=1) { [NXApp activate:previousApp]; outdata =[myCrypter encodeText: pbdata length:datalen]; [statusText setText:outdata[1]]; if(returnLength) { [pboard declareTypes: types num: 1 owner:self]; [pboard writeType: NXAsciiPboardType data: outdata[0] length:returnLength]; } else { [statusWin makeKeyAndOrderFront:self]; } free (outdata[0]); free (outdata[1]); } else { [NXApp activate:previousApp]; [encryptPanel orderOut:self]; } [self clearPassPhrase:passTextField]; return self; } -encryptFilePBoard:(id) pboard userData:(const char *) userData error:(char **) msg { const char *types[1]; char **outdata; types[0] = NXFilenamePboardType; if (!strcmp ([pboard findAvailableTypeFrom: types num:1], NXFilenamePboardType)) { [pboard readType: NXFilenamePboardType data: &pbdata length:&datalen]; } else *msg = "No Filename data."; [[encryptPanel center] makeKeyAndOrderFront:self]; [encryptToForm selectTextAt:0]; [self clearText:statusText]; previousApp =[NXApp activateSelf:YES]; if([NXApp runModalFor:encryptPanel]!=1) { char *aFile; char tt[strlen(pbdata)+1]; strcpy(tt, pbdata); [NXApp activate:previousApp]; aFile=strtok(tt, "\t"); while(aFile) { outdata =[myCrypter encodeFile: aFile length:datalen]; [statusText setText:outdata[1]]; if(returnLength) { //[pboard declareTypes: types num: 1 owner:self]; //[pboard writeType: NXAsciiPboardType data: outdata[0] length:returnLength]; } else { [statusWin makeKeyAndOrderFront:self]; } free (outdata[0]); free (outdata[1]); aFile=strtok(NULL, "\t"); } } else { [NXApp activate:previousApp]; [encryptPanel orderOut:self]; } [self clearPassPhrase:passTextField]; return self; } -doEncrypt:sender { int tempsign; char asc[32]; tempsign=[signSwitch intValue]; [myCrypter setuserString: [encryptToForm stringValueAt:0]]; if(tempsign) { [myCrypter setpassPhrase:[passTextField stringValue]]; } [myCrypter setsign:tempsign]; sprintf(asc,"%d",tempsign); NXSetDefault ("NXPGP", "signWhenEncrypt", asc); [encryptPanel orderOut:self]; [NXApp stopModal]; return self; } -decryptPBoard:(id) pboard userData:(const char *) userData error:(char **) msg { const char *types[1]; char **outdata; ppMode = DECRYPT; types[0] = NXAsciiPboardType; if (!strcmp ([pboard findAvailableTypeFrom: types num:1], NXAsciiPboardType)) { [pboard readType: NXAsciiPboardType data: &pbdata length:&datalen]; } else *msg = "No ASCII data."; [[passPhrasePanel center] makeKeyAndOrderFront:self]; [genericPassPhraseTextField selectText:self]; [self clearText:statusText]; previousApp =[NXApp activateSelf:YES]; if( [NXApp runModalFor:passPhrasePanel]!=1) { [NXApp activate:previousApp]; outdata =[myCrypter decodeText: pbdata length:&datalen]; [statusText setText:outdata[1]]; if(returnLength) { [pboard declareTypes: types num: 1 owner:self]; [pboard writeType: NXAsciiPboardType data: outdata[0] length:returnLength]; } else { [statusWin makeKeyAndOrderFront:self]; } free (outdata[0]); free (outdata[1]); } else { [NXApp activate:previousApp]; [passPhrasePanel orderOut:self]; } [self clearPassPhrase:genericPassPhraseTextField]; return self; } -decryptFilePBoard:(id) pboard userData:(const char *) userData error:(char **) msg { const char *types[1]; char **outdata; ppMode = DECRYPT; types[0] = NXFilenamePboardType; if (!strcmp ([pboard findAvailableTypeFrom: types num:1], NXFilenamePboardType)) { [pboard readType: NXFilenamePboardType data: &pbdata length:&datalen]; } else *msg = "No Filename data."; [[passPhrasePanel center] makeKeyAndOrderFront:self]; [genericPassPhraseTextField selectText:self]; [self clearText:statusText]; previousApp =[NXApp activateSelf:YES]; if( [NXApp runModalFor:passPhrasePanel]!=1) { char *aFile; char tt[strlen(pbdata)+1]; strcpy(tt, pbdata); [NXApp activate:previousApp]; aFile=strtok(tt, "\t"); while(aFile) { outdata =[myCrypter decodeFile: aFile length:&datalen]; [statusText setText:outdata[1]]; if(returnLength) { //[pboard declareTypes: types num: 1 owner:self]; //[pboard writeType: NXAsciiPboardType data: outdata[0] length:returnLength]; } else { [statusWin makeKeyAndOrderFront:self]; } free (outdata[0]); free (outdata[1]); aFile=strtok(NULL, "\t"); } } else { [NXApp activate:previousApp]; [passPhrasePanel orderOut:self]; } [self clearPassPhrase:genericPassPhraseTextField]; return self; } -doDecrypt:sender { [myCrypter setpassPhrase:[genericPassPhraseTextField stringValue]]; [passPhrasePanel orderOut:self]; [NXApp stopModal]; return self; } -signPBoard:(id) pboard userData:(const char *) userData error:(char **) msg { const char *types[1]; char **outdata; ppMode = SIGN; types[0] = NXAsciiPboardType; if (!strcmp ([pboard findAvailableTypeFrom: types num:1], NXAsciiPboardType)) { [pboard readType: NXAsciiPboardType data: &pbdata length:&datalen]; } else *msg = "No ASCII data."; [[passPhrasePanel center] makeKeyAndOrderFront:self]; [genericPassPhraseTextField selectText:self]; [self clearText:statusText]; previousApp =[NXApp activateSelf:YES]; if( [NXApp runModalFor:passPhrasePanel]!=1) { [NXApp activate:previousApp]; outdata =[myCrypter signText: pbdata length:&datalen]; [statusText setText:outdata[1]]; if(returnLength) { [pboard declareTypes: types num: 1 owner:self]; [pboard writeType: NXAsciiPboardType data: outdata[0] length:returnLength]; } else { [statusWin makeKeyAndOrderFront:self]; } free (outdata[0]); free (outdata[1]); } else { [NXApp activate:previousApp]; [passPhrasePanel orderOut:self]; } [self clearPassPhrase:genericPassPhraseTextField]; return self; } -signFilePBoard:(id) pboard userData:(const char *) userData error:(char **) msg { const char *types[1]; char **outdata; ppMode = SIGN; types[0] = NXFilenamePboardType; if (!strcmp ([pboard findAvailableTypeFrom: types num:1], NXFilenamePboardType)) { [pboard readType: NXFilenamePboardType data: &pbdata length:&datalen]; } else *msg = "No ASCII data."; [[passPhrasePanel center] makeKeyAndOrderFront:self]; [genericPassPhraseTextField selectText:self]; [self clearText:statusText]; previousApp =[NXApp activateSelf:YES]; if( [NXApp runModalFor:passPhrasePanel]!=1) { char *aFile; char tt[strlen(pbdata)+1]; strcpy(tt, pbdata); [NXApp activate:previousApp]; aFile=strtok(tt, "\t"); while(aFile) { outdata =[myCrypter signFile: aFile length:&datalen]; [statusText setText:outdata[1]]; if(returnLength) { //[pboard declareTypes: types num: 1 owner:self]; //[pboard writeType: NXAsciiPboardType data: outdata[0] length:returnLength]; } else { [statusWin makeKeyAndOrderFront:self]; } free (outdata[0]); free (outdata[1]); aFile=strtok(NULL, "\t"); } } else { [NXApp activate:previousApp]; [passPhrasePanel orderOut:self]; } [self clearPassPhrase:genericPassPhraseTextField]; return self; } -doSign:sender { [myCrypter setpassPhrase:[genericPassPhraseTextField stringValue]]; [passPhrasePanel orderOut:self]; [NXApp stopModal]; return self; } -checksigPBoard:(id) pboard userData:(const char *) userData error:(char **) msg { const char *types[1]; char **outdata; types[0] = NXAsciiPboardType; if (!strcmp ([pboard findAvailableTypeFrom: types num:1], NXAsciiPboardType)) { [pboard readType: NXAsciiPboardType data: &pbdata length:&datalen]; } else { *msg = "No ASCII data."; return self; } [self clearText:statusText]; [statusWin display]; outdata =[myCrypter checkSig: pbdata length:&datalen]; [statusText setText:outdata[1]]; free (outdata[0]); free (outdata[1]); [[statusWin display] makeKeyAndOrderFront:self]; [NXApp activateSelf:YES]; return self; } -checkFilesigPBoard:(id) pboard userData:(const char *) userData error:(char **) msg { const char *types[1]; char **outdata; char *aFile; types[0] = NXFilenamePboardType; if (!strcmp ([pboard findAvailableTypeFrom: types num:1], NXFilenamePboardType)) { [pboard readType: NXFilenamePboardType data: &pbdata length:&datalen]; } else { *msg = "No ASCII data."; return self; } [self clearText:statusText]; [statusWin display]; { char tt[strlen(pbdata)+1]; strcpy(tt, pbdata); aFile=strtok(tt, "\t"); while(aFile) { outdata =[myCrypter checkFileSig: aFile length:&datalen]; [statusText setText:outdata[1]]; free (outdata[0]); free (outdata[1]); aFile=strtok(NULL, "\t"); } } [[statusWin display] makeKeyAndOrderFront:self]; [NXApp activateSelf:YES]; return self; } -addkeyPBoard:(id) pboard userData:(const char *) userData error:(char **) msg { const char *types[1]; char **outdata; types[0] = NXAsciiPboardType; if (!strcmp ([pboard findAvailableTypeFrom: types num:1], NXAsciiPboardType)) { [pboard readType: NXAsciiPboardType data: &pbdata length:&datalen]; } else { *msg = "No ASCII data."; return self; } [self clearText:statusText]; [statusWin display]; outdata =[myCrypter addKey: pbdata length:&datalen]; [statusText setText:outdata[1]]; free (outdata[0]); free (outdata[1]); [[statusWin display] makeKeyAndOrderFront:self]; [NXApp activateSelf:YES]; return self; } -addkeyFilePBoard:(id) pboard userData:(const char *) userData error:(char **) msg { const char *types[1]; char **outdata; char *aFile; types[0] = NXFilenamePboardType; if (!strcmp ([pboard findAvailableTypeFrom: types num:1], NXFilenamePboardType)) { [pboard readType: NXFilenamePboardType data: &pbdata length:&datalen]; } else { *msg = "No ASCII data."; return self; } [self clearText:statusText]; [statusWin display]; { char tt[strlen(pbdata)+1]; strcpy(tt, pbdata); aFile=strtok(tt, "\t"); while(aFile) { outdata =[myCrypter addKeyFile: aFile length:&datalen]; [statusText setText:outdata[1]]; free (outdata[0]); free (outdata[1]); aFile=strtok(NULL, "\t"); } } [[statusWin display] makeKeyAndOrderFront:self]; [NXApp activateSelf:YES]; return self; } -decryptPBoardInWindow:(id) pboard userData:(const char *) userData error:(char **) msg { char **outdata; const char *types[1]; types[0] = NXAsciiPboardType; if (!strcmp ([pboard findAvailableTypeFrom: types num:1], NXAsciiPboardType)) { [pboard readType: NXAsciiPboardType data: &pbdata length:&datalen]; } else { *msg = "No ASCII data."; return self; } ppMode = DECRYPTINWIN; [[passPhrasePanel center] makeKeyAndOrderFront:self]; [genericPassPhraseTextField selectText:self]; previousApp =[NXApp activateSelf:YES]; if( [NXApp runModalFor:passPhrasePanel]!=1) { [self clearText:statusText]; [self clearText:decryptText]; [[statusWin display] orderFront:self]; [[decryptWin display] orderFront:self]; outdata =[myCrypter decodeText: pbdata length:&datalen]; [decryptText setText:outdata[0]]; [statusText setText:outdata[1]]; free (outdata[0]); free (outdata[1]); [[statusWin display] orderFront:self]; [[decryptWin display] makeKeyAndOrderFront:self]; } else { [NXApp activate:previousApp]; [passPhrasePanel orderOut:self]; } [self clearPassPhrase:genericPassPhraseTextField]; return self; } -doDecryptInWin:sender { [myCrypter setpassPhrase:[genericPassPhraseTextField stringValue]]; [passPhrasePanel orderOut:self]; [NXApp stopModal]; return self; } -setAll:sender { const char *tempstr; tempstr =[PGPPATHForm stringValueAt:0]; [myCrypter setPGPPATH:tempstr]; NXWriteDefault ("NXPGP", "PGPPATH", tempstr); tempstr =[signForm stringValueAt:0]; if (strlen (tempstr) != 0) { [myCrypter setkeyRing:tempstr]; NXWriteDefault ("NXPGP", "secring", tempstr); } else [myCrypter setkeyRing:"secring.pgp"]; tempstr =[signForm stringValueAt:1]; if (strlen (tempstr) != 0) { [myCrypter setuserID:tempstr]; NXWriteDefault ("NXPGP", "userid", tempstr); } else { [signForm setStringValue: userid at:1]; [myCrypter setuserID:userid]; } if (sender != self) { [NXApp deactivateSelf]; [settingsWindow orderOut:self]; } return self; } -setLength:(int) length { returnLength = length; return self; } -encryptAction:sender; { if (sender == encryptToForm) { if ([signSwitch intValue]) if (strlen ([passTextField stringValue]) == 0) { [passTextField selectText:self]; } else { [encryptOK performClick:self]; } else { [encryptOK performClick:self]; } } else if (sender == passTextField) { if (strlen ([encryptToForm stringValueAt:0]) == 0) { NXBeep (); [encryptToForm selectTextAt:0]; } else { [encryptOK performClick:self]; } } return self; } -passPhraseOk:sender { if (ppMode == DECRYPT) { [self doDecrypt:self]; } else if (ppMode == SIGN) { [self doSign:self]; } else if (ppMode == DECRYPTINWIN) { [self doDecryptInWin:self]; } return self; } -infoPanel:sender { if (!infoPanel) { [NXApp loadNibSection: "InfoHelp.nib" owner:self]; } [[infoPanel center] makeKeyAndOrderFront:sender]; return self; } -helpPanel:sender { if (!helpPanel) { [NXApp loadNibSection: "InfoHelp.nib" owner:self]; } [helpPanel makeKeyAndOrderFront:sender]; return self; } -cancelSet:sender { [settingsWindow orderOut:self]; return self; } -cancelRequest:sender { [NXApp stopModal:1]; return self; } //Reset all this crud. -clearText:(id)thisText { [[[[[[[thisText setMonoFont:NO] setSelGray:NX_LTGRAY] selectAll:self] delete:self] setSelGray:NX_WHITE] setTextGray:NX_BLACK] setBackgroundGray:NX_LTGRAY]; return self; } //This may help keep the passphrase from being stored in the memory somewhere. -clearPassPhrase:(id)thisPassTextField { char *junk; int i; junk=malloc(256); for(i=0;i<255;junk[i++]='X'); junk[256]='\0'; [thisPassTextField setStringValue:junk]; [thisPassTextField setStringValue:""]; free(junk); return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.