From 32df77379371862ddb25576d752fc69cdaf63e8a Mon Sep 17 00:00:00 2001 From: mar Date: Mon, 21 Sep 1992 12:30:49 +0000 Subject: [PATCH] add ecryption flag to get_file() call --- update/get_file.c | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/update/get_file.c b/update/get_file.c index e13f7495..540a2a47 100644 --- a/update/get_file.c +++ b/update/get_file.c @@ -16,6 +16,8 @@ static char *rcsid_get_file_c = "$Header$"; #include #include #include +#include +#include #include #include "update.h" @@ -29,6 +31,7 @@ char buf[BUFSIZ]; extern int code, errno, uid; extern int have_authorization, have_file, done; +extern C_Block session; int get_block(); @@ -65,11 +68,12 @@ int get_block(); */ int -get_file(pathname, file_size, checksum, mode) +get_file(pathname, file_size, checksum, mode, encrypt) char *pathname; int file_size; int checksum; int mode; + int encrypt; { int fd, n_written; int found_checksum; @@ -129,7 +133,7 @@ get_file(pathname, file_size, checksum, mode) lose("sending okay for file transfer (get_file)"); n_written = 0; while (n_written < file_size && code == 0) { - int n_got = get_block(fd, file_size - n_written); + int n_got = get_block(fd, file_size - n_written, encrypt); if (n_got == -1) { /* get_block has already printed a message */ unlink(pathname); @@ -182,9 +186,10 @@ get_file(pathname, file_size, checksum, mode) } static int -get_block(fd, max_size) +get_block(fd, max_size, encrypt) int fd; int max_size; + int encrypt; { STRING data; int n_read, n; @@ -195,6 +200,20 @@ get_block(fd, max_size) lose("receiving data file (get_file)"); } n_read = MIN(MAX_STRING_SIZE(data), max_size); + if (encrypt) { + des_key_schedule sched; + des_cblock ivec; + STRING newdata; + + des_key_sched(session, sched); + bzero(ivec, sizeof(ivec)); + STRING_DATA(newdata) = (char *) malloc(n_read+9); + des_pcbc_encrypt(STRING_DATA(data), STRING_DATA(newdata), + n_read, sched, &ivec, 1); + string_free(&data); + data.ptr = newdata.ptr; + } + n = 0; while (n < n_read) { register int n_wrote; -- 2.45.1