OpenBCM V1.13 (Linux)

Packet Radio Mailbox

DB0FHN

[JN59NK Nuernberg]

 Login: GUEST





  
DG9EP  > DPTNT    10.08.98 00:45l 319 Lines 8921 Bytes #999 (0) @ DL
BID : 988DB0IZ_02J
Read: GUEST
Subj: PGP fuer TNT  (Patch)
Path: OE1XAB<OE3XSR<OK0PPL<OK0PAD<OK0PKL<DB0MAK<DB0ERF<DB0SHG<DB0HSK<DB0QS<
      DB0IZ
Sent: 980809/2007z @:DB0IZ.#NRW.DEU.EU [BCM West<>Link BOX SOLINGEN] BCM1.40
From: DG9EP @ DB0IZ.#NRW.DEU.EU  (Walter)
To:   DPTNT @ DL
X-Info: No login password

-----BEGIN PGP SIGNED MESSAGE-----


Moin,

nachfolgend ein Patch, der PGP-Unterstuetzung fuer TNT bietet.

Voraussetzung:
TNT 1.1alpha1 oder 1.1alpha3 sowie funktionierendes PGP 2.6.x 

Anwendung wie immer mit  patch < datei.patch  und dann neu
uebersetzen.


Neue Befehle in TNT:
  :PGPAUTO on/off   Schaltet die PGP-Funktionalitaet ein oder aus
                    Default: off
  :PGPKEYAD on/off  Wenn "on", werden empfangene Keys sofort zum 
                    Keyring hinzugefuegt; wenn "off", werden diese
		    Keys nur angezeigt. Default: off
		    (Da fehlt uebrigens kein "D"; Ein Befehl in 
		     TNT kann nicht laenger als 8 Zeichen sein)
 
Was die Erweiterung kann:
  * Unterschriften in Klartext ueberpruefen 
  * Keys hinzufuegen
  
Was die Erweiterung nicht kann:  
  * Rekursiv arbeiten (also z.B. Schwachsinn wie Klartext-unterzeichnete
    keybloecke einfuegen).
  * Wenn Logfiles an sind (also z.B. :LogQSO) funktionierts nicht. Das
    ist aber auch bei :AUTO7PL so
    
Status:
  Ist eine Bastelversion; bei mir hat es unter Linux gut funktioniert.
  Ich bitte um Rueckmeldung.
    

Gruss,
  Walter


schnipp:
- ------------------------8<-------------8<---------------------------
diff -ub src.1a1/file.c src/file.c
- --- src.1a1/file.c	Mon Feb 17 01:04:22 1997
+++ src/file.c	Sun Aug  9 09:18:14 1998
@@ -264,6 +264,9 @@
     case RX_AUTO7P:
       strcat(str," A7 ");
       break;
+    case RX_PGP:
+      strcat(str," PG ");
+      break;
     }
     cut_filename(str,rx_file[channel].name);
   }
@@ -626,6 +629,7 @@
       cmd_display(mode,channel,ok_text,1);
     }
     break;
+  case RX_PGP:
   case RX_AUTO7P:
     break;
   case RX_ABIN:
@@ -1065,6 +1069,7 @@
       break; /* ignore, handled in write_file_abin */
     case RX_YAPP:
       break; /* ignore, handled in write_file_yapp */
+    case RX_PGP:
     case RX_AUTO7P:
     case RX_PLAIN:
       memcpy(newstr,str,len);
@@ -1097,6 +1102,7 @@
     case RX_NORM:
     case RX_BIN:
     case RX_PLAIN:
+    case RX_PGP:
     case RX_AUTO7P:
       break; /* ignore, handled in write_file */
     case RX_YAPP:
diff -ub src.1a1/keyboard.c src/keyboard.c
- --- src.1a1/keyboard.c	Sun Mar  2 02:21:03 1997
+++ src/keyboard.c	Sun Aug  9 21:18:48 1998
@@ -303,6 +303,8 @@
 #define F_AUTOYAPP 27
 #define F_AUTO7PL 28
 #define F_LOGBOOK 29
+#define F_PGPAUTO 30 /* dg9ep 8-98 */
+#define F_PGPKEYADD 31 /* dg9ep 8-98 */
 
 /* variables for flag command */
 #ifdef DPBOXT
@@ -326,6 +328,8 @@
 int autobin_flag;
 int autoyapp_flag;
 int auto7pl_flag;
