Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Synapse Core Laravel Package

arnaudmoncondhuy/synapse-core

View on GitHub
Deep Wiki
Context7

EncryptionServiceInterface

L'interface EncryptionServiceInterface est la sentinelle de la vie privée dans Synapse Core. Elle permet de chiffrer automatiquement les conversations et les données sensibles en base de données.

🛠 Pourquoi l'utiliser ?

  • Sécurité maximale : Même en cas de fuite de la base de données, les messages des utilisateurs restent illisibles.
  • Confiance : Offrir des garanties de confidentialité à vos clients.
  • RGPD : Facilite la mise en conformité en protégeant les données à caractère personnel (PII).

📋 Résumé du Contrat

Méthode Entrée Sortie Rôle
encrypt(string $data) Texte brut string Transforme le message en suite de caractères chiffrée.
decrypt(string $data) Texte chiffré string Restaure le message original pour l'affichage ou le LLM.
isEncrypted(string $data) Texte bool Détecte si une donnée est déjà chiffrée (prévention).

🚀 Exemple : Implémentation basée sur Libsodium

=== "SodiumEncryption.php"

```php
namespace App\Synapse\Security;

use ArnaudMoncondhuy\SynapseCore\Contract\EncryptionServiceInterface;

class SodiumEncryption implements EncryptionServiceInterface
{
    public function __construct(private string $key) {}

    public function encrypt(string $data): string
    {
        $nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
        $cipher = sodium_crypto_secretbox($data, $nonce, $this->key);
        return base64_encode($nonce . $cipher);
    }

    public function decrypt(string $data): string
    {
        $decoded = base64_decode($data);
        $nonce = substr($decoded, 0, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
        $cipher = substr($decoded, SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
        return sodium_crypto_secretbox_open($cipher, $nonce, $this->key);
    }

    public function isEncrypted(string $data): bool
    {
        return str_ends_with($data, '=='); // Détection simpliste
    }
}
```

💡 Conseils d'implémentation

[!CAUTION] Gestion des clés : Ne stockez JAMAIS votre clé de chiffrement dans le code source. Utilisez des variables d'environnement (.env.local) ou un coffre-fort de secrets (Vault).

  • Transparence : Synapse Core appelle automatiquement ces méthodes via le ConversationManager. Vous n'avez pas à gérer le chiffrement manuellement dans vos contrôleurs.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
daikazu/eloquent-salesforce-objects
unseen-codes/chat
romalytar/yammi-jobs-monitoring-laravel
kisame76/filament-db-table-state
nqxcode/laravel-lucene-search
dpfx/laravel-livewire-wizards
workos/workos-php-laravel
sofa/laravel-global-scope
nawasara/auth-primitives
adhocrat-io/arkhe-main
make-dev/orca-harpoon
itsemon245/lamet
baks-dev/dashboard
amoifr/pickle-panther-bundle
make-dev/orca
dmstr/symfony-system-resources-bundle
dmstr/symfony-job-queue-bundle
dmstr/openapi-json-schema-bundle
dmstr/keycloak-security-bundle
dmstr/doctrine-audit-log-bundle