Skip to content

Documentation CLI C#

Interface en ligne de commande cross-platform pour l'API Sharokey construite en C# .NET. Parfaite pour l'automatisation, les scripts et l'intégration CI/CD.

🚀 Démarrage Rapide

Installation

  1. Télécharger l'exécutable :

    bash
    # Télécharger la dernière version
    curl -L https://github.com/sharokey/cli/releases/latest/download/sharokey.exe -o sharokey.exe
    
    # Ou via gestionnaire de packages (Windows)
    winget install Sharokey.CLI
  2. Le rendre accessible (ajouter au PATH ou utiliser le chemin complet)

  3. Configurer votre token API :

    bash
    sharokey config --token votre_token_api_ici
  4. Tester votre configuration :

    bash
    sharokey test

Premier Secret

bash
# Créer votre premier secret
sharokey create "Mon premier secret" --hours 24 --views 1

# Sortie attendue (format JSON) :
{
  "slug": "ABC123",
  "share_url": "https://votredomaine.com/secret/ABC123#key",
  "expires_at": "2025-08-10T12:00:00Z",
  "maximum_views": 1,
  "created_at": "2025-08-09T12:00:00Z"
}

📋 Commandes Disponibles

Configuration

Configurer le CLI avec vos paramètres API :

bash
# Définir le token API (requis)
sharokey config --token votre_token_api

# Optionnel : Définir une URL API personnalisée
sharokey config --api-url https://votre-instance-sharokey.com/api/v1

# Optionnel : Définir le timeout des requêtes (secondes)
sharokey config --timeout 30

# Optionnel : Activer les logs détaillés
sharokey config --logs --log-level debug

# Voir la configuration actuelle
sharokey config --show

Stockage de la configuration : %APPDATA%\Sharokey\config.json (chiffré)

Créer des Secrets

Créer des secrets avec diverses options de protection :

Création de Base

bash
# Secret simple
sharokey create "Mon mot de passe est : admin123" --hours 24 --views 1

# Avec description
sharokey create "Identifiants base de données" \
  --description "Accès DB de production" \
  --hours 72 --views 5

Avec Protection par Mot de Passe

bash
sharokey create "Données confidentielles" \
  --hours 48 --views 3 \
  --password "protection2024"

Avec Protection OTP

bash
# OTP par email
sharokey create "Détails compte bancaire" \
  --hours 24 --views 1 \
  --otp-email "[email protected]"

# OTP par SMS  
sharokey create "Codes d'accès serveur" \
  --hours 12 --views 2 \
  --otp-phone "+33123456789"

Limitation OTP

Les OTP par email et SMS sont mutuellement exclusifs - vous ne pouvez en utiliser qu'un par secret.

Avec Pièces Jointes

bash
# Pièce jointe unique
sharokey create "Documents contractuels" \
  --hours 168 --views 5 \
  --attach contrat.pdf

# Pièces jointes multiples
sharokey create "Fichiers du projet" \
  --hours 72 --views 3 \
  --attach specs.docx --attach wireframes.pdf --attach database.sql

Limites des pièces jointes : 10 fichiers maximum, 10 Mo au total

Exemple de Protection Complète

bash
sharokey create "Données hautement sensibles" \
  --description "Rapports financiers T4" \
  --hours 48 --views 2 \
  --password "Finance2024!" \
  --otp-email "[email protected]" \
  --attach rapport.xlsx --attach analyse.pdf

Lecture depuis l'Entrée

bash
# Depuis stdin
echo "Mon contenu secret" | sharokey create --hours 24 --views 1

# Depuis un fichier
sharokey create --file identifiants.txt --hours 12 --views 1

Générer des Mots de Passe

Générer des mots de passe aléatoires sécurisés :

bash
# Par défaut : 16 caractères
sharokey generate-password

# Longueur personnalisée (8-32 caractères)
sharokey generate-password --length 24

# Générer et créer un secret en une commande
sharokey generate-password --length 20 --create \
  --description "Nouveau mot de passe admin" \
  --hours 24 --views 1

Lister les Secrets

Voir vos secrets existants avec options de filtrage :

bash
# Lister tous les secrets (format JSON par défaut)
sharokey list

# Format tableau pour une meilleure lisibilité
sharokey list --table

# Limiter les résultats
sharokey list --limit 5

# Filtrer par statut
sharokey list --status active
sharokey list --status expired
sharokey list --status consumed

# Filtrer par créateur
sharokey list --creator "[email protected]"

# Combiner les filtres
sharokey list --status active --limit 10 --table

Détails d'un Secret

Récupérer des informations détaillées sur un secret spécifique :

bash
# Informations de base
sharokey get ABC123

# Mode verbeux (inclut toutes les métadonnées)
sharokey get ABC123 --verbose

Supprimer des Secrets

Supprimer des secrets avant leur expiration :

bash
# Supprimer un secret unique
sharokey delete ABC123

# Supprimer plusieurs secrets
sharokey delete ABC123 DEF456 GHI789

# Suppression groupée avec confirmation
sharokey delete ABC123 DEF456 --confirm

Statistiques

