mirror of
https://github.com/rfivet/uemacs.git
synced 2024-12-20 16:22:38 -05:00
Remove encryption as implementation is too weak.
This commit is contained in:
parent
8c968322f6
commit
645a0d734b
97
Makefile
97
Makefile
@ -1,8 +1,8 @@
|
|||||||
# Makefile for emacs, updated Fri, Feb 13, 2015 12:02:52 PM
|
# Makefile for emacs, updated Fri, Feb 13, 2015 12:02:52 PM
|
||||||
|
|
||||||
SRC=basic.c bind.c bindable.c buffer.c crypt.c display.c ebind.c eval.c exec.c execute.c file.c fileio.c flook.c input.c isearch.c line.c lock.c main.c mingw32.c mlout.c names.c pklock.c posix.c random.c region.c search.c spawn.c tcap.c termio.c utf8.c window.c word.c wrapper.c wscreen.c
|
SRC=basic.c bind.c bindable.c buffer.c display.c ebind.c eval.c exec.c execute.c file.c fileio.c flook.c input.c isearch.c line.c lock.c main.c mingw32.c mlout.c names.c pklock.c posix.c random.c region.c search.c spawn.c tcap.c termio.c utf8.c window.c word.c wrapper.c wscreen.c
|
||||||
OBJ=basic.o bind.o bindable.o buffer.o crypt.o display.o ebind.o eval.o exec.o execute.o file.o fileio.o flook.o input.o isearch.o line.o lock.o main.o mingw32.o mlout.o names.o pklock.o posix.o random.o region.o search.o spawn.o tcap.o termio.o utf8.o window.o word.o wrapper.o wscreen.o
|
OBJ=basic.o bind.o bindable.o buffer.o display.o ebind.o eval.o exec.o execute.o file.o fileio.o flook.o input.o isearch.o line.o lock.o main.o mingw32.o mlout.o names.o pklock.o posix.o random.o region.o search.o spawn.o tcap.o termio.o utf8.o window.o word.o wrapper.o wscreen.o
|
||||||
HDR=basic.h bind.h bindable.h buffer.h crypt.h defines.h display.h ebind.h estruct.h eval.h exec.h execute.h file.h fileio.h flook.h input.h isearch.h line.h lock.h mlout.h names.h pklock.h random.h region.h retcode.h search.h spawn.h terminal.h termio.h utf8.h version.h window.h word.h wrapper.h wscreen.h
|
HDR=basic.h bind.h bindable.h buffer.h defines.h display.h ebind.h estruct.h eval.h exec.h execute.h file.h fileio.h flook.h input.h isearch.h line.h lock.h mlout.h names.h pklock.h random.h region.h retcode.h search.h spawn.h terminal.h termio.h utf8.h version.h window.h word.h wrapper.h wscreen.h
|
||||||
|
|
||||||
# DO NOT ADD OR MODIFY ANY LINES ABOVE THIS -- make source creates them
|
# DO NOT ADD OR MODIFY ANY LINES ABOVE THIS -- make source creates them
|
||||||
|
|
||||||
@ -129,74 +129,71 @@ depend: ${SRC}
|
|||||||
|
|
||||||
# DO NOT DELETE THIS LINE -- make depend uses it
|
# DO NOT DELETE THIS LINE -- make depend uses it
|
||||||
|
|
||||||
basic.o: basic.c basic.h buffer.h crypt.h line.h retcode.h utf8.h \
|
basic.o: basic.c basic.h buffer.h line.h retcode.h utf8.h estruct.h \
|
||||||
estruct.h input.h bind.h mlout.h random.h terminal.h defines.h window.h
|
input.h bind.h mlout.h random.h terminal.h defines.h window.h
|
||||||
bind.o: bind.c bind.h estruct.h bindable.h buffer.h crypt.h line.h \
|
bind.o: bind.c bind.h estruct.h bindable.h buffer.h line.h retcode.h \
|
||||||
retcode.h utf8.h display.h ebind.h exec.h file.h flook.h input.h names.h \
|
utf8.h display.h ebind.h exec.h file.h flook.h input.h names.h window.h \
|
||||||
window.h defines.h
|
|
||||||
bindable.o: bindable.c bindable.h defines.h buffer.h crypt.h line.h \
|
|
||||||
retcode.h utf8.h display.h estruct.h file.h input.h bind.h lock.h \
|
|
||||||
mlout.h terminal.h
|
|
||||||
buffer.o: buffer.c buffer.h crypt.h line.h retcode.h utf8.h defines.h \
|
|
||||||
estruct.h file.h input.h bind.h mlout.h window.h
|
|
||||||
crypt.o: crypt.c crypt.h
|
|
||||||
display.o: display.c display.h estruct.h buffer.h crypt.h line.h \
|
|
||||||
retcode.h utf8.h input.h bind.h termio.h terminal.h defines.h version.h \
|
|
||||||
wrapper.h window.h
|
|
||||||
ebind.o: ebind.c ebind.h basic.h bind.h estruct.h bindable.h buffer.h \
|
|
||||||
crypt.h line.h retcode.h utf8.h eval.h exec.h file.h isearch.h random.h \
|
|
||||||
region.h search.h spawn.h window.h defines.h word.h
|
|
||||||
eval.o: eval.c eval.h basic.h bind.h buffer.h crypt.h line.h retcode.h \
|
|
||||||
utf8.h display.h estruct.h exec.h execute.h flook.h input.h random.h \
|
|
||||||
search.h terminal.h defines.h termio.h version.h window.h
|
|
||||||
exec.o: exec.c exec.h retcode.h buffer.h crypt.h line.h utf8.h bind.h \
|
|
||||||
display.h estruct.h eval.h file.h flook.h input.h random.h window.h \
|
|
||||||
defines.h
|
defines.h
|
||||||
|
bindable.o: bindable.c bindable.h defines.h buffer.h line.h retcode.h \
|
||||||
|
utf8.h display.h estruct.h file.h input.h bind.h lock.h mlout.h \
|
||||||
|
terminal.h
|
||||||
|
buffer.o: buffer.c buffer.h line.h retcode.h utf8.h defines.h estruct.h \
|
||||||
|
file.h input.h bind.h mlout.h window.h
|
||||||
|
display.o: display.c display.h estruct.h buffer.h line.h retcode.h utf8.h \
|
||||||
|
input.h bind.h termio.h terminal.h defines.h version.h wrapper.h \
|
||||||
|
window.h
|
||||||
|
ebind.o: ebind.c ebind.h basic.h bind.h estruct.h bindable.h buffer.h \
|
||||||
|
line.h retcode.h utf8.h eval.h exec.h file.h isearch.h random.h region.h \
|
||||||
|
search.h spawn.h window.h defines.h word.h
|
||||||
|
eval.o: eval.c eval.h basic.h bind.h buffer.h line.h retcode.h utf8.h \
|
||||||
|
display.h estruct.h exec.h execute.h flook.h input.h random.h search.h \
|
||||||
|
terminal.h defines.h termio.h version.h window.h
|
||||||
|
exec.o: exec.c exec.h retcode.h buffer.h line.h utf8.h bind.h display.h \
|
||||||
|
estruct.h eval.h file.h flook.h input.h random.h window.h defines.h
|
||||||
execute.o: execute.c execute.h estruct.h bind.h random.h retcode.h \
|
execute.o: execute.c execute.h estruct.h bind.h random.h retcode.h \
|
||||||
display.h file.h buffer.h crypt.h line.h utf8.h input.h mlout.h search.h \
|
display.h file.h buffer.h line.h utf8.h input.h mlout.h search.h \
|
||||||
terminal.h defines.h window.h
|
terminal.h defines.h window.h
|
||||||
file.o: file.c file.h buffer.h crypt.h line.h retcode.h utf8.h defines.h \
|
file.o: file.c file.h buffer.h line.h retcode.h utf8.h defines.h \
|
||||||
display.h estruct.h execute.h fileio.h input.h bind.h lock.h mlout.h \
|
display.h estruct.h execute.h fileio.h input.h bind.h lock.h mlout.h \
|
||||||
window.h
|
window.h
|
||||||
fileio.o: fileio.c fileio.h crypt.h retcode.h defines.h utf8.h
|
fileio.o: fileio.c fileio.h defines.h retcode.h utf8.h
|
||||||
flook.o: flook.c flook.h retcode.h defines.h fileio.h crypt.h
|
flook.o: flook.c flook.h retcode.h defines.h fileio.h
|
||||||
input.o: input.c input.h bind.h estruct.h bindable.h display.h exec.h \
|
input.o: input.c input.h bind.h estruct.h bindable.h display.h exec.h \
|
||||||
retcode.h names.h terminal.h defines.h utf8.h wrapper.h
|
retcode.h names.h terminal.h defines.h utf8.h wrapper.h
|
||||||
isearch.o: isearch.c isearch.h basic.h buffer.h crypt.h line.h retcode.h \
|
isearch.o: isearch.c isearch.h basic.h buffer.h line.h retcode.h utf8.h \
|
||||||
utf8.h display.h estruct.h exec.h input.h bind.h search.h terminal.h \
|
display.h estruct.h exec.h input.h bind.h search.h terminal.h defines.h \
|
||||||
defines.h window.h
|
window.h
|
||||||
line.o: line.c line.h retcode.h utf8.h buffer.h crypt.h estruct.h mlout.h \
|
line.o: line.c line.h retcode.h utf8.h buffer.h estruct.h mlout.h \
|
||||||
window.h defines.h
|
window.h defines.h
|
||||||
lock.o: lock.c estruct.h lock.h
|
lock.o: lock.c estruct.h lock.h
|
||||||
main.o: main.c estruct.h basic.h bind.h bindable.h buffer.h crypt.h \
|
main.o: main.c estruct.h basic.h bind.h bindable.h buffer.h line.h \
|
||||||
line.h retcode.h utf8.h display.h eval.h execute.h file.h lock.h mlout.h \
|
retcode.h utf8.h display.h eval.h execute.h file.h lock.h mlout.h \
|
||||||
random.h search.h terminal.h defines.h termio.h version.h window.h
|
random.h search.h terminal.h defines.h termio.h version.h window.h
|
||||||
mingw32.o: mingw32.c
|
mingw32.o: mingw32.c
|
||||||
mlout.o: mlout.c mlout.h
|
mlout.o: mlout.c mlout.h
|
||||||
names.o: names.c names.h basic.h bind.h bindable.h buffer.h crypt.h \
|
names.o: names.c names.h basic.h bind.h bindable.h buffer.h line.h \
|
||||||
line.h retcode.h utf8.h display.h estruct.h eval.h exec.h file.h \
|
retcode.h utf8.h display.h estruct.h eval.h exec.h file.h isearch.h \
|
||||||
isearch.h region.h random.h search.h spawn.h window.h defines.h word.h
|
region.h random.h search.h spawn.h window.h defines.h word.h
|
||||||
pklock.o: pklock.c estruct.h pklock.h
|
pklock.o: pklock.c estruct.h pklock.h
|
||||||
posix.o: posix.c
|
posix.o: posix.c
|
||||||
random.o: random.c random.h retcode.h basic.h buffer.h crypt.h line.h \
|
random.o: random.c random.h retcode.h basic.h buffer.h line.h utf8.h \
|
||||||
utf8.h display.h estruct.h execute.h input.h bind.h search.h terminal.h \
|
display.h estruct.h execute.h input.h bind.h search.h terminal.h \
|
||||||
defines.h window.h
|
defines.h window.h
|
||||||
region.o: region.c region.h line.h retcode.h utf8.h buffer.h crypt.h \
|
region.o: region.c region.h line.h retcode.h utf8.h buffer.h estruct.h \
|
||||||
estruct.h mlout.h random.h window.h defines.h
|
mlout.h random.h window.h defines.h
|
||||||
search.o: search.c search.h line.h retcode.h utf8.h basic.h buffer.h \
|
search.o: search.c search.h line.h retcode.h utf8.h basic.h buffer.h \
|
||||||
crypt.h display.h estruct.h input.h bind.h mlout.h terminal.h defines.h \
|
display.h estruct.h input.h bind.h mlout.h terminal.h defines.h window.h
|
||||||
|
spawn.o: spawn.c spawn.h defines.h buffer.h line.h retcode.h utf8.h \
|
||||||
|
display.h estruct.h exec.h file.h flook.h input.h bind.h terminal.h \
|
||||||
window.h
|
window.h
|
||||||
spawn.o: spawn.c spawn.h defines.h buffer.h crypt.h line.h retcode.h \
|
|
||||||
utf8.h display.h estruct.h exec.h file.h flook.h input.h bind.h \
|
|
||||||
terminal.h window.h
|
|
||||||
tcap.o: tcap.c terminal.h defines.h retcode.h display.h estruct.h \
|
tcap.o: tcap.c terminal.h defines.h retcode.h display.h estruct.h \
|
||||||
termio.h
|
termio.h
|
||||||
termio.o: termio.c termio.h estruct.h retcode.h utf8.h
|
termio.o: termio.c termio.h estruct.h retcode.h utf8.h
|
||||||
utf8.o: utf8.c utf8.h
|
utf8.o: utf8.c utf8.h
|
||||||
window.o: window.c window.h defines.h buffer.h crypt.h line.h retcode.h \
|
window.o: window.c window.h defines.h buffer.h line.h retcode.h utf8.h \
|
||||||
utf8.h basic.h display.h estruct.h execute.h terminal.h wrapper.h
|
basic.h display.h estruct.h execute.h terminal.h wrapper.h
|
||||||
word.o: word.c word.h basic.h buffer.h crypt.h line.h retcode.h utf8.h \
|
word.o: word.c word.h basic.h buffer.h line.h retcode.h utf8.h estruct.h \
|
||||||
estruct.h mlout.h random.h region.h window.h defines.h
|
mlout.h random.h region.h window.h defines.h
|
||||||
wrapper.o: wrapper.c wrapper.h
|
wrapper.o: wrapper.c wrapper.h
|
||||||
wscreen.o: wscreen.c wscreen.h
|
wscreen.o: wscreen.c wscreen.h
|
||||||
|
|
||||||
|
14
buffer.c
14
buffer.c
@ -31,17 +31,12 @@ struct buffer *blistp ; /* Buffer for C-X C-B */
|
|||||||
const char *modename[] = { /* name of modes */
|
const char *modename[] = { /* name of modes */
|
||||||
"Wrap", "Cmode", "Exact", "View", "Over",
|
"Wrap", "Cmode", "Exact", "View", "Over",
|
||||||
"Magic",
|
"Magic",
|
||||||
#if CRYPT
|
|
||||||
"Crypt",
|
|
||||||
#else
|
|
||||||
"",
|
|
||||||
#endif
|
|
||||||
"Asave", "Utf-8", "Dos"
|
"Asave", "Utf-8", "Dos"
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
int gmode = 0 ; /* global editor mode */
|
int gmode = 0 ; /* global editor mode */
|
||||||
|
|
||||||
static const char modecode[] = "WCEVOMYAUD" ; /* letters to represent modes */
|
static const char modecode[] = "WCEVOMAUD" ; /* letters to represent modes */
|
||||||
|
|
||||||
|
|
||||||
static int makelist( int iflag) ;
|
static int makelist( int iflag) ;
|
||||||
@ -333,7 +328,7 @@ static int makelist( int iflag)
|
|||||||
int i;
|
int i;
|
||||||
long nbytes; /* # of bytes in current buffer */
|
long nbytes; /* # of bytes in current buffer */
|
||||||
long nlines ; /* # of lines in current buffer */
|
long nlines ; /* # of lines in current buffer */
|
||||||
char b[ 9 + 1] ;
|
char b[ 10 + 1] ;
|
||||||
char line[MAXLINE];
|
char line[MAXLINE];
|
||||||
|
|
||||||
blistp->b_flag &= ~BFCHG; /* Don't complain! */
|
blistp->b_flag &= ~BFCHG; /* Don't complain! */
|
||||||
@ -414,7 +409,7 @@ static int makelist( int iflag)
|
|||||||
if( bp->b_mode & MDDOS)
|
if( bp->b_mode & MDDOS)
|
||||||
nbytes += nlines ;
|
nbytes += nlines ;
|
||||||
|
|
||||||
l_to_a( b, sizeof b, nbytes) ; /* 8 digits string buffer size. */
|
l_to_a( b, sizeof b, nbytes) ; /* 10 digits string buffer size. */
|
||||||
cp2 = &b[0];
|
cp2 = &b[0];
|
||||||
while ((c = *cp2++) != 0)
|
while ((c = *cp2++) != 0)
|
||||||
*cp1++ = c;
|
*cp1++ = c;
|
||||||
@ -560,9 +555,6 @@ struct buffer *bfind( const char *bname, int cflag, int bflag)
|
|||||||
bp->b_fname[ 0] = '\0' ;
|
bp->b_fname[ 0] = '\0' ;
|
||||||
strncpy( bp->b_bname, bname, sizeof( bname_t) - 1) ;
|
strncpy( bp->b_bname, bname, sizeof( bname_t) - 1) ;
|
||||||
bp->b_bname[ sizeof( bname_t) - 1] = '\0' ;
|
bp->b_bname[ sizeof( bname_t) - 1] = '\0' ;
|
||||||
#if CRYPT
|
|
||||||
bp->b_key[0] = 0;
|
|
||||||
#endif
|
|
||||||
lp->l_fp = lp;
|
lp->l_fp = lp;
|
||||||
lp->l_bp = lp;
|
lp->l_bp = lp;
|
||||||
}
|
}
|
||||||
|
19
buffer.h
19
buffer.h
@ -1,17 +1,12 @@
|
|||||||
#ifndef _BUFFER_H_
|
#ifndef _BUFFER_H_
|
||||||
#define _BUFFER_H_
|
#define _BUFFER_H_
|
||||||
|
|
||||||
#include "crypt.h"
|
|
||||||
#include "line.h"
|
#include "line.h"
|
||||||
|
|
||||||
typedef char fname_t[ 256] ; /* file name type */
|
typedef char fname_t[ 256] ; /* file name type */
|
||||||
typedef char bname_t[ 16] ; /* buffer name type */
|
typedef char bname_t[ 16] ; /* buffer name type */
|
||||||
#define NBUFN sizeof( bname_t)
|
#define NBUFN sizeof( bname_t)
|
||||||
|
|
||||||
#if CRYPT
|
|
||||||
typedef char ekey_t[ 128] ; /* encryption key type */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Text is kept in buffers. A buffer header, described below, exists for every
|
* Text is kept in buffers. A buffer header, described below, exists for every
|
||||||
* buffer in the system. The buffers are kept in a big list, so that commands
|
* buffer in the system. The buffers are kept in a big list, so that commands
|
||||||
@ -36,9 +31,6 @@ struct buffer {
|
|||||||
char b_flag; /* Flags */
|
char b_flag; /* Flags */
|
||||||
fname_t b_fname ; /* File name */
|
fname_t b_fname ; /* File name */
|
||||||
bname_t b_bname ; /* Buffer name */
|
bname_t b_bname ; /* Buffer name */
|
||||||
#if CRYPT
|
|
||||||
ekey_t b_key ; /* current encrypted key */
|
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct buffer *curbp ; /* Current buffer */
|
extern struct buffer *curbp ; /* Current buffer */
|
||||||
@ -50,7 +42,7 @@ extern struct buffer *blistp ; /* Buffer for C-X C-B */
|
|||||||
#define BFTRUNC 0x04 /* buffer was truncated when read */
|
#define BFTRUNC 0x04 /* buffer was truncated when read */
|
||||||
|
|
||||||
/* mode flags */
|
/* mode flags */
|
||||||
#define NUMMODES 10 /* # of defined modes */
|
#define NUMMODES 9 /* # of defined modes */
|
||||||
|
|
||||||
#define MDWRAP 0x0001 /* word wrap */
|
#define MDWRAP 0x0001 /* word wrap */
|
||||||
#define MDCMOD 0x0002 /* C indentation and fence match */
|
#define MDCMOD 0x0002 /* C indentation and fence match */
|
||||||
@ -58,12 +50,9 @@ extern struct buffer *blistp ; /* Buffer for C-X C-B */
|
|||||||
#define MDVIEW 0x0008 /* read-only buffer */
|
#define MDVIEW 0x0008 /* read-only buffer */
|
||||||
#define MDOVER 0x0010 /* overwrite mode */
|
#define MDOVER 0x0010 /* overwrite mode */
|
||||||
#define MDMAGIC 0x0020 /* regular expresions in search */
|
#define MDMAGIC 0x0020 /* regular expresions in search */
|
||||||
#if CRYPT
|
#define MDASAVE 0x0040 /* auto-save mode */
|
||||||
#define MDCRYPT 0x0040 /* encrytion mode active */
|
#define MDUTF8 0x0080 /* utf8 mode */
|
||||||
#endif
|
#define MDDOS 0x0100 /* CRLF eol mode */
|
||||||
#define MDASAVE 0x0080 /* auto-save mode */
|
|
||||||
#define MDUTF8 0x0100 /* utf8 mode */
|
|
||||||
#define MDDOS 0x0200 /* CRLF eol mode */
|
|
||||||
|
|
||||||
|
|
||||||
extern const char *modename[] ; /* text names of modes */
|
extern const char *modename[] ; /* text names of modes */
|
||||||
|
190
crypt.c
190
crypt.c
@ -1,190 +0,0 @@
|
|||||||
/* crypt.c -- implements crypt.h */
|
|
||||||
|
|
||||||
#include "crypt.h"
|
|
||||||
|
|
||||||
/* CRYPT.C
|
|
||||||
*
|
|
||||||
* Encryption routines
|
|
||||||
*
|
|
||||||
* written by Dana Hoggatt and Daniel Lawrence
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if CRYPT
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
|
|
||||||
static int mod95(int);
|
|
||||||
|
|
||||||
|
|
||||||
/**********
|
|
||||||
*
|
|
||||||
* myencrypt - in place encryption/decryption of a buffer
|
|
||||||
*
|
|
||||||
* (C) Copyright 1986, Dana L. Hoggatt
|
|
||||||
* 1216, Beck Lane, Lafayette, IN
|
|
||||||
*
|
|
||||||
* When consulting directly with the author of this routine,
|
|
||||||
* please refer to this routine as the "DLH-POLY-86-B CIPHER".
|
|
||||||
*
|
|
||||||
* This routine was written for Dan Lawrence, for use in V3.8 of
|
|
||||||
* MicroEMACS, a public domain text/program editor.
|
|
||||||
*
|
|
||||||
* I kept the following goals in mind when preparing this function:
|
|
||||||
*
|
|
||||||
* 1. All printable characters were to be encrypted back
|
|
||||||
* into the printable range, control characters and
|
|
||||||
* high-bit characters were to remain unaffected. this
|
|
||||||
* way, encrypted would still be just as cheap to
|
|
||||||
* transmit down a 7-bit data path as they were before.
|
|
||||||
*
|
|
||||||
* 2. The encryption had to be portable. The encrypted
|
|
||||||
* file from one computer should be able to be decrypted
|
|
||||||
* on another computer.
|
|
||||||
*
|
|
||||||
* 3. The encryption had to be inexpensive, both in terms
|
|
||||||
* of speed and space.
|
|
||||||
*
|
|
||||||
* 4. The system needed to be secure against all but the
|
|
||||||
* most determined of attackers.
|
|
||||||
*
|
|
||||||
* For encryption of a block of data, one calls myencrypt passing
|
|
||||||
* a pointer to the data block and its length. The data block is
|
|
||||||
* encrypted in place, that is, the encrypted output overwrites
|
|
||||||
* the input. Decryption is totally isomorphic, and is performed
|
|
||||||
* in the same manner by the same routine.
|
|
||||||
*
|
|
||||||
* Before using this routine for encrypting data, you are expected
|
|
||||||
* to specify an encryption key. This key is an arbitrary string,
|
|
||||||
* to be supplied by the user. To set the key takes two calls to
|
|
||||||
* myencrypt(). First, you call
|
|
||||||
*
|
|
||||||
* myencrypt(NULL, vector)
|
|
||||||
*
|
|
||||||
* This resets all internal control information. Typically (and
|
|
||||||
* specifically in the case on MICRO-emacs) you would use a "vector"
|
|
||||||
* of 0. Other values can be used to customize your editor to be
|
|
||||||
* "incompatable" with the normally distributed version. For
|
|
||||||
* this purpose, the best results will be obtained by avoiding
|
|
||||||
* multiples of 95.
|
|
||||||
*
|
|
||||||
* Then, you "encrypt" your password by calling
|
|
||||||
*
|
|
||||||
* myencrypt(pass, strlen(pass))
|
|
||||||
*
|
|
||||||
* where "pass" is your password string. Myencrypt() will destroy
|
|
||||||
* the original copy of the password (it becomes encrypted),
|
|
||||||
* which is good. You do not want someone on a multiuser system
|
|
||||||
* to peruse your memory space and bump into your password.
|
|
||||||
* Still, it is a better idea to erase the password buffer to
|
|
||||||
* defeat memory perusal by a more technical snooper.
|
|
||||||
*
|
|
||||||
* For the interest of cryptologists, at the heart of this
|
|
||||||
* function is a Beaufort Cipher. The cipher alphabet is the
|
|
||||||
* range of printable characters (' ' to '~'), all "control"
|
|
||||||
* and "high-bit" characters are left unaltered.
|
|
||||||
*
|
|
||||||
* The key is a variant autokey, derived from a wieghted sum
|
|
||||||
* of all the previous clear text and cipher text. A counter
|
|
||||||
* is used as salt to obiterate any simple cyclic behavior
|
|
||||||
* from the clear text, and key feedback is used to assure
|
|
||||||
* that the entire message is based on the original key,
|
|
||||||
* preventing attacks on the last part of the message as if
|
|
||||||
* it were a pure autokey system.
|
|
||||||
*
|
|
||||||
* Overall security of encrypted data depends upon three
|
|
||||||
* factors: the fundamental cryptographic system must be
|
|
||||||
* difficult to compromise; exhaustive searching of the key
|
|
||||||
* space must be computationally expensive; keys and plaintext
|
|
||||||
* must remain out of sight. This system satisfies this set
|
|
||||||
* of conditions to within the degree desired for MicroEMACS.
|
|
||||||
*
|
|
||||||
* Though direct methods of attack (against systems such as
|
|
||||||
* this) do exist, they are not well known and will consume
|
|
||||||
* considerable amounts of computing time. An exhaustive
|
|
||||||
* search requires over a billion investigations, on average.
|
|
||||||
*
|
|
||||||
* The choice, entry, storage, manipulation, alteration,
|
|
||||||
* protection and security of the keys themselves are the
|
|
||||||
* responsiblity of the user.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* char *bptr; buffer of characters to be encrypted
|
|
||||||
* unsigned len; number of characters in the buffer
|
|
||||||
*
|
|
||||||
**********/
|
|
||||||
|
|
||||||
void myencrypt(char *bptr, unsigned len)
|
|
||||||
{
|
|
||||||
int cc; /* current character being considered */
|
|
||||||
|
|
||||||
static long key = 0; /* 29 bit encipherment key */
|
|
||||||
static int salt = 0; /* salt to spice up key with */
|
|
||||||
|
|
||||||
if (!bptr) { /* is there anything here to encrypt? */
|
|
||||||
key = len; /* set the new key */
|
|
||||||
salt = len; /* set the new salt */
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
while (len--) { /* for every character in the buffer */
|
|
||||||
|
|
||||||
cc = *bptr; /* get a character out of the buffer */
|
|
||||||
|
|
||||||
/* only encipher printable characters */
|
|
||||||
if ((cc >= ' ') && (cc <= '~')) {
|
|
||||||
|
|
||||||
/** If the upper bit (bit 29) is set, feed it back into the key. This
|
|
||||||
assures us that the starting key affects the entire message. **/
|
|
||||||
|
|
||||||
key &= 0x1FFFFFFFL; /* strip off overflow */
|
|
||||||
if (key & 0x10000000L) {
|
|
||||||
key ^= 0x0040A001L; /* feedback */
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Down-bias the character, perform a Beaufort encipherment, and
|
|
||||||
up-bias the character again. We want key to be positive
|
|
||||||
so that the left shift here will be more portable and the
|
|
||||||
mod95() faster **/
|
|
||||||
|
|
||||||
cc = mod95((int) (key % 95) - (cc - ' ')) + ' ';
|
|
||||||
|
|
||||||
/** the salt will spice up the key a little bit, helping to obscure
|
|
||||||
any patterns in the clear text, particularly when all the
|
|
||||||
characters (or long sequences of them) are the same. We do
|
|
||||||
not want the salt to go negative, or it will affect the key
|
|
||||||
too radically. It is always a good idea to chop off cyclics
|
|
||||||
to prime values. **/
|
|
||||||
|
|
||||||
if (++salt >= 20857) { /* prime modulus */
|
|
||||||
salt = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** our autokey (a special case of the running key) is being
|
|
||||||
generated by a wieghted checksum of clear text, cipher
|
|
||||||
text, and salt. **/
|
|
||||||
|
|
||||||
key = key + key + cc + *bptr + salt;
|
|
||||||
}
|
|
||||||
*bptr++ = cc; /* put character back into buffer */
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int mod95(int val)
|
|
||||||
{
|
|
||||||
/* The mathematical MOD does not match the computer MOD */
|
|
||||||
|
|
||||||
/* Yes, what I do here may look strange, but it gets the
|
|
||||||
job done, and portably at that. */
|
|
||||||
|
|
||||||
while (val >= 9500)
|
|
||||||
val -= 9500;
|
|
||||||
while (val >= 950)
|
|
||||||
val -= 950;
|
|
||||||
while (val >= 95)
|
|
||||||
val -= 95;
|
|
||||||
while (val < 0)
|
|
||||||
val += 95;
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
10
crypt.h
10
crypt.h
@ -1,10 +0,0 @@
|
|||||||
#ifndef _CRYPT_H_
|
|
||||||
#define _CRYPT_H_
|
|
||||||
|
|
||||||
#define CRYPT 1 /* file encryption enabled? */
|
|
||||||
|
|
||||||
#if CRYPT
|
|
||||||
void myencrypt( char *bptr, unsigned len) ;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
4
ebind.c
4
ebind.c
@ -270,10 +270,6 @@ struct key_tab keytab[NBINDS] = {
|
|||||||
,
|
,
|
||||||
{META | 'D', delfword}
|
{META | 'D', delfword}
|
||||||
,
|
,
|
||||||
#if CRYPT
|
|
||||||
{META | 'E', set_encryption_key}
|
|
||||||
,
|
|
||||||
#endif
|
|
||||||
{META | 'F', forwword}
|
{META | 'F', forwword}
|
||||||
,
|
,
|
||||||
{META | 'G', gotoline}
|
{META | 'G', gotoline}
|
||||||
|
88
file.c
88
file.c
@ -17,7 +17,6 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include "buffer.h"
|
#include "buffer.h"
|
||||||
#include "crypt.h"
|
|
||||||
#include "defines.h"
|
#include "defines.h"
|
||||||
#include "display.h"
|
#include "display.h"
|
||||||
#include "estruct.h"
|
#include "estruct.h"
|
||||||
@ -174,77 +173,6 @@ int viewfile( int f, int n) { /* visit a file in VIEW mode */
|
|||||||
return status ;
|
return status ;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if CRYPT
|
|
||||||
void cryptbufferkey( struct buffer *bp) {
|
|
||||||
myencrypt( (char *) NULL, 0) ;
|
|
||||||
myencrypt( bp->b_key, strlen( bp->b_key)) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* reset encryption key of current buffer
|
|
||||||
*
|
|
||||||
* int f; default flag
|
|
||||||
* int n; numeric argument
|
|
||||||
*/
|
|
||||||
int set_encryption_key( int f, int n) {
|
|
||||||
int status ; /* return status */
|
|
||||||
int odisinp ; /* original value of disinp */
|
|
||||||
char *key ; /* new encryption string */
|
|
||||||
|
|
||||||
/* turn command input echo off */
|
|
||||||
odisinp = disinp ;
|
|
||||||
disinp = FALSE ;
|
|
||||||
|
|
||||||
/* get the string to use as an encrytion string */
|
|
||||||
status = newmlarg( &key, "Encryption String: ", sizeof( ekey_t)) ;
|
|
||||||
disinp = odisinp ;
|
|
||||||
if( status != TRUE)
|
|
||||||
return status ;
|
|
||||||
|
|
||||||
/* save it off and encrypt it*/
|
|
||||||
strncpy( curbp->b_key, key, sizeof( ekey_t) - 1) ;
|
|
||||||
curbp->b_key[ sizeof( ekey_t) - 1] = '\0' ;
|
|
||||||
free( key) ;
|
|
||||||
cryptbufferkey( curbp) ;
|
|
||||||
if( !(curbp->b_mode & MDCRYPT)) {
|
|
||||||
curbp->b_mode |= MDCRYPT ;
|
|
||||||
upmode() ;
|
|
||||||
}
|
|
||||||
|
|
||||||
mloutstr( "") ; /* clear the message line */
|
|
||||||
return TRUE ;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int resetkey(void)
|
|
||||||
{ /* reset the encryption key if needed */
|
|
||||||
int s; /* return status */
|
|
||||||
|
|
||||||
/* turn off the encryption flag */
|
|
||||||
is_crypted = FALSE;
|
|
||||||
|
|
||||||
/* if we are in crypt mode */
|
|
||||||
if (curbp->b_mode & MDCRYPT) {
|
|
||||||
if (curbp->b_key[0] == 0) {
|
|
||||||
s = set_encryption_key(FALSE, 0);
|
|
||||||
if (s != TRUE)
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* let others know... */
|
|
||||||
is_crypted = TRUE;
|
|
||||||
|
|
||||||
/* and set up the key to be used! */
|
|
||||||
/* de-encrypt it */
|
|
||||||
cryptbufferkey( curbp) ;
|
|
||||||
|
|
||||||
/* re-encrypt it...seeding it to start */
|
|
||||||
cryptbufferkey( curbp) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* getfile()
|
* getfile()
|
||||||
*
|
*
|
||||||
@ -348,11 +276,6 @@ int readin(const char *fname, boolean lockfl)
|
|||||||
#else
|
#else
|
||||||
return ABORT;
|
return ABORT;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
#if CRYPT
|
|
||||||
s = resetkey();
|
|
||||||
if (s != TRUE)
|
|
||||||
return s;
|
|
||||||
#endif
|
#endif
|
||||||
bp = curbp; /* Cheap. */
|
bp = curbp; /* Cheap. */
|
||||||
if ((s = bclear(bp)) != TRUE) /* Might be old. */
|
if ((s = bclear(bp)) != TRUE) /* Might be old. */
|
||||||
@ -618,12 +541,6 @@ int writeout( const char *fn)
|
|||||||
struct line *lp;
|
struct line *lp;
|
||||||
int nline;
|
int nline;
|
||||||
|
|
||||||
#if CRYPT
|
|
||||||
s = resetkey();
|
|
||||||
if (s != TRUE)
|
|
||||||
return s;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if ((s = ffwopen(fn)) != FIOSUC) { /* Open writes message. */
|
if ((s = ffwopen(fn)) != FIOSUC) { /* Open writes message. */
|
||||||
mloutstr( "Cannot open file for writing") ;
|
mloutstr( "Cannot open file for writing") ;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -723,11 +640,6 @@ static int ifile( const char *fname) {
|
|||||||
}
|
}
|
||||||
mloutstr( "(Inserting file)") ;
|
mloutstr( "(Inserting file)") ;
|
||||||
|
|
||||||
#if CRYPT
|
|
||||||
s = resetkey();
|
|
||||||
if (s != TRUE)
|
|
||||||
return s;
|
|
||||||
#endif
|
|
||||||
/* back up a line and save the mark here */
|
/* back up a line and save the mark here */
|
||||||
curwp->w_dotp = lback(curwp->w_dotp);
|
curwp->w_dotp = lback(curwp->w_dotp);
|
||||||
curwp->w_doto = 0;
|
curwp->w_doto = 0;
|
||||||
|
6
file.h
6
file.h
@ -2,14 +2,8 @@
|
|||||||
#define _FILE_H_
|
#define _FILE_H_
|
||||||
|
|
||||||
#include "buffer.h"
|
#include "buffer.h"
|
||||||
#include "crypt.h"
|
|
||||||
#include "retcode.h"
|
#include "retcode.h"
|
||||||
|
|
||||||
#if CRYPT
|
|
||||||
void cryptbufferkey( struct buffer *bp) ;
|
|
||||||
int set_encryption_key( int f, int n) ;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern boolean restflag ; /* restricted use? */
|
extern boolean restflag ; /* restricted use? */
|
||||||
boolean resterr( void) ; /* restricted error message */
|
boolean resterr( void) ; /* restricted error message */
|
||||||
|
|
||||||
|
24
fileio.c
24
fileio.c
@ -23,10 +23,6 @@
|
|||||||
#include "retcode.h"
|
#include "retcode.h"
|
||||||
#include "utf8.h"
|
#include "utf8.h"
|
||||||
|
|
||||||
#if CRYPT
|
|
||||||
boolean is_crypted ; /* currently encrypting? */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
char *fline = NULL ; /* dynamic return line */
|
char *fline = NULL ; /* dynamic return line */
|
||||||
static int flen = 0 ; /* current allocated length of fline */
|
static int flen = 0 ; /* current allocated length of fline */
|
||||||
int ftype ;
|
int ftype ;
|
||||||
@ -103,20 +99,6 @@ fio_code ffclose(void)
|
|||||||
* Check only at the newline.
|
* Check only at the newline.
|
||||||
*/
|
*/
|
||||||
fio_code ffputline( char *buf, int nbuf, int dosflag) {
|
fio_code ffputline( char *buf, int nbuf, int dosflag) {
|
||||||
#if CRYPT
|
|
||||||
if( is_crypted) {
|
|
||||||
int i ;
|
|
||||||
|
|
||||||
for( i = 0 ; i < nbuf ; i++) {
|
|
||||||
char c ;
|
|
||||||
|
|
||||||
c = buf[ i] ;
|
|
||||||
myencrypt( &c, 1) ;
|
|
||||||
fputc( c, ffp) ;
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
#endif
|
|
||||||
|
|
||||||
fwrite( buf, 1, nbuf, ffp) ;
|
fwrite( buf, 1, nbuf, ffp) ;
|
||||||
|
|
||||||
if( dosflag)
|
if( dosflag)
|
||||||
@ -217,11 +199,7 @@ fio_code ffgetline(void)
|
|||||||
} else /* c == '\n' */
|
} else /* c == '\n' */
|
||||||
ftype |= FTYPE_UNIX ;
|
ftype |= FTYPE_UNIX ;
|
||||||
|
|
||||||
/* terminate and decrypt the string */
|
/* terminate the string */
|
||||||
fline[i] = 0;
|
fline[i] = 0;
|
||||||
#if CRYPT
|
|
||||||
if( is_crypted)
|
|
||||||
myencrypt( fline, fpayload);
|
|
||||||
#endif
|
|
||||||
return FIOSUC;
|
return FIOSUC;
|
||||||
}
|
}
|
||||||
|
8
fileio.h
8
fileio.h
@ -1,8 +1,6 @@
|
|||||||
#ifndef _FILEIO_H_
|
#ifndef _FILEIO_H_
|
||||||
#define _FILEIO_H_
|
#define _FILEIO_H_
|
||||||
|
|
||||||
#include "crypt.h"
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
FIOSUC, /* File I/O, success. */
|
FIOSUC, /* File I/O, success. */
|
||||||
FIOFNF, /* File I/O, file not found. */
|
FIOFNF, /* File I/O, file not found. */
|
||||||
@ -24,12 +22,6 @@ typedef enum {
|
|||||||
#define FCODE_EXTND 0x82
|
#define FCODE_EXTND 0x82
|
||||||
#define FCODE_MIXED 0x83
|
#define FCODE_MIXED 0x83
|
||||||
|
|
||||||
#if CRYPT
|
|
||||||
#include "retcode.h"
|
|
||||||
|
|
||||||
extern boolean is_crypted ; /* currently encrypting? */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern char *fline ; /* dynamic return line */
|
extern char *fline ; /* dynamic return line */
|
||||||
extern int ftype ;
|
extern int ftype ;
|
||||||
extern int fcode ; /* encoding type */
|
extern int fcode ; /* encoding type */
|
||||||
|
25
main.c
25
main.c
@ -125,9 +125,6 @@ static void usage( void) {
|
|||||||
" -a|A process error file\n"
|
" -a|A process error file\n"
|
||||||
" -e|E edit file\n"
|
" -e|E edit file\n"
|
||||||
" -g|G<n> go to line <n>\n"
|
" -g|G<n> go to line <n>\n"
|
||||||
#if CRYPT
|
|
||||||
" -k|K<key> use code key\n"
|
|
||||||
#endif
|
|
||||||
" -r|R restrictive use\n"
|
" -r|R restrictive use\n"
|
||||||
" -s|S<string> search string\n"
|
" -s|S<string> search string\n"
|
||||||
" -v|V view file\n"
|
" -v|V view file\n"
|
||||||
@ -150,10 +147,6 @@ int main(int argc, char **argv)
|
|||||||
int searchflag; /* Do we need to search at start? */
|
int searchflag; /* Do we need to search at start? */
|
||||||
int errflag; /* C error processing? */
|
int errflag; /* C error processing? */
|
||||||
bname_t bname ; /* buffer name of file to read */
|
bname_t bname ; /* buffer name of file to read */
|
||||||
#if CRYPT
|
|
||||||
int cryptflag; /* encrypting on the way in? */
|
|
||||||
ekey_t ekey ; /* startup encryption key */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if PKCODE & VMS
|
#if PKCODE & VMS
|
||||||
(void) umask(-1); /* Use old protection (this is at wrong place). */
|
(void) umask(-1); /* Use old protection (this is at wrong place). */
|
||||||
@ -192,9 +185,6 @@ int main(int argc, char **argv)
|
|||||||
firstfile = TRUE; /* no file to edit yet */
|
firstfile = TRUE; /* no file to edit yet */
|
||||||
startflag = FALSE; /* startup file not executed yet */
|
startflag = FALSE; /* startup file not executed yet */
|
||||||
errflag = FALSE; /* not doing C error parsing */
|
errflag = FALSE; /* not doing C error parsing */
|
||||||
#if CRYPT
|
|
||||||
cryptflag = FALSE; /* no encryption by default */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Insure screen is initialized before startup and goto/search */
|
/* Insure screen is initialized before startup and goto/search */
|
||||||
update( FALSE) ;
|
update( FALSE) ;
|
||||||
@ -224,14 +214,6 @@ int main(int argc, char **argv)
|
|||||||
gotoflag = TRUE;
|
gotoflag = TRUE;
|
||||||
gline = atoi(&argv[carg][2]);
|
gline = atoi(&argv[carg][2]);
|
||||||
break;
|
break;
|
||||||
#if CRYPT
|
|
||||||
case 'k': /* -k<key> for code key */
|
|
||||||
case 'K':
|
|
||||||
cryptflag = TRUE;
|
|
||||||
strncpy( ekey, &argv[ carg][ 2], sizeof ekey - 1) ;
|
|
||||||
ekey[ sizeof ekey - 1] = 0 ;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
case 'r': /* -r restrictive use */
|
case 'r': /* -r restrictive use */
|
||||||
case 'R':
|
case 'R':
|
||||||
restflag = TRUE;
|
restflag = TRUE;
|
||||||
@ -297,13 +279,6 @@ int main(int argc, char **argv)
|
|||||||
/* set the modes appropriatly */
|
/* set the modes appropriatly */
|
||||||
if (viewflag)
|
if (viewflag)
|
||||||
bp->b_mode |= MDVIEW;
|
bp->b_mode |= MDVIEW;
|
||||||
#if CRYPT
|
|
||||||
if (cryptflag) {
|
|
||||||
bp->b_mode |= MDCRYPT;
|
|
||||||
strncpy( bp->b_key, ekey, sizeof ekey) ;
|
|
||||||
cryptbufferkey( bp) ;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
3
names.c
3
names.c
@ -205,9 +205,6 @@ struct name_bind names[] = {
|
|||||||
{"search-reverse", backsearch},
|
{"search-reverse", backsearch},
|
||||||
{"select-buffer", usebuffer},
|
{"select-buffer", usebuffer},
|
||||||
{"set", setvar},
|
{"set", setvar},
|
||||||
#if CRYPT
|
|
||||||
{"set-encryption-key", set_encryption_key},
|
|
||||||
#endif
|
|
||||||
{"set-fill-column", setfillcol},
|
{"set-fill-column", setfillcol},
|
||||||
{"set-mark", setmark},
|
{"set-mark", setmark},
|
||||||
{"shell-command", spawn},
|
{"shell-command", spawn},
|
||||||
|
Loading…
Reference in New Issue
Block a user