fixed special functions

This commit is contained in:
Frank Morgner
2013-02-04 23:08:00 +01:00
parent d98f4e57c9
commit a6a10d0b3e
3 changed files with 14 additions and 11 deletions

View File

@@ -233,7 +233,7 @@ static int add_to_CVC_DISCRETIONARY_DATA_TEMPLATES(
template = &(*templates)->template2; template = &(*templates)->template2;
else { else {
fprintf(stderr, fprintf(stderr,
"Not enough space in auxiliary data for that many data templates"); "Choose at most two nPA operations.\n");
r = SC_ERROR_INVALID_ARGUMENTS; r = SC_ERROR_INVALID_ARGUMENTS;
goto err; goto err;
} }
@@ -586,27 +586,21 @@ main (int argc, char **argv)
r = add_to_CVC_DISCRETIONARY_DATA_TEMPLATES(&templates, r = add_to_CVC_DISCRETIONARY_DATA_TEMPLATES(&templates,
NID_id_DateOfBirth, cmdline.older_than_arg, NID_id_DateOfBirth, cmdline.older_than_arg,
strlen(cmdline.older_than_arg)); strlen(cmdline.older_than_arg));
if (r < 0) { if (r < 0)
fprintf(stderr, "Error formatting age verification data template.\n");
goto err; goto err;
}
} }
if (cmdline.verify_validity_given) { if (cmdline.verify_validity_given) {
r = add_to_CVC_DISCRETIONARY_DATA_TEMPLATES(&templates, r = add_to_CVC_DISCRETIONARY_DATA_TEMPLATES(&templates,
NID_id_DateOfExpiry, NULL, 0); NID_id_DateOfExpiry, NULL, 0);
if (r < 0) { if (r < 0)
fprintf(stderr, "Error formatting validity verification data template.\n");
goto err; goto err;
}
} }
if (cmdline.verify_community_given) { if (cmdline.verify_community_given) {
r = add_to_CVC_DISCRETIONARY_DATA_TEMPLATES(&templates, r = add_to_CVC_DISCRETIONARY_DATA_TEMPLATES(&templates,
NID_id_CommunityID, cmdline.verify_community_arg, NID_id_CommunityID, cmdline.verify_community_arg,
strlen(cmdline.verify_community_arg)); strlen(cmdline.verify_community_arg));
if (r < 0) { if (r < 0)
fprintf(stderr, "Error formatting community ID verification data template.\n");
goto err; goto err;
}
} }
unsigned char *p = NULL; unsigned char *p = NULL;
auxiliary_data_len = i2d_CVC_DISCRETIONARY_DATA_TEMPLATES( auxiliary_data_len = i2d_CVC_DISCRETIONARY_DATA_TEMPLATES(
@@ -789,6 +783,7 @@ err:
free(certs_chat); free(certs_chat);
if (cvc_cert) if (cvc_cert)
CVC_CERT_free(cvc_cert); CVC_CERT_free(cvc_cert);
free(privkey);
free(dg); free(dg);
if (templates) if (templates)
CVC_DISCRETIONARY_DATA_TEMPLATES_free(templates); CVC_DISCRETIONARY_DATA_TEMPLATES_free(templates);

View File

@@ -1741,6 +1741,10 @@ int perform_terminal_authentication(sc_card_t *card,
BUF_MEM_free(eacsmctx->auxiliary_data); BUF_MEM_free(eacsmctx->auxiliary_data);
eacsmctx->auxiliary_data = BUF_MEM_create_init(auxiliary_data, eacsmctx->auxiliary_data = BUF_MEM_create_init(auxiliary_data,
auxiliary_data_len); auxiliary_data_len);
/* FIXME this is a workaround for fixing 0x30 tag of
* CVC_DISCRETIONARY_DATA_TEMPLATES. */
if (eacsmctx->auxiliary_data->data && eacsmctx->auxiliary_data->length)
eacsmctx->auxiliary_data->data[0] = 0x67;
signature = TA_STEP5_sign(eacsmctx->ctx, eacsmctx->eph_pub_key, signature = TA_STEP5_sign(eacsmctx->ctx, eacsmctx->eph_pub_key,
eacsmctx->id_icc, eacsmctx->auxiliary_data); eacsmctx->id_icc, eacsmctx->auxiliary_data);
if (!signature) { if (!signature) {

View File

@@ -60,7 +60,11 @@ do
sleep 1 sleep 1
$NPA_TOOL --pin=111111 --private-key=$DATA/$KA/$TERM_KEY \ $NPA_TOOL --pin=111111 --private-key=$DATA/$KA/$TERM_KEY \
--cv-certificate=$DATA/$KA/$DVCA,$DATA/$KA/$TERMINAL --disable-checks --cv-certificate=$DATA/$KA/$DVCA,$DATA/$KA/$TERMINAL \
--older-than=19991231 --verify-validity \
--read-dg1 --read-dg2 --read-dg3 --read-dg4 --read-dg5 --read-dg6 --read-dg7 --read-dg8 --read-dg9 --read-dg10 --read-dg11 --read-dg12 --read-dg13 --read-dg14 --read-dg15 --read-dg16 --read-dg17 --read-dg18 --read-dg19 --read-dg20 --read-dg21 \
--write-dg17=0107 --write-dg18=0108 --write-dg19=0109 --write-dg20=0200 --write-dg21=0201 \
--disable-checks
NPA_RESULT=$? NPA_RESULT=$?
kill $VICC_PID 2>/dev/null kill $VICC_PID 2>/dev/null