Voir les statistiques d'utilisation :

bash
# Statistiques globales
sharokey stats

# Statistiques en format tableau
sharokey stats --table

📧 Demandes de Secret

Demander à d'autres personnes de partager des secrets avec vous de manière sécurisée via des URL de demande générées.

Créer une Demande de Secret

bash
# Demande de secret de base
sharokey create-request --message "Veuillez partager les identifiants de base de données" --description "Accès DB de production"

# Avec temps d'expiration et limites de vues
sharokey create-request --message "Partager config VPN" --description "Configuration accès distant" --secret-hours 24 --request-hours 48 --max-views 1

# Avec livraison par email
sharokey create-request --message "Veuillez fournir les clés API" --description "Configuration intégration" --email-to "[email protected]" --email-reply "[email protected]"

# Exemple complet avec toutes les options
sharokey create-request \
  --message "Veuillez partager les identifiants de production de manière sécurisée" \
  --description "Accès déploiement Q4 nécessaire" \
  --secret-hours 24 \
  --request-hours 48 \
  --max-views 1 \
  --email-to "[email protected]" \
  --email-reply "[email protected]"

Lister les Demandes de Secret

bash
# Lister toutes les demandes
sharokey list-requests

# Filtrer par statut
sharokey list-requests --status active

# Limiter les résultats
sharokey list-requests --limit 10

# Filtres combinés
sharokey list-requests --status active --limit 5

Obtenir les Détails d'une Demande

bash
# Obtenir les détails d'une demande spécifique par ID
sharokey get-request 123

Supprimer une Demande

bash
# Supprimer et invalider une demande
sharokey delete-request 123

Statistiques des Demandes

bash
# Obtenir les statistiques de vos demandes de secret
sharokey request-stats

Paramètres des Demandes de Secret

ParamètreDescriptionDéfautRequis
--messageMessage affiché au destinataireAucunNon
--descriptionDescription interne pour votre référenceAucunNon
--secret-hoursHeures avant expiration du secret partagé24Non
--request-hoursHeures avant expiration de la demande48Non
--max-viewsVues maximum pour le secret partagé (1-10)1Non
--email-toEmail pour envoyer la demandeAucunNon
--email-replyEmail de réponse pour les notificationsAucunNon

⚙️ Options des Commandes

Options Globales

Disponibles pour toutes les commandes :

  • --json : Forcer la sortie JSON (par défaut)
  • --table : Utiliser le format tableau pour une meilleure lisibilité
  • --verbose : Activer la sortie détaillée et les logs
  • --help : Afficher l'aide de la commande
  • --version : Afficher la version du CLI

Options de Création

OptionDescriptionLimites
--hours <nombre>Expiration en heures1 - 1000 heures
--views <nombre>Vues maximum avant suppression1 - 10 vues
--description <texte>Description du secretOptionnel
--password <texte>Protection par mot de passeOptionnel
--otp-email <email>OTP par emailMutuellement exclusif avec SMS
--otp-phone <téléphone>OTP par SMSMutuellement exclusif avec email
--attach <fichier>Attacher un fichier (répétable)10 fichiers max, 10MB/fichier, 25MB total. Formats supportés
--file <chemin>Lire le contenu depuis un fichierAlternative à stdin

Options de Listage

OptionDescription
--limit <nombre>Nombre maximum de résultats à retourner
--status <statut>Filtrer par statut : active, expired, consumed
--creator <email>Filtrer par email du créateur
--tableAfficher en format tableau au lieu de JSON

Options de Génération de Mot de Passe

OptionDescriptionLimites
--length <nombre>Longueur du mot de passe8 - 32 caractères
--createCréer un secret avec le mot de passe généréCombine avec les options de création

🔐 Fonctionnalités de Sécurité

Chiffrement Zero Knowledge

Tous les secrets sont chiffrés côté client en utilisant :

  • Algorithme : AES-GCM-256
  • Dérivation de Clé : PBKDF2 avec 10 000 itérations
  • Système à deux clés : CléA (serveur) + CléB (fragment URL de partage)
  • Perfect Forward Secrecy : Chaque secret utilise des clés de chiffrement uniques

Sécurité de la Configuration

  • Token API stocké chiffré dans %APPDATA%\Sharokey\config.json
  • Aucune donnée sensible dans l'historique des commandes ou les logs
  • Génération sécurisée de mots de passe aléatoires
  • Pièces jointes chiffrées avant upload

📊 Formats de Sortie

Format JSON (Par Défaut)

json
{
  "slug": "ABC123",
  "share_url": "https://sharokey.com/s/ABC123#cle_chiffrement",
  "description": "Ma description de secret",
  "expires_at": "2025-08-10T12:00:00Z",
  "maximum_views": 5,
  "remaining_views": 5,
  "created_at": "2025-08-09T12:00:00Z",
  "has_password": true,
  "has_otp": false,
  "attachment_count": 2,
  "status": "active"
}

Format Tableau

