diff --git a/crypto/bip32.c b/crypto/bip32.c index f1eb47736..f7fb92046 100644 --- a/crypto/bip32.c +++ b/crypto/bip32.c @@ -765,17 +765,21 @@ int hdnode_sign(HDNode *node, const uint8_t *msg, uint32_t msg_len, } else if (node->curve == &curve25519_info) { return 1; // signatures are not supported } else { - hdnode_fill_public_key(node); if (node->curve == &ed25519_info) { + hdnode_fill_public_key(node); ed25519_sign(msg, msg_len, node->private_key, node->public_key + 1, sig); } else if (node->curve == &ed25519_sha3_info) { + hdnode_fill_public_key(node); ed25519_sign_sha3(msg, msg_len, node->private_key, node->public_key + 1, sig); #if USE_KECCAK } else if (node->curve == &ed25519_keccak_info) { + hdnode_fill_public_key(node); ed25519_sign_keccak(msg, msg_len, node->private_key, node->public_key + 1, sig); #endif + } else { + return 1; // unknown or unsupported curve } return 0; }