POS_AUTH
memcpy(md5, &h->out[POS_AUTH], LEN_AUTH);
MD5Update(&ctx, &h->out[POS_CODE], POS_AUTH - POS_CODE);
MD5Update(&ctx, &h->in[POS_AUTH], LEN_AUTH);
MD5Update(&ctx, &h->out[POS_AUTH], LEN_AUTH);
memcpy(buf, h->out + POS_AUTH, LEN_AUTH);
MD5Final(&h->out[POS_AUTH], &ctx);
HMAC_Update(ctx, &h->out[POS_CODE], POS_AUTH - POS_CODE);
HMAC_Update(ctx, &h->in[POS_AUTH], LEN_AUTH);
HMAC_Update(ctx, &h->out[POS_AUTH], LEN_AUTH);
MD5Update(&ctx, &h->in[POS_CODE], POS_AUTH - POS_CODE);
MD5Update(&ctx, &h->out[POS_AUTH], LEN_AUTH);
if (memcmp(&h->in[POS_AUTH], md5, sizeof md5) != 0)
POS_AUTH - POS_CODE);
HMAC_Update(hctx, &h->out[POS_AUTH],
MD5Update(&ctx, &h->in[POS_CODE], POS_AUTH - POS_CODE);
if (memcmp(&h->in[POS_AUTH], md5, sizeof md5) != 0)
memset(&resp[POS_AUTH], 0, LEN_AUTH);
memset(&h->out[POS_AUTH], 0, LEN_AUTH);
h->out[POS_AUTH+i] = (u_char)r;
h->out[POS_AUTH+i+1] = (u_char)(r >> 8);
memset(&h->out[POS_AUTH], 0, LEN_AUTH);
memset(&h->out[POS_AUTH], 0, LEN_AUTH);