send enc challange in KDC reply
This commit is contained in:

committed by
Love Hörnquist Åstrand

parent
7151d4e66c
commit
8eb256ea00
@@ -1001,6 +1001,54 @@ _kdc_is_anonymous(krb5_context context, krb5_principal principal)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static krb5_error_code
|
||||||
|
make_pa_enc_challange(krb5_context context, METHOD_DATA *md,
|
||||||
|
krb5_crypto crypto)
|
||||||
|
{
|
||||||
|
PA_ENC_TS_ENC p;
|
||||||
|
unsigned char *buf;
|
||||||
|
size_t buf_size;
|
||||||
|
size_t len;
|
||||||
|
EncryptedData encdata;
|
||||||
|
krb5_error_code ret;
|
||||||
|
int32_t usec;
|
||||||
|
int usec2;
|
||||||
|
|
||||||
|
krb5_us_timeofday (context, &p.patimestamp, &usec);
|
||||||
|
usec2 = usec;
|
||||||
|
p.pausec = &usec2;
|
||||||
|
|
||||||
|
ASN1_MALLOC_ENCODE(PA_ENC_TS_ENC, buf, buf_size, &p, &len, ret);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
if(buf_size != len)
|
||||||
|
krb5_abortx(context, "internal error in ASN.1 encoder");
|
||||||
|
|
||||||
|
ret = krb5_encrypt_EncryptedData(context,
|
||||||
|
crypto,
|
||||||
|
KRB5_KU_ENC_CHALLENGE_KDC,
|
||||||
|
buf,
|
||||||
|
len,
|
||||||
|
0,
|
||||||
|
&encdata);
|
||||||
|
free(buf);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
ASN1_MALLOC_ENCODE(EncryptedData, buf, buf_size, &encdata, &len, ret);
|
||||||
|
free_EncryptedData(&encdata);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
if(buf_size != len)
|
||||||
|
krb5_abortx(context, "internal error in ASN.1 encoder");
|
||||||
|
|
||||||
|
ret = krb5_padata_add(context, md, KRB5_PADATA_ENCRYPTED_CHALLENGE, buf, len);
|
||||||
|
if (ret)
|
||||||
|
free(buf);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@@ -1496,7 +1544,10 @@ _kdc_as_rep(krb5_context context,
|
|||||||
free_PA_ENC_TS_ENC(&p);
|
free_PA_ENC_TS_ENC(&p);
|
||||||
et.flags.pre_authent = 1;
|
et.flags.pre_authent = 1;
|
||||||
|
|
||||||
/* XXX add kdc reply */
|
ret = make_pa_enc_challange(context, rep.padata,
|
||||||
|
challangecrypto);
|
||||||
|
if (ret)
|
||||||
|
goto out;
|
||||||
|
|
||||||
set_salt_padata(rep.padata, k->salt);
|
set_salt_padata(rep.padata, k->salt);
|
||||||
reply_key = &k->key;
|
reply_key = &k->key;
|
||||||
|
Reference in New Issue
Block a user