when decrypting pa-data, try all keys matching enctype
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@10974 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -574,7 +574,8 @@ as_rep(KDC_REQ *req,
|
|||||||
free_EncryptedData(&enc_data);
|
free_EncryptedData(&enc_data);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try_next_key:
|
||||||
ret = krb5_crypto_init(context, &pa_key->key, 0, &crypto);
|
ret = krb5_crypto_init(context, &pa_key->key, 0, &crypto);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
kdc_log(0, "krb5_crypto_init failed: %s",
|
kdc_log(0, "krb5_crypto_init failed: %s",
|
||||||
@@ -591,6 +592,9 @@ as_rep(KDC_REQ *req,
|
|||||||
krb5_crypto_destroy(context, crypto);
|
krb5_crypto_destroy(context, crypto);
|
||||||
free_EncryptedData(&enc_data);
|
free_EncryptedData(&enc_data);
|
||||||
if(ret){
|
if(ret){
|
||||||
|
if(hdb_next_enctype2key(context, client,
|
||||||
|
enc_data.etype, &pa_key) == 0)
|
||||||
|
goto try_next_key;
|
||||||
e_text = "Failed to decrypt PA-DATA";
|
e_text = "Failed to decrypt PA-DATA";
|
||||||
kdc_log (5, "Failed to decrypt PA-DATA -- %s",
|
kdc_log (5, "Failed to decrypt PA-DATA -- %s",
|
||||||
client_name);
|
client_name);
|
||||||
@@ -639,7 +643,7 @@ as_rep(KDC_REQ *req,
|
|||||||
size_t len;
|
size_t len;
|
||||||
krb5_data foo_data;
|
krb5_data foo_data;
|
||||||
|
|
||||||
use_pa:
|
use_pa:
|
||||||
method_data.len = 0;
|
method_data.len = 0;
|
||||||
method_data.val = NULL;
|
method_data.val = NULL;
|
||||||
|
|
||||||
@@ -696,7 +700,7 @@ as_rep(KDC_REQ *req,
|
|||||||
kdc_log(5, "Using %s/%s", cet, set);
|
kdc_log(5, "Using %s/%s", cet, set);
|
||||||
free(set);
|
free(set);
|
||||||
} else
|
} else
|
||||||
free(cet);
|
free(cet);
|
||||||
} else
|
} else
|
||||||
kdc_log(5, "Using e-types %d/%d", cetype, setype);
|
kdc_log(5, "Using e-types %d/%d", cetype, setype);
|
||||||
}
|
}
|
||||||
@@ -894,7 +898,7 @@ as_rep(KDC_REQ *req,
|
|||||||
free_EncTicketPart(&et);
|
free_EncTicketPart(&et);
|
||||||
free_EncKDCRepPart(&ek);
|
free_EncKDCRepPart(&ek);
|
||||||
free_AS_REP(&rep);
|
free_AS_REP(&rep);
|
||||||
out:
|
out:
|
||||||
if(ret){
|
if(ret){
|
||||||
krb5_mk_error(context,
|
krb5_mk_error(context,
|
||||||
ret,
|
ret,
|
||||||
@@ -907,7 +911,7 @@ out:
|
|||||||
reply);
|
reply);
|
||||||
ret = 0;
|
ret = 0;
|
||||||
}
|
}
|
||||||
out2:
|
out2:
|
||||||
krb5_free_principal(context, client_princ);
|
krb5_free_principal(context, client_princ);
|
||||||
free(client_name);
|
free(client_name);
|
||||||
krb5_free_principal(context, server_princ);
|
krb5_free_principal(context, server_princ);
|
||||||
|
Reference in New Issue
Block a user