From fb3c9dbc76754730b0de6b07b721b76f745b4c4b Mon Sep 17 00:00:00 2001 From: Laan Tungir Date: Fri, 20 Mar 2026 19:18:25 -0400 Subject: [PATCH] Fix NUT-00 hash_to_curve domain separator and expand live NIP-60 swap roundtrip diagnostics/tests --- VERSION | 2 +- nostr_core/cashu_mint.c | 32 +- nostr_core/nostr_core.h | 4 +- tests/nip60_live_receive_test | Bin 206664 -> 223392 bytes tests/nip60_live_receive_test.c | 823 +++++++++++++++++++++++++------- 5 files changed, 664 insertions(+), 197 deletions(-) diff --git a/VERSION b/VERSION index 416bfb0a..50c76ef8 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.5.9 +0.5.10 diff --git a/nostr_core/cashu_mint.c b/nostr_core/cashu_mint.c index d37a1c4f..2aa4a169 100644 --- a/nostr_core/cashu_mint.c +++ b/nostr_core/cashu_mint.c @@ -1791,21 +1791,35 @@ void cashu_free_decoded_token(cashu_decoded_token_t* token) { static int cashu_hash_to_curve_pubkey(const char* secret, nostr_secp256k1_pubkey* out_y) { if (!secret || !out_y) return NOSTR_ERROR_INVALID_INPUT; - unsigned char digest[32] = {0}; - if (nostr_sha256((const unsigned char*)secret, strlen(secret), digest) != 0) { + static const unsigned char domain_separator[] = "Secp256k1_HashToCurve_Cashu_"; + + size_t secret_len = strlen(secret); + size_t domain_len = sizeof(domain_separator) - 1; + size_t preimage_len = domain_len + secret_len; + unsigned char* preimage = (unsigned char*)malloc(preimage_len); + if (!preimage) { + return NOSTR_ERROR_MEMORY_FAILED; + } + + memcpy(preimage, domain_separator, domain_len); + memcpy(preimage + domain_len, (const unsigned char*)secret, secret_len); + + unsigned char msg_hash[32] = {0}; + if (nostr_sha256(preimage, preimage_len, msg_hash) != 0) { + free(preimage); return NOSTR_ERROR_CRYPTO_FAILED; } + free(preimage); unsigned char candidate[33] = {0}; for (int counter = 0; counter < 65536; counter++) { unsigned char h[32] = {0}; - unsigned char data[37] = {0}; - data[0] = 0x02; - memcpy(data + 1, digest, 32); - data[33] = (unsigned char)(counter & 0xff); - data[34] = (unsigned char)((counter >> 8) & 0xff); - data[35] = (unsigned char)((counter >> 16) & 0xff); - data[36] = (unsigned char)((counter >> 24) & 0xff); + unsigned char data[36] = {0}; + memcpy(data, msg_hash, 32); + data[32] = (unsigned char)(counter & 0xff); + data[33] = (unsigned char)((counter >> 8) & 0xff); + data[34] = (unsigned char)((counter >> 16) & 0xff); + data[35] = (unsigned char)((counter >> 24) & 0xff); if (nostr_sha256(data, sizeof(data), h) != 0) { return NOSTR_ERROR_CRYPTO_FAILED; } diff --git a/nostr_core/nostr_core.h b/nostr_core/nostr_core.h index 91d42793..4c693699 100644 --- a/nostr_core/nostr_core.h +++ b/nostr_core/nostr_core.h @@ -2,10 +2,10 @@ #define NOSTR_CORE_H // Version information (auto-updated by increment_and_push.sh) -#define VERSION "v0.5.9" +#define VERSION "v0.5.10" #define VERSION_MAJOR 0 #define VERSION_MINOR 5 -#define VERSION_PATCH 9 +#define VERSION_PATCH 10 /* * NOSTR Core Library - Complete API Reference diff --git a/tests/nip60_live_receive_test b/tests/nip60_live_receive_test index c539e6948f99438612bd169cf49796e46abe9156..b3018bf349291ed9fd0e1648926e185021649d11 100755 GIT binary patch literal 223392 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

mfpuN3W}P=tA( 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 b_rk(2o3EA0YiTjl&vcpe=R_rl3OfG}Ey~1` literal 206664 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 z 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 8) & 0xff); - data[35] = (unsigned char)((counter >> 16) & 0xff); - data[36] = (unsigned char)((counter >> 24) & 0xff); + unsigned char data[36] = {0}; + memcpy(data, msg_hash, 32); + data[32] = (unsigned char)(counter & 0xff); + data[33] = (unsigned char)((counter >> 8) & 0xff); + data[34] = (unsigned char)((counter >> 16) & 0xff); + data[35] = (unsigned char)((counter >> 24) & 0xff); if (nostr_sha256(data, sizeof(data), h) != 0) { return NOSTR_ERROR_CRYPTO_FAILED; @@ -63,6 +89,79 @@ static int secret_to_Y_hex(const char* secret, char out_Y_hex[67]) { return NOSTR_ERROR_CRYPTO_FAILED; } +static int hash_to_curve_bytes_Y_hex(const unsigned char* msg, size_t msg_len, char out_Y_hex[67]) { + if (!msg || !out_Y_hex) return NOSTR_ERROR_INVALID_INPUT; + + static const unsigned char domain_separator[] = "Secp256k1_HashToCurve_Cashu_"; + size_t domain_len = sizeof(domain_separator) - 1; + size_t preimage_len = domain_len + msg_len; + unsigned char* preimage = (unsigned char*)malloc(preimage_len); + if (!preimage) return NOSTR_ERROR_MEMORY_FAILED; + + memcpy(preimage, domain_separator, domain_len); + memcpy(preimage + domain_len, msg, msg_len); + + unsigned char msg_hash[32] = {0}; + if (nostr_sha256(preimage, preimage_len, msg_hash) != 0) { + free(preimage); + return NOSTR_ERROR_CRYPTO_FAILED; + } + free(preimage); + + unsigned char candidate[33] = {0}; + for (int counter = 0; counter < 65536; counter++) { + unsigned char h[32] = {0}; + unsigned char data[36] = {0}; + memcpy(data, msg_hash, 32); + data[32] = (unsigned char)(counter & 0xff); + data[33] = (unsigned char)((counter >> 8) & 0xff); + data[34] = (unsigned char)((counter >> 16) & 0xff); + data[35] = (unsigned char)((counter >> 24) & 0xff); + + if (nostr_sha256(data, sizeof(data), h) != 0) { + return NOSTR_ERROR_CRYPTO_FAILED; + } + + candidate[0] = 0x02; + memcpy(candidate + 1, h, 32); + + nostr_secp256k1_pubkey pub; + if (nostr_secp256k1_ec_pubkey_parse(&pub, candidate, sizeof(candidate))) { + nostr_bytes_to_hex(candidate, sizeof(candidate), out_Y_hex); + return NOSTR_SUCCESS; + } + } + + return NOSTR_ERROR_CRYPTO_FAILED; +} + +static void test_hash_to_curve_vectors(void) { + unsigned char m0[32] = {0}; + unsigned char m1[32] = {0}; + unsigned char m2[32] = {0}; + m1[31] = 0x01; + m2[31] = 0x02; + + char y0[67] = {0}; + char y1[67] = {0}; + char y2[67] = {0}; + + int rc = hash_to_curve_bytes_Y_hex(m0, sizeof(m0), y0); + TEST_ASSERT(rc == NOSTR_SUCCESS && strcmp(y0, "024cce997d3b518f739663b757deaec95bcd9473c30a14ac2fd04023a739d1a725") == 0, + "hash_to_curve vector #0"); + printf("[DBG] vector#0 Y=%s\n", y0); + + rc = hash_to_curve_bytes_Y_hex(m1, sizeof(m1), y1); + TEST_ASSERT(rc == NOSTR_SUCCESS && strcmp(y1, "022e7158e11c9506f1aa4248bf531298daa7febd6194f003edcd9b93ade6253acf") == 0, + "hash_to_curve vector #1"); + printf("[DBG] vector#1 Y=%s\n", y1); + + rc = hash_to_curve_bytes_Y_hex(m2, sizeof(m2), y2); + TEST_ASSERT(rc == NOSTR_SUCCESS && strcmp(y2, "026cdbe15362df59cd1dd3c9c11de8aedac2106eca69236ecd9fbe117af897be4f") == 0, + "hash_to_curve vector #2"); + printf("[DBG] vector#2 Y=%s\n", y2); +} + static int base64_to_base64url_no_pad(const unsigned char* in, size_t in_len, char* out, size_t out_size) { if (!in || !out || out_size == 0) return NOSTR_ERROR_INVALID_INPUT; @@ -151,234 +250,587 @@ static int build_cashuA_token_string(const char* mint_url, return NOSTR_SUCCESS; } +static const char* find_state_for_y(const cashu_checkstate_response_t* state, const char* y_hex) { + if (!state || !y_hex) return NULL; + for (int i = 0; i < state->state_count; i++) { + if (strcmp(state->states[i].Y, y_hex) == 0) { + return state->states[i].state; + } + } + return NULL; +} + +static int run_checkstate(const char* mint_url, + const char** Ys, + int y_count, + cashu_checkstate_response_t* out_state) { + if (!mint_url || !Ys || y_count <= 0 || !out_state) return NOSTR_ERROR_INVALID_INPUT; + + memset(out_state, 0, sizeof(*out_state)); + + cJSON* req = NULL; + int rc = cashu_build_checkstate_request(Ys, y_count, &req); + if (rc != NOSTR_SUCCESS || !req) { + cJSON_Delete(req); + return rc != NOSTR_SUCCESS ? rc : NOSTR_ERROR_MEMORY_FAILED; + } + + cJSON* resp_json = NULL; + rc = cashu_mint_check_proofs_state(mint_url, req, &resp_json, 15); + cJSON_Delete(req); + if (rc != NOSTR_SUCCESS || !resp_json) { + cJSON_Delete(resp_json); + return rc != NOSTR_SUCCESS ? rc : NOSTR_ERROR_CASHU_JSON_PARSE_FAILED; + } + + rc = cashu_parse_checkstate_response(resp_json, out_state); + cJSON_Delete(resp_json); + return rc; +} + static void test_live_mint_and_receive(const char* mint_url) { printf("\n=== test_live_mint_and_receive: %s ===\n", mint_url); cashu_mint_info_t info; memset(&info, 0, sizeof(info)); + cashu_keyset_keys_t keyset_keys; + memset(&keyset_keys, 0, sizeof(keyset_keys)); + int rc = cashu_mint_get_info(mint_url, &info, 15); TEST_ASSERT(rc == NOSTR_SUCCESS, "get mint info"); - if (rc != NOSTR_SUCCESS) return; + if (rc != NOSTR_SUCCESS) goto cleanup; TEST_ASSERT(info.pubkey != NULL && strlen(info.pubkey) == 66, "mint pubkey available"); - if (!info.pubkey || strlen(info.pubkey) != 66) { - cashu_mint_free_info(&info); - return; - } + if (!info.pubkey || strlen(info.pubkey) != 66) goto cleanup; cashu_keyset_t active_keyset; memset(&active_keyset, 0, sizeof(active_keyset)); rc = cashu_mint_get_active_keyset(&info, "sat", &active_keyset); TEST_ASSERT(rc == NOSTR_SUCCESS, "select active sat keyset"); - if (rc != NOSTR_SUCCESS) { - cashu_mint_free_info(&info); - return; - } + if (rc != NOSTR_SUCCESS) goto cleanup; - cashu_keyset_keys_t keyset_keys; - memset(&keyset_keys, 0, sizeof(keyset_keys)); rc = cashu_mint_get_keys(mint_url, active_keyset.id, &keyset_keys, 15); TEST_ASSERT(rc == NOSTR_SUCCESS, "fetch per-amount keyset keys"); + if (rc != NOSTR_SUCCESS) goto cleanup; + + const char* pk1 = NULL; + const char* pk2 = NULL; + const char* pk4 = NULL; + const char* pk8 = NULL; + rc = cashu_keyset_keys_find_pubkey_for_amount(&keyset_keys, 1, &pk1); + TEST_ASSERT(rc == NOSTR_SUCCESS && pk1 != NULL, "find pubkey for amount=1"); + if (rc != NOSTR_SUCCESS || !pk1) goto cleanup; + rc = cashu_keyset_keys_find_pubkey_for_amount(&keyset_keys, 2, &pk2); + TEST_ASSERT(rc == NOSTR_SUCCESS && pk2 != NULL, "find pubkey for amount=2"); + if (rc != NOSTR_SUCCESS || !pk2) goto cleanup; + rc = cashu_keyset_keys_find_pubkey_for_amount(&keyset_keys, 4, &pk4); + TEST_ASSERT(rc == NOSTR_SUCCESS && pk4 != NULL, "find pubkey for amount=4"); + if (rc != NOSTR_SUCCESS || !pk4) goto cleanup; + rc = cashu_keyset_keys_find_pubkey_for_amount(&keyset_keys, 8, &pk8); + TEST_ASSERT(rc == NOSTR_SUCCESS && pk8 != NULL, "find pubkey for amount=8"); + if (rc != NOSTR_SUCCESS || !pk8) goto cleanup; + + /* Mint 1 sat baseline proof */ + cashu_mint_quote_t q1; + memset(&q1, 0, sizeof(q1)); + rc = cashu_mint_request_mint_quote(mint_url, 1, "sat", &q1, 15); + TEST_ASSERT(rc == NOSTR_SUCCESS, "request mint quote (1 sat)"); + if (rc != NOSTR_SUCCESS) goto cleanup; + + cashu_mint_quote_t q1_check; + memset(&q1_check, 0, sizeof(q1_check)); + rc = cashu_mint_check_mint_quote(mint_url, q1.quote_id, &q1_check, 15); + TEST_ASSERT(rc == NOSTR_SUCCESS, "check mint quote (1 sat)"); + TEST_ASSERT(q1_check.paid == 1, "mint quote paid (1 sat)"); + if (rc != NOSTR_SUCCESS || q1_check.paid != 1) goto cleanup; + + char secret1[160]; + snprintf(secret1, sizeof(secret1), "nostr-step1-mint-%ld", (long)time(NULL)); + char B1[67], C1[67], Y1[67]; + unsigned char r1[32]; + rc = cashu_blind_message(secret1, info.pubkey, B1, r1); + TEST_ASSERT(rc == NOSTR_SUCCESS, "blind message for initial mint"); + if (rc != NOSTR_SUCCESS) goto cleanup; + printf("[DBG] mint pubkey(amount=1): %s\n", pk1); + printf("[DBG] secret1: %s\n", secret1); + debug_print_hex_bytes("r1", r1, 32); + printf("[DBG] B1: %s\n", B1); + + cashu_blinded_output_t m1_out; + memset(&m1_out, 0, sizeof(m1_out)); + snprintf(m1_out.id, sizeof(m1_out.id), "%s", active_keyset.id); + m1_out.amount = 1; + snprintf(m1_out.B_, sizeof(m1_out.B_), "%s", B1); + + cashu_mint_tokens_request_t m1_req; + memset(&m1_req, 0, sizeof(m1_req)); + snprintf(m1_req.quote_id, sizeof(m1_req.quote_id), "%s", q1.quote_id); + snprintf(m1_req.unit, sizeof(m1_req.unit), "sat"); + m1_req.outputs = &m1_out; + m1_req.output_count = 1; + + cJSON* m1_body = NULL; + rc = cashu_build_mint_tokens_request(&m1_req, &m1_body); + TEST_ASSERT(rc == NOSTR_SUCCESS && m1_body != NULL, "build mint request (1 sat)"); + if (rc != NOSTR_SUCCESS || !m1_body) goto cleanup; + + cJSON* m1_resp_json = NULL; + rc = cashu_mint_mint_tokens(mint_url, m1_body, &m1_resp_json, 15); + cJSON_Delete(m1_body); + TEST_ASSERT(rc == NOSTR_SUCCESS && m1_resp_json != NULL, "mint tokens call (1 sat)"); + if (rc != NOSTR_SUCCESS || !m1_resp_json) { + cJSON_Delete(m1_resp_json); + goto cleanup; + } + + cashu_mint_tokens_response_t m1_resp; + memset(&m1_resp, 0, sizeof(m1_resp)); + rc = cashu_parse_mint_tokens_response(m1_resp_json, &m1_resp); + cJSON_Delete(m1_resp_json); + TEST_ASSERT(rc == NOSTR_SUCCESS && m1_resp.signature_count >= 1, "parse minted signatures (1 sat)"); + if (rc != NOSTR_SUCCESS || m1_resp.signature_count < 1) { + cashu_mint_free_mint_tokens_response(&m1_resp); + goto cleanup; + } + + char m1_sig_id[NOSTR_CASHU_KEYSET_ID_HEX_SIZE]; + memset(m1_sig_id, 0, sizeof(m1_sig_id)); + snprintf(m1_sig_id, sizeof(m1_sig_id), "%s", m1_resp.signatures[0].id); + + printf("[DBG] mint C_ (1 sat): %s\n", m1_resp.signatures[0].C_); + rc = cashu_unblind_signature(m1_resp.signatures[0].C_, pk1, r1, C1); + TEST_ASSERT(rc == NOSTR_SUCCESS, "unblind minted signature (1 sat)"); if (rc != NOSTR_SUCCESS) { - cashu_mint_free_info(&info); - return; + cashu_mint_free_mint_tokens_response(&m1_resp); + goto cleanup; } + printf("[DBG] mint C (1 sat): %s\n", C1); - const char* amount_pubkey = NULL; - rc = cashu_keyset_keys_find_pubkey_for_amount(&keyset_keys, 1, &amount_pubkey); - TEST_ASSERT(rc == NOSTR_SUCCESS && amount_pubkey != NULL, "find pubkey for amount=1"); - if (rc != NOSTR_SUCCESS || !amount_pubkey) { - cashu_mint_free_keyset_keys(&keyset_keys); - cashu_mint_free_info(&info); - return; - } + rc = secret_to_Y_hex(secret1, Y1); + TEST_ASSERT(rc == NOSTR_SUCCESS, "derive Y for minted proof (1 sat)"); + printf("[DBG] Y1: %s\n", Y1); + cashu_mint_free_mint_tokens_response(&m1_resp); + if (rc != NOSTR_SUCCESS) goto cleanup; - cashu_mint_quote_t quote; - memset("e, 0, sizeof(quote)); - rc = cashu_mint_request_mint_quote(mint_url, 1, "sat", "e, 15); - TEST_ASSERT(rc == NOSTR_SUCCESS, "request mint quote"); - if (rc != NOSTR_SUCCESS) { - cashu_mint_free_info(&info); - return; - } - - cashu_mint_quote_t quote_check; - memset("e_check, 0, sizeof(quote_check)); - rc = cashu_mint_check_mint_quote(mint_url, quote.quote_id, "e_check, 15); - TEST_ASSERT(rc == NOSTR_SUCCESS, "check mint quote"); - TEST_ASSERT(quote_check.paid == 1, "mint quote paid"); - if (rc != NOSTR_SUCCESS || quote_check.paid != 1) { - cashu_mint_free_info(&info); - return; - } - - char secret[160]; - snprintf(secret, sizeof(secret), "nostr-live-receive-test-%ld-%s", (long)time(NULL), mint_url); - - char B_hex[67]; - unsigned char r[32]; - rc = cashu_blind_message(secret, info.pubkey, B_hex, r); - TEST_ASSERT(rc == NOSTR_SUCCESS, "blind message"); - if (rc != NOSTR_SUCCESS) { - cashu_mint_free_info(&info); - return; - } - - cashu_blinded_output_t output; - memset(&output, 0, sizeof(output)); - - size_t keyset_len = strlen(active_keyset.id); - TEST_ASSERT(keyset_len < sizeof(output.id), "keyset id fits library struct"); - if (keyset_len >= sizeof(output.id)) { - cashu_mint_free_keyset_keys(&keyset_keys); - cashu_mint_free_info(&info); - return; - } - - memcpy(output.id, active_keyset.id, keyset_len + 1); - output.amount = 1; - snprintf(output.B_, sizeof(output.B_), "%s", B_hex); - - cashu_mint_tokens_request_t mint_req; - memset(&mint_req, 0, sizeof(mint_req)); - snprintf(mint_req.quote_id, sizeof(mint_req.quote_id), "%s", quote.quote_id); - snprintf(mint_req.unit, sizeof(mint_req.unit), "sat"); - mint_req.outputs = &output; - mint_req.output_count = 1; - - cJSON* mint_body = NULL; - rc = cashu_build_mint_tokens_request(&mint_req, &mint_body); - TEST_ASSERT(rc == NOSTR_SUCCESS && mint_body != NULL, "build mint tokens request"); - if (rc != NOSTR_SUCCESS || !mint_body) { - cashu_mint_free_keyset_keys(&keyset_keys); - cashu_mint_free_info(&info); - return; - } - - cJSON* mint_resp_json = NULL; - rc = cashu_mint_mint_tokens(mint_url, mint_body, &mint_resp_json, 15); - cJSON_Delete(mint_body); - TEST_ASSERT(rc == NOSTR_SUCCESS && mint_resp_json != NULL, "mint tokens call"); - if (rc != NOSTR_SUCCESS || !mint_resp_json) { - cJSON_Delete(mint_resp_json); - cashu_mint_free_keyset_keys(&keyset_keys); - cashu_mint_free_info(&info); - return; - } - - cashu_mint_tokens_response_t mint_resp; - memset(&mint_resp, 0, sizeof(mint_resp)); - rc = cashu_parse_mint_tokens_response(mint_resp_json, &mint_resp); - cJSON_Delete(mint_resp_json); - TEST_ASSERT(rc == NOSTR_SUCCESS, "parse mint tokens response"); - TEST_ASSERT(mint_resp.signature_count >= 1, "mint returned signatures"); - if (rc != NOSTR_SUCCESS || mint_resp.signature_count < 1) { - cashu_mint_free_mint_tokens_response(&mint_resp); - cashu_mint_free_keyset_keys(&keyset_keys); - cashu_mint_free_info(&info); - return; - } - - char C_hex[67]; - rc = cashu_unblind_signature(mint_resp.signatures[0].C_, amount_pubkey, r, C_hex); - TEST_ASSERT(rc == NOSTR_SUCCESS, "unblind signature with per-amount key"); - if (rc != NOSTR_SUCCESS) { - cashu_mint_free_mint_tokens_response(&mint_resp); - cashu_mint_free_keyset_keys(&keyset_keys); - cashu_mint_free_info(&info); - return; - } - - nostr_cashu_proof_t send_proof; - memset(&send_proof, 0, sizeof(send_proof)); - snprintf(send_proof.id, sizeof(send_proof.id), "%s", active_keyset.id); - send_proof.amount = 1; - send_proof.secret = secret; - send_proof.C = C_hex; + /* Existing outbound token generation coverage */ + nostr_cashu_proof_t minted_proof; + memset(&minted_proof, 0, sizeof(minted_proof)); + snprintf(minted_proof.id, sizeof(minted_proof.id), "%s", m1_sig_id); + minted_proof.amount = 1; + minted_proof.secret = secret1; + minted_proof.C = C1; cashu_decoded_token_t token_for_encode; memset(&token_for_encode, 0, sizeof(token_for_encode)); token_for_encode.mint_url = (char*)mint_url; - token_for_encode.proofs = &send_proof; + token_for_encode.proofs = &minted_proof; token_for_encode.proof_count = 1; char* token_a = NULL; rc = cashu_encode_token(&token_for_encode, CASHU_TOKEN_FORMAT_A, &token_a); TEST_ASSERT(rc == NOSTR_SUCCESS && token_a != NULL, "encode cashuA token"); - if (rc != NOSTR_SUCCESS || !token_a) { - cashu_mint_free_mint_tokens_response(&mint_resp); - cashu_mint_free_keyset_keys(&keyset_keys); - cashu_mint_free_info(&info); - return; - } + if (rc != NOSTR_SUCCESS || !token_a) goto cleanup; char* token_b = NULL; rc = cashu_encode_token(&token_for_encode, CASHU_TOKEN_FORMAT_B, &token_b); TEST_ASSERT(rc == NOSTR_SUCCESS && token_b != NULL, "encode cashuB token"); if (rc != NOSTR_SUCCESS || !token_b) { free(token_a); - cashu_mint_free_mint_tokens_response(&mint_resp); - cashu_mint_free_keyset_keys(&keyset_keys); - cashu_mint_free_info(&info); - return; + goto cleanup; } - cashu_decoded_token_t decoded; - memset(&decoded, 0, sizeof(decoded)); - rc = cashu_decode_token(token_a, &decoded); + cashu_decoded_token_t decoded_a; + memset(&decoded_a, 0, sizeof(decoded_a)); + rc = cashu_decode_token(token_a, &decoded_a); TEST_ASSERT(rc == NOSTR_SUCCESS, "decode cashuA token"); - TEST_ASSERT(decoded.mint_url != NULL && strcmp(decoded.mint_url, mint_url) == 0, "cashuA decoded mint url matches"); - TEST_ASSERT(decoded.proof_count == 1, "cashuA decoded proof count"); - TEST_ASSERT(decoded.proofs != NULL && decoded.proofs[0].amount == 1, "cashuA decoded proof amount"); - TEST_ASSERT(decoded.proofs != NULL && strcmp(decoded.proofs[0].id, active_keyset.id) == 0, "cashuA decoded keyset id"); - TEST_ASSERT(decoded.proofs != NULL && decoded.proofs[0].secret != NULL && strcmp(decoded.proofs[0].secret, secret) == 0, - "cashuA decoded secret matches"); + TEST_ASSERT(decoded_a.proof_count == 1 && decoded_a.proofs[0].amount == 1, "cashuA decoded amount"); cashu_decoded_token_t decoded_b; memset(&decoded_b, 0, sizeof(decoded_b)); rc = cashu_decode_token(token_b, &decoded_b); TEST_ASSERT(rc == NOSTR_SUCCESS, "decode cashuB token"); - TEST_ASSERT(decoded_b.mint_url != NULL && strcmp(decoded_b.mint_url, mint_url) == 0, "cashuB decoded mint url matches"); - TEST_ASSERT(decoded_b.proof_count == 1, "cashuB decoded proof count"); - TEST_ASSERT(decoded_b.proofs != NULL && decoded_b.proofs[0].amount == 1, "cashuB decoded proof amount"); - TEST_ASSERT(decoded_b.proofs != NULL && strcmp(decoded_b.proofs[0].id, active_keyset.id) == 0, "cashuB decoded keyset id"); - TEST_ASSERT(decoded_b.proofs != NULL && decoded_b.proofs[0].secret != NULL && strcmp(decoded_b.proofs[0].secret, secret) == 0, - "cashuB decoded secret matches"); + TEST_ASSERT(decoded_b.proof_count == 1 && decoded_b.proofs[0].amount == 1, "cashuB decoded amount"); - char Y_hex[67]; - rc = secret_to_Y_hex(secret, Y_hex); - TEST_ASSERT(rc == NOSTR_SUCCESS, "derive Y from secret for checkstate"); + cashu_free_decoded_token(&decoded_a); + cashu_free_decoded_token(&decoded_b); + free(token_a); + free(token_b); + + /* Step 1: swap freshly minted 1 sat proof and verify state transition */ + char secret1_swap[160], B1_swap[67], C1_swap[67], Y1_swap[67]; + unsigned char r1_swap[32]; + snprintf(secret1_swap, sizeof(secret1_swap), "nostr-step1-swap-%ld", (long)time(NULL)); + rc = cashu_blind_message(secret1_swap, info.pubkey, B1_swap, r1_swap); + TEST_ASSERT(rc == NOSTR_SUCCESS, "blind message for step1 swap output"); + if (rc != NOSTR_SUCCESS) goto cleanup; + printf("[DBG] step1 input proof id=%s amount=%llu\n", minted_proof.id, (unsigned long long)minted_proof.amount); + printf("[DBG] step1 input secret=%s\n", minted_proof.secret); + printf("[DBG] step1 input C=%s\n", minted_proof.C); + printf("[DBG] step1 output B_=%s\n", B1_swap); + debug_print_hex_bytes("r1_swap", r1_swap, 32); + + cashu_blinded_output_t s1_out; + memset(&s1_out, 0, sizeof(s1_out)); + snprintf(s1_out.id, sizeof(s1_out.id), "%s", minted_proof.id); + s1_out.amount = 1; + snprintf(s1_out.B_, sizeof(s1_out.B_), "%s", B1_swap); + + cashu_swap_request_t s1_req; + memset(&s1_req, 0, sizeof(s1_req)); + s1_req.inputs = &minted_proof; + s1_req.input_count = 1; + s1_req.outputs = &s1_out; + s1_req.output_count = 1; + + cJSON* s1_body = NULL; + rc = cashu_build_swap_request(&s1_req, &s1_body); + TEST_ASSERT(rc == NOSTR_SUCCESS && s1_body != NULL, "build swap request (step1)"); + if (rc != NOSTR_SUCCESS || !s1_body) goto cleanup; + + char* s1_req_str = cJSON_PrintUnformatted(s1_body); + if (s1_req_str) { + printf("Step1 swap request: %s\n", s1_req_str); + free(s1_req_str); + } + + cJSON* s1_resp_json = NULL; + rc = cashu_mint_swap(mint_url, s1_body, &s1_resp_json, 15); + cJSON_Delete(s1_body); + TEST_ASSERT(rc == NOSTR_SUCCESS && s1_resp_json != NULL, "swap call (step1)"); + if (rc != NOSTR_SUCCESS || !s1_resp_json) { + printf("Step1 swap rc=%d, response_json=%s\n", rc, s1_resp_json ? "yes" : "no"); + if (s1_resp_json) { + char* s1_err = cJSON_PrintUnformatted(s1_resp_json); + if (s1_err) { + printf("Step1 swap error payload: %s\n", s1_err); + free(s1_err); + } + } + cJSON_Delete(s1_resp_json); + goto cleanup; + } + + cashu_swap_response_t s1_resp; + memset(&s1_resp, 0, sizeof(s1_resp)); + rc = cashu_parse_swap_response(s1_resp_json, &s1_resp); + cJSON_Delete(s1_resp_json); + TEST_ASSERT(rc == NOSTR_SUCCESS && s1_resp.signature_count >= 1, "parse swap response (step1)"); + if (rc != NOSTR_SUCCESS || s1_resp.signature_count < 1) { + cashu_mint_free_swap_response(&s1_resp); + goto cleanup; + } + + printf("[DBG] step1 swap C_: %s\n", s1_resp.signatures[0].C_); + rc = cashu_unblind_signature(s1_resp.signatures[0].C_, pk1, r1_swap, C1_swap); + TEST_ASSERT(rc == NOSTR_SUCCESS, "unblind swap signature (step1)"); + printf("[DBG] step1 swap C : %s\n", C1_swap); + cashu_mint_free_swap_response(&s1_resp); + if (rc != NOSTR_SUCCESS) goto cleanup; + + rc = secret_to_Y_hex(secret1_swap, Y1_swap); + TEST_ASSERT(rc == NOSTR_SUCCESS, "derive Y for step1 swapped proof"); + printf("[DBG] step1 Y(old)=%s\n", Y1); + printf("[DBG] step1 Y(new)=%s\n", Y1_swap); + if (rc != NOSTR_SUCCESS) goto cleanup; + + const char* ys_step1[2] = {Y1, Y1_swap}; + cashu_checkstate_response_t st1; + rc = run_checkstate(mint_url, ys_step1, 2, &st1); + TEST_ASSERT(rc == NOSTR_SUCCESS, "checkstate after step1 swap"); if (rc == NOSTR_SUCCESS) { - const char* Ys[1] = {Y_hex}; - cJSON* check_req = NULL; - rc = cashu_build_checkstate_request(Ys, 1, &check_req); - TEST_ASSERT(rc == NOSTR_SUCCESS && check_req != NULL, "build checkstate request"); + const char* old_state = find_state_for_y(&st1, Y1); + const char* new_state = find_state_for_y(&st1, Y1_swap); + TEST_ASSERT(old_state != NULL && strcmp(old_state, "SPENT") == 0, "old proof marked SPENT after step1 swap"); + TEST_ASSERT(new_state != NULL && strcmp(new_state, "UNSPENT") == 0, "new proof marked UNSPENT after step1 swap"); + cashu_mint_free_checkstate_response(&st1); + } - if (rc == NOSTR_SUCCESS && check_req != NULL) { - cJSON* check_resp_json = NULL; - rc = cashu_mint_check_proofs_state(mint_url, check_req, &check_resp_json, 15); - cJSON_Delete(check_req); - TEST_ASSERT(rc == NOSTR_SUCCESS && check_resp_json != NULL, "checkstate call"); + /* Step 2: mint 8 and swap into [2,4,2] */ + cashu_mint_quote_t q8; + memset(&q8, 0, sizeof(q8)); + rc = cashu_mint_request_mint_quote(mint_url, 8, "sat", &q8, 15); + TEST_ASSERT(rc == NOSTR_SUCCESS, "request mint quote (8 sat)"); + if (rc != NOSTR_SUCCESS) goto cleanup; - if (rc == NOSTR_SUCCESS && check_resp_json != NULL) { - cashu_checkstate_response_t state; - memset(&state, 0, sizeof(state)); - rc = cashu_parse_checkstate_response(check_resp_json, &state); - cJSON_Delete(check_resp_json); - TEST_ASSERT(rc == NOSTR_SUCCESS, "parse checkstate response"); - TEST_ASSERT(state.state_count >= 1, "checkstate returned at least one state"); - TEST_ASSERT(state.state_count >= 1 && strcmp(state.states[0].state, "UNSPENT") == 0, - "mint reports proof as UNSPENT"); - cashu_mint_free_checkstate_response(&state); + cashu_mint_quote_t q8_check; + memset(&q8_check, 0, sizeof(q8_check)); + rc = cashu_mint_check_mint_quote(mint_url, q8.quote_id, &q8_check, 15); + TEST_ASSERT(rc == NOSTR_SUCCESS && q8_check.paid == 1, "check mint quote paid (8 sat)"); + if (rc != NOSTR_SUCCESS || q8_check.paid != 1) goto cleanup; + + char secret8[160], B8[67], C8[67], Y8[67]; + unsigned char r8[32]; + snprintf(secret8, sizeof(secret8), "nostr-step2-mint8-%ld", (long)time(NULL)); + rc = cashu_blind_message(secret8, info.pubkey, B8, r8); + TEST_ASSERT(rc == NOSTR_SUCCESS, "blind message for mint 8"); + if (rc != NOSTR_SUCCESS) goto cleanup; + + cashu_blinded_output_t m8_out; + memset(&m8_out, 0, sizeof(m8_out)); + snprintf(m8_out.id, sizeof(m8_out.id), "%s", active_keyset.id); + m8_out.amount = 8; + snprintf(m8_out.B_, sizeof(m8_out.B_), "%s", B8); + + cashu_mint_tokens_request_t m8_req; + memset(&m8_req, 0, sizeof(m8_req)); + snprintf(m8_req.quote_id, sizeof(m8_req.quote_id), "%s", q8.quote_id); + snprintf(m8_req.unit, sizeof(m8_req.unit), "sat"); + m8_req.outputs = &m8_out; + m8_req.output_count = 1; + + cJSON* m8_body = NULL; + rc = cashu_build_mint_tokens_request(&m8_req, &m8_body); + TEST_ASSERT(rc == NOSTR_SUCCESS && m8_body != NULL, "build mint request (8 sat)"); + if (rc != NOSTR_SUCCESS || !m8_body) goto cleanup; + + cJSON* m8_resp_json = NULL; + rc = cashu_mint_mint_tokens(mint_url, m8_body, &m8_resp_json, 15); + cJSON_Delete(m8_body); + TEST_ASSERT(rc == NOSTR_SUCCESS && m8_resp_json != NULL, "mint tokens call (8 sat)"); + if (rc != NOSTR_SUCCESS || !m8_resp_json) { + cJSON_Delete(m8_resp_json); + goto cleanup; + } + + cashu_mint_tokens_response_t m8_resp; + memset(&m8_resp, 0, sizeof(m8_resp)); + rc = cashu_parse_mint_tokens_response(m8_resp_json, &m8_resp); + cJSON_Delete(m8_resp_json); + TEST_ASSERT(rc == NOSTR_SUCCESS && m8_resp.signature_count >= 1, "parse minted signatures (8 sat)"); + if (rc != NOSTR_SUCCESS || m8_resp.signature_count < 1) { + cashu_mint_free_mint_tokens_response(&m8_resp); + goto cleanup; + } + + rc = cashu_unblind_signature(m8_resp.signatures[0].C_, pk8, r8, C8); + TEST_ASSERT(rc == NOSTR_SUCCESS, "unblind minted signature (8 sat)"); + cashu_mint_free_mint_tokens_response(&m8_resp); + if (rc != NOSTR_SUCCESS) goto cleanup; + + rc = secret_to_Y_hex(secret8, Y8); + TEST_ASSERT(rc == NOSTR_SUCCESS, "derive Y for minted proof (8 sat)"); + if (rc != NOSTR_SUCCESS) goto cleanup; + + uint64_t change_parts[8] = {0}; + int change_count = 0; + rc = cashu_mint_plan_split_amounts(6, change_parts, 8, &change_count); + TEST_ASSERT(rc == NOSTR_SUCCESS && change_count >= 2, "plan split amounts for 6 sat change"); + TEST_ASSERT(change_parts[0] + change_parts[1] == 6, "planned change sums to 6"); + if (rc != NOSTR_SUCCESS || change_count < 2) goto cleanup; + + uint64_t out_amts[3] = {2, change_parts[0], change_parts[1]}; + char out_secrets[3][160]; + char out_B[3][67]; + unsigned char out_r[3][32]; + cashu_blinded_output_t split_out[3]; + memset(split_out, 0, sizeof(split_out)); + + for (int i = 0; i < 3; i++) { + snprintf(out_secrets[i], sizeof(out_secrets[i]), "nostr-step2-swap-%d-%ld", i, (long)time(NULL)); + rc = cashu_blind_message(out_secrets[i], info.pubkey, out_B[i], out_r[i]); + TEST_ASSERT(rc == NOSTR_SUCCESS, "blind message for step2 output"); + if (rc != NOSTR_SUCCESS) goto cleanup; + snprintf(split_out[i].id, sizeof(split_out[i].id), "%s", active_keyset.id); + split_out[i].amount = out_amts[i]; + snprintf(split_out[i].B_, sizeof(split_out[i].B_), "%s", out_B[i]); + } + + nostr_cashu_proof_t in8; + memset(&in8, 0, sizeof(in8)); + snprintf(in8.id, sizeof(in8.id), "%s", active_keyset.id); + in8.amount = 8; + in8.secret = secret8; + in8.C = C8; + + cashu_swap_request_t s2_req; + memset(&s2_req, 0, sizeof(s2_req)); + s2_req.inputs = &in8; + s2_req.input_count = 1; + s2_req.outputs = split_out; + s2_req.output_count = 3; + + cJSON* s2_body = NULL; + rc = cashu_build_swap_request(&s2_req, &s2_body); + TEST_ASSERT(rc == NOSTR_SUCCESS && s2_body != NULL, "build split swap request (step2)"); + if (rc != NOSTR_SUCCESS || !s2_body) goto cleanup; + + cJSON* s2_resp_json = NULL; + rc = cashu_mint_swap(mint_url, s2_body, &s2_resp_json, 15); + cJSON_Delete(s2_body); + TEST_ASSERT(rc == NOSTR_SUCCESS && s2_resp_json != NULL, "split swap call (step2)"); + if (rc != NOSTR_SUCCESS || !s2_resp_json) { + cJSON_Delete(s2_resp_json); + goto cleanup; + } + + cashu_swap_response_t s2_resp; + memset(&s2_resp, 0, sizeof(s2_resp)); + rc = cashu_parse_swap_response(s2_resp_json, &s2_resp); + cJSON_Delete(s2_resp_json); + TEST_ASSERT(rc == NOSTR_SUCCESS && s2_resp.signature_count >= 3, "parse split swap signatures (step2)"); + if (rc != NOSTR_SUCCESS || s2_resp.signature_count < 3) { + cashu_mint_free_swap_response(&s2_resp); + goto cleanup; + } + + char split_C[3][67]; + char split_Y[3][67]; + for (int i = 0; i < 3; i++) { + const char* out_pk = NULL; + rc = cashu_keyset_keys_find_pubkey_for_amount(&keyset_keys, out_amts[i], &out_pk); + TEST_ASSERT(rc == NOSTR_SUCCESS && out_pk != NULL, "find pubkey for split output amount"); + if (rc != NOSTR_SUCCESS || !out_pk) { + cashu_mint_free_swap_response(&s2_resp); + goto cleanup; + } + + rc = cashu_unblind_signature(s2_resp.signatures[i].C_, out_pk, out_r[i], split_C[i]); + TEST_ASSERT(rc == NOSTR_SUCCESS, "unblind split swap signature"); + if (rc != NOSTR_SUCCESS) { + cashu_mint_free_swap_response(&s2_resp); + goto cleanup; + } + + rc = secret_to_Y_hex(out_secrets[i], split_Y[i]); + TEST_ASSERT(rc == NOSTR_SUCCESS, "derive Y for split output proof"); + if (rc != NOSTR_SUCCESS) { + cashu_mint_free_swap_response(&s2_resp); + goto cleanup; + } + } + cashu_mint_free_swap_response(&s2_resp); + + const char* ys_step2[3] = {split_Y[0], split_Y[1], split_Y[2]}; + cashu_checkstate_response_t st2; + rc = run_checkstate(mint_url, ys_step2, 3, &st2); + TEST_ASSERT(rc == NOSTR_SUCCESS, "checkstate for split outputs (step2)"); + if (rc == NOSTR_SUCCESS) { + TEST_ASSERT(find_state_for_y(&st2, split_Y[0]) && strcmp(find_state_for_y(&st2, split_Y[0]), "UNSPENT") == 0, + "split output #1 is UNSPENT"); + TEST_ASSERT(find_state_for_y(&st2, split_Y[1]) && strcmp(find_state_for_y(&st2, split_Y[1]), "UNSPENT") == 0, + "split output #2 is UNSPENT"); + TEST_ASSERT(find_state_for_y(&st2, split_Y[2]) && strcmp(find_state_for_y(&st2, split_Y[2]), "UNSPENT") == 0, + "split output #3 is UNSPENT"); + cashu_mint_free_checkstate_response(&st2); + } + + /* Step 3: NIP-60 event round-trip then swap parsed proof */ + const char* sk_hex = "91ba716fa9e7ea2fcbad360cf4f8e0d312f73984da63d90f524ad61a6a1e7dbe"; + unsigned char sk[32]; + rc = (nostr_hex_to_bytes(sk_hex, sk, 32) == 0) ? NOSTR_SUCCESS : NOSTR_ERROR_INVALID_INPUT; + TEST_ASSERT(rc == NOSTR_SUCCESS, "parse private key for NIP-60 roundtrip"); + if (rc != NOSTR_SUCCESS) goto cleanup; + + nostr_cashu_proof_t nip60_proof; + memset(&nip60_proof, 0, sizeof(nip60_proof)); + snprintf(nip60_proof.id, sizeof(nip60_proof.id), "%s", active_keyset.id); + nip60_proof.amount = out_amts[0]; + nip60_proof.secret = out_secrets[0]; + nip60_proof.C = split_C[0]; + + nostr_nip60_token_data_t token_data; + memset(&token_data, 0, sizeof(token_data)); + token_data.mint_url = (char*)mint_url; + token_data.proofs = &nip60_proof; + token_data.proof_count = 1; + + cJSON* token_evt = nostr_nip60_create_token_event(&token_data, sk, 0); + TEST_ASSERT(token_evt != NULL, "create NIP-60 token event (step3)"); + if (!token_evt) goto cleanup; + + nostr_nip60_token_data_t parsed_token; + memset(&parsed_token, 0, sizeof(parsed_token)); + rc = nostr_nip60_parse_token_event(token_evt, sk, &parsed_token); + TEST_ASSERT(rc == NOSTR_SUCCESS, "parse NIP-60 token event (step3)"); + TEST_ASSERT(rc == NOSTR_SUCCESS && parsed_token.proof_count == 1, "parsed token has one proof"); + if (rc != NOSTR_SUCCESS || parsed_token.proof_count != 1) { + cJSON_Delete(token_evt); + goto cleanup; + } + + TEST_ASSERT(strcmp(parsed_token.proofs[0].secret, nip60_proof.secret) == 0, "parsed proof secret matches original"); + TEST_ASSERT(strcmp(parsed_token.proofs[0].C, nip60_proof.C) == 0, "parsed proof C matches original"); + + char secret3[160], B3[67], C3[67], Y3[67]; + unsigned char r3[32]; + snprintf(secret3, sizeof(secret3), "nostr-step3-swap-%ld", (long)time(NULL)); + rc = cashu_blind_message(secret3, info.pubkey, B3, r3); + TEST_ASSERT(rc == NOSTR_SUCCESS, "blind message for step3 swap output"); + if (rc != NOSTR_SUCCESS) { + nostr_nip60_free_token_data(&parsed_token); + cJSON_Delete(token_evt); + goto cleanup; + } + + cashu_blinded_output_t s3_out; + memset(&s3_out, 0, sizeof(s3_out)); + snprintf(s3_out.id, sizeof(s3_out.id), "%s", active_keyset.id); + s3_out.amount = parsed_token.proofs[0].amount; + snprintf(s3_out.B_, sizeof(s3_out.B_), "%s", B3); + + cashu_swap_request_t s3_req; + memset(&s3_req, 0, sizeof(s3_req)); + s3_req.inputs = parsed_token.proofs; + s3_req.input_count = 1; + s3_req.outputs = &s3_out; + s3_req.output_count = 1; + + cJSON* s3_body = NULL; + rc = cashu_build_swap_request(&s3_req, &s3_body); + TEST_ASSERT(rc == NOSTR_SUCCESS && s3_body != NULL, "build swap request from parsed NIP-60 proof"); + if (rc != NOSTR_SUCCESS || !s3_body) { + nostr_nip60_free_token_data(&parsed_token); + cJSON_Delete(token_evt); + goto cleanup; + } + + cJSON* s3_resp_json = NULL; + rc = cashu_mint_swap(mint_url, s3_body, &s3_resp_json, 15); + cJSON_Delete(s3_body); + TEST_ASSERT(rc == NOSTR_SUCCESS && s3_resp_json != NULL, "swap call with parsed NIP-60 proof"); + if (rc != NOSTR_SUCCESS || !s3_resp_json) { + cJSON_Delete(s3_resp_json); + nostr_nip60_free_token_data(&parsed_token); + cJSON_Delete(token_evt); + goto cleanup; + } + + cashu_swap_response_t s3_resp; + memset(&s3_resp, 0, sizeof(s3_resp)); + rc = cashu_parse_swap_response(s3_resp_json, &s3_resp); + cJSON_Delete(s3_resp_json); + TEST_ASSERT(rc == NOSTR_SUCCESS && s3_resp.signature_count >= 1, "parse swap response (step3)"); + if (rc == NOSTR_SUCCESS && s3_resp.signature_count >= 1) { + const char* pk_out = NULL; + int rc_pk = cashu_keyset_keys_find_pubkey_for_amount(&keyset_keys, s3_out.amount, &pk_out); + TEST_ASSERT(rc_pk == NOSTR_SUCCESS && pk_out != NULL, "find pubkey for step3 output amount"); + if (rc_pk == NOSTR_SUCCESS && pk_out) { + rc = cashu_unblind_signature(s3_resp.signatures[0].C_, pk_out, r3, C3); + TEST_ASSERT(rc == NOSTR_SUCCESS, "unblind swap signature (step3)"); + if (rc == NOSTR_SUCCESS) { + rc = secret_to_Y_hex(secret3, Y3); + TEST_ASSERT(rc == NOSTR_SUCCESS, "derive Y for step3 swapped proof"); + if (rc == NOSTR_SUCCESS) { + const char* ys_step3[1] = {Y3}; + cashu_checkstate_response_t st3; + rc = run_checkstate(mint_url, ys_step3, 1, &st3); + TEST_ASSERT(rc == NOSTR_SUCCESS, "checkstate after step3 swap"); + if (rc == NOSTR_SUCCESS) { + const char* s3_state = find_state_for_y(&st3, Y3); + TEST_ASSERT(s3_state != NULL && strcmp(s3_state, "UNSPENT") == 0, + "step3 swapped proof is UNSPENT"); + cashu_mint_free_checkstate_response(&st3); + } + } } } } - cashu_free_decoded_token(&decoded_b); - cashu_free_decoded_token(&decoded); - free(token_b); - free(token_a); - cashu_mint_free_mint_tokens_response(&mint_resp); + cashu_mint_free_swap_response(&s3_resp); + nostr_nip60_free_token_data(&parsed_token); + cJSON_Delete(token_evt); + +cleanup: cashu_mint_free_keyset_keys(&keyset_keys); cashu_mint_free_info(&info); } @@ -392,6 +844,7 @@ int main(void) { return 1; } + test_hash_to_curve_vectors(); test_live_mint_and_receive("https://nofee.testnut.cashu.space"); printf("\n=== Test Summary ===\n");