Experiencias con PGP para VMS
Este documento no ha sido actualizado desde 1996.
Consulte
esta página para acceder a información más actualizada.
Introducción
Este documento ha sido elaborado dentro del Grupo de Trabajo sobre PGP por:
Juan Carlos Blanco
a
Facultad de Informática de la Universidad Politécnica de Madrid
y explica la experiencia que ha tenido el autor con la instalación, uso, problemas, etc. de PGP.PGP 2.6.2
- ¿Dónde localizarlo?
- Referencia del paquete y preinstalación.
- Instalación del PGP.
- Configuración de PGP
- Utilización de PGP
PGP 2.6.3
PGP 2.6.2
¿Dónde localizarlo?
RedIRIS mantiene un mirror de software relacionado con PGP en su servidor de FTP anónimo. La dirección es:Referencia del paquete y preinstalación.
La versión instalada es la 2.6.2i de PGP, para eso se ha utilizado el PGP genérico, que incluye soporte para VMS. Se ha probado la instalación en un VAX (VMS V5.5-2) y en un ALPHA (VMS 6.2). El instalarlo en ambos casos es bastante sencillo, lo único que se necesita es un programa para descomprimir el fichero pgp262is.tar-z (por ejemplo GUNZIP) y un TAR para deshacer el archivo pgp262is.tar (por ejemplo VMSTAR), al hacerlo nos encontramos dos ficheros pgp262ii.asc y pgp262ii.tar, el segundo de ellos contiene, por fin, el PGP distribuido en varios directorios:
[pgpdir] [pgpdir.CONTRIB] [pgpdir.DOC] [pgpdir.SRC]
- El directorio raiz "pgpdir" a elegir por el instalador, contiene los ficheros de configuración general y ayuda en diferentes idiomas.
- El directorio DOC contiene la guía de uso de PGP que además es necesaria para su funcionamiento (PGP comprueba que exista este fichero en el directorio PGP$LIBRARY:, o en el actual).
- El directorio SRC contiene los fuentes necesarios para generar el ejecutable.
Instalación del PGP.
Como primer punto necesitamos generar el ejecutable, basta con arrancar el procedimiento de comandos PGPINSTAL, nos preguntará sobre el compilador de C que queremos usar y opciones necesarias para el mismo. En VAX VMS 5.5-2 y VAX C 3.2 no hay ningun problema y podemos utilizar los defectos que proporciona el procemiento. Supongo que si utilizamos el compilador DEC C 5.0 encontraremos problemas similares a los que describo a continuación para ALPHA y DEC C. En ALPHA VMS 6.2 y DEC C 5.0 hay algun problema menor, PGP incluye una versión propia de la función "getopt" de C, ya que hay algunos compiladores que no la soportan. Esto provoca que el "LINKER" de unos errores de símbolos duplicados. La mejor forma para evitarlo es indicar al compilador que no utilice su propia funcion "getopt" sino la de PGP; para ello, basta con responder "/prefix=except=(getopt,optarg,optopt,optind,opterr)" cuando el procedimiento PGPINSTAL pregunta por las opciones de compilación. Copiar el ejecutable final al directorio raiz "pgpdir" (simplemente por sencillez de su uso posterior). PGP utiliza un nombre logico para localizar los ficheros de configuracion y ayuda necesarios, ademas de la guía de uso, este nombre es PGP$LIBRARY y debe estar definido a nivel de sistema apuntando al directorio raiz "pgpdir" (donde ya hemos dejado el ejecutable). Dado que la guía de uso esta en otro directorio podemos copiarla al directorio raíz o definir el nombre logico como una lista de búsqueda:$ define/sys PGP$LIBRARY disco:[pgpdir],disco:[pgpdir.DOC]La protección de todos los ficheros mencionados [pgpdir]*.* y [pgpdir.DOC]PGPDOC%.TXT debe permitir su lectura para todo el mundo.
Configuración de PGP
La configuración se limita a dar valor a algunas de las opciones del fichero de configuración general PGP$LIBRARY:CONFIG.TXT, en nuestro caso las únicas modificaciones realizadas han sido:language=es TMP = "sys$scratch:"El resto tiene un valor por defecto adecuado. Al elegir "language=es" PGP nos da mensajes en castellano, pero provoca que la pantalla de ayuda inical (pgp -h) sea menos completa; esto tiene fácil arreglo si se sustituye el fichero PGP$LIBRARY:ES.HLP por otro más parecido al inglés original. No hay fichero correspondiente a la pantalla de ayuda del manejo de claves (pgp -kh), si alguien quiere traducirlo basta con que lo deje en el fichero PGP$LIBRARY:esKEY.HLP
Utilización de PGP
Para la utilización de PGP es necesario definir un simbolo DCL para activarlo, esto se puede realizar a nivel individual (LOGIN.COM) o a nivel general (SYS$SYLOGIN:)$ PGP :== $PGP$LIBRARY:PGPAl contrario que en Unix, donde PGP busca siempre los ficheros de usuario (configuracion particular, ficheros de claves, etc) en el directorio $HOME/.pgp, siempre que no este definida la variable de entorno PGPPATH, en VMS utiliza siempre el directorio por defecto (lo que trae los problemas que comentaba Pedro Pemau). Esto nos obliga a definir el nombre lógico PGPPATH apuntando a un directorio concreto de cada usuario, puede dejarse a la elección del usuario a hacerlo de la misma forma para todos (SYS$SYLOGIN:)
$ pgppath = f$trnlnm("sys$login") - "]" + ".pgp]" $ define pgppath 'pgppath'que puede evitar problemas si alguien se olvida de hacerlo. PGP genera en este directorio una versión nueva del fichero RANSEED.BIN cada vez que se utiliza, por tanto no estaría de más limitar el número de versiones de los ficheros en este directorio cuando el usuario lo cree
$ set directory/version_limit=1 [.pgp]Si queremos facilitar más la vida del usuario, podemos hacer un procedimiento de comandos que haga esto la primera vez que utilice PGP
PGP$LIBRARY:PGP.COM $ if f$search ("sys$login:pgp.dir") .eqs. "" $ then $ pgpdir = f$trnlnm("sys$login") - "]" + ".PGP]" $ create/dir 'pgpdir' $ set directory/version_limit=1 'pgpdir' $ endif $ PGPBIN := $PGP$LIBRARY:PGP $ PGPBIN 'P1' 'P2' 'P3' 'P4' 'P5' 'P6' 'P7' 'P8'En este caso podriamos definir el comando PGP de la siguiente forma:
$ PGP :== @PGP$LIBRARY:PGPQue puede tener un inconveniente si utilizamos mas de 8 parámetros al llamar a PGP ya que este es el límite para un procedimiento de comandos. En el directorio de usuario, además de los ficheros donde se almacenan las claves, cada uno puede incluir un fichero de configuración particular (CONFIG.TXT) a su gusto. Como curiosidad adicional, estuve revisando los fuentes para ver el tema de tomar por defecto un directorio para los ficheros de usuario de PGP, como no era muy dificil le hice un pequeño parche que hace que por defecto, ante la ausencia de la variable de entorno (N. logico o símbolo DCL) PGPPATH, busque estos ficheros de usuario en el directorio [.PGP] del directorio raíz del usuario. Lo adjunto a continuación por si alguien quiere utilizarlo.
*** fileio.c_orig - --- fileio.c ************** *** 461,468 if (s && strlen(s) <= 50) { strcpy(result, s); } ! #ifdef UNIX ! /* On Unix, default to $HOME/.pgp, otherwise, current directory. */ else { s = getenv("HOME"); if (s && strlen(s) <= 50) { - --- 461,469 ----- if (s && strlen(s) <= 50) { strcpy(result, s); } ! #if defined (UNIX) || defined (VMS) ! /* On Unix, default to $HOME/.pgp, on VMS SYS$LOGIN_DEVICE:[USERDIR.pgp], ! otherwise, current directory. */ else { s = getenv("HOME"); if (s && strlen(s) <= 50) { ************** *** 468,473 if (s && strlen(s) <= 50) { strcpy(result, s); addslash(result); strcat(result, ".pgp"); } } - --- 469,477 ----- if (s && strlen(s) <= 50) { strcpy(result, s); addslash(result); + #ifdef VMS + result[strlen(result)-1] = '\0'; + #endif strcat(result, ".pgp"); } }
PGP 2.6.3
¿Dónde localizarlo?
RedIRIS mantiene un mirror de software relacionado con PGP en su servidor de FTP anónimo. La dirección es:Instalación de PGP
Al instalar la versión 2.6.3i de PGP en VMS me he encontrado algunos problemillas más que con la version 2.6.2i, parece que el esfuerzo realizado en la portabilidad no se ha dirigido a VMS. Los problemas encontrados aparte de los ya mencionados para 2.6.2i en Alpha han sido:- El nuevo PGP utiliza las rutinas "strdup" y "strncasecmp", ambas ausentes de las RTL de VAXC y DECC (VMS y ALPHA), a pesar de que aparecen en el HELP de DECC 5.2 no están previstas hasta la version 7.0 de VMS. Yo he utilizado dos rutinas obtenidas de otros paquetes y creado con ellas un fichero nuevo STR.C que he incluido en el procedimiento PGPINSTAL para su compilación.
- La compilación con VAXC del fichero ZTAILOR.H da un error al estar partida una linea "#if" con un caracter de continuación "\", a pesar de que esto no deberia ser un problema. También se ha modificado este programa con un parche.
- Si se decide utilizar el compilador DECC en VAX, eso sí, después de modificar el PGPINSTAL.COM para que lo permita, define mal el nombre lógico DECC$SYSTEM_INCLUDE y por tanto da problemas con los ".H" al utilizar los de VAXC.
- Le he aplicado el mismo parche al fichero "FILEIO.C" de la versión 2.6.2i para permitir localizar el directorio PGP del usuario en su directorio sin necesidad de definir el nombre lógico PGPPATH.
Parche para compilación con VAXC
Coger parche Parche, a aplicar con la utilidad PATCH de Unix, tambien disponible en VMS. Que permite la correcta compilación de PGP 2.6.3i en VMS. Modificará los ficheros:ZTAILOR.H filFILEIO.C PGPINSTAL.COMy creará el nuevo
STR.CPara aplicarlo: patch < pgp263i_vms.patch