Feature Comparison β
Complete comparison of all 4 Sharokey client libraries to help you choose the right tool for your project.
π― Quick Decision Guide β
π₯οΈ Use CLI C# if you need:
- Shell scripts & automation
- CI/CD pipeline integration
- Pipe data from other commands
- Cross-platform executable
π¦ Use JavaScript SDK if you need:
- Node.js applications
- Complex web applications
- Full TypeScript support
- Advanced filtering & search
π Use JavaScript CDN if you need:
- Quick browser integration
- No build process
- Simple HTML projects
- Minimal setup
π Use Python SDK if you need:
- Python applications
- Data science & ML projects
- CLI-consistent API
- Async/await support
π Feature Matrix β
Configuration & Setup β
| Feature | CLI C# | JavaScript SDK | JavaScript CDN | Python SDK |
|---|---|---|---|---|
| Token Configuration | β | β | β | β |
| Custom API URL | β | β | β | β |
| Connection Testing | β | β | β | β |
| Environment Variables | β | β | β | β |
Secret Management β
| Feature | CLI C# | JavaScript SDK | JavaScript CDN | Python SDK |
|---|---|---|---|---|
| Create Secrets | β | β | β | β |
| List Secrets | β | β | β | β |
| Get Secret Details | β | β | β | β |
| Delete Secrets | β | β | β | β |
| Bulk Operations | β | β | β | β |
Security Features β
| Feature | CLI C# | JavaScript SDK | JavaScript CDN | Python SDK |
|---|---|---|---|---|
| Zero Knowledge Encryption | β | β | β | β |
| Password Protection | β | β | β | β |
| OTP via Email | β | β | β | β |
| OTP via SMS | β | β | β | β |
| Custom Expiration | β | β | β | β |
| View Limits | β | β | β | β |
File Support β
| Feature | CLI C# | JavaScript SDK | JavaScript CDN | Python SDK |
|---|---|---|---|---|
| File Attachments | β | β | β | β |
| Multiple Files | β | β | β | β |
| 10MB Size Validation | β | β | β | β |
| File Type Validation | β | β | β | β |
| Drag & Drop | N/A | β | β | N/A |
Advanced Features β
| Feature | CLI C# | JavaScript SDK | JavaScript CDN | Python SDK |
|---|---|---|---|---|
| Advanced Filtering | β | β | β | β |
| Search Functionality | β | β | β | β |
| Active Secrets Only | β | β | β | β |
| Pagination | β | β | β | β |
| Stdin/Pipe Input | β | β | β | β |
Output & Formatting β
| Feature | CLI C# | JavaScript SDK | JavaScript CDN | Python SDK |
|---|---|---|---|---|
| JSON Output | β | β | β | β |
| Table Format | β | β | β | β |
| Verbose Mode | β | β | β | β |
| Colored Output | β | N/A | N/A | β |
Development Experience β
| Feature | CLI C# | JavaScript SDK | JavaScript CDN | Python SDK |
|---|---|---|---|---|
| TypeScript Support | N/A | β | β | N/A |
| Type Hints | N/A | β | β | β |
| Async/Await | β | β | β | β |
| Error Handling | β | β | β | β |
| Unit Tests | β | β | β | β |
| Documentation | β | β | β | β |
π API Consistency β
All libraries maintain consistent method naming for core operations:
Create Secret β
bash
sharokey create "secret" --hours 24 --views 1javascript
await client.createSecret("secret", {expirationHours: 24, maximumViews: 1});javascript
await Sharokey.create("secret", 24, 1);python
secret = await client.create("secret", 24, 1)List Secrets β
bash
sharokey list --limit 10 --status activejavascript
await client.getSecrets({limit: 10, status: 'active'});javascript
await Sharokey.list({limit: 10});python
secrets = await client.list(limit=10, status='active')Delete Secret β
bash
sharokey delete ABC123javascript
await client.deleteSecret('ABC123');javascript
await Sharokey.delete('ABC123');python
await client.delete('ABC123')π¦ Installation & Setup β
| Library | Installation | Configuration |
|---|---|---|
| CLI C# | winget install Sharokey.CLI | sharokey config --token xxx |
| JS Complete | npm install @sharokey/client | new SharokeyClient({token}) |
| JS Simple | npm install @sharokey/simple | Sharokey.config({token}) |
| Python SDK | pip install sharokey | SharokeyClient(token='xxx') |
π Encryption Compatibility β
All libraries use identical Zero Knowledge encryption:
- Algorithm: AES-GCM-256
- Key Derivation: PBKDF2 with 10,000 iterations
- Salt: Random 16 bytes per secret
- IV: Random 16 bytes per secret
- Cross-compatibility: Secrets created by any library can be decrypted by any other
π Performance Comparison β
| Metric | CLI C# | JS Complete | JS Simple | Python SDK |
|---|---|---|---|---|
| Bundle Size | ~15MB | ~2.1MB | ~850KB | ~45MB |
| Cold Start | ~100ms | ~50ms | ~20ms | ~200ms |
| Memory Usage | ~25MB | ~15MB | ~8MB | ~35MB |
| Encryption Speed | Fast | Fast | Fast | Medium |
| Network Efficiency | High | High | High | High |
π― Use Case Matrix β
| Use Case | Recommended Library | Why? |
|---|---|---|
| Shell Scripts | CLI C# | Native shell integration, pipe support |
| CI/CD Pipelines | CLI C# | Cross-platform executable, JSON output |
| React Applications | JS Simple | Small bundle, easy integration |
| Node.js APIs | JS Complete | Full features, TypeScript support |
| Vue.js Projects | JS Simple | Lightweight, minimal setup |
| Python Web Apps | Python SDK | Native Python integration |
| Data Science | Python SDK | Async support, Jupyter compatibility |
| Desktop Applications | CLI C# | System integration, file handling |
| Microservices | JS Complete or Python SDK | Depending on stack |
| Automation Scripts | CLI C# or Python SDK | Both excellent for automation |
π Migration Between Libraries β
From CLI to Python SDK β
python
# CLI: sharokey create "secret" --hours 24 --views 1
secret = await client.create("secret", 24, 1)
# CLI: sharokey list --limit 5
secrets = await client.list(limit=5)
# CLI: sharokey delete ABC123
await client.delete("ABC123")From JS Simple to JS Complete β
javascript
// JS Simple
await Sharokey.create("secret", 24, 1);
// JS Complete equivalent
await client.createSecret("secret", {
expirationHours: 24,
maximumViews: 1
});π Library Maturity β
| Library | Version | Stability | Last Updated |
|---|---|---|---|
| CLI C# | v2.1.0 | Stable | 2025-01-10 |
| JS Complete | v1.8.3 | Stable | 2025-01-12 |
| JS Simple | v1.5.2 | Stable | 2025-01-08 |
| Python SDK | v1.0.0 | New | 2025-01-14 |
π Conclusion β
- For automation: Choose CLI C# or Python SDK
- For web development: Choose JS Complete or JS Simple
- For enterprise: Choose CLI C# or JS Complete
- For simplicity: Choose JS Simple or Python SDK
All libraries provide identical security and Zero Knowledge encryption. Your choice depends on your development environment and feature requirements.
