From 7e8fdbc14d16fccaf580a1fc45337ea605f60d7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Tue, 26 Jul 2005 18:37:02 +0000 Subject: [PATCH] update to pkinit-27 git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@15760 ec53bebd-3082-4978-b11e-865c3cabbd6b --- kdc/pkinit.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/kdc/pkinit.c b/kdc/pkinit.c index 07b417973..48c6d5216 100644 --- a/kdc/pkinit.c +++ b/kdc/pkinit.c @@ -927,8 +927,10 @@ pk_mk_pa_reply_enckey(krb5_context context, enc_alg->parameters->data = params.data; enc_alg->parameters->length = params.length; - if (client_params->type == PKINIT_COMPAT_WIN2K || client_params->type == PKINIT_COMPAT_19 || client_params->type == PKINIT_COMPAT_25) { - ReplyKeyPack kp; + switch (client_params->type) { + case PKINIT_COMPAT_WIN2K: + case PKINIT_COMPAT_19: { + ReplyKeyPack_19 kp; memset(&kp, 0, sizeof(kp)); ret = copy_EncryptionKey(reply_key, &kp.replyKey); @@ -938,9 +940,25 @@ pk_mk_pa_reply_enckey(krb5_context context, } kp.nonce = client_params->nonce; + ASN1_MALLOC_ENCODE(ReplyKeyPack_19, + buf.data, buf.length, + &kp, &size,ret); + free_ReplyKeyPack_19(&kp); + } + case PKINIT_COMPAT_25: { + ReplyKeyPack kp; + memset(&kp, 0, sizeof(kp)); + + ret = copy_EncryptionKey(reply_key, &kp.replyKey); + if (ret) { + krb5_clear_error_string(context); + goto out; + } + /* XXX add whatever is the outcome of asChecksum discussion here */ ASN1_MALLOC_ENCODE(ReplyKeyPack, buf.data, buf.length, &kp, &size,ret); free_ReplyKeyPack(&kp); - } else { + } + default: krb5_abortx(context, "internal pkinit error"); } if (ret) {