Exemplo n.º 1
0
static int
pack_cred(CREDENTIALS *cred, unsigned char *buf)
{
    unsigned char *p = buf;
    
    p += krb_put_nir(cred->service, cred->instance, cred->realm, p);
    memcpy(p, cred->session, 8);
    p += 8;
    *p++ = cred->lifetime;
    *p++ = cred->kvno;
    p += krb_put_int(cred->ticket_st.length, p, 4);
    memcpy(p, cred->ticket_st.dat, cred->ticket_st.length);
    p += cred->ticket_st.length;
    p += krb_put_int(cred->issue_date, p, 4);
    p += krb_put_nir(cred->pname, cred->pinst, NULL, p);
    return p - buf;
}
Exemplo n.º 2
0
Arquivo: mk_req.c Projeto: 1ack/Impala
static int
build_request(KTEXT req, char *name, char *inst, char *realm, 
	      u_int32_t checksum)
{
    struct timeval tv;
    unsigned char *p = req->dat;
    int tmp;
    size_t rem = sizeof(req->dat);

    tmp = krb_put_nir(name, inst, realm, p, rem);
    if (tmp < 0)
	return KFAILURE;
    p += tmp;
    rem -= tmp;

    tmp = krb_put_int(checksum, p, rem, 4);
    if (tmp < 0)
	return KFAILURE;
    p += tmp;
    rem -= tmp;

    /* Fill in the times on the request id */
    krb_kdctimeofday(&tv);

    if (rem < 1)
	return KFAILURE;

    *p++ = tv.tv_usec / 5000; /* 5ms */
    --rem;
    
    tmp = krb_put_int(tv.tv_sec, p, rem, 4);
    if (tmp < 0)
	return KFAILURE;
    p += tmp;
    rem -= tmp;

    /* Fill to a multiple of 8 bytes for DES */
    req->length = ((p - req->dat + 7)/8) * 8;
    return 0;
}