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-zend-crypt-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\ParameterEncryptionZendCryptBundle\PcdxParameterEncryptionZendCryptBundle(),
);
// ...
}
// ...
}You can now use the following services in the PcdxParameterEncryptionBundle
configuration:
- Encrypter:
- Symmetric ciphers:
pcdx_parameter_encryption_zend_crypt.encryption.encrypter.zend_crypt.mcrypt.3desalso known as Triple DESpcdx_parameter_encryption_zend_crypt.encryption.encrypter.zend_crypt.mcrypt.aesalso known as Rijndael-128pcdx_parameter_encryption_zend_crypt.encryption.encrypter.zend_crypt.mcrypt.blowfishpcdx_parameter_encryption_zend_crypt.encryption.encrypter.zend_crypt.mcrypt.cast.128pcdx_parameter_encryption_zend_crypt.encryption.encrypter.zend_crypt.mcrypt.cast.256pcdx_parameter_encryption_zend_crypt.encryption.encrypter.zend_crypt.mcrypt.despcdx_parameter_encryption_zend_crypt.encryption.encrypter.zend_crypt.mcrypt.rijndael.192pcdx_parameter_encryption_zend_crypt.encryption.encrypter.zend_crypt.mcrypt.rijndael.256pcdx_parameter_encryption_zend_crypt.encryption.encrypter.zend_crypt.mcrypt.saferpluspcdx_parameter_encryption_zend_crypt.encryption.encrypter.zend_crypt.mcrypt.serpentpcdx_parameter_encryption_zend_crypt.encryption.encrypter.zend_crypt.mcrypt.twofishpcdx_parameter_encryption_zend_crypt.encryption.encrypter.zend_crypt.openssl.aespcdx_parameter_encryption_zend_crypt.encryption.encrypter.zend_crypt.openssl.blowfishpcdx_parameter_encryption_zend_crypt.encryption.encrypter.zend_crypt.openssl.camelliapcdx_parameter_encryption_zend_crypt.encryption.encrypter.zend_crypt.openssl.cast5pcdx_parameter_encryption_zend_crypt.encryption.encrypter.zend_crypt.openssl.despcdx_parameter_encryption_zend_crypt.encryption.encrypter.zend_crypt.openssl.seed
- Asymmetric ciphers:
pcdx_parameter_encryption_zend_crypt.encryption.encrypter.zend_crypt.openssl.rsa
- Symmetric ciphers:
- Decrypter:
- Symmetric ciphers:
pcdx_parameter_encryption_zend_crypt.encryption.decrypter.zend_crypt.mcrypt.3desalso known as Triple DESpcdx_parameter_encryption_zend_crypt.encryption.decrypter.zend_crypt.mcrypt.aesalso known as Rijndael-128pcdx_parameter_encryption_zend_crypt.encryption.decrypter.zend_crypt.mcrypt.blowfishpcdx_parameter_encryption_zend_crypt.encryption.decrypter.zend_crypt.mcrypt.cast.128pcdx_parameter_encryption_zend_crypt.encryption.decrypter.zend_crypt.mcrypt.cast.256pcdx_parameter_encryption_zend_crypt.encryption.decrypter.zend_crypt.mcrypt.despcdx_parameter_encryption_zend_crypt.encryption.decrypter.zend_crypt.mcrypt.rijndael.192pcdx_parameter_encryption_zend_crypt.encryption.decrypter.zend_crypt.mcrypt.rijndael.256pcdx_parameter_encryption_zend_crypt.encryption.decrypter.zend_crypt.mcrypt.saferpluspcdx_parameter_encryption_zend_crypt.encryption.decrypter.zend_crypt.mcrypt.serpentpcdx_parameter_encryption_zend_crypt.encryption.decrypter.zend_crypt.mcrypt.twofishpcdx_parameter_encryption_zend_crypt.encryption.decrypter.zend_crypt.openssl.aespcdx_parameter_encryption_zend_crypt.encryption.decrypter.zend_crypt.openssl.blowfishpcdx_parameter_encryption_zend_crypt.encryption.decrypter.zend_crypt.openssl.camelliapcdx_parameter_encryption_zend_crypt.encryption.decrypter.zend_crypt.openssl.cast5pcdx_parameter_encryption_zend_crypt.encryption.decrypter.zend_crypt.openssl.despcdx_parameter_encryption_zend_crypt.encryption.decrypter.zend_crypt.openssl.seed
- Asymmetric ciphers:
pcdx_parameter_encryption_zend_crypt.encryption.decrypter.zend_crypt.openssl.rsa
- Symmetric ciphers:
Example:
Application configuration:
.. configuration-block:: .. code-block:: yaml # app/config/config.yml pcdx_parameter_encryption: algorithms: - id: 'zend_crypt_mcrypt_aes' pattern: type: 'value_prefix' arguments: - '=#!PPE!zc:mcrypt:aes!#=' encryption: service: 'pcdx_parameter_encryption_zend_crypt.encryption.encrypter.zend_crypt.mcrypt.aes' key: '%parameter_encryption.zend_crypt.mcrypt.aes.key%' decryption: service: 'pcdx_parameter_encryption_zend_crypt.encryption.decrypter.zend_crypt.mcrypt.aes' key: '%parameter_encryption.zend_crypt.mcrypt.aes.key%' - id: 'zend_crypt_openssl_rsa' pattern: type: 'value_prefix' arguments: - '=#!PPE!zc:openssl:rsa!#=' encryption: service: 'pcdx_parameter_encryption_zend_crypt.encryption.encrypter.zend_crypt.openssl.rsa' key: '%parameter_encryption.zend_crypt.openssl.rsa.key.encryption%' decryption: service: 'pcdx_parameter_encryption_zend_crypt.encryption.decrypter.zend_crypt.openssl.rsa' key: '%parameter_encryption.zend_crypt.openssl.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="zend_crypt_mcrypt_aes"> <ppe:pattern type="value_prefix"> <ppe:argument>=#!PPE!zc:mcrypt:aes!#=</ppe:argument> </ppe:pattern> <ppe:encryption service="pcdx_parameter_encryption_zend_crypt.encryption.encrypter.zend_crypt.mcrypt.aes"> <ppe:key>%parameter_encryption.zend_crypt.mcrypt.aes.key%</ppe:key> </ppe:encryption> <ppe:decryption service="pcdx_parameter_encryption_zend_crypt.encryption.decrypter.zend_crypt.mcrypt.aes"> <ppe:key>%parameter_encryption.zend_crypt.mcrypt.aes.key%</ppe:key> </ppe:decryption> </ppe:algorithm> <ppe:algorithm id="zend_crypt_openssl_rsa"> <ppe:pattern type="value_prefix"> <ppe:argument>=#!PPE!zc:openssl:rsa!#=</ppe:argument> </ppe:pattern> <ppe:encryption service="pcdx_parameter_encryption_zend_crypt.encryption.encrypter.zend_crypt.openssl.rsa"> <ppe:key>%parameter_encryption.zend_crypt.openssl.rsa.key.encryption%</ppe:key> </ppe:encryption> <ppe:decryption service="pcdx_parameter_encryption_zend_crypt.encryption.decrypter.zend_crypt.openssl.rsa"> <ppe:key>%parameter_encryption.zend_crypt.openssl.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' => 'zend_crypt_mcrypt_aes', 'pattern' => [ 'type' => 'value_prefix', 'arguments' => ['=#!PPE!zc:mcrypt:aes!#='], ], 'encryption' => [ 'service' => 'pcdx_parameter_encryption_zend_crypt.encryption.encrypter.zend_crypt.mcrypt.aes', 'key' => '%parameter_encryption.zend_crypt.mcrypt.aes.key%', ], 'decryption' => [ 'service' => 'pcdx_parameter_encryption_zend_crypt.encryption.decrypter.zend_crypt.mcrypt.aes', 'key' => '%parameter_encryption.zend_crypt.mcrypt.aes.key%', ], ], [ 'id' => 'zend_crypt_openssl_rsa', 'pattern' => [ 'type' => 'value_prefix', 'arguments' => ['=#!PPE!zc:openssl:rsa!#='], ], 'encryption' => [ 'service' => 'pcdx_parameter_encryption_zend_crypt.encryption.encrypter.zend_crypt.openssl.rsa', 'key' => '%parameter_encryption.zend_crypt.openssl.rsa.key.encryption%', ], 'decryption' => [ 'service' => 'pcdx_parameter_encryption_zend_crypt.encryption.decrypter.zend_crypt.openssl.rsa', 'key' => '%parameter_encryption.zend_crypt.openssl.rsa.key.decryption%', ], ], ], ] );Parameters:
.. configuration-block:: .. code-block:: yaml # app/config/parameters.yml parameters: parameter_encryption.zend_crypt.mcrypt.aes.key: 'YOUR_ENCRYPTION_KEY' parameter_encryption.zend_crypt.openssl.rsa.key.encryption: | -----BEGIN PUBLIC KEY----- [...] -----END PUBLIC KEY----- parameter_encryption.zend_crypt.openssl.rsa.key.decryption: | -----BEGIN PRIVATE KEY----- [...] -----END 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.zend_crypt.mcrypt.aes.key">YOUR_ENCRYPTION_KEY</parameter> <parameter key="parameter_encryption.zend_crypt.openssl.rsa.key.encryption"> -----BEGIN PUBLIC KEY----- [...] -----END PUBLIC KEY----- </parameter> <parameter key="parameter_encryption.zend_crypt.openssl.rsa.key.decryption"> -----BEGIN PRIVATE KEY----- [...] -----END PRIVATE KEY----- </parameter> </parameters> </container> .. code-block:: php // app/config/parameters.php $container->setParameter('parameter_encryption.zend_crypt.mcrypt.aes.key', 'YOUR_ENCRYPTION_KEY'); $container->setParameter( 'parameter_encryption.zend_crypt.openssl.rsa.key.encryption', '-----BEGIN PUBLIC KEY----- [...] -----END PUBLIC KEY-----' ); $container->setParameter( 'parameter_encryption.zend_crypt.openssl.rsa.key.decryption', '-----BEGIN PRIVATE KEY----- [...] -----END PRIVATE KEY-----' );