add ykpiv_fetch_object() to library

This commit is contained in:
Klas Lindfors
2014-06-24 14:35:59 +02:00
parent d5222c10b7
commit 05a30e1da5
3 changed files with 28 additions and 0 deletions
+24
View File
@@ -602,3 +602,27 @@ ykpiv_rc ykpiv_verify(ykpiv_state *state, const char *pin, int *tries) {
return YKPIV_GENERIC_ERROR;
}
}
ykpiv_rc ykpiv_fetch_object(ykpiv_state *state, int object_id,
unsigned char *data, unsigned long *len) {
int sw;
unsigned char indata[5];
unsigned char templ[] = {0, YKPIV_INS_GET_DATA, 0x3b, 0xff};
long inlen = 5;
indata[0] = 0x5c;
if(object_id == YKPIV_OBJ_DISCOVERY) {
indata[1] = 1;
indata[2] = YKPIV_OBJ_DISCOVERY;
inlen = 3;
} else if(object_id > 0xffff && object_id <= 0xffffff) {
indata[1] = 3;
indata[2] = (object_id >> 16) & 0xff;
indata[3] = (object_id >> 8) & 0xff;
indata[4] = object_id & 0xff;
} else {
return YKPIV_INVALID_OBJECT;
}
return ykpiv_transfer_data(state, templ, indata, inlen, data, len, &sw);
}
+3
View File
@@ -54,6 +54,7 @@ extern "C"
YKPIV_KEY_ERROR = -8,
YKPIV_PARSE_ERROR = -9,
YKPIV_WRONG_PIN = -10,
YKPIV_INVALID_OBJECT = -11,
} ykpiv_rc;
const char *ykpiv_strerror(ykpiv_rc err);
@@ -77,6 +78,8 @@ extern "C"
unsigned char algorithm, unsigned char key);
ykpiv_rc ykpiv_get_version(ykpiv_state *state, char *version, size_t len);
ykpiv_rc ykpiv_verify(ykpiv_state *state, const char *pin, int *tries);
ykpiv_rc ykpiv_fetch_object(ykpiv_state *state, int object_id,
unsigned char *data, unsigned long *len);
#define YKPIV_ALGO_3DES 0x03
#define YKPIV_ALGO_RSA1024 0x06
+1
View File
@@ -42,6 +42,7 @@ global:
ykpiv_sign_data;
ykpiv_get_version;
ykpiv_verify;
ykpiv_fetch_object;
local:
*;