You need Symfony 2.7+ with PcdxParameterEncryptionBundle already installed and enabled (please refer to its own documentation).
Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:
$ composer require picodexter/parameter-encryption-phpseclib-bundle "~1"
This command requires you to have Composer installed globally, as explained in the installation chapter of the Composer documentation.
Then, enable the bundle by adding it to the list of registered bundles
in the app/AppKernel.php file of your project:
<?php
// app/AppKernel.php
// ...
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
// ...
new Picodexter\ParameterEncryptionPhpseclibBundle\PcdxParameterEncryptionPhpseclibBundle(),
);
// ...
}
// ...
}You can now use the following services in the PcdxParameterEncryptionBundle
configuration:
- Encrypter:
- Symmetric ciphers:
pcdx_parameter_encryption_phpseclib.encryption.encrypter.phpseclib.3despcdx_parameter_encryption_phpseclib.encryption.encrypter.phpseclib.aes.KEY_LENGTHwhereKEY_LENGTHis the key length and can be 128, 192 or 256pcdx_parameter_encryption_phpseclib.encryption.encrypter.phpseclib.blowfishpcdx_parameter_encryption_phpseclib.encryption.encrypter.phpseclib.despcdx_parameter_encryption_phpseclib.encryption.encrypter.phpseclib.rc2pcdx_parameter_encryption_phpseclib.encryption.encrypter.phpseclib.rc4pcdx_parameter_encryption_phpseclib.encryption.encrypter.phpseclib.rijndael.KEY_LENGTHwhereKEY_LENGTHis the key length and can be 128, 160, 192, 224 or 256pcdx_parameter_encryption_phpseclib.encryption.encrypter.phpseclib.twofish
- Asymmetric ciphers:
pcdx_parameter_encryption_phpseclib.encryption.encrypter.phpseclib.rsa
- Symmetric ciphers:
- Decrypter:
- Symmetric ciphers:
pcdx_parameter_encryption_phpseclib.encryption.decrypter.phpseclib.3despcdx_parameter_encryption_phpseclib.encryption.decrypter.phpseclib.aes.KEY_LENGTHwhereKEY_LENGTHis the key length and can be 128, 192 or 256pcdx_parameter_encryption_phpseclib.encryption.decrypter.phpseclib.blowfishpcdx_parameter_encryption_phpseclib.encryption.decrypter.phpseclib.despcdx_parameter_encryption_phpseclib.encryption.decrypter.phpseclib.rc2pcdx_parameter_encryption_phpseclib.encryption.decrypter.phpseclib.rc4pcdx_parameter_encryption_phpseclib.encryption.decrypter.phpseclib.rijndael.KEY_LENGTHwhereKEY_LENGTHis the key length and can be 128, 160, 192, 224 or 256pcdx_parameter_encryption_phpseclib.encryption.decrypter.phpseclib.twofish
- Asymmetric ciphers:
pcdx_parameter_encryption_phpseclib.encryption.decrypter.phpseclib.rsa
- Symmetric ciphers:
Example:
Application configuration:
.. configuration-block:: .. code-block:: yaml # app/config/config.yml pcdx_parameter_encryption: algorithms: - id: 'phpseclib_aes_256' pattern: type: 'value_prefix' arguments: - '=#!PPE!psl:aes:256!#=' encryption: service: 'pcdx_parameter_encryption_phpseclib.encryption.encrypter.phpseclib.aes.256' key: '%parameter_encryption.phpseclib.aes.256.key%' decryption: service: 'pcdx_parameter_encryption_phpseclib.encryption.decrypter.phpseclib.aes.256' key: '%parameter_encryption.phpseclib.aes.256.key%' - id: 'phpseclib_rsa' pattern: type: 'value_prefix' arguments: - '=#!PPE!psl:rsa!#=' encryption: service: 'pcdx_parameter_encryption_phpseclib.encryption.encrypter.phpseclib.rsa' key: '%parameter_encryption.phpseclib.rsa.key.encryption%' decryption: service: 'pcdx_parameter_encryption_phpseclib.encryption.decrypter.phpseclib.rsa' key: '%parameter_encryption.phpseclib.rsa.key.decryption%' .. code-block:: xml <!-- app/config/config.xml --> <?xml version="1.0" encoding="UTF-8" ?> <container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ppe="https://picodexter.io/schema/dic/pcdx_parameter_encryption" xsi:schemaLocation="https://picodexter.io/schema/dic/pcdx_parameter_encryption https://picodexter.io/schema/dic/pcdx_parameter_encryption/pcdx_parameter_encryption-1.0.xsd"> <ppe:config> <ppe:algorithm id="phpseclib_aes_256"> <ppe:pattern type="value_prefix"> <ppe:argument>=#!PPE!psl:aes:256!#=</ppe:argument> </ppe:pattern> <ppe:encryption service="pcdx_parameter_encryption_phpseclib.encryption.encrypter.phpseclib.aes.256"> <ppe:key>%parameter_encryption.phpseclib.aes.256.key%</ppe:key> </ppe:encryption> <ppe:decryption service="pcdx_parameter_encryption_phpseclib.encryption.decrypter.phpseclib.aes.256"> <ppe:key>%parameter_encryption.phpseclib.aes.256.key%</ppe:key> </ppe:decryption> </ppe:algorithm> <ppe:algorithm id="phpseclib_rsa"> <ppe:pattern type="value_prefix"> <ppe:argument>=#!PPE!psl:rsa!#=</ppe:argument> </ppe:pattern> <ppe:encryption service="pcdx_parameter_encryption_phpseclib.encryption.encrypter.phpseclib.rsa"> <ppe:key>%parameter_encryption.phpseclib.rsa.key.encryption%</ppe:key> </ppe:encryption> <ppe:decryption service="pcdx_parameter_encryption_phpseclib.encryption.decrypter.phpseclib.rsa"> <ppe:key>%parameter_encryption.phpseclib.rsa.key.decryption%</ppe:key> </ppe:decryption> </ppe:algorithm> </ppe:config> </container> .. code-block:: php // app/config/config.php $container->loadFromExtension( 'pcdx_parameter_encryption', [ 'algorithms' => [ [ 'id' => 'phpseclib_aes_256', 'pattern' => [ 'type' => 'value_prefix', 'arguments' => ['=#!PPE!psl:aes:256!#='], ], 'encryption' => [ 'service' => 'pcdx_parameter_encryption_phpseclib.encryption.encrypter.phpseclib.aes.256', 'key' => '%parameter_encryption.phpseclib.aes.256.key%', ], 'decryption' => [ 'service' => 'pcdx_parameter_encryption_phpseclib.encryption.decrypter.phpseclib.aes.256', 'key' => '%parameter_encryption.phpseclib.aes.256.key%', ], ], [ 'id' => 'phpseclib_rsa', 'pattern' => [ 'type' => 'value_prefix', 'arguments' => ['=#!PPE!psl:rsa!#='], ], 'encryption' => [ 'service' => 'pcdx_parameter_encryption_phpseclib.encryption.encrypter.phpseclib.rsa', 'key' => '%parameter_encryption.phpseclib.rsa.key.encryption%', ], 'decryption' => [ 'service' => 'pcdx_parameter_encryption_phpseclib.encryption.decrypter.phpseclib.rsa', 'key' => '%parameter_encryption.phpseclib.rsa.key.decryption%', ], ], ], ] );Parameters:
.. configuration-block:: .. code-block:: yaml # app/config/parameters.yml parameters: parameter_encryption.phpseclib.aes.256.key: 'YOUR_ENCRYPTION_KEY' parameter_encryption.phpseclib.rsa.key.encryption: | -----BEGIN PUBLIC KEY----- [...] -----END PUBLIC KEY----- parameter_encryption.phpseclib.rsa.key.decryption: | -----BEGIN RSA PRIVATE KEY----- [...] -----END RSA PRIVATE KEY----- .. code-block:: xml <!-- app/config/parameters.xml --> <?xml version="1.0" encoding="UTF-8" ?> <container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"> <parameters> <parameter key="parameter_encryption.phpseclib.aes.256.key">YOUR_ENCRYPTION_KEY</parameter> <parameter key="parameter_encryption.phpseclib.rsa.key.encryption"> -----BEGIN PUBLIC KEY----- [...] -----END PUBLIC KEY----- </parameter> <parameter key="parameter_encryption.phpseclib.rsa.key.decryption"> -----BEGIN RSA PRIVATE KEY----- [...] -----END RSA PRIVATE KEY----- </parameter> </parameters> </container> .. code-block:: php // app/config/parameters.php $container->setParameter('parameter_encryption.phpseclib.aes.256.key', 'YOUR_ENCRYPTION_KEY'); $container->setParameter( 'parameter_encryption.phpseclib.rsa.key.encryption', '-----BEGIN PUBLIC KEY----- [...] -----END PUBLIC KEY-----' ); $container->setParameter( 'parameter_encryption.phpseclib.rsa.key.decryption', '-----BEGIN RSA PRIVATE KEY----- [...] -----END RSA PRIVATE KEY-----' );