- Timestamp:
- Feb 9, 2010, 9:49:41 PM (14 years ago)
- Branches:
- master, release-1.10, release-1.6, release-1.7, release-1.8, release-1.9
- Children:
- a52eeb1
- Parents:
- d35d2ba
- git-author:
- Anders Kaseorg <andersk@mit.edu> (02/07/10 22:55:21)
- git-committer:
- Anders Kaseorg <andersk@mit.edu> (02/09/10 21:49:41)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
zcrypt.c
r3f18ad5 rdacb555 76 76 /* The 'owl_zcrypt_decrypt' function was written by kretch for Owl. 77 77 * Decrypt the message in 'in' on class 'class' and instance 78 * 'instance' and leave the result in 'out'. Out must be a buffer 79 * allocated by the caller. 80 * 81 * return 0 on success, otherwise -1 78 * 'instance'. Return must be freed by caller. 82 79 */ 83 int owl_zcrypt_decrypt(char *out, const char *in, const char *class, const char *instance) { 80 char *owl_zcrypt_decrypt(const char *in, const char *class, const char *instance) 81 { 84 82 const char *inptr, *endptr; 85 83 char *fname, keystring[MAX_KEY]; 86 84 FILE *fkey; 87 85 des_key_schedule schedule; 86 char *out; 88 87 unsigned char input[8], output[8]; 89 88 int i, c1, c2; 90 89 91 90 fname=GetZephyrVarKeyFile("zcrypt", class, instance); 92 if (!fname) return (-1);91 if (!fname) return NULL; 93 92 fkey=fopen(fname, "r"); 94 if (!fkey) return (-1);93 if (!fkey) return NULL; 95 94 if (!fgets(keystring, MAX_KEY-1, fkey)) { 96 95 fclose(fkey); 97 return -1;96 return NULL; 98 97 } 99 98 fclose(fkey); 100 99 100 out = owl_malloc(strlen(in) * 16 + 20); 101 101 strcpy(out, ""); 102 102 … … 120 120 if (out[0] && out[strlen(out) - 1] != '\n') 121 121 strcat(out, "\n"); 122 return(0); 123 } 124 125 int owl_zcrypt_encrypt(char *out, const char *in, const char *class, const char *instance) { 122 return out; 123 } 124 125 char *owl_zcrypt_encrypt(const char *in, const char *class, const char *instance) 126 { 126 127 char *fname, keystring[MAX_KEY]; 127 128 FILE *fkey; 128 129 des_key_schedule schedule; 130 char *out; 129 131 unsigned char input[8], output[8]; 130 132 int size, length, i; … … 133 135 134 136 fname=GetZephyrVarKeyFile("zcrypt", class, instance); 135 if (!fname) return (-1);137 if (!fname) return NULL; 136 138 fkey=fopen(fname, "r"); 137 if (!fkey) return (-1);139 if (!fkey) return NULL; 138 140 if (!fgets(keystring, MAX_KEY-1, fkey)) { 139 141 fclose(fkey); 140 return -1;142 return NULL; 141 143 } 142 144 fclose(fkey); 143 145 144 146 owl_zcrypt_string_to_schedule(keystring, &schedule); 147 148 /* Allocate enough space for the crypted message. For each byte of 149 * the message, the encoded cyphertext will have two bytes. Block 150 * size is 8 bytes of input, or 16 bytes of output, so make sure we 151 * have at least one block worth of space allocated. If the message 152 * is empty, no blocks are sent, but we still allocate one 153 * block. The additional 16 bytes also provide space for the null 154 * terminator, as we will never use all of it for cyphertext. 155 */ 156 out = owl_malloc((strlen(in) * 2) + 16); 145 157 146 158 inbuff=in; … … 182 194 if (size < 8) break; 183 195 } 184 return (0);196 return out; 185 197 } 186 198
Note: See TracChangeset
for help on using the changeset viewer.