- Timestamp:
- Jul 4, 2003, 12:26:03 AM (21 years ago)
- Branches:
- master, barnowl_perlaim, debian, owl, release-1.10, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
- Children:
- 3ba3af0
- Parents:
- 5b85d19
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
zcrypt.c
r09489b89 r9ceee9d 267 267 } 268 268 269 int zcrypt_decrypt(char *out, char *in, char *class, char *instance) { 270 /* written by kretch for owl. */ 271 /* return 0 on success, otherwise -1 */ 269 /* The 'owl_zcrypt_decrypt' function was written by kretch for Owl. 270 * Decrypt the message in 'in' on class 'class' and instance 271 * 'instance' and leave the result in 'out'. Out must be a buffer 272 * allocated by the caller. 273 * 274 * return 0 on success, otherwise -1 275 */ 276 int owl_zcrypt_decrypt(char *out, char *in, char *class, char *instance) { 272 277 char *fname, keystring[MAX_KEY], *inptr, *endptr; 273 278 FILE *fkey; … … 278 283 279 284 fname=GetZephyrVarKeyFile("zcrypt", class, instance); 285 if (!fname) return(-1); 280 286 fkey=fopen(fname, "r"); 281 287 if (!fkey) return(-1); … … 314 320 } 315 321 316 int zcrypt_encrypt(char *out, char *in, char *class, char *instance) { 322 int owl_zcrypt_encrypt(char *out, char *in, char *class, char *instance) { 323 /* static int do_encrypt(char *keystring, int zephyr, char *class, char *instance, ZWRITEOPTIONS *zoptions, char* keyfile) { */ 324 char *fname, keystring[MAX_KEY]; 325 FILE *fkey; 326 des_cblock key; 327 des_key_schedule schedule; 328 char input[8], output[8]; 329 int size, length, i; 330 char *inbuff = NULL, *inptr; 331 int use_buffer = FALSE; 332 int num_blocks=0, last_block_size=0; 333 334 fname=GetZephyrVarKeyFile("zcrypt", class, instance); 335 if (!fname) return(-1); 336 fkey=fopen(fname, "r"); 337 if (!fkey) return(-1); 338 fgets(keystring, MAX_KEY-1, fkey); 339 fclose(fkey); 340 341 des_string_to_key(keystring, key); 342 des_key_sched(key, schedule); 343 344 inbuff=in; 345 length=strlen(inbuff); 346 num_blocks=(length+7)/8; 347 last_block_size=((length+7)%8)+1; 348 use_buffer=TRUE; 349 350 strcpy(out, ""); 351 352 inptr=inbuff; 353 while (TRUE) { 354 /* Get 8 bytes from buffer */ 355 if (num_blocks > 1) { 356 size = 8; 357 memcpy(input, inptr, size); 358 inptr+=8; 359 num_blocks--; 360 } else if (num_blocks == 1) { 361 size=last_block_size; 362 memcpy(input, inptr, size); 363 num_blocks--; 364 } else { 365 size=0; 366 } 367 368 /* Check for EOF and pad the string to 8 chars, if needed */ 369 if (size == 0) break; /* END OF INPUT: BREAK FROM while LOOP! */ 370 371 if (size<8) memset(input + size, 0, 8 - size); 372 373 /* Encrypt and output the block */ 374 des_ecb_encrypt(input, output, schedule, TRUE); 375 376 for (i = 0; i < 8; i++) { 377 sprintf(out, "%s%c", out, ((output[i] & 0xf0) >> 4) + BASE_CODE); 378 sprintf(out, "%s%c", out, (output[i] & 0x0f) + BASE_CODE); 379 } 380 381 if (size < 8) break; 382 } 317 383 return(0); 318 384 } … … 367 433 /* Determine names to look for in .crypt-table */ 368 434 if (instance) { 369 sprintf(varname[numsearch++], "crypt-%s-%s:", (class?class:"message"), 370 instance); 435 sprintf(varname[numsearch++], "crypt-%s-%s:", (class?class:"message"), instance); 371 436 } 372 437 if (class) { … … 413 478 414 479 if (keyfile == NULL) { 415 printf("Could not find key table entry.\n");480 /* printf("Could not find key table entry.\n"); */ 416 481 } else { 417 482 /* Prepare result to be returned */ … … 421 486 strcpy(keyfile, temp); 422 487 } else { 423 printf("Memory allocation error.\n");488 /* printf("Memory allocation error.\n"); */ 424 489 } 425 490 } … … 427 492 fclose(fsearch); 428 493 } else { 429 printf("Could not open key table file: %s\n", filename);494 /* printf("Could not open key table file: %s\n", filename); */ 430 495 } 431 496
Note: See TracChangeset
for help on using the changeset viewer.