Skip to content

Documentation CLI

Sharokey CLI est un outil en ligne de commande pour gérer les secrets chiffrés avec l'architecture Zero Knowledge.

Installation

bash
# Download and configure
curl -L https://github.com/Sharokey/sharokey-cli/releases/latest/download/sharokey.exe -o sharokey.exe
sharokey config --token your_api_token_here
sharokey test

Commands

CommandDescriptionExample
createCréer un secret chiffrésharokey create "password" --hours 24 --views 1
listLister les secretssharokey list --limit 10 --status active
getObtenir les détails d'un secretsharokey get ABC123
deleteExpirer un secret (efface le contenu)sharokey delete ABC123
statsAfficher les statistiquessharokey stats
configConfigurer les paramètressharokey config --token TOKEN
testTester la connectivitésharokey test

Secret Requests

CommandDescriptionExample
create-requestCréer une requête de secretsharokey create-request --message "Share credentials" --secret-hours 24 --request-hours 48 --max-views 1 --locale fr
list-requestsLister les requêtes (plus récentes en premier)sharokey list-requests --status active --limit 10
get-requestObtenir les détails d'une requêtesharokey get-request abc123token456
delete-requestExpirer une requête (annule)sharokey delete-request abc123token456
request-statsStatistiques des requêtessharokey request-stats

Parameters

Create Secret

ParameterDescriptionExample
--hoursHeures d'expiration (1-1000)--hours 48
--viewsVues maximum (1-10)--views 3
--descriptionDescription du secret (max 255 caractères)--description "DB credentials"
--messageMessage pour le visualiseur (max 255 caractères)--message "Use carefully"
--passwordProtection additionnelle (4-100 caractères)--password "secret123"
--captchaActiver la vérification CAPTCHA--captcha
--otp-emailOTP par email (format email valide)--otp-email [email protected]
--otp-phoneOTP par SMS (format international)--otp-phone +33674747474
--ip-whitelistIPs publiques autorisées (max 255 caractères)--ip-whitelist "203.0.113.5,198.51.100.10"
--geolocationCodes ISO pays autorisés (max 255 caractères)--geolocation "FR,US,DE"
--attachAttacher des fichiers (max 10 fichiers, 10MB total)--attach file.pdf --attach doc.docx

Security Priority

Si plusieurs options de sécurité sont spécifiées, seul le niveau le plus élevé est appliqué :
captcha < password < otp-email < otp-phone (le plus élevé)

Exemple : --password "secret" --captcha --otp-phone "+33123456789" → Seul l'OTP téléphone sera utilisé

Configuration

ParameterDescriptionExample
--tokenToken API (requis)--token abcd1234...
--timeoutTimeout de requête (5-300s)--timeout 60
--logs-enabledActiver la journalisation--logs-enabled
--log-levelNiveau de log (Debug, Information, Warning, Error)--log-level Debug
--showAfficher la configuration actuelle--show

Output Format

ParameterDescription
--tableTableau lisible par l'humain
DefaultFormat JSON

Examples

Basic Usage

bash
# Simple secret
sharokey create "Database password: admin123" --hours 24 --views 1

# With description and message
sharokey create "API credentials" --description "Production API access" --message "Valid until project end" --hours 48 --views 3

# CAPTCHA protection
sharokey create "Server access" --captcha --hours 12 --views 1

# Password protection  
sharokey create "Sensitive data" --password "mySecretPass123" --hours 6 --views 2

# OTP email protection (higher priority than password)
sharokey create "Bank details" --password "backup" --otp-email "[email protected]" --hours 24 --views 1

# OTP SMS protection (highest priority - will override all others)
sharokey create "Critical access" --password "backup" --captcha --otp-email "[email protected]" --otp-phone "+33674747474" --hours 2 --views 1

# IP restriction (public IPs only)
sharokey create "External access" --ip-whitelist "203.0.113.5,198.51.100.10" --hours 48 --views 10

# Geolocation restriction
sharokey create "EU only data" --geolocation "FR,DE,BE,IT,ES" --hours 72 --views 5

# Combined restrictions
sharokey create "Restricted access" --password "secure123" --ip-whitelist "203.0.113.100" --geolocation "FR,US" --hours 24 --views 2

# With attachments
sharokey create "Contract files" --attach contract.pdf --attach terms.pdf --description "Client XYZ documents" --hours 48 --views 5

# Multiple attachments with security
sharokey create "Confidential reports" --attach report.pdf --attach data.xlsx --attach summary.docx --password "reports2024" --ip-whitelist "203.0.113.50,198.51.100.25" --hours 168 --views 3

# Read from stdin
echo "Secret from command line" | sharokey create --hours 2 --views 1
cat credentials.txt | sharokey create --description "Server credentials" --password "access123" --hours 48 --views 1

Secret Requests

bash
# Create request with email delivery (JSON output by default - direct API response)
sharokey create-request --message "Please share VPN credentials" --email-to [email protected] --email-reply [email protected] --request-hours 48 --secret-hours 24 --max-views 3 --locale fr

# Create request with table output
sharokey create-request --message "Share credentials" --email-to [email protected] --request-hours 24 --secret-hours 12 --max-views 1 --locale en --table

# Get request details by token (JSON by default - direct API response)
sharokey get-request abc123token456

# Get request details in table format
sharokey get-request abc123token456 --table

# List requests with filters (JSON by default - direct API response, most recent first)
sharokey list-requests --status active --limit 20

# List requests in table format (most recent first)
sharokey list-requests --status active --limit 20 --table

