minvws/laravel-crypto
Laravel加密功能提供者
v3.1.3
2023-02-16 01:13 UTC
Requires
- php: ^8.0||^8.1||^8.2
- laravel/framework: ^8.0||^9.0
Requires (Dev)
- mockery/mockery: ^1.4.3
- orchestra/testbench: ^6.0
- phpstan/phpstan: ^1.4
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.6
- vimeo/psalm: ^4.4 || ^5.0
Suggests
- ext-openssl: Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations.
- ext-sodium: Install the sodium extension in order to use the Sealbox Service.
README
要了解更多关于项目中使用的加密信息,请参阅我们的加密文档。
要求
- PHP >= 8.0
- Laravel >= 8.0
安装
- 使用composer安装此包
composer require minvws/laravel-crypto
- 如果您正在运行Laravel 5.5或更高版本(包将自动发现),则可以跳过此步骤。 在
config/app.php
中找到providers
数组键,并注册Laravel Crypto Service Provider
'providers' => [ ... MinVWS\Laravel\Providers\CryptoServiceProvider::class, ];
使用方法
本节介绍了不同加密功能的使用方法
CMS 加密
CMS 加密允许您轻松加密(并可能解密)数据。
使用方法
class UserController { protected CmsCryptoInterface $service; function index() { $cipherText = $this->service->encrypt('plaintext'); return new JsonResponse(['data' => $cipherText]); } }
Sealbox 加密
class UserController { protected SealboxCryptoInterface $service; function index() { $cipherText = $this->service->encrypt('plaintext'); return new JsonResponse(['data' => $cipherText]); } }
签名
class UserController { protected SignatureCryptoInterface $service; function index() { $sig = $this->service->sign('foobar', false); return new JsonResponse(['signature' => $sig]); } }
Laravel HTTP 中间件
步骤 1: 在app/Http/Kernel.php
中添加
/*/ Package Middleware /*/ ... 'cms_sign' => \MinVWS\Crypto\Laravel\Http\Middleware\CmsSignature::class,
步骤 2: 在您的路由中添加您的中间件
Route::middleware('cms_sign')->post( '/my/route', [RouteController::class, 'index'] );
环境变量
# OpenSSL CMS encryption
CMS_ENCRYPTION_CERT_PATHS A comma separated list of x509 certificate paths that are used for encrypting data
CMS_DECRYPTION_CERT_PATH A certificate file path that is used for decrypting data (optional)
CMS_DECRYPTION_CERT_KEY_PATH The key file for the cert that is used for decrypting data (optional)
# LibSodium sealbox
CMS_SEAL_PRIVKEY Our own private X25519 key
CMS_SEAL_RECIPIENT_PUBKEY Public X25519 key of the recipient
# OpenSSL CMS signing
CMS_SIGN_X509_CERT The certificate file to sign the data
CMS_SIGN_X509_KEY The key file to sign the data
CMS_SIGN_X509_PASS Optional passphrase for the key file
CMS_SIGN_X509_CHAIN Optional chain of certificates to be added to the signed data
运行测试
测试将基于您的PHP版本运行。在PHP7上,openssl功能不可用,将不会进行测试。
在没有PHP8(但有docker)时运行测试
您可以使用PHP8 docker镜像在运行PHP7时测试PHP8功能
docker run -ti -w /app -v $PWD:/app php:8-cli php /app/vendor/bin/phpunit
在PHP8上使用代码覆盖率
docker run -ti -w /app -v $PWD:/app php:8-cli phpdbg -qrr /app/vendor/bin/phpunit --coverage-html=./html