sc-hsm: fixed building with --disable-sm
Closes https://github.com/OpenSC/OpenSC/pull/1103
This commit is contained in:
parent
e2fe24d56a
commit
def06389bf
@ -284,7 +284,9 @@ static int sc_hsm_soc_select_minbioclient(sc_card_t *card)
|
||||
};
|
||||
|
||||
/* Select MinBioClient */
|
||||
#ifdef ENABLE_SM
|
||||
sc_sm_stop(card);
|
||||
#endif
|
||||
sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0xA4, 0x04, 0x0C);
|
||||
apdu.data = minBioClient_aid.value;
|
||||
apdu.datalen = minBioClient_aid.len;
|
||||
@ -533,7 +535,9 @@ static int sc_hsm_pin_cmd(sc_card_t *card, struct sc_pin_cmd_data *data,
|
||||
sc_hsm_private_data_t *priv = (sc_hsm_private_data_t *) card->drv_data;
|
||||
sc_apdu_t apdu;
|
||||
u8 cmdbuff[16];
|
||||
#ifdef ENABLE_SM
|
||||
u8 rbuf[SC_MAX_APDU_BUFFER_SIZE];
|
||||
#endif
|
||||
int r;
|
||||
int cmd = data->cmd;
|
||||
size_t pin2_len = data->pin2.len;
|
||||
@ -563,7 +567,10 @@ static int sc_hsm_pin_cmd(sc_card_t *card, struct sc_pin_cmd_data *data,
|
||||
if ((card->type == SC_CARD_TYPE_SC_HSM_SOC || card->reader->uid.len
|
||||
|| cmd == SC_PIN_CMD_GET_SESSION_PIN)
|
||||
&& (data->cmd != SC_PIN_CMD_GET_INFO)
|
||||
&& card->sm_ctx.sm_mode != SM_MODE_TRANSMIT) {
|
||||
#ifdef ENABLE_SM
|
||||
&& card->sm_ctx.sm_mode != SM_MODE_TRANSMIT
|
||||
#endif
|
||||
) {
|
||||
LOG_TEST_RET(card->ctx,
|
||||
sc_hsm_perform_chip_authentication(card),
|
||||
"Could not perform chip authentication");
|
||||
@ -604,6 +611,7 @@ static int sc_hsm_pin_cmd(sc_card_t *card, struct sc_pin_cmd_data *data,
|
||||
data->apdu = &apdu;
|
||||
}
|
||||
|
||||
#ifdef ENABLE_SM
|
||||
if ((data->cmd == SC_PIN_CMD_GET_INFO)
|
||||
&& (card->sm_ctx.sm_mode == SM_MODE_TRANSMIT)) {
|
||||
/* JCOP's SM accelerator is incapable of using case 1 APDU in SM */
|
||||
@ -612,6 +620,7 @@ static int sc_hsm_pin_cmd(sc_card_t *card, struct sc_pin_cmd_data *data,
|
||||
apdu.resplen = sizeof rbuf;
|
||||
data->apdu = &apdu;
|
||||
}
|
||||
#endif
|
||||
|
||||
data->pin1.offset = 5;
|
||||
data->pin1.length_offset = 4;
|
||||
@ -627,11 +636,17 @@ static int sc_hsm_pin_cmd(sc_card_t *card, struct sc_pin_cmd_data *data,
|
||||
data->cmd = SC_PIN_CMD_GET_SESSION_PIN;
|
||||
if (data->pin_reference == 0x81) {
|
||||
u8 recvbuf[SC_MAX_APDU_BUFFER_SIZE];
|
||||
#ifdef ENABLE_SM
|
||||
if (card->sm_ctx.sm_mode != SM_MODE_TRANSMIT) {
|
||||
sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,
|
||||
"Session PIN generation only supported in SM");
|
||||
LOG_FUNC_RETURN(card->ctx, SC_SUCCESS);
|
||||
}
|
||||
#else
|
||||
sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL,
|
||||
"Session PIN generation only supported in SM");
|
||||
LOG_FUNC_RETURN(card->ctx, SC_SUCCESS);
|
||||
#endif
|
||||
sc_format_apdu(card, &apdu, SC_APDU_CASE_2_SHORT, 0x5A, 0x01, data->pin_reference);
|
||||
apdu.cla = 0x80;
|
||||
apdu.resp = recvbuf;
|
||||
@ -669,7 +684,9 @@ static int sc_hsm_logout(sc_card_t * card)
|
||||
sc_path_t path;
|
||||
sc_hsm_private_data_t *priv = (sc_hsm_private_data_t *) card->drv_data;
|
||||
memset(priv->sopin, 0, sizeof(priv->sopin));
|
||||
#ifdef ENABLE_SM
|
||||
sc_sm_stop(card);
|
||||
#endif
|
||||
|
||||
sc_path_set(&path, SC_PATH_TYPE_DF_NAME, sc_hsm_aid.value, sc_hsm_aid.len, 0, 0);
|
||||
|
||||
@ -1586,7 +1603,9 @@ static int sc_hsm_init(struct sc_card *card)
|
||||
static int sc_hsm_finish(sc_card_t * card)
|
||||
{
|
||||
sc_hsm_private_data_t *priv = (sc_hsm_private_data_t *) card->drv_data;
|
||||
#ifdef ENABLE_SM
|
||||
sc_sm_stop(card);
|
||||
#endif
|
||||
if (priv->serialno) {
|
||||
free(priv->serialno);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user