# Expire request by token (cancels and makes it inactive)
sharokey delete-request abc123token456

# View request statistics (JSON only - direct API response)
sharokey request-stats

# Request parameters: --secret-hours (1-1000), --request-hours (1-1000), --max-views (1-10)
# Email fields: --email-to and --email-reply (valid email format required)
# Locale: --locale (en or fr) - sets email language when sending notifications
# Limit returns most recent requests first (sorted by created_at desc)

Management

bash
# List all secrets
sharokey list

# List with filters
sharokey list --status active --creator [email protected] --limit 20
sharokey list --status expired --limit 10

# JSON output (default)
sharokey list --limit 5
# Output: {"success": true, "count": 2, "secrets": [{"slug": "ABC123", "maximum_views": 1, ...}]}

# Table output (human-readable)
sharokey list --table --limit 5
# Output:
# slug     description                    creator    maximum_views current_views expiration
# -----------------------------------------------------------------------------------------
# ABC123   My test secret                 API        1             0             2025-08-08...

# List secrets with limit
sharokey list --limit 3

# Get secret details
sharokey get ABC123

# Expire secret (clears content, forces expiration)
sharokey delete ABC123

# Statistics
sharokey stats

Limits & Constraints

Content & Text

  • Secret content : 255 caractères max (avant chiffrement)
  • Description : 255 caractères max
  • Message : 255 caractères max
  • Password : 4-100 caractères
  • IP whitelist : 255 caractères max (IPs publiques uniquement, séparées par des virgules)
  • Geolocation : 255 caractères max (codes pays ISO)

Attachments

  • Maximum files : 10 par secret
  • Total size : 10MB pour tous les fichiers
  • Supported formats : Documents (pdf, txt, docx, doc, xlsx, xls, pptx, ppt, rtf, odt, ods, odp), Images (jpg, jpeg, png, gif, bmp, webp, svg), Audio (mp3, wav, flac, m4a, aac, ogg), Video (mp4, avi, mkv, mov, wmv, webm), Archives (zip, rar, 7z, tar, gz)
  • Encryption : Fichiers chiffrés côté client avant téléchargement

Time & Access

  • Expiration : 1-1000 heures
  • Maximum views : 1-10 vues

Security

Zero Knowledge Architecture

  • Client-side encryption : AES-GCM-256 avec PBKDF2 (10 000 itérations)
  • Split keys : CléA (envoyée au serveur) + CléB (dans le fragment d'URL)
  • No server access : Le serveur ne peut pas déchiffrer les secrets
  • Perfect Forward Secrecy : Les clés ne sont jamais stockées côté serveur

Best Practices

  • Utiliser des temps d'expiration courts pour les données sensibles
  • Limiter le nombre de vues de manière appropriée
  • Choisir le niveau de sécurité approprié : OTP téléphone (le plus élevé) > OTP email > mot de passe > CAPTCHA
  • Combiner avec des restrictions IP (IPs publiques) et des restrictions géographiques pour le contrôle d'accès
  • Seul le niveau de sécurité le plus élevé sera appliqué si plusieurs sont spécifiés

Configuration Storage

  • Windows : %APPDATA%\Sharokey\config.json
  • Linux/Mac : ~/.config/sharokey/config.json
  • Token encryption : Stocké chiffré utilisant la protection de données de l'OS

Error Codes

CodeDescription
0Succès
1Erreur API (authentification, validation, serveur)
3Erreur réseau
4Erreur de configuration
5Erreur de validation des paramètres
10Secret non trouvé

Test & Diagnostics

Connectivity Test

La commande test effectue des diagnostics complets côté client :

bash
# Full connectivity test (6 tests)
sharokey test

# Quick test (config + network only)
sharokey test --quick

# Verbose output with details
sharokey test --verbose

Test Details :

  1. Configuration - Valide la présence du token API
  2. Network - Test ping + connectivité HTTP vers l'API
  3. Authentication - Vérifie la validité du token avec l'API
  4. Read Permissions - Teste la capacité de listage des secrets
  5. Statistics - Teste l'accès à l'endpoint de statistiques
  6. Write Permissions - Actuellement ignoré (évite les secrets de test)

Output Format :

  • Exit code : 0 = succès, 1 = échec
  • Affichage console avec emojis de statut et couleurs

Test Command Details

La commande test effectue des diagnostics complets côté client incluant la vérification de la santé du serveur, la validation de l'authentification, et les vérifications de permissions. Cela va au-delà d'une simple vérification de statut serveur pour garantir une fonctionnalité complète.

Troubleshooting

bash
# Check configuration
sharokey config --show

# Test connectivity  
sharokey test

# Enable debug logging
sharokey config --log-level Debug --logs-enabled

Problèmes courants :

  • Authentication error : Vérifier le token avec sharokey config --show
  • Timeout : Augmenter avec sharokey config --timeout 60
  • Secret not found : Vérifier le slug et le statut d'expiration
  • Validation failed : Vérifier les limites des paramètres (contenu secret ≤255 caractères, message ≤255 caractères, géolocalisation ≤255 caractères, etc.)
  • Attachment error : Vérifier les formats de fichiers (40+ formats supportés incluant documents, images, audio, vidéo, archives) et limite totale de 10MB
  • OTP format error : Utiliser le format international pour le téléphone (+33674747474)
  • IP whitelist error : Seules les adresses IP publiques sont supportées, pas de blocs CIDR ou d'IPs privées

Released under the MIT License.