tweek to make pkinit work with the fact the asn1_compile can't

generate code for context tagless optionals


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@13159 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2003-11-26 00:46:02 +00:00
parent 8e42e1a3f4
commit 456f102612

View File

@@ -398,7 +398,7 @@ build_auth_pack(krb5_context context,
free(buf); free(buf);
if (ret == 0 && dh) { if (ret == 0 && dh) {
DomainParameters *dp; DomainParameters dp;
ASN1_INTEGER *dh_pub_key; ASN1_INTEGER *dh_pub_key;
krb5_data buf; krb5_data buf;
size_t size; size_t size;
@@ -411,42 +411,42 @@ build_auth_pack(krb5_context context,
if (ret) if (ret)
return ret; return ret;
ALLOC(dp, 1); memset(&dp, 0, sizeof(dp));
if (dp == NULL)
return ENOMEM;
ret = BN_to_any(context, dh->p, &dp->p); ret = BN_to_any(context, dh->p, &dp.p);
if (ret) { if (ret) {
free_DomainParameters(dp); free_DomainParameters(&dp);
return ret; return ret;
} }
ret = BN_to_any(context, dh->g, &dp->g); ret = BN_to_any(context, dh->g, &dp.g);
if (ret) { if (ret) {
free_DomainParameters(dp); free_DomainParameters(&dp);
return ret; return ret;
} }
ret = BN_to_any(context, dh->q, &dp->q); ret = BN_to_any(context, dh->q, &dp.q);
if (ret) { if (ret) {
free_DomainParameters(dp); free_DomainParameters(&dp);
return ret; return ret;
} }
dp->j = NULL; dp.j = NULL;
dp->validationParms = NULL; dp.validationParms = NULL;
#if 0
ALLOC(a->clientPublicValue->algorithm.parameters, 1); ALLOC(a->clientPublicValue->algorithm.parameters, 1);
if (a->clientPublicValue->algorithm.parameters == NULL) { if (a->clientPublicValue->algorithm.parameters == NULL) {
free_DomainParameters(dp); free_DomainParameters(&dp);
return ENOMEM; return ENOMEM;
} }
#endif
ASN1_MALLOC_ENCODE(DomainParameters,
a->clientPublicValue->algorithm.parameters.data,
a->clientPublicValue->algorithm.parameters.length,
&dp, &size, ret);
free_DomainParameters(&dp);
ASN1_MALLOC_ENCODE(DomainParameters,
a->clientPublicValue->algorithm.parameters->data,
a->clientPublicValue->algorithm.parameters->length,
dp, &size, ret);
free_DomainParameters(dp);
if (ret) if (ret)
return ret; return ret;
if (size != a->clientPublicValue->algorithm.parameters->length) if (size != a->clientPublicValue->algorithm.parameters.length)
krb5_abortx(context, "Internal ASN1 encoder error"); krb5_abortx(context, "Internal ASN1 encoder error");
dh_pub_key = BN_to_ASN1_INTEGER(dh->pub_key, NULL); dh_pub_key = BN_to_ASN1_INTEGER(dh->pub_key, NULL);