Flatten the reply
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@25001 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
68
kdc/pkinit.c
68
kdc/pkinit.c
@@ -1008,7 +1008,6 @@ pk_mk_pa_reply_enckey(krb5_context context,
|
|||||||
kdc_identity->certs,
|
kdc_identity->certs,
|
||||||
q,
|
q,
|
||||||
&cert);
|
&cert);
|
||||||
hx509_query_free(kdc_identity->hx509ctx, q);
|
|
||||||
if (ret)
|
if (ret)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
@@ -1079,6 +1078,8 @@ pk_mk_pa_reply_dh(krb5_context context,
|
|||||||
krb5_data signed_data, buf;
|
krb5_data signed_data, buf;
|
||||||
ContentInfo contentinfo;
|
ContentInfo contentinfo;
|
||||||
krb5_error_code ret;
|
krb5_error_code ret;
|
||||||
|
hx509_cert cert;
|
||||||
|
hx509_query *q;
|
||||||
size_t size;
|
size_t size;
|
||||||
|
|
||||||
memset(&contentinfo, 0, sizeof(contentinfo));
|
memset(&contentinfo, 0, sizeof(contentinfo));
|
||||||
@@ -1150,41 +1151,37 @@ pk_mk_pa_reply_dh(krb5_context context,
|
|||||||
* filled in above
|
* filled in above
|
||||||
*/
|
*/
|
||||||
|
|
||||||
{
|
ret = hx509_query_alloc(kdc_identity->hx509ctx, &q);
|
||||||
hx509_query *q;
|
|
||||||
hx509_cert cert;
|
|
||||||
|
|
||||||
ret = hx509_query_alloc(kdc_identity->hx509ctx, &q);
|
|
||||||
if (ret)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
hx509_query_match_option(q, HX509_QUERY_OPTION_PRIVATE_KEY);
|
|
||||||
if (config->pkinit_kdc_friendly_name)
|
|
||||||
hx509_query_match_friendly_name(q, config->pkinit_kdc_friendly_name);
|
|
||||||
|
|
||||||
ret = hx509_certs_find(kdc_identity->hx509ctx,
|
|
||||||
kdc_identity->certs,
|
|
||||||
q,
|
|
||||||
&cert);
|
|
||||||
hx509_query_free(kdc_identity->hx509ctx, q);
|
|
||||||
if (ret)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
ret = hx509_cms_create_signed_1(kdc_identity->hx509ctx,
|
|
||||||
0,
|
|
||||||
oid_id_pkdhkeydata(),
|
|
||||||
buf.data,
|
|
||||||
buf.length,
|
|
||||||
NULL,
|
|
||||||
cert,
|
|
||||||
cp->peer,
|
|
||||||
cp->client_anchors,
|
|
||||||
kdc_identity->certpool,
|
|
||||||
&signed_data);
|
|
||||||
*kdc_cert = cert;
|
|
||||||
}
|
|
||||||
if (ret)
|
if (ret)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
hx509_query_match_option(q, HX509_QUERY_OPTION_PRIVATE_KEY);
|
||||||
|
if (config->pkinit_kdc_friendly_name)
|
||||||
|
hx509_query_match_friendly_name(q, config->pkinit_kdc_friendly_name);
|
||||||
|
|
||||||
|
ret = hx509_certs_find(kdc_identity->hx509ctx,
|
||||||
|
kdc_identity->certs,
|
||||||
|
q,
|
||||||
|
&cert);
|
||||||
|
if (ret)
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
ret = hx509_cms_create_signed_1(kdc_identity->hx509ctx,
|
||||||
|
0,
|
||||||
|
oid_id_pkdhkeydata(),
|
||||||
|
buf.data,
|
||||||
|
buf.length,
|
||||||
|
NULL,
|
||||||
|
cert,
|
||||||
|
cp->peer,
|
||||||
|
cp->client_anchors,
|
||||||
|
kdc_identity->certpool,
|
||||||
|
&signed_data);
|
||||||
|
if (ret) {
|
||||||
|
kdc_log(context, config, 0, "Failed signing the DH* reply: %d", ret);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
*kdc_cert = cert;
|
||||||
|
|
||||||
ret = _krb5_pk_mk_ContentInfo(context,
|
ret = _krb5_pk_mk_ContentInfo(context,
|
||||||
&signed_data,
|
&signed_data,
|
||||||
@@ -1199,6 +1196,9 @@ pk_mk_pa_reply_dh(krb5_context context,
|
|||||||
*kdc_cert = NULL;
|
*kdc_cert = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (q)
|
||||||
|
hx509_query_free(kdc_identity->hx509ctx, q);
|
||||||
|
|
||||||
krb5_data_free(&buf);
|
krb5_data_free(&buf);
|
||||||
krb5_data_free(&signed_data);
|
krb5_data_free(&signed_data);
|
||||||
free_KDCDHKeyInfo(&dh_info);
|
free_KDCDHKeyInfo(&dh_info);
|
||||||
|
Reference in New Issue
Block a user