From 20dfbcaaedf31d1496205fee6487926c3e7b5f4a Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Wed, 24 May 2023 11:25:36 +0200 Subject: [PATCH] Fix xpub for masters. Signed-off-by: Pol Henarejos --- src/hsm/cmd_bip_slip.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/hsm/cmd_bip_slip.c b/src/hsm/cmd_bip_slip.c index 2185e84..68044a2 100644 --- a/src/hsm/cmd_bip_slip.c +++ b/src/hsm/cmd_bip_slip.c @@ -188,10 +188,16 @@ int cmd_bip_slip() { memcpy(res_APDU + res_APDU_size, fgpt, 4); res_APDU_size += 4; - res_APDU[res_APDU_size++] = path[pos - 1] >> 24; - res_APDU[res_APDU_size++] = path[pos - 1] >> 16; - res_APDU[res_APDU_size++] = path[pos - 1] >> 8; - res_APDU[res_APDU_size++] = path[pos - 1] & 0xff; + if (pos > 1) { + res_APDU[res_APDU_size++] = path[pos - 1] >> 24; + res_APDU[res_APDU_size++] = path[pos - 1] >> 16; + res_APDU[res_APDU_size++] = path[pos - 1] >> 8; + res_APDU[res_APDU_size++] = path[pos - 1] & 0xff; + } + else { // Master + memset(res_APDU + res_APDU_size, 0, 4); + res_APDU_size += 4; + } memcpy(res_APDU + res_APDU_size, chain, 32); res_APDU_size += 32; mbedtls_ecp_point_write_binary(&ctx.grp, &ctx.Q, MBEDTLS_ECP_PF_COMPRESSED, &tag_len, pubkey, sizeof(pubkey));