57 lines
1.8 KiB
C
57 lines
1.8 KiB
C
/*
|
|
* NIP-04: Encrypted Direct Message
|
|
* https://github.com/nostr-protocol/nips/blob/master/04.md
|
|
*/
|
|
|
|
#ifndef NOSTR_NIP004_H
|
|
#define NOSTR_NIP004_H
|
|
|
|
#include <stddef.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
// NIP-04 constants
|
|
// #define NOSTR_NIP04_MAX_PLAINTEXT_SIZE 65535
|
|
// NIP-04 Constants
|
|
// #define NOSTR_NIP04_MAX_PLAINTEXT_SIZE 16777216 // 16MB
|
|
// #define NOSTR_NIP04_MAX_ENCRYPTED_SIZE 22369621 // ~21.3MB (accounts for base64 overhead + IV)
|
|
/**
|
|
* NIP-04: Encrypt a message using ECDH + AES-256-CBC
|
|
*
|
|
* @param sender_private_key 32-byte sender private key
|
|
* @param recipient_public_key 32-byte recipient public key (x-only)
|
|
* @param plaintext Message to encrypt
|
|
* @param output Buffer for encrypted output (format: "ciphertext?iv=iv_base64")
|
|
* @param output_size Size of output buffer
|
|
* @return NOSTR_SUCCESS on success, error code on failure
|
|
*/
|
|
int nostr_nip04_encrypt(const unsigned char* sender_private_key,
|
|
const unsigned char* recipient_public_key,
|
|
const char* plaintext,
|
|
char* output,
|
|
size_t output_size);
|
|
|
|
/**
|
|
* NIP-04: Decrypt a message using ECDH + AES-256-CBC
|
|
*
|
|
* @param recipient_private_key 32-byte recipient private key
|
|
* @param sender_public_key 32-byte sender public key (x-only)
|
|
* @param encrypted_data Encrypted message (format: "ciphertext?iv=iv_base64")
|
|
* @param output Buffer for decrypted plaintext
|
|
* @param output_size Size of output buffer
|
|
* @return NOSTR_SUCCESS on success, error code on failure
|
|
*/
|
|
int nostr_nip04_decrypt(const unsigned char* recipient_private_key,
|
|
const unsigned char* sender_public_key,
|
|
const char* encrypted_data,
|
|
char* output,
|
|
size_t output_size);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // NOSTR_NIP004_H
|