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:
@@ -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);
|
||||||
|
Reference in New Issue
Block a user