/* * NIP-59: Gift Wrap * https://github.com/nostr-protocol/nips/blob/master/59.md */ #ifndef NOSTR_NIP059_H #define NOSTR_NIP059_H #include #include #include "../cjson/cJSON.h" #ifdef __cplusplus extern "C" { #endif /** * NIP-59: Create a rumor (unsigned event) * * @param kind Event kind * @param content Event content * @param tags Event tags (cJSON array, can be NULL) * @param pubkey_hex Sender's public key in hex format * @param created_at Event timestamp (0 for current time) * @return cJSON object representing the rumor, or NULL on error */ cJSON* nostr_nip59_create_rumor(int kind, const char* content, cJSON* tags, const char* pubkey_hex, time_t created_at); /** * NIP-59: Create a seal (kind 13) wrapping a rumor * * @param rumor The rumor event to seal (cJSON object) * @param sender_private_key 32-byte sender private key * @param recipient_public_key 32-byte recipient public key (x-only) * @return cJSON object representing the seal event, or NULL on error */ cJSON* nostr_nip59_create_seal(cJSON* rumor, const unsigned char* sender_private_key, const unsigned char* recipient_public_key); /** * NIP-59: Create a gift wrap (kind 1059) wrapping a seal * * @param seal The seal event to wrap (cJSON object) * @param recipient_public_key_hex Recipient's public key in hex format * @return cJSON object representing the gift wrap event, or NULL on error */ cJSON* nostr_nip59_create_gift_wrap(cJSON* seal, const char* recipient_public_key_hex); /** * NIP-59: Unwrap a gift wrap to get the seal * * @param gift_wrap The gift wrap event (cJSON object) * @param recipient_private_key 32-byte recipient private key * @return cJSON object representing the seal event, or NULL on error */ cJSON* nostr_nip59_unwrap_gift(cJSON* gift_wrap, const unsigned char* recipient_private_key); /** * NIP-59: Unseal a seal to get the rumor * * @param seal The seal event (cJSON object) * @param sender_public_key 32-byte sender public key (x-only) * @param recipient_private_key 32-byte recipient private key * @return cJSON object representing the rumor event, or NULL on error */ cJSON* nostr_nip59_unseal_rumor(cJSON* seal, const unsigned char* sender_public_key, const unsigned char* recipient_private_key); #ifdef __cplusplus } #endif #endif // NOSTR_NIP059_H