skck
#define SKCK_LEN(keylen) ALIGN8(sizeof (struct skck) + KEYLEN(keylen))
struct skck *skck;
if (common.deskeyarray_len > sizeof (skck->common)/sizeof (des_block) ||
skck = MOVE_ADDR(&(cd->public), DHKEYSIZE(pk));
skck->common[i] = common.deskeyarray_val[i];
skck->verifier = key;
memcpy(&(skck->secret), sk, DHKEYSIZE(sk));
err = cbc_crypt(key.c, (char *)skck, SKCK_LEN(newch->keylen),
struct skck *skck, *skck_cd;
if ((skck = malloc(SKCK_LEN(ch->keylen))) == 0) {
memcpy(skck, skck_cd, SKCK_LEN(ch->keylen));
err = cbc_crypt(key.c, (char *)skck, SKCK_LEN(ch->keylen),
free(skck);
if (memcmp(key.c, skck->verifier.c, sizeof (skck->verifier.c)) != 0) {
free(skck);
bin2hex(skck->secret.key, (u_char *)cl->secret->keybuf3_val,
skck->secret.length);
cl->secret->keybuf3_len = skck->secret.length*2+1;
cl->deskey.deskeyarray_len = sizeof (skck->common)/sizeof (des_block);
cl->deskey.deskeyarray_val[i] = skck->common[i];
free(skck);