From 167fbc862010ed8df9a17618a790dec58acfcd5e Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Fri, 26 Oct 2018 19:50:37 +0300 Subject: [PATCH] load works. needs some refactoring... --- client/cmdhffido.c | 4 +++- client/emv/emvjson.c | 11 ++++++++++- client/emv/emvjson.h | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/client/cmdhffido.c b/client/cmdhffido.c index dbe05ffe..98cfbaad 100644 --- a/client/cmdhffido.c +++ b/client/cmdhffido.c @@ -194,7 +194,9 @@ int CmdHFFidoRegister(const char *cmd) { return 1; } - + size_t jlen; + JsonLoadBufAsHex(root, "$.ChallengeParam", data, 32, &jlen); + JsonLoadBufAsHex(root, "$.ApplicationParam", &data[32], 32, &jlen); } else { root = json_object(); } diff --git a/client/emv/emvjson.c b/client/emv/emvjson.c index 9defce08..e56ecbb7 100644 --- a/client/emv/emvjson.c +++ b/client/emv/emvjson.c @@ -264,7 +264,16 @@ bool HexToBuffer(const char *errormsg, const char *hexvalue, uint8_t * buffer, s return true; } -int JsonLoadBufAsHex(json_t *elm, char *path, uint8_t *data, size_t *datalen) { +int JsonLoadBufAsHex(json_t *elm, char *path, uint8_t *data, size_t maxbufferlen, size_t *datalen) { + if (datalen) + *datalen = 0; + + json_t *jelm = json_path_get((const json_t *)elm, path); + if (!jelm || !json_is_string(jelm)) + return 1; + + if (!HexToBuffer("ERROR load", json_string_value(jelm), data, maxbufferlen, datalen)) + return 2; return 0; }; diff --git a/client/emv/emvjson.h b/client/emv/emvjson.h index 7148ddd0..9c6eda5e 100644 --- a/client/emv/emvjson.h +++ b/client/emv/emvjson.h @@ -33,7 +33,7 @@ extern int JsonSaveTLVTreeElm(json_t *elm, char *path, struct tlvdb *tlvdbelm, b extern int JsonSaveTLVTree(json_t *root, json_t *elm, char *path, struct tlvdb *tlvdbelm); -extern int JsonLoadBufAsHex(json_t *elm, char *path, uint8_t *data, size_t *datalen); +extern int JsonLoadBufAsHex(json_t *elm, char *path, uint8_t *data, size_t maxbufferlen, size_t *datalen); extern bool ParamLoadFromJson(struct tlvdb *tlv);