Complete mbedTLS cleanup - Removed all mbedTLS dependencies and updated documentation

- Moved mbedTLS directories to Trash/ (mbedtls/, mbedtls-install/, mbedtls-arm64-install/)
- Removed obsolete nostr_websocket_mbedtls.c implementation
- Updated nostr_websocket/Makefile to use OpenSSL instead of mbedTLS
- Updated nostr_websocket/README.md with OpenSSL migration notes
- Updated nostr_websocket/EXPORT_GUIDE.md with OpenSSL instructions
- All tests pass: crypto tests, static linking verification
- Build system fully functional with OpenSSL-only dependencies
This commit is contained in:
2025-08-14 11:59:03 -04:00
parent 6d7b709f9a
commit af2117b574
4 changed files with 59 additions and 1074 deletions

View File

@@ -8,11 +8,11 @@ The NOSTR WebSocket library consists of these key files for export:
### Core Files (Required)
- `nostr_websocket_tls.h` - Header with all function declarations and constants
- `nostr_websocket_mbedtls.c` - Main implementation using mbedTLS for SSL/TLS
- `nostr_websocket_openssl.c` - Main implementation using OpenSSL for SSL/TLS
- `../cjson/cJSON.h` and `../cjson/cJSON.c` - JSON parsing (lightweight)
### Dependencies
- **mbedTLS** - For SSL/TLS support (wss:// connections)
- **OpenSSL** - For SSL/TLS support (wss:// connections) - libssl, libcrypto
- **Standard C libraries** - socket, networking, etc.
## Quick Integration
@@ -21,23 +21,29 @@ The NOSTR WebSocket library consists of these key files for export:
```bash
# Copy the library files
cp nostr_websocket_tls.h your_project/
cp nostr_websocket_mbedtls.c your_project/
cp nostr_websocket_openssl.c your_project/
cp ../cjson/cJSON.h your_project/
cp ../cjson/cJSON.c your_project/
```
### 2. Install mbedTLS Dependency
### 2. Install OpenSSL Dependency
```bash
# Ubuntu/Debian
sudo apt-get install libmbedtls-dev
sudo apt-get install libssl-dev
# Or build from source (see mbedTLS documentation)
# CentOS/RHEL/Fedora
sudo yum install openssl-devel
# or
sudo dnf install openssl-devel
# macOS (via Homebrew)
brew install openssl
```
### 3. Compile Your Project
```bash
gcc -o my_nostr_app my_app.c nostr_websocket_mbedtls.c cJSON.c \
-lmbedtls -lmbedx509 -lmbedcrypto -lm
gcc -o my_nostr_app my_app.c nostr_websocket_openssl.c cJSON.c \
-lssl -lcrypto -lm
```
## Basic Usage Example
@@ -131,16 +137,17 @@ The library supports both TCP (`ws://`) and TLS (`wss://`) automatically based o
### Linux/Unix
- Works out of the box with standard development tools
- Requires: gcc, mbedTLS development headers
- Requires: gcc, OpenSSL development headers (libssl-dev)
### Potential Windows Support
### Windows Support
- Would need Winsock2 adaptations in transport layer
- mbedTLS is cross-platform compatible
- OpenSSL is widely available on Windows
### Embedded Systems
- Lightweight design suitable for embedded use
- Memory usage: ~4KB per client + message buffers
- No dynamic allocations in hot paths
- OpenSSL provides optimized implementations for various architectures
## Library Design Benefits
@@ -178,7 +185,21 @@ The library handles all WebSocket protocol details, SSL/TLS, and NOSTR message f
- Based on WebSocket RFC 6455
- Implements NOSTR WebSocket conventions
- SSL/TLS via proven mbedTLS library
- SSL/TLS via industry-standard OpenSSL library
- Tested with major NOSTR relays
## Migration Notes
If you were previously using the mbedTLS version of this library:
### Code Changes Required
- Update `#include` to reference `nostr_websocket_openssl.c` instead of `nostr_websocket_mbedtls.c`
- Change linking flags from `-lmbedtls -lmbedx509 -lmbedcrypto` to `-lssl -lcrypto`
- Install OpenSSL development headers instead of mbedTLS
### API Compatibility
- All function signatures remain identical
- No changes to your application code required
- Same performance characteristics and behavior
This library provides a clean, efficient way to integrate NOSTR WebSocket functionality into any C project with minimal dependencies and maximum portability.