Fix applet selection for whole public API.
This commit is contained in:
+16
-20
@@ -103,7 +103,7 @@ ykpiv_rc ykpiv_util_get_cardid(ykpiv_state *state, ykpiv_cardid *cardid) {
|
||||
if (YKPIV_OK != (res = _ykpiv_begin_transaction(state))) return YKPIV_PCSC_ERROR;
|
||||
if (YKPIV_OK != (res = _ykpiv_ensure_application_selected(state))) goto Cleanup;
|
||||
|
||||
res = ykpiv_fetch_object(state, YKPIV_OBJ_CHUID, buf, (unsigned long *)&len);
|
||||
res = _ykpiv_fetch_object(state, YKPIV_OBJ_CHUID, buf, (unsigned long *)&len);
|
||||
if (YKPIV_OK == res) {
|
||||
if (len != sizeof(CHUID_TMPL)) {
|
||||
res = YKPIV_GENERIC_ERROR;
|
||||
@@ -143,7 +143,7 @@ ykpiv_rc ykpiv_util_set_cardid(ykpiv_state *state, const ykpiv_cardid *cardid) {
|
||||
memcpy(buf + CHUID_GUID_OFFS, id, sizeof(id));
|
||||
len = sizeof(CHUID_TMPL);
|
||||
|
||||
res = ykpiv_save_object(state, YKPIV_OBJ_CHUID, buf, len);
|
||||
res = _ykpiv_save_object(state, YKPIV_OBJ_CHUID, buf, len);
|
||||
|
||||
Cleanup:
|
||||
|
||||
@@ -161,7 +161,7 @@ ykpiv_rc ykpiv_util_get_cccid(ykpiv_state *state, ykpiv_cccid *ccc) {
|
||||
if (YKPIV_OK != (res = _ykpiv_begin_transaction(state))) return YKPIV_PCSC_ERROR;
|
||||
if (YKPIV_OK != (res = _ykpiv_ensure_application_selected(state))) goto Cleanup;
|
||||
|
||||
res = ykpiv_fetch_object(state, YKPIV_OBJ_CAPABILITY, buf, (unsigned long *)&len);
|
||||
res = _ykpiv_fetch_object(state, YKPIV_OBJ_CAPABILITY, buf, (unsigned long *)&len);
|
||||
if (YKPIV_OK == res) {
|
||||
if (len != sizeof(CCC_TMPL)) {
|
||||
res = YKPIV_GENERIC_ERROR;
|
||||
@@ -200,7 +200,7 @@ ykpiv_rc ykpiv_util_set_cccid(ykpiv_state *state, const ykpiv_cccid *ccc) {
|
||||
len = sizeof(CCC_TMPL);
|
||||
memcpy(buf, CCC_TMPL, len);
|
||||
memcpy(buf + CCC_ID_OFFS, id, YKPIV_CCCID_SIZE);
|
||||
res = ykpiv_save_object(state, YKPIV_OBJ_CAPABILITY, buf, len);
|
||||
res = _ykpiv_save_object(state, YKPIV_OBJ_CAPABILITY, buf, len);
|
||||
|
||||
Cleanup:
|
||||
_ykpiv_end_transaction(state);
|
||||
@@ -452,7 +452,7 @@ ykpiv_rc ykpiv_util_read_mscmap(ykpiv_state *state, ykpiv_container **containers
|
||||
*containers = 0;
|
||||
*n_containers = 0;
|
||||
|
||||
if (YKPIV_OK == (res = ykpiv_fetch_object(state, YKPIV_OBJ_MSCMAP, buf, (unsigned long*)&cbBuf))) {
|
||||
if (YKPIV_OK == (res = _ykpiv_fetch_object(state, YKPIV_OBJ_MSCMAP, buf, (unsigned long*)&cbBuf))) {
|
||||
ptr = buf;
|
||||
|
||||
// check that object contents are at least large enough to read the header
|
||||
@@ -509,7 +509,7 @@ ykpiv_rc ykpiv_util_write_mscmap(ykpiv_state *state, ykpiv_container *containers
|
||||
res = YKPIV_GENERIC_ERROR;
|
||||
}
|
||||
else {
|
||||
res = ykpiv_save_object(state, YKPIV_OBJ_MSCMAP, NULL, 0);
|
||||
res = _ykpiv_save_object(state, YKPIV_OBJ_MSCMAP, NULL, 0);
|
||||
}
|
||||
|
||||
goto Cleanup;
|
||||
@@ -531,7 +531,7 @@ ykpiv_rc ykpiv_util_write_mscmap(ykpiv_state *state, ykpiv_container *containers
|
||||
offset += data_len;
|
||||
|
||||
// write onto device
|
||||
res = ykpiv_save_object(state, YKPIV_OBJ_MSCMAP, buf, offset);
|
||||
res = _ykpiv_save_object(state, YKPIV_OBJ_MSCMAP, buf, offset);
|
||||
|
||||
Cleanup:
|
||||
|
||||
@@ -567,7 +567,7 @@ ykpiv_rc ykpiv_util_read_msroots(ykpiv_state *state, uint8_t **data, size_t *dat
|
||||
for (object_id = YKPIV_OBJ_MSROOTS1; object_id <= YKPIV_OBJ_MSROOTS5; object_id++) {
|
||||
cbBuf = sizeof(buf);
|
||||
|
||||
if (YKPIV_OK != (res = ykpiv_fetch_object(state, object_id, buf, (unsigned long*)&cbBuf))) {
|
||||
if (YKPIV_OK != (res = _ykpiv_fetch_object(state, object_id, buf, (unsigned long*)&cbBuf))) {
|
||||
goto Cleanup;
|
||||
}
|
||||
|
||||
@@ -654,7 +654,7 @@ ykpiv_rc ykpiv_util_write_msroots(ykpiv_state *state, uint8_t *data, size_t data
|
||||
else {
|
||||
// it should be sufficient to just delete the first object, though
|
||||
// to be complete we should erase all of the MSROOTS objects
|
||||
res = ykpiv_save_object(state, YKPIV_OBJ_MSROOTS1, NULL, 0);
|
||||
res = _ykpiv_save_object(state, YKPIV_OBJ_MSROOTS1, NULL, 0);
|
||||
}
|
||||
|
||||
goto Cleanup;
|
||||
@@ -680,7 +680,7 @@ ykpiv_rc ykpiv_util_write_msroots(ykpiv_state *state, uint8_t *data, size_t data
|
||||
offset += data_chunk;
|
||||
|
||||
// write onto device
|
||||
res = ykpiv_save_object(state, YKPIV_OBJ_MSROOTS1 + i, buf, offset);
|
||||
res = _ykpiv_save_object(state, YKPIV_OBJ_MSROOTS1 + i, buf, offset);
|
||||
|
||||
if (YKPIV_OK != res) {
|
||||
goto Cleanup;
|
||||
@@ -1284,7 +1284,6 @@ uint32_t ykpiv_util_slot_object(uint8_t slot) {
|
||||
}
|
||||
|
||||
static ykpiv_rc _read_certificate(ykpiv_state *state, uint8_t slot, uint8_t *buf, size_t *buf_len) {
|
||||
// TREV TODO: should this select application?
|
||||
ykpiv_rc res = YKPIV_OK;
|
||||
uint8_t *ptr = NULL;
|
||||
int object_id = ykpiv_util_slot_object(slot);
|
||||
@@ -1292,7 +1291,7 @@ static ykpiv_rc _read_certificate(ykpiv_state *state, uint8_t slot, uint8_t *buf
|
||||
|
||||
if (-1 == object_id) return YKPIV_INVALID_OBJECT;
|
||||
|
||||
if (YKPIV_OK == (res = ykpiv_fetch_object(state, object_id, buf, (unsigned long*)buf_len))) {
|
||||
if (YKPIV_OK == (res = _ykpiv_fetch_object(state, object_id, buf, (unsigned long*)buf_len))) {
|
||||
ptr = buf;
|
||||
|
||||
// check that object contents are at least large enough to read the tag
|
||||
@@ -1324,7 +1323,6 @@ static ykpiv_rc _read_certificate(ykpiv_state *state, uint8_t slot, uint8_t *buf
|
||||
}
|
||||
|
||||
static ykpiv_rc _write_certificate(ykpiv_state *state, uint8_t slot, uint8_t *data, size_t data_len, uint8_t certinfo) {
|
||||
// TREV TODO: should this select application?
|
||||
uint8_t buf[CB_OBJ_MAX];
|
||||
size_t cbBuf = sizeof(buf);
|
||||
int object_id = ykpiv_util_slot_object(slot);
|
||||
@@ -1342,7 +1340,7 @@ static ykpiv_rc _write_certificate(ykpiv_state *state, uint8_t slot, uint8_t *da
|
||||
return YKPIV_GENERIC_ERROR;
|
||||
}
|
||||
|
||||
return ykpiv_save_object(state, object_id, NULL, 0);
|
||||
return _ykpiv_save_object(state, object_id, NULL, 0);
|
||||
}
|
||||
|
||||
// encode certificate data for storage
|
||||
@@ -1366,7 +1364,7 @@ static ykpiv_rc _write_certificate(ykpiv_state *state, uint8_t slot, uint8_t *da
|
||||
buf[offset++] = 00;
|
||||
|
||||
// write onto device
|
||||
return ykpiv_save_object(state, object_id, buf, offset);
|
||||
return _ykpiv_save_object(state, object_id, buf, offset);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1524,7 +1522,6 @@ static ykpiv_rc _set_metadata_item(uint8_t *data, size_t *pcb_data, size_t cb_da
|
||||
** To read from protected data, the pin must be verified prior to calling this function.
|
||||
*/
|
||||
static ykpiv_rc _read_metadata(ykpiv_state *state, uint8_t tag, uint8_t* data, size_t* pcb_data) {
|
||||
// TREV TODO: should this select application?
|
||||
ykpiv_rc res = YKPIV_OK;
|
||||
uint8_t *p_temp = NULL;
|
||||
size_t cb_temp = 0;
|
||||
@@ -1541,7 +1538,7 @@ static ykpiv_rc _read_metadata(ykpiv_state *state, uint8_t tag, uint8_t* data, s
|
||||
cb_temp = *pcb_data;
|
||||
*pcb_data = 0;
|
||||
|
||||
if (YKPIV_OK != (res = ykpiv_fetch_object(state, obj_id, data, (unsigned long*)&cb_temp))) {
|
||||
if (YKPIV_OK != (res = _ykpiv_fetch_object(state, obj_id, data, (unsigned long*)&cb_temp))) {
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -1573,7 +1570,6 @@ static ykpiv_rc _read_metadata(ykpiv_state *state, uint8_t tag, uint8_t* data, s
|
||||
** To write protected data, the pin must be verified prior to calling this function.
|
||||
*/
|
||||
static ykpiv_rc _write_metadata(ykpiv_state *state, uint8_t tag, uint8_t *data, size_t cb_data) {
|
||||
// TREV TODO: should this select application?
|
||||
ykpiv_rc res = YKPIV_OK;
|
||||
uint8_t buf[CB_OBJ_MAX] = { 0 };
|
||||
uint8_t *pTemp = buf;
|
||||
@@ -1591,7 +1587,7 @@ static ykpiv_rc _write_metadata(ykpiv_state *state, uint8_t tag, uint8_t *data,
|
||||
|
||||
if (!data || (0 == cb_data)) {
|
||||
// deleting metadata
|
||||
res = ykpiv_save_object(state, obj_id, NULL, 0);
|
||||
res = _ykpiv_save_object(state, obj_id, NULL, 0);
|
||||
}
|
||||
else {
|
||||
*pTemp++ = tag;
|
||||
@@ -1600,7 +1596,7 @@ static ykpiv_rc _write_metadata(ykpiv_state *state, uint8_t tag, uint8_t *data,
|
||||
memcpy(pTemp, data, cb_data);
|
||||
pTemp += cb_data;
|
||||
|
||||
res = ykpiv_save_object(state, obj_id, buf, pTemp - buf);
|
||||
res = _ykpiv_save_object(state, obj_id, buf, pTemp - buf);
|
||||
}
|
||||
|
||||
return res;
|
||||
|
||||
Reference in New Issue
Block a user