{"meta":{"title":"Chiffrement des secrets pour l’API REST","intro":"Pour créer ou mettre à jour un secret avec l’API REST, vous devez chiffrer la valeur du secret.","product":"API REST","breadcrumbs":[{"href":"/fr/enterprise-cloud@latest/rest","title":"API REST"},{"href":"/fr/enterprise-cloud@latest/rest/guides","title":"Guides"},{"href":"/fr/enterprise-cloud@latest/rest/guides/encrypting-secrets-for-the-rest-api","title":"Chiffrer des secrets"}],"documentType":"article"},"body":"# Chiffrement des secrets pour l’API REST\n\nPour créer ou mettre à jour un secret avec l’API REST, vous devez chiffrer la valeur du secret.\n\n## À propos du chiffrement des secrets\n\nPlusieurs endpoints d’API REST vous permettent de créer des secrets sur GitHub. Pour utiliser ces points de terminaison, vous devez chiffrer la valeur secrète à l’aide de libsodium. Pour plus d’informations, consultez la [documentation de libsodium](https://libsodium.gitbook.io/doc/bindings_for_other_languages).\n\nPour chiffrer un secret, vous avez besoin d’une clé publique codée en Base64. Vous pouvez obtenir une clé publique à partir de l’API REST. Pour déterminer le point de terminaison à utiliser pour obtenir la clé publique, consultez la documentation relative au paramètre `encrypted_value` du point de terminaison que vous allez utiliser pour créer un secret.\n\n## Exemple de chiffrement d’un secret à l’aide de Node.js\n\nSi vous utilisez Node.js, vous pouvez chiffrer votre secret à l’aide de la bibliothèque libsodium-wrappers. Pour plus d’informations, consultez [libsodium-wrappers](https://www.npmjs.com/package/libsodium-wrappers).\n\nDans l’exemple suivant, remplacez `YOUR_SECRET` par la valeur de texte brut que vous voulez chiffrer. Remplacez `YOUR_BASE64_KEY` par votre clé publique encodée en Base64. La documentation du point de terminaison que vous allez utiliser pour créer un secret vous indique quel point de terminaison vous pouvez utiliser pour obtenir la clé publique. \n`ORIGINAL` n’est pas un espace réservé ; il s’agit d’un paramètre pour la bibliothèque libsodium-wrappers.\n\n```javascript copy\nconst sodium = require('libsodium-wrappers')\n\nconst secret = 'YOUR_SECRET'\nconst key = 'YOUR_BASE64_KEY'\n\n//Check if libsodium is ready and then proceed.\nsodium.ready.then(() => {\n  // Convert the secret and key to a Uint8Array.\n  let binkey = sodium.from_base64(key, sodium.base64_variants.ORIGINAL)\n  let binsec = sodium.from_string(secret)\n\n  // Encrypt the secret using libsodium\n  let encBytes = sodium.crypto_box_seal(binsec, binkey)\n\n  // Convert the encrypted Uint8Array to Base64\n  let output = sodium.to_base64(encBytes, sodium.base64_variants.ORIGINAL)\n\n  // Print the output\n  console.log(output)\n});\n```\n\n## Exemple de chiffrement d’un secret à l’aide de Python\n\nSi vous utilisez Python 3, vous pouvez chiffrer votre secret à l’aide de la bibliothèque PyNaCl. Pour plus d’informations, consultez [PyNaCl](https://pynacl.readthedocs.io/en/latest/public/#nacl-public-sealedbox).\n\nDans l’exemple suivant, remplacez `YOUR_SECRET` par la valeur de texte brut que vous voulez chiffrer. Remplacez `YOUR_BASE64_KEY` par votre clé publique encodée en Base64. La documentation du point de terminaison que vous allez utiliser pour créer un secret vous indique quel point de terminaison vous pouvez utiliser pour obtenir la clé publique.\n\n```python copy\nfrom base64 import b64encode\nfrom nacl import encoding, public\n\ndef encrypt(public_key: str, secret_value: str) -> str:\n  \"\"\"Encrypt a Unicode string using the public key.\"\"\"\n  public_key = public.PublicKey(public_key.encode(\"utf-8\"), encoding.Base64Encoder())\n  sealed_box = public.SealedBox(public_key)\n  encrypted = sealed_box.encrypt(secret_value.encode(\"utf-8\"))\n  return b64encode(encrypted).decode(\"utf-8\")\n\nencrypt(\"YOUR_BASE64_KEY\", \"YOUR_SECRET\")\n```\n\n## Exemple de chiffrement d’un secret à l’aide de C#\n\nSi vous utilisez C#, vous pouvez chiffrer votre secret à l’aide du package Sodium.Core. Pour plus d’informations, consultez [Sodium.Core](https://www.nuget.org/packages/Sodium.Core/).\n\nDans l’exemple suivant, remplacez `YOUR_SECRET` par la valeur de texte brut que vous voulez chiffrer. Remplacez `YOUR_BASE64_KEY` par votre clé publique encodée en Base64. La documentation du point de terminaison que vous allez utiliser pour créer un secret vous indique quel point de terminaison vous pouvez utiliser pour obtenir la clé publique.\n\n```csharp copy\nvar secretValue = System.Text.Encoding.UTF8.GetBytes(\"YOUR_SECRET\");\nvar publicKey = Convert.FromBase64String(\"YOUR_BASE64_KEY\");\n\nvar sealedPublicKeyBox = Sodium.SealedPublicKeyBox.Create(secretValue, publicKey);\n\nConsole.WriteLine(Convert.ToBase64String(sealedPublicKeyBox));\n```\n\n## Exemple de chiffrement d’un secret à l’aide de Ruby\n\nSi vous utilisez Ruby, vous pouvez chiffrer votre secret à l’aide du gemme RbNaCl. Pour plus d’informations, consultez [RbNaCl](https://github.com/RubyCrypto/rbnacl).\n\nDans l’exemple suivant, remplacez `YOUR_SECRET` par la valeur de texte brut que vous voulez chiffrer. Remplacez `YOUR_BASE64_KEY` par votre clé publique encodée en Base64. La documentation du point de terminaison que vous allez utiliser pour créer un secret vous indique quel point de terminaison vous pouvez utiliser pour obtenir la clé publique.\n\n```ruby copy\nrequire \"rbnacl\"\nrequire \"base64\"\n\nkey = Base64.decode64(\"YOUR_BASE64_KEY\")\npublic_key = RbNaCl::PublicKey.new(key)\n\nbox = RbNaCl::Boxes::Sealed.from_public_key(public_key)\nencrypted_secret = box.encrypt(\"YOUR_SECRET\")\n\n# Print the base64 encoded secret\nputs Base64.strict_encode64(encrypted_secret)\n```"}