fyre / encryption
An encryption library.
Requires
- fyre/config: ^4.0
- fyre/container: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.59
- fyre/php-cs-fixer-config: ^1.0
- phpunit/phpunit: ^11
This package is auto-updated.
Last update: 2024-12-17 00:47:23 UTC
README
FyreEncryption is a free, open-source encryption library for PHP.
Table Of Contents
Installation
Using Composer
composer require fyre/encryption
In PHP:
use Fyre\Encryption\EncryptionManager;
Basic Usage
$encryptionManager = new EncryptionManager($container, $config);
Default configuration options will be resolved from the "Encryption" key in the Config.
Autoloading
It is recommended to bind the EncryptionManager to the Container as a singleton.
$container->singleton(EncryptionManager::class);
Any dependencies will be injected automatically when loading from the Container.
$encryptionManager = $container->use(EncryptionManager::class);
Methods
Build
Build an Encrypter.
$options
is an array containing configuration options.
$encrypter = $encryptionManager->build($options);
Encrypter dependencies will be resolved automatically from the Container.
Clear
Clear all instances and configs.
$encryptionManager->clear();
Get Config
Get an Encrypter config.
$key
is a string representing the Encrypter key.
$config = $encryptionManager->getConfig($key);
Alternatively, if the $key
argument is omitted an array containing all configurations will be returned.
$config = $encryptionManager->getConfig();
Has Config
Determine whether an Encrypter config exists.
$key
is a string representing the Encrypter key, and will default toEncryptionManager::DEFAULT
.
$hasConfig = $encryptionManager->hasConfig($key);
Is Loaded
Determine whether an Encrypter instance is loaded.
$key
is a string representing the Encrypter key, and will default toEncryptionManager::DEFAULT
.
$isLoaded = $encryptionManager->isLoaded($key);
Set Config
Set the Encrypter config.
$key
is a string representing the Encrypter key.$options
is an array containing configuration options.
$encryptionManager->setConfig($key, $options);
Unload
Unload an Encrypter.
$key
is a string representing the Encrypter key, and will default toEncryptionManager::DEFAULT
.
$encryptionManager->unload($key);
Use
Load a shared Encrypter instance.
$key
is a string representing the Encrypter key, and will default toEncryptionManager::DEFAULT
.
$encrypter = $encryptionManager->use($key);
Encrypter dependencies will be resolved automatically from the Container.
Encrypters
You can load a specific encrypter by specifying the className
option of the $options
variable above.
Custom encrypters can be created by extending \Fyre\Encryption\Encrypter
, ensuring all below methods are implemented.
Decrypt
Decrypt data.
$data
is the encrypted data.$key
is a string representing the encryption key.
$decrypted = $encrypter->decrypt($data, $key);
Encrypt
Encrypt data.
$data
is the data to encrypt.$key
is a string representing the encryption key.
$encrypted = $encrypter->encrypt($data, $key);
Generate Key
Generate an encryption key.
$key = $encrypter->generateKey();
OpenSSL
The OpenSSL encrypter can be loaded using default configuration using the "openssl" key.
$encrypter = $encryptionManager->use('openssl');
You can also load the OpenSSL encrypter using custom configuration.
$options
is an array containing configuration options.className
must be set to\Fyre\Encryption\Handlers\OpenSSLEncrypter::class
.cipher
is a string representing the cipher, and will default to "AES-256-CTR".digest
is a string representing the digest, and will default to "SHA512".
$container->use(Config::class)->set('Encryption.openssl', $options);
Sodium
The Sodium encrypter is the default handler.
$encrypter = $encryptionManager->use();
You can also load the Sodium encrypter using custom configuration.
$options
is an array containing configuration options.className
must be set to\Fyre\Encryption\Handlers\SodiumEncrypter::class
.blockSize
is a number representing the block size, and will default to 16.digest
is a string representing the digest, and will default to "SHA512".
$container->use(Config::class)->set('Encryption.default', $options);