Initial template structure from nostr_core_lib
- Complete C library template with OpenSSL-based crypto - Comprehensive build system (Makefile, build.sh) - Example code and test suite - Documentation and usage guides - Cross-platform compatibility (x64/ARM64) - Production-ready structure for C library projects
This commit is contained in:
64
README.md
64
README.md
@@ -1,6 +1,6 @@
|
||||
# NOSTR Core Library
|
||||
|
||||
A comprehensive, self-contained C library for NOSTR protocol implementation with no external cryptographic dependencies.
|
||||
A comprehensive, production-ready C library for NOSTR protocol implementation with OpenSSL-based cryptography and extensive protocol support.
|
||||
|
||||
[](VERSION)
|
||||
[](#license)
|
||||
@@ -11,12 +11,14 @@ A comprehensive, self-contained C library for NOSTR protocol implementation with
|
||||
### Core Protocol Support
|
||||
- **NIP-01**: Basic protocol flow - event creation, signing, and validation
|
||||
- **NIP-04**: Encrypted direct messages (ECDH + AES-CBC + Base64)
|
||||
- **NIP-05**: DNS-based internet identifier verification
|
||||
- **NIP-06**: Key derivation from mnemonic (BIP39/BIP32 compliant)
|
||||
- **NIP-11**: Relay information documents
|
||||
- **NIP-13**: Proof of Work for events
|
||||
- **NIP-44**: Versioned encrypted direct messages (ECDH + ChaCha20 + HMAC)
|
||||
|
||||
### Cryptographic Features
|
||||
- **Self-Contained**: No external crypto dependencies (OpenSSL, libwally, etc.)
|
||||
- **OpenSSL-Based**: Production-grade cryptography with OpenSSL backend
|
||||
- **Secp256k1**: Complete elliptic curve implementation bundled
|
||||
- **BIP39**: Mnemonic phrase generation and validation
|
||||
- **BIP32**: Hierarchical deterministic key derivation
|
||||
@@ -27,12 +29,14 @@ A comprehensive, self-contained C library for NOSTR protocol implementation with
|
||||
### Networking & Relay Support
|
||||
- **Multi-Relay Queries**: Synchronous querying with progress callbacks
|
||||
- **Relay Pools**: Asynchronous connection management with statistics
|
||||
- **WebSocket Communication**: Full relay protocol support
|
||||
- **OpenSSL WebSocket Communication**: Full relay protocol support with TLS
|
||||
- **NIP-05 Identifier Verification**: DNS-based identity resolution
|
||||
- **NIP-11 Relay Information**: Automatic relay capability discovery
|
||||
- **Event Deduplication**: Automatic handling of duplicate events across relays
|
||||
- **Connection Management**: Automatic reconnection and error handling
|
||||
|
||||
### Developer Experience
|
||||
- **Zero Dependencies**: Only requires standard C library and math library (`-lm`)
|
||||
- **Minimal Dependencies**: Only requires OpenSSL, standard C library and math library
|
||||
- **Thread-Safe**: Core cryptographic functions are stateless
|
||||
- **Cross-Platform**: Builds on Linux, macOS, Windows
|
||||
- **Comprehensive Examples**: Ready-to-run demonstration programs
|
||||
@@ -139,10 +143,14 @@ make clean
|
||||
- Standard C library
|
||||
- Math library (`-lm`)
|
||||
|
||||
**Included:**
|
||||
**Included & Embedded (x64):**
|
||||
- cJSON (JSON parsing)
|
||||
- secp256k1 (elliptic curve cryptography)
|
||||
- OpenSSL (TLS for WebSocket connections)
|
||||
- OpenSSL (complete cryptographic backend + TLS)
|
||||
- curl (HTTP/HTTPS for NIP-05/NIP-11)
|
||||
|
||||
**ARM64 Additional Requirements:**
|
||||
- System OpenSSL libraries (`-lssl -lcrypto`)
|
||||
|
||||
## 📚 API Documentation
|
||||
|
||||
@@ -240,6 +248,30 @@ int nostr_relay_pool_run(nostr_relay_pool_t* pool, int timeout_ms);
|
||||
int nostr_relay_pool_poll(nostr_relay_pool_t* pool, int timeout_ms);
|
||||
```
|
||||
|
||||
### NIP-05 Identifier Verification
|
||||
```c
|
||||
// Lookup public key from NIP-05 identifier
|
||||
int nostr_nip05_lookup(const char* nip05_identifier, char* pubkey_hex_out,
|
||||
char*** relays, int* relay_count, int timeout_seconds);
|
||||
|
||||
// Verify NIP-05 identifier against public key
|
||||
int nostr_nip05_verify(const char* nip05_identifier, const char* pubkey_hex,
|
||||
char*** relays, int* relay_count, int timeout_seconds);
|
||||
|
||||
// Parse .well-known/nostr.json response
|
||||
int nostr_nip05_parse_well_known(const char* json_response, const char* local_part,
|
||||
char* pubkey_hex_out, char*** relays, int* relay_count);
|
||||
```
|
||||
|
||||
### NIP-11 Relay Information
|
||||
```c
|
||||
// Fetch relay information document
|
||||
int nostr_nip11_fetch_relay_info(const char* relay_url, nostr_relay_info_t** info_out, int timeout_seconds);
|
||||
|
||||
// Free relay information structure
|
||||
void nostr_nip11_relay_info_free(nostr_relay_info_t* info);
|
||||
```
|
||||
|
||||
## 📁 Examples
|
||||
|
||||
The library includes comprehensive examples:
|
||||
@@ -274,9 +306,12 @@ cd tests && make test
|
||||
- **Core Functionality**: `simple_init_test`, `header_test`
|
||||
- **Cryptography**: `chacha20_test`, `nostr_crypto_test`
|
||||
- **NIP-04 Encryption**: `nip04_test`
|
||||
- **NIP-05 Identifiers**: `nip05_test`
|
||||
- **NIP-11 Relay Info**: `nip11_test`
|
||||
- **NIP-44 Encryption**: `nip44_test`, `nip44_debug_test`
|
||||
- **Key Derivation**: `nostr_test_bip32`
|
||||
- **Relay Communication**: `relay_pool_test`, `sync_test`
|
||||
- **HTTP/WebSocket**: `http_test`, `wss_test`
|
||||
- **Proof of Work**: `test_pow_loop`
|
||||
|
||||
## 🏗️ Integration
|
||||
@@ -388,9 +423,17 @@ Current version: **0.1.20**
|
||||
|
||||
The library uses automatic semantic versioning based on Git tags. Each build increments the patch version automatically.
|
||||
|
||||
**Recent Developments:**
|
||||
- **OpenSSL Migration**: Transitioned from mbedTLS to OpenSSL for improved compatibility
|
||||
- **NIP-05 Support**: DNS-based internet identifier verification
|
||||
- **NIP-11 Support**: Relay information document fetching and parsing
|
||||
- **Enhanced WebSocket**: OpenSSL-based TLS WebSocket communication
|
||||
- **Production Ready**: Comprehensive test suite and error handling
|
||||
|
||||
**Version Timeline:**
|
||||
- `v0.1.x` - Initial development releases
|
||||
- Focus on core protocol implementation and self-contained crypto
|
||||
- Full NIP-01, NIP-04, NIP-06, NIP-13, NIP-44 support
|
||||
- Focus on core protocol implementation and OpenSSL-based crypto
|
||||
- Full NIP-01, NIP-04, NIP-05, NIP-06, NIP-11, NIP-13, NIP-44 support
|
||||
|
||||
## 🐛 Troubleshooting
|
||||
|
||||
@@ -428,13 +471,14 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
|
||||
## 🙏 Acknowledgments
|
||||
|
||||
- **NOSTR Protocol** - The decentralized social media protocol
|
||||
- **OpenSSL** - Production-grade cryptographic library and TLS implementation
|
||||
- **secp256k1** - Bitcoin's elliptic curve library
|
||||
- **cJSON** - Lightweight JSON parser
|
||||
- **mbedTLS** - Cryptographic building blocks
|
||||
- **curl** - HTTP/HTTPS client library for NIP-05/NIP-11
|
||||
- **NOSTR Community** - For protocol specification and feedback
|
||||
|
||||
---
|
||||
|
||||
**Built with ❤️ for the decentralized web**
|
||||
|
||||
*Self-contained • Zero dependencies • Production ready*
|
||||
*OpenSSL-based • Minimal dependencies • Production ready*
|
||||
|
||||
Reference in New Issue
Block a user