{
  "tool": "crypt-decrypt",
  "name": "Crypt/De-crypt",
  "apiVersion": "1",
  "description": "Chiffre/déchiffre du texte ou un fichier avec un fichier-clé (SHA-256 de ses octets → clé AES-256-GCM) au lieu d'un mot de passe. Fichier : conteneur .sjk (nom/type chiffrés avec le contenu). Texte : préfixe SJCRYPT1: + base64(nonce+chiffré). 100 % dans le navigateur.",
  "url": "https://sui-juris.fr/p2p-tools/crypt-decrypt/",
  "ops": {
    "encryptFile": {
      "summary": "Chiffre un fichier avec un fichier-clé et renvoie le conteneur .sjk.",
      "args": {
        "fileBytes": { "type": "base64", "required": true, "description": "Le fichier en clair, encodé en base64." },
        "keyBytes":  { "type": "base64", "required": true, "description": "Le contenu du fichier-clé (n'importe quels octets partagés avec le correspondant), encodé en base64." },
        "filename":  { "type": "string", "required": false, "description": "Nom du fichier source (chiffré dans le conteneur)." },
        "mime":      { "type": "string", "required": false, "description": "Type MIME du fichier source (chiffré dans le conteneur)." }
      },
      "returns": { "bytes": "base64 du conteneur .sjk chiffré", "mime": "application/octet-stream", "filename": "nom suggéré (…​.sjk)" }
    },
    "decryptFile": {
      "summary": "Déchiffre un conteneur .sjk et restaure le fichier d'origine.",
      "args": {
        "fileBytes": { "type": "base64", "required": true, "description": "Le conteneur .sjk, encodé en base64." },
        "keyBytes":  { "type": "base64", "required": true, "description": "Le contenu du fichier-clé utilisé au chiffrement, encodé en base64." }
      },
      "returns": { "bytes": "base64 du fichier déchiffré", "mime": "type MIME d'origine", "filename": "nom d'origine restauré" }
    },
    "encryptText": {
      "summary": "Chiffre un texte et renvoie l'enveloppe SJCRYPT1:… prête à coller n'importe où.",
      "args": {
        "text":     { "type": "string", "required": true, "description": "Le texte en clair." },
        "keyBytes": { "type": "base64", "required": true, "description": "Le contenu du fichier-clé, encodé en base64." }
      },
      "returns": { "text": "chaîne SJCRYPT1:… (texte chiffré, prête à transmettre)" }
    },
    "decryptText": {
      "summary": "Déchiffre une enveloppe SJCRYPT1:… et renvoie le texte d'origine.",
      "args": {
        "text":     { "type": "string", "required": true, "description": "Le texte chiffré (SJCRYPT1:…)." },
        "keyBytes": { "type": "base64", "required": true, "description": "Le contenu du fichier-clé utilisé au chiffrement, encodé en base64." }
      },
      "returns": { "text": "texte déchiffré" }
    }
  }
}
