From efd0ad70af4851de4af138de2fd3a16aac210e4b Mon Sep 17 00:00:00 2001 From: frankmorgner Date: Thu, 23 Sep 2010 09:03:58 +0000 Subject: [PATCH] adatpted to the latest changes of OpenPACE. EstablishPACEChannel now fully functional git-svn-id: https://vsmartcard.svn.sourceforge.net/svnroot/vsmartcard@272 96b47cad-a561-4643-ad3b-153ac7d7599c --- ccid/src/pace.c | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/ccid/src/pace.c b/ccid/src/pace.c index 8bb2bbd..7551ad3 100644 --- a/ccid/src/pace.c +++ b/ccid/src/pace.c @@ -28,6 +28,7 @@ #include #include #include +#include #include @@ -38,25 +39,13 @@ * MSE:Set AT */ -/* XXX should be part of OpenPACE */ -typedef struct pace_chat_st { - ASN1_OBJECT *terminal_type; - ASN1_OCTET_STRING *relative_authorization; -} PACE_CHAT; -ASN1_SEQUENCE(PACE_CHAT) = { - ASN1_SIMPLE(PACE_CHAT, terminal_type, ASN1_OBJECT), - /* tag: 0x53*/ - ASN1_APP_IMP(PACE_CHAT, relative_authorization, ASN1_OCTET_STRING, 0x13) /* discretionary data */ -} ASN1_SEQUENCE_END(PACE_CHAT) -IMPLEMENT_ASN1_FUNCTIONS(PACE_CHAT) - typedef struct pace_mse_set_at_cd_st { ASN1_OBJECT *cryptographic_mechanism_reference; ASN1_INTEGER *key_reference1; ASN1_INTEGER *key_reference2; ASN1_OCTET_STRING *auxiliary_data; ASN1_OCTET_STRING *eph_pub_key; - PACE_CHAT *cha_template; + CVC_CHAT *cha_template; } PACE_MSE_SET_AT_C; ASN1_SEQUENCE(PACE_MSE_SET_AT_C) = { /* 0x80 @@ -74,9 +63,8 @@ ASN1_SEQUENCE(PACE_MSE_SET_AT_C) = { /* 0x91 * Ephemeral Public Key */ ASN1_IMP_OPT(PACE_MSE_SET_AT_C, eph_pub_key, ASN1_OCTET_STRING, 0x11), - /* 0x7F4C - * Certificate Holder Authorization Template */ - ASN1_APP_IMP_OPT(PACE_MSE_SET_AT_C, cha_template, PACE_CHAT, 0x4c), + /* Certificate Holder Authorization Template */ + ASN1_OPT(PACE_MSE_SET_AT_C, cha_template, CVC_CHAT), } ASN1_SEQUENCE_END(PACE_MSE_SET_AT_C) IMPLEMENT_ASN1_FUNCTIONS(PACE_MSE_SET_AT_C) @@ -303,7 +291,7 @@ static int pace_mse_set_at(const struct sm_ctx *oldpacectx, sc_card_t *card, } if (length_chat) { - if (!d2i_PACE_CHAT(&data->cha_template, (const unsigned char **) &chat, + if (!d2i_CVC_CHAT(&data->cha_template, (const unsigned char **) &chat, length_chat)) { sc_error(card->ctx, "Could not parse card holder authorization template (CHAT)."); r = SC_ERROR_INTERNAL;