+int pgpauto_flag;
+int pgpkeyadd_flag;
 extern int xmon_flag;
 extern int mheard_flag;
 #ifdef USE_IFACE
@@ -491,6 +495,8 @@
   {"AUTOBIN" ,6,1,cmd_flag,"",F_AUTOBIN,0},
   {"AUTOYAPP",6,1,cmd_flag,"",F_AUTOYAPP,0},
   {"AUTO7PL" ,6,1,cmd_flag,"",F_AUTO7PL,0},
+  {"PGPAUTO" ,5,1,cmd_flag,"",F_PGPAUTO,0},
+  {"PGPKEYAD",6,1,cmd_flag,"",F_PGPKEYADD,0},
   {"LOGBOOK" ,7,1,cmd_flag,"",F_LOGBOOK,0},
   {"XMON"    ,4,1,cmd_flag,"",F_XMON,0},
   {"HEARD"   ,3,1,cmd_flag,"",F_HEARD,0},
@@ -1606,6 +1612,12 @@
   case F_AUTO7PL:
     flag = &auto7pl_flag;
     break;
+  case F_PGPAUTO:
+    flag = &pgpauto_flag;
+    break;
+  case F_PGPKEYADD:
+    flag = &pgpkeyadd_flag;
+    break;
   case F_LOGBOOK:
     flag = &logbook_flag;
     break;
diff -ub src.1a1/remote.c src/remote.c
- --- src.1a1/remote.c	Sun Feb 16 22:06:27 1997
+++ src/remote.c	Sun Aug  9 21:18:36 1998
@@ -49,6 +49,8 @@
 extern int autobin_flag;
 extern int autoyapp_flag;
 extern int auto7pl_flag;
+extern int pgpauto_flag;
+extern int pgpkeyadd_flag;
 extern char tnt_ctextfile[];
 extern char news_file_name[];
 extern char run_dir[];
@@ -832,6 +834,8 @@
   autobin_flag = 1;
   autoyapp_flag = 0;
   auto7pl_flag = 0;
+  pgpauto_flag = 0;
+  pgpkeyadd_flag = 1;
   strcpy(rem_tnt_str,"<TNT>: ");
   strcpy(rem_inv_str,"Invalid command !");
   strcpy(rem_len_str,"Line too long, ignored");
@@ -1039,6 +1043,122 @@
   return(0);
 }
 
+/* handle PGP strings/reception
+ * for now we are only looking for signed messages and keyblocks
+ * returns !0  if buffer handled
+ * dg9ep 7-98
+ */
+static int handle_pgp(channel,buffer,len)
+int channel;
+char *buffer;
+int len;
+{
+  int file_end;
+  char filename[257];
+  char tmpstdoutname[257];
+  char sres[257];
+  int i;
+  int typ;
+  int part;
+  int errflag;
+  int res;
+  char *ptr;
+  int ans_len;
+  char string[80];
+  char line[258];
+  int result;
+  FILE *hdl_out;
+
+
+  if (rx_file[channel].type == RX_PGP) {
+    /* already receiving file, just check for endstring */
+    typ = 0;
+    if        (!strncmp(buffer,"-----END PGP SIGNATURE-----",       27)) {
+       typ = PGP_SIGNED_MESSAGE;
+    } else if (!strncmp(buffer,"-----END PGP PUBLIC KEY BLOCK-----",34)) {
+       typ = PGP_PUBLIC_KEY_BLOCK;
+    }
+    if ( typ > 0 ) {
+      write_file(channel,len,RX_RCV,buffer);
+      strcpy(filename,rx_file[channel].name);
+      close_rxfile2(channel,0,0);
+
+      strcpy(tmpstdoutname,"/tmp/tnt_pgpout_XXXXXX");
+      mktemp(tmpstdoutname);
+
+      /* build cmdline for pgp */
+      strcpy(string,"pgp +batchmode +verbose=0 ");
+      if(        typ == PGP_SIGNED_MESSAGE ) {
+          /* Nothing else to do to verify */
+      } else if( typ == PGP_PUBLIC_KEY_BLOCK ) {
+          if( pgpkeyadd_flag ) {
+             /* add keys to keyring */
+             strcat(string," +interactive=off +force -ka ");
+          } else {
+             /* show keys only */
+            rem_data_display(channel,"(keys will not be added to keyring)\r");
+          }
+      }
+      strcat(string,filename);
+      strcat(string," -o /dev/null > "); /* $TODO -> Outfile auch PGP vorwerfen */
+      strcat(string,tmpstdoutname);
+      strcat(string," 2>/dev/null");
+      result = system(string);
+      /* Ausgabe von pgp anzeigen */
+      if (!(hdl_out = fopen(tmpstdoutname,"r"))) {
+        sprintf(sres,"ERROR: %s not found",tmpstdoutname);
+        return(1);
+      }
+      file_end = 0;
+      while (!file_end) {
+        if (fgets(line,257,hdl_out) == NULL) {
+          file_end = 1;
+        } else {
+          if (strlen(line) == 257) {
+            file_end = 1;
+          } else {
+            ptr = strchr(line,'\r');
+            if (ptr != NULL) *ptr = '\0';
+            ptr = strchr(line,'\n');
+            if (ptr != NULL) *ptr = '\0';
+            ptr = strchr(line,(char)0x07);
+            if (ptr != NULL) *ptr = ' ';
+
+            rem_data_display(channel,line);
+            rem_data_display(channel,"\r");
+          }
+        }
+      }
+      fclose(hdl_out);
+      unlink(tmpstdoutname);
+      unlink(filename);
+    }
+    return(1);
+  }
+
+  typ = 0;
+  if        (!strncmp (buffer, "-----BEGIN PGP SIGNED MESSAGE-----",34)) {
+      /* It's a signed file */
+      typ = PGP_SIGNED_MESSAGE;
+  } else if (!strncmp (buffer, "-----BEGIN PGP PUBLIC KEY BLOCK-----",36)) {
+      typ = PGP_PUBLIC_KEY_BLOCK;
+  }
+  if( typ ) {
+      /* Get tmp. filename.  */
+      strcpy(filename,"/tmp/tnt_pgp_XXXXXX");
+      mktemp(filename);
+
+      open_logfile(RX_PGP,RX_RCV,channel,strlen(filename),
+                   M_CONNECT,filename);
+      errflag = (rx_file[channel].type != RX_PGP);
+      if (!errflag) return(1);
+  }
+  return(0);
+}
+
+
+
+
 /* check packet, if special strings are contained */
 static int check_spec_strings(channel,buffer,len)
 int channel;
