422 |
int i; |
int i; |
423 |
char * term; |
char * term; |
424 |
|
|
425 |
term = xmalloc (strlen(args)+4); |
term = (char *)xmalloc (strlen(args)+4); |
426 |
strcpy (term, "-x "); |
strcpy (term, "-x "); |
427 |
strcat (term, args); |
strcat (term, args); |
428 |
|
|
441 |
for (i=0; i<4; i++) |
for (i=0; i<4; i++) |
442 |
{ |
{ |
443 |
ivtab[i]->ivlen = keylen; |
ivtab[i]->ivlen = keylen; |
444 |
|
|
445 |
switch (keytype) |
switch (keytype) |
446 |
{ |
{ |
447 |
case SHISHI_DES_CBC_CRC: |
case SHISHI_DES_CBC_CRC: |
452 |
ivtab[i]->keyusage = SHISHI_KEYUSAGE_KCMD_DES; |
ivtab[i]->keyusage = SHISHI_KEYUSAGE_KCMD_DES; |
453 |
ivtab[i]->iv = malloc (ivtab[i]->ivlen); |
ivtab[i]->iv = malloc (ivtab[i]->ivlen); |
454 |
memset (ivtab[i]->iv, 2*i + 1*(i<2) - 4*(i>=2), ivtab[i]->ivlen); |
memset (ivtab[i]->iv, 2*i + 1*(i<2) - 4*(i>=2), ivtab[i]->ivlen); |
455 |
|
ivtab[i]->ctx = shishi_crypto (h, enckey, ivtab[i]->keyusage, shishi_key_type (enckey), |
456 |
|
ivtab[i]->iv, ivtab[i]->ivlen); |
457 |
|
break; |
458 |
|
case SHISHI_ARCFOUR_HMAC: |
459 |
|
case SHISHI_ARCFOUR_HMAC_EXP: |
460 |
|
ivtab[i]->keyusage = SHISHI_KEYUSAGE_KCMD_DES + 2 + 4*i; |
461 |
|
ivtab[i]->ctx = shishi_crypto (h, enckey, ivtab[i]->keyusage, shishi_key_type (enckey), |
462 |
|
NULL, 0); |
463 |
break; |
break; |
464 |
default : |
default : |
465 |
ivtab[i]->keyusage = SHISHI_KEYUSAGE_KCMD_DES + 2 + 4*i; |
ivtab[i]->keyusage = SHISHI_KEYUSAGE_KCMD_DES + 2 + 4*i; |
466 |
ivtab[i]->iv = malloc (ivtab[i]->ivlen); |
ivtab[i]->iv = malloc (ivtab[i]->ivlen); |
467 |
memset (ivtab[i]->iv, 0, ivtab[i]->ivlen); |
memset (ivtab[i]->iv, 0, ivtab[i]->ivlen); |
468 |
} |
ivtab[i]->ctx = shishi_crypto (h, enckey, ivtab[i]->keyusage, shishi_key_type (enckey), |
469 |
|
ivtab[i]->iv, ivtab[i]->ivlen); |
470 |
|
} |
471 |
} |
} |
472 |
} |
} |
473 |
free (term); |
free (term); |
564 |
|
|
565 |
talk (nflag, &osigs, pid, rem); |
talk (nflag, &osigs, pid, rem); |
566 |
|
|
567 |
|
|
568 |
|
#ifdef SHISHI |
569 |
|
if (use_kerberos) |
570 |
|
{ |
571 |
|
int i; |
572 |
|
|
573 |
|
shishi_done (h); |
574 |
|
#ifdef ENCRYPTION |
575 |
|
if (doencrypt) |
576 |
|
{ |
577 |
|
shishi_key_done (enckey); |
578 |
|
for (i = 0; i < 4; i++) |
579 |
|
{ |
580 |
|
shishi_crypto_close (ivtab[i]->ctx); |
581 |
|
free (ivtab[i]->iv); |
582 |
|
} |
583 |
|
} |
584 |
|
#endif |
585 |
|
} |
586 |
|
#endif |
587 |
|
|
588 |
if (!nflag) |
if (!nflag) |
589 |
kill (pid, SIGKILL); |
kill (pid, SIGKILL); |
590 |
return 0; |
return 0; |