Skip to content

miserenkov/yii2-security

Repository files navigation

Yii2 Security extension

Yii2 extension for encryption and decryption by openssl public/private keys

License Latest Stable Version Latest Unstable Version Total Downloads Build Status Dependency Status

Support

GitHub issues.

Installation

The preferred way to install this extension is through composer.

Either run

php composer.phar require --prefer-dist miserenkov/yii2-security "^1.0"

or add

"miserenkov/yii2-security": "^1.0"

to the require section of your composer.json file.

Configuration

To use security extension, you should configure it in the application configuration like the following

'components' => [
    ...
    'security' => [
        'class' => 'miserenkov\security\Security',
        
        'certificateFile' => '',    // alias or path to default certificate file
        // or
        'publicKeyFile' => '',      // alias or path to default public key file
        
        'privateKeyFile' => '',     // alias or path to default private key file
        'passphrase' => '',         // passphrase to default private key (if exists)
    ],
    ...
],

Basic usages

Encryption

Asymmetric encryption

Will return base64 encoded encrypted data.

With default public key
Yii::$app->security->encryptByPublicKey(
    $data           // string data for ecnryption
);
With custom public key
Yii::$app->security->encryptByPublicKey(
    $data,          // string data for ecnryption
    $publicKey      // alias or path to custom public key or PEM formatted public key
);

Hybrid encryption

Will return array from encryption key and encrypted data (['key' => '...', 'data' => '...']).

With default public key
Yii::$app->security->encryptHybrid(
    $data           // string data for ecnryption
);
With custom public key
Yii::$app->security->encryptHybrid(
    $data,          // string data for ecnryption
    $publicKey      // alias or path to custom public key or PEM formatted public key
);

Decryption

Asymmetric decryption

Will return decrypted data.

With default private key
Yii::$app->security->decryptByPrivateKey(
    $data           // string data for decryption
);
With custom private key
Yii::$app->security->decryptByPrivateKey(
    $data,          // string data for decryption
    $privateKey,    // alias or path to custom private key or PEM formatted private key
    $passphrase     // passphrase for private key (if exists)
);

Hybrid encryption

Will return decrypted data.

With default private key
Yii::$app->security->decryptHybrid(
    $data,          // string data for decryption or array from 
                    // encryption key and ecnrypted data (['key' => '...', 'data' => '...'])
    $key            // encryption key if $data as string
);
With custom private key
Yii::$app->security->decryptHybrid(
    $data,          //string data for decryption or array from 
                    // encryption key and ecnrypted data (['key' => '...', 'data' => '...'])
    $key,           // encryption key if $data as string
    $privateKey,    // alias or path to custom private key or PEM formatted private key
    $passphrase     // passphrase for private key (if exists)
);