@@ -1068,6 +1188,12 @@
     if (handle_7pl(channel,buffer,len)) return(0);
   }
 
+  /* PGP handling  dg9ep */
+  if (((rx_file[channel].type == -1) && pgpauto_flag) ||
+       (rx_file[channel].type == RX_PGP)) {
+    if (handle_pgp(channel,buffer,len)) return(0);
+  }
+
   wait_bin = ((rx_file[channel].type == RX_ABIN) ||
               (rx_file[channel].type == RX_ABIN_Q)) && 
              (rx_file[channel].wait_bin);
diff -ub src.1a1/tnt.h src/tnt.h
- --- src.1a1/tnt.h	Sun Aug  9 21:41:45 1998
+++ src/tnt.h	Sun Aug  9 09:18:34 1998
@@ -292,6 +292,7 @@
 #define RX_ABIN_E 5     /* RX_ABIN_Q only for box and boxcut */
 #define RX_YAPP 6       /* receive using YAPP */
 #define RX_AUTO7P 7     /* auto 7PLUS reception */
+#define RX_PGP 8        /* auto PGP rx & check, dg9ep 7-98 */
 
 /* transmit file types */
 #define TX_NORM 0	/* ASCII-file */
@@ -305,6 +306,10 @@
 /* flag for logging data */
 #define RX_RCV 0x01	/* received data */
 #define RX_SND 0x02	/* sent data */
+
+/* types of PGP-Files */
+#define PGP_SIGNED_MESSAGE 1
+#define PGP_PUBLIC_KEY_BLOCK 2
 
 /* types of send_queue */
 #define SQ_NORMAL 0     /* normal queue */


-----BEGIN PGP SIGNATURE-----
Version: 2.6.3ia
Charset: latin1

iQCVAwUBNc4CWDD37IMYqFzBAQEcygP/Y6QrtU13HQEC2wLUTFk4dPVqcxOMNvEL
Qgv5SetH93RuLbmPNDP0pxUta3xE3jURJqsJ4syAhjAxeAOTUxcdNqp3x6Sr+Wkh
uew4MZlypF7xsPCwi9JMjXnjRSqjymZ6GcP9JDyxCnhI3IgZG1DOPT2n8rQkTbIX
ftvurgNT+ns=
=1XDr
-----END PGP SIGNATURE-----


Read previous mail | Read next mail


 11.07.2026 05:48:57lGo back Go up