┌─────────┬─────────────────────┬──────────┬────────────┬─────────────────────┐
│ Slug    │ Description         │ Status   │ Vues       │ Expire              │
├─────────┼─────────────────────┼──────────┼────────────┼─────────────────────┤
│ ABC123  │ Mot de passe DB     │ active   │ 3/5        │ 2025-08-10 12:00    │
│ DEF456  │ Identifiants API    │ active   │ 1/10       │ 2025-08-11 15:30    │
└─────────┴─────────────────────┴──────────┴────────────┴─────────────────────┘

🚨 Gestion d'Erreurs

Le CLI fournit des messages d'erreur clairs pour les problèmes courants :

Erreurs d'Authentification

bash
# Token invalide ou expiré
Erreur : Échec de l'authentification. Veuillez vérifier votre token API.
Conseil : Exécutez 'sharokey config --token VOTRE_TOKEN' pour le mettre à jour.

Erreurs de Validation

bash
# Temps d'expiration invalide
Erreur : Les heures doivent être comprises entre 1 et 1000.

# Fichier trop volumineux
Erreur : La pièce jointe 'document.pdf' dépasse la limite de 10 Mo.

# Trop de pièces jointes
Erreur : Maximum 10 pièces jointes autorisées par secret.

Erreurs Réseau

bash
# Timeout de connexion
Erreur : Délai d'attente de la requête après 30 secondes.
Conseil : Vérifiez votre connexion internet ou augmentez le timeout avec l'option --timeout.

🔧 Gestion de la Configuration

Emplacement du Fichier de Configuration

Windows : %APPDATA%\Sharokey\config.json
Linux/macOS : ~/.config/sharokey/config.json

Paramètres Disponibles

json
{
  "apiToken": "token_chiffre_ici",
  "apiUrl": "https://api.sharokey.com/api/v1",
  "timeout": 30,
  "enableLogs": false,
  "logLevel": "info"
}

Variables d'Environnement

Vous pouvez également utiliser des variables d'environnement :

bash
# Définir le token via une variable d'environnement
export SHAROKEY_API_TOKEN="votre_token_ici"
export SHAROKEY_API_URL="https://api.personnalisee.url/v1"
export SHAROKEY_TIMEOUT="60"

# Utiliser sans fichier de configuration
sharokey create "Mon secret" --hours 24 --views 1

🔄 Intégration CI/CD

Parfait pour l'automatisation et l'intégration continue :

Exemple GitHub Actions

yaml
- name: Créer un secret de déploiement
  run: |
    sharokey create "${{ secrets.DEPLOYMENT_KEY }}" \
      --description "Clé de déploiement pour la version ${{ github.sha }}" \
      --hours 2 --views 1 \
      --otp-email "[email protected]"
  env:
    SHAROKEY_API_TOKEN: ${{ secrets.SHAROKEY_TOKEN }}

Pipeline Jenkins

groovy
pipeline {
    agent any
    environment {
        SHAROKEY_API_TOKEN = credentials('sharokey-token')
    }
    stages {
        stage('Partager les Identifiants') {
            steps {
                script {
                    def result = sh(
                        script: 'sharokey create "Mot de passe DB : ${DB_PASS}" --hours 24 --views 1',
                        returnStdout: true
                    ).trim()
                    def json = readJSON text: result
                    echo "URL du secret : ${json.share_url}"
                }
            }
        }
    }
}

📝 Bonnes Pratiques

Sécurité

  1. Ne jamais committer les tokens API dans le contrôle de version
  2. Utiliser les variables d'environnement dans les environnements CI/CD
  3. Définir des temps d'expiration appropriés (les plus courts possibles)
  4. Limiter les vues au nombre minimum requis
  5. Utiliser la protection OTP pour les secrets sensibles

Automatisation

  1. Parser la sortie JSON pour un usage programmatique
  2. Gérer les erreurs avec grâce dans les scripts
  3. Utiliser des timeouts appropriés pour votre environnement
  4. Logger les opérations pour les pistes d'audit

Performance

  1. Utiliser les opérations groupées quand c'est possible
  2. Mettre en cache la configuration dans les environnements automatisés
  3. Définir des timeouts raisonnables pour les conditions réseau

🐛 Dépannage

Problèmes Courants

"Commande non trouvée"

  • S'assurer que sharokey.exe est dans votre PATH
  • Ou utiliser le chemin complet : C:\chemin\vers\sharokey.exe

"Échec de l'authentification"

  • Vérifier votre token API : sharokey config --show
  • Obtenir un nouveau token depuis votre tableau de bord Sharokey

"Timeout de connexion"

  • Vérifier la connectivité internet
  • Augmenter le timeout : sharokey config --timeout 60
  • Vérifier que l'URL de l'API est accessible

"Fichier non trouvé"

  • Vérifier les chemins des pièces jointes
  • S'assurer que les fichiers existent et sont lisibles
  • Vérifier la taille des fichiers (limite de 10 Mo par fichier)

Mode Debug

Activer les logs verbeux pour le dépannage :

bash
# Activer le mode debug
sharokey config --logs --log-level debug

# Exécuter une commande avec sortie verbeuse
sharokey create "test" --hours 1 --views 1 --verbose

🔗 Ressources Associées

Released under the MIT License.