74 lines
2.4 KiB
C
74 lines
2.4 KiB
C
/*
|
|
* NIP-59: Gift Wrap
|
|
* https://github.com/nostr-protocol/nips/blob/master/59.md
|
|
*/
|
|
|
|
#ifndef NOSTR_NIP059_H
|
|
#define NOSTR_NIP059_H
|
|
|
|
#include <stddef.h>
|
|
#include <time.h>
|
|
#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
|