diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-01-09 10:55:03 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-01-09 13:09:38 +0100 |
| commit | 04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa (patch) | |
| tree | 5c691241355c943a3c68ddb06b8cf8c60aa11319 /srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode | |
| parent | 7e0d85db834d6351ed85d01e5126ac31dc510b86 (diff) | |
| download | ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.gz ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.bz2 ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.zip | |
phpmyadmin working
Diffstat (limited to 'srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode')
13 files changed, 2418 insertions, 0 deletions
diff --git a/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/.scrutinizer.yml b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/.scrutinizer.yml new file mode 100644 index 0000000..c24935c --- /dev/null +++ b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/.scrutinizer.yml @@ -0,0 +1,40 @@ +checks: + php: + remove_extra_empty_lines: true + remove_php_closing_tag: true + remove_trailing_whitespace: true + fix_use_statements: + remove_unused: true + preserve_multiple: false + preserve_blanklines: true + order_alphabetically: true + fix_php_opening_tag: true + fix_linefeed: true + fix_line_ending: true + fix_identation_4spaces: true + fix_doc_comments: true + +filter: + paths: [src/*] + excluded_paths: [tests/*] + +coding_style: + php: { } + +build: + tests: + override: + - + command: 'vendor/bin/phpunit -c phpunit.xml' + coverage: + file: 'coverage/coverage-clover.xml' + format: 'clover' + nodes: + analysis: + tests: + override: + - php-scrutinizer-run + tests: true + +tools: + external_code_coverage: true diff --git a/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/.travis.yml b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/.travis.yml new file mode 100644 index 0000000..0e356a6 --- /dev/null +++ b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/.travis.yml @@ -0,0 +1,32 @@ +dist: trusty +language: php + +php: + - 5.6 + - 7.0 + - 7.1 + - 7.2 + - nightly + +# This triggers builds to run on the new TravisCI infrastructure. +# See: http://docs.travis-ci.com/user/workers/container-based-infrastructure/ +sudo: false + +## Cache composer +cache: + directories: + - $HOME/.composer/cache + +before_script: + - yes '' | pecl install imagick + - travis_retry composer update ${COMPOSER_FLAGS} --no-interaction --prefer-dist + +script: + - vendor/bin/phpunit --coverage-text --coverage-clover=coverage.clover + +after_script: + - | + if [[ "$TRAVIS_PHP_VERSION" == '7.2' ]]; then + wget https://scrutinizer-ci.com/ocular.phar + php ocular.phar code-coverage:upload --format=php-clover coverage.clover + fi diff --git a/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/CHANGELOG.md b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/CHANGELOG.md new file mode 100644 index 0000000..e022ae0 --- /dev/null +++ b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/CHANGELOG.md @@ -0,0 +1,14 @@ +## Change Log + +## [1.0.2] - 2018-10-10 +### Changed +- Dropped support for PHP 5.4 & PHP 5.5 +- Test QRCode by decoding it + +## [1.0.1] - 2018-10-10 +### Added +- Add support for more image renderer back ends + +## [1.0.0] - 2018-10-06 +### Added +- Package created diff --git a/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/LICENSE.md b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/LICENSE.md new file mode 100644 index 0000000..7300640 --- /dev/null +++ b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/LICENSE.md @@ -0,0 +1,7 @@ +Copyright 2014-2018 Phil, Antonio Carlos Ribeiro and All Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/README.md b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/README.md new file mode 100644 index 0000000..9130fd9 --- /dev/null +++ b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/README.md @@ -0,0 +1,111 @@ +# Google2FA QRCode + +<p align="center"> + <a href="https://packagist.org/packages/pragmarx/google2fa-qrcode"><img alt="Latest Stable Version" src="https://img.shields.io/packagist/v/pragmarx/google2fa-qrcode.svg?style=flat-square"></a> + <a href="LICENSE.md"><img alt="License" src="https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square"></a> + <a href="https://scrutinizer-ci.com/g/antonioribeiro/google2fa/?branch=master"><img alt="Code Quality" src="https://img.shields.io/scrutinizer/g/antonioribeiro/google2fa.svg?style=flat-square"></a> + <a href="https://travis-ci.org/antonioribeiro/google2fa"><img alt="Build" src="https://img.shields.io/travis/antonioribeiro/google2fa.svg?style=flat-square"></a> +</p> +<p align="center"> + <a href="https://packagist.org/packages/pragmarx/google2fa-qrcode"><img alt="Downloads" src="https://img.shields.io/packagist/dt/pragmarx/google2fa-qrcode.svg?style=flat-square"></a> + <a href="https://scrutinizer-ci.com/g/antonioribeiro/google2fa/?branch=master"><img alt="Coverage" src="https://img.shields.io/scrutinizer/coverage/g/antonioribeiro/google2fa.svg?style=flat-square"></a> + <a href="https://styleci.io/repos/24296182"><img alt="StyleCI" src="https://styleci.io/repos/24296182/shield"></a> + <a href="https://travis-ci.org/antonioribeiro/google2fa"><img alt="PHP" src="https://img.shields.io/badge/PHP-5.4%20--%207.2-brightgreen.svg?style=flat-square"></a> +</p> + +### QRCode For Google2FA + +This is package is [Goole2FA](https://github.com/antonioribeiro/google2fa) integrated with a QRCode generator, providing an easy way to plot QRCode for your two factor authentication. For documentation related to Google2FA, please check the [documentation of the main package](https://github.com/antonioribeiro/google2fa). + +## Requirements + +- PHP 5.4+ + +## Installing + +Use Composer to install it: + +``` +composer require pragmarx/google2fa-qrcode +``` + +## Using It + +### Instantiate it directly + +```php +use PragmaRX\Google2FAQRCode\Google2FA; + +$google2fa = new Google2FA(); + +return $google2fa->generateSecretKey(); +``` + +## Generating QRCodes + +The securer way of creating QRCode is to do it yourself or using a library. First you have to install the BaconQrCode package, as stated above, then you just have to generate the inline string using: + +```php +$inlineUrl = $google2fa->getQRCodeInline( + $companyName, + $companyEmail, + $secretKey +); +``` + +And use it in your blade template this way: + +```html +<img src="{{ $inlineUrl }}"> +``` + +```php +$secretKey = $google2fa->generateSecretKey(16, $userId); +``` + +## Show the QR Code to your user, via Google Apis + +It's insecure to use it via Google Apis, so you have to enable it before using it. + +```php +$google2fa->setAllowInsecureCallToGoogleApis(true); + +$google2fa_url = $google2fa->getQRCodeGoogleUrl( + 'YourCompany', + $user->email, + $user->google2fa_secret +); + +/// and in your view: + +<img src="{{ $google2fa_url }}" alt=""> +``` + +And they should see and scan the QR code to their applications: + + + +And to verify, you just have to: + +```php +$secret = $request->input('secret'); + +$valid = $google2fa->verifyKey($user->google2fa_secret, $secret); +``` + +## Tests + +The package tests were written with [PHPUnit](https://phpunit.de/). + +## Authors + +- [Antonio Carlos Ribeiro](http://twitter.com/iantonioribeiro) +- [All Contributors](https://github.com/antonioribeiro/google2fa/graphs/contributors) + +## License + +Google2FAQRCode is licensed under the MIT License - see the [LICENSE](LICENSE.md) file for details. + +## Contributing + +Pull requests and issues are more than welcome. diff --git a/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/composer.json b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/composer.json new file mode 100644 index 0000000..61fbb7c --- /dev/null +++ b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/composer.json @@ -0,0 +1,36 @@ +{ + "name": "pragmarx/google2fa-qrcode", + "description": "QR Code package for Google2FA", + "keywords": ["authentication", "two factor authentication", "google2fa", "2fa", "QRCode", "qr code"], + "license": "MIT", + "authors": [ + { + "name": "Antonio Carlos Ribeiro", + "email": "acr@antoniocarlosribeiro.com", + "role": "Creator & Designer" + } + ], + "require": { + "php": ">=5.4", + "pragmarx/google2fa": ">=4.0", + "bacon/bacon-qr-code": "~1.0|~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~4|~5|~6|~7", + "khanamiryan/qrcode-detector-decoder": "^1.0" + }, + "autoload": { + "psr-4": { + "PragmaRX\\Google2FAQRCode\\": "src/", + "PragmaRX\\Google2FAQRCode\\Tests\\": "tests/" + } + }, + "extra": { + "component": "package", + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "minimum-stability": "dev", + "prefer-stable": true +} diff --git a/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/composer.lock b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/composer.lock new file mode 100644 index 0000000..288d67a --- /dev/null +++ b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/composer.lock @@ -0,0 +1,1903 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "content-hash": "f78415814ce04fef409e8941a568f6a7", + "packages": [ + { + "name": "bacon/bacon-qr-code", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/Bacon/BaconQrCode.git", + "reference": "eaac909da3ccc32b748a65b127acd8918f58d9b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/eaac909da3ccc32b748a65b127acd8918f58d9b0", + "reference": "eaac909da3ccc32b748a65b127acd8918f58d9b0", + "shasum": "" + }, + "require": { + "dasprid/enum": "^1.0", + "ext-iconv": "*", + "php": "^7.1" + }, + "require-dev": { + "phly/keep-a-changelog": "^1.4", + "phpunit/phpunit": "^6.4", + "squizlabs/php_codesniffer": "^3.1" + }, + "suggest": { + "ext-imagick": "to generate QR code images" + }, + "type": "library", + "autoload": { + "psr-4": { + "BaconQrCode\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Ben Scholzen 'DASPRiD'", + "email": "mail@dasprids.de", + "homepage": "http://www.dasprids.de", + "role": "Developer" + } + ], + "description": "BaconQrCode is a QR code generator for PHP.", + "homepage": "https://github.com/Bacon/BaconQrCode", + "time": "2018-04-25T17:53:56+00:00" + }, + { + "name": "dasprid/enum", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/DASPRiD/Enum.git", + "reference": "631ef6e638e9494b0310837fa531bedd908fc22b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/DASPRiD/Enum/zipball/631ef6e638e9494b0310837fa531bedd908fc22b", + "reference": "631ef6e638e9494b0310837fa531bedd908fc22b", + "shasum": "" + }, + "require-dev": { + "phpunit/phpunit": "^6.4", + "squizlabs/php_codesniffer": "^3.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DASPRiD\\Enum\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Ben Scholzen 'DASPRiD'", + "email": "mail@dasprids.de", + "homepage": "https://dasprids.de/" + } + ], + "description": "PHP 7.1 enum implementation", + "keywords": [ + "enum", + "map" + ], + "time": "2017-10-25T22:45:27+00:00" + }, + { + "name": "paragonie/constant_time_encoding", + "version": "v2.2.3", + "source": { + "type": "git", + "url": "https://github.com/paragonie/constant_time_encoding.git", + "reference": "55af0dc01992b4d0da7f6372e2eac097bbbaffdb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/55af0dc01992b4d0da7f6372e2eac097bbbaffdb", + "reference": "55af0dc01992b4d0da7f6372e2eac097bbbaffdb", + "shasum": "" + }, + "require": { + "php": "^7" + }, + "require-dev": { + "phpunit/phpunit": "^6|^7", + "vimeo/psalm": "^1|^2" + }, + "type": "library", + "autoload": { + "psr-4": { + "ParagonIE\\ConstantTime\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com", + "role": "Maintainer" + }, + { + "name": "Steve 'Sc00bz' Thomas", + "email": "steve@tobtu.com", + "homepage": "https://www.tobtu.com", + "role": "Original Developer" + } + ], + "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)", + "keywords": [ + "base16", + "base32", + "base32_decode", + "base32_encode", + "base64", + "base64_decode", + "base64_encode", + "bin2hex", + "encoding", + "hex", + "hex2bin", + "rfc4648" + ], + "time": "2019-01-03T20:26:31+00:00" + }, + { + "name": "paragonie/random_compat", + "version": "v9.99.99", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", + "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", + "shasum": "" + }, + "require": { + "php": "^7" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "polyfill", + "pseudorandom", + "random" + ], + "time": "2018-07-02T15:55:56+00:00" + }, + { + "name": "pragmarx/google2fa", + "version": "v5.0.0", + "source": { + "type": "git", + "url": "https://github.com/antonioribeiro/google2fa.git", + "reference": "17c969c82f427dd916afe4be50bafc6299aef1b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/17c969c82f427dd916afe4be50bafc6299aef1b4", + "reference": "17c969c82f427dd916afe4be50bafc6299aef1b4", + "shasum": "" + }, + "require": { + "paragonie/constant_time_encoding": "~1.0|~2.0", + "paragonie/random_compat": ">=1", + "php": ">=5.4", + "symfony/polyfill-php56": "~1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4|~5|~6" + }, + "type": "library", + "extra": { + "component": "package", + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "PragmaRX\\Google2FA\\": "src/", + "PragmaRX\\Google2FA\\Tests\\": "tests/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Antonio Carlos Ribeiro", + "email": "acr@antoniocarlosribeiro.com", + "role": "Creator & Designer" + } + ], + "description": "A One Time Password Authentication package, compatible with Google Authenticator.", + "keywords": [ + "2fa", + "Authentication", + "Two Factor Authentication", + "google2fa" + ], + "time": "2019-03-19T22:44:16+00:00" + }, + { + "name": "symfony/polyfill-php56", + "version": "v1.10.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php56.git", + "reference": "ff208829fe1aa48ab9af356992bb7199fed551af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/ff208829fe1aa48ab9af356992bb7199fed551af", + "reference": "ff208829fe1aa48ab9af356992bb7199fed551af", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/polyfill-util": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php56\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2018-09-21T06:26:08+00:00" + }, + { + "name": "symfony/polyfill-util", + "version": "v1.10.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-util.git", + "reference": "3b58903eae668d348a7126f999b0da0f2f93611c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/3b58903eae668d348a7126f999b0da0f2f93611c", + "reference": "3b58903eae668d348a7126f999b0da0f2f93611c", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Util\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony utilities for portability of PHP codes", + "homepage": "https://symfony.com", + "keywords": [ + "compat", + "compatibility", + "polyfill", + "shim" + ], + "time": "2018-09-30T16:36:12+00:00" + } + ], + "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "^6.2.3", + "squizlabs/php_codesniffer": "^3.0.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2017-07-22T11:58:36+00:00" + }, + { + "name": "khanamiryan/qrcode-detector-decoder", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/khanamiryan/php-qrcode-detector-decoder.git", + "reference": "a75482d3bc804e3f6702332bfda6cccbb0dfaa76" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/khanamiryan/php-qrcode-detector-decoder/zipball/a75482d3bc804e3f6702332bfda6cccbb0dfaa76", + "reference": "a75482d3bc804e3f6702332bfda6cccbb0dfaa76", + "shasum": "" + }, + "require": { + "php": "^5.6|^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Zxing\\": "lib/" + }, + "files": [ + "lib/Common/customFunctions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ashot Khanamiryan", + "email": "a.khanamiryan@gmail.com", + "homepage": "https://github.com/khanamiryan", + "role": "Developer" + } + ], + "description": "QR code decoder / reader", + "homepage": "https://github.com/khanamiryan/php-qrcode-detector-decoder/", + "keywords": [ + "barcode", + "qr", + "zxing" + ], + "time": "2018-04-26T11:41:33+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.8.1", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2018-06-11T23:09:50+00:00" + }, + { + "name": "phar-io/manifest", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^2.0", + "php": "^5.6 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "time": "2018-07-08T19:23:20+00:00" + }, + { + "name": "phar-io/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "time": "2018-07-08T19:19:57+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2017-09-11T18:02:19+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "4.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08", + "shasum": "" + }, + "require": { + "php": "^7.0", + "phpdocumentor/reflection-common": "^1.0.0", + "phpdocumentor/type-resolver": "^0.4.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "doctrine/instantiator": "~1.0.5", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2017-11-30T07:14:17+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.4.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", + "shasum": "" + }, + "require": { + "php": "^5.5 || ^7.0", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "time": "2017-07-14T14:27:02+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", + "sebastian/comparator": "^1.1|^2.0|^3.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2018-08-05T17:53:17+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "6.1.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^7.1", + "phpunit/php-file-iterator": "^2.0", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^3.0", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^3.1 || ^4.0", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "suggest": { + "ext-xdebug": "^2.6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2018-10-31T16:06:48+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "050bedf145a257b1ff02746c31894800e5122946" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", + "reference": "050bedf145a257b1ff02746c31894800e5122946", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2018-09-13T20:33:42+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21T13:50:34+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "8b389aebe1b8b0578430bda0c7c95a829608e059" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/8b389aebe1b8b0578430bda0c7c95a829608e059", + "reference": "8b389aebe1b8b0578430bda0c7c95a829608e059", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2019-02-20T10:12:59+00:00" + }, + { + "name": "phpunit/php-token-stream", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "c99e3be9d3e85f60646f152f9002d46ed7770d18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/c99e3be9d3e85f60646f152f9002d46ed7770d18", + "reference": "c99e3be9d3e85f60646f152f9002d46ed7770d18", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2018-10-30T05:52:18+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "7.5.7", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "eb343b86753d26de07ecba7868fa983104361948" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/eb343b86753d26de07ecba7868fa983104361948", + "reference": "eb343b86753d26de07ecba7868fa983104361948", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.1", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "^1.7", + "phar-io/manifest": "^1.0.2", + "phar-io/version": "^2.0", + "php": "^7.1", + "phpspec/prophecy": "^1.7", + "phpunit/php-code-coverage": "^6.0.7", + "phpunit/php-file-iterator": "^2.0.1", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^2.1", + "sebastian/comparator": "^3.0", + "sebastian/diff": "^3.0", + "sebastian/environment": "^4.0", + "sebastian/exporter": "^3.1", + "sebastian/global-state": "^2.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^2.0", + "sebastian/version": "^2.0.1" + }, + "conflict": { + "phpunit/phpunit-mock-objects": "*" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*", + "phpunit/php-invoker": "^2.0" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.5-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2019-03-16T07:31:17+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "time": "2017-03-04T06:30:41+00:00" + }, + { + "name": "sebastian/comparator", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "shasum": "" + }, + "require": { + "php": "^7.1", + "sebastian/diff": "^3.0", + "sebastian/exporter": "^3.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2018-07-12T15:12:46+00:00" + }, + { + "name": "sebastian/diff", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.5 || ^8.0", + "symfony/process": "^2 || ^3.3 || ^4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "time": "2019-02-04T06:01:07+00:00" + }, + { + "name": "sebastian/environment", + "version": "4.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "6fda8ce1974b62b14935adc02a9ed38252eca656" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6fda8ce1974b62b14935adc02a9ed38252eca656", + "reference": "6fda8ce1974b62b14935adc02a9ed38252eca656", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.5" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2019-02-01T05:27:49+00:00" + }, + { + "name": "sebastian/exporter", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2017-04-03T13:19:02+00:00" + }, + { + "name": "sebastian/global-state", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2017-04-27T15:39:26+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "time": "2017-08-03T12:35:26+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "773f97c67f28de00d397be301821b06708fca0be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", + "reference": "773f97c67f28de00d397be301821b06708fca0be", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "time": "2017-03-29T09:07:27+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2017-03-03T06:23:57+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2018-10-04T04:07:39+00:00" + }, + { + "name": "sebastian/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2016-10-03T07:35:21+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.10.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "backendtea@gmail.com" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2018-08-06T14:22:27+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "time": "2017-04-07T12:08:54+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", + "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0", + "symfony/polyfill-ctype": "^1.8" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2018-12-25T11:19:39+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": ">=5.4" + }, + "platform-dev": [] +} diff --git a/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/phpunit.xml b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/phpunit.xml new file mode 100644 index 0000000..79ac51d --- /dev/null +++ b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/phpunit.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<phpunit backupGlobals="false" + backupStaticAttributes="false" + bootstrap="tests/bootstrap.php" + colors="true" + convertErrorsToExceptions="true" + convertNoticesToExceptions="true" + convertWarningsToExceptions="true" + processIsolation="false" + stopOnError="false" + stopOnFailure="false" + verbose="true" +> + <testsuites> + <testsuite name="Laravel Test Suite"> + <directory suffix="Test.php">./tests</directory> + </testsuite> + </testsuites> + + <logging> + <log type="coverage-html" target="coverage/" lowUpperBound="35" highLowerBound="70"/> + <log type="coverage-clover" target="coverage/coverage-clover.xml" lowUpperBound="35" highLowerBound="70"/> + <log type="coverage-text" target="php://stdout" showUncoveredFiles="true"/> + </logging> + + <filter> + <whitelist addUncoveredFilesFromWhitelist="true" processUncoveredFilesFromWhitelist="true"> + <directory suffix=".php">./src</directory> + <exclude></exclude> + </whitelist> + </filter> +</phpunit> diff --git a/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/src/Google2FA.php b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/src/Google2FA.php new file mode 100644 index 0000000..a4d6340 --- /dev/null +++ b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/src/Google2FA.php @@ -0,0 +1,134 @@ +<?php + +namespace PragmaRX\Google2FAQRCode; + +use BaconQrCode\Renderer\Image\Png; +use BaconQrCode\Renderer\Image\RendererInterface; +use BaconQrCode\Writer as BaconQrCodeWriter; +use PragmaRX\Google2FA\Google2FA as Google2FAPackage; + +use BaconQrCode\Renderer\ImageRenderer; +use BaconQrCode\Renderer\Image\ImageBackEndInterface; +use BaconQrCode\Renderer\Image\ImagickImageBackEnd; +use BaconQrCode\Renderer\RendererStyle\RendererStyle; +use BaconQrCode\Writer; + +class Google2FA extends Google2FAPackage +{ + /** + * @var ImageBackEndInterface|RendererInterface|null $imageBackEnd + */ + protected $imageBackEnd; + + /** + * Google2FA constructor. + * + * @param ImageBackEndInterface|RendererInterface|null $imageBackEnd + */ + public function __construct($imageBackEnd = null) + { + if ($this->getBaconQRCodeVersion() === 1) { + if ($imageBackEnd instanceof RendererInterface) { + $this->imageBackEnd = $imageBackEnd; + } else { + $this->imageBackEnd = new Png(); + } + } else { + if ($imageBackEnd instanceof ImageBackEndInterface) { + $this->imageBackEnd = $imageBackEnd; + } else { + $this->imageBackEnd = new ImagickImageBackEnd(); + } + } + } + + /** + * Generates a QR code data url to display inline. + * + * @param string $company + * @param string $holder + * @param string $secret + * @param int $size + * @param string $encoding Default to UTF-8 + * + * @return string + */ + public function getQRCodeInline($company, $holder, $secret, $size = 200, $encoding = 'utf-8') + { + return $this->getBaconQRCodeVersion() === 1 + ? $this->getQRCodeInlineV1($company, $holder, $secret, $size, $encoding) + : $this->getQRCodeInlineV2($company, $holder, $secret, $size, $encoding); + } + + /** + * Generates a QR code data url to display inline for Bacon QRCode v1 + * + * @param string $company + * @param string $holder + * @param string $secret + * @param int $size + * @param string $encoding Default to UTF-8 + * + * @return string + */ + public function getQRCodeInlineV1($company, $holder, $secret, $size = 200, $encoding = 'utf-8') + { + $url = $this->getQRCodeUrl($company, $holder, $secret); + + $renderer = $this->imageBackEnd; + $renderer->setWidth($size); + $renderer->setHeight($size); + + $bacon = new BaconQrCodeWriter($renderer); + $data = $bacon->writeString($url, $encoding); + + if ($this->imageBackEnd instanceof Png) { + return 'data:image/png;base64,'.base64_encode($data); + } + return $data; + } + + /** + * Generates a QR code data url to display inline for Bacon QRCode v2 + * + * @param string $company + * @param string $holder + * @param string $secret + * @param int $size + * @param string $encoding Default to UTF-8 + * + * @return string + */ + public function getQRCodeInlineV2($company, $holder, $secret, $size = 200, $encoding = 'utf-8') + { + $renderer = new ImageRenderer( + (new RendererStyle($size))->withSize($size), + $this->imageBackEnd + ); + + $bacon = new Writer($renderer); + + $data = $bacon->writeString( + $this->getQRCodeUrl($company, $holder, $secret), + $encoding + ); + + if ($this->imageBackEnd instanceof ImagickImageBackEnd) { + return 'data:image/png;base64,'.base64_encode($data); + } + + return $data; + } + + /** + * Get Bacon QRCode current version + * + * @return int + */ + public function getBaconQRCodeVersion() + { + return class_exists('BaconQrCode\Renderer\Image\Png') && class_exists('BaconQrCode\Writer') + ? 1 + : 2; + } +} diff --git a/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/tests/.gitkeep b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/tests/.gitkeep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/tests/.gitkeep diff --git a/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/tests/Constants.php b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/tests/Constants.php new file mode 100644 index 0000000..c5970ef --- /dev/null +++ b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/tests/Constants.php @@ -0,0 +1,14 @@ +<?php + +namespace PragmaRX\Google2FAQRCode\Tests; + +class Constants +{ + const SECRET = 'ADUMJO5634NPDEKW'; + + const QRCODEPHPABOVE72_V1 = 'data:image/png;base64,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'; + + const QRCODEPHPBELOW72_V1 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAIAAAAiOjnJAAAFjklEQVR4nO3dwY6dOhBF0ZdW/v+TW28WMbhWV1Fn25DsNYzAkOSIW7JN8ev7+/s/Ke3r9A3o72SwhDBYQhgsIQyWEAZLCIMlhMESwmAJYbCEMFhCGCwhDJYQBksIgyWEwRLCYAnx+95pX1/5RE72sq7upzLm9dzJ8ZN7qFyrMuZz/l98YglhsIQwWELcrLGuiBqiWyusah269uoeU3EdZ3Jd4v+lMcLwfOkjgyWEwRIiUGNdVX6bK7/9q5opVUt1a7vuPVTqpMp1u8dMzs2+E+8TSwiDJYTBEiJcY6VUappU7dIdZzK/1a2Tun/f5/CJJYTBEsJgCfHQGitVT3Trs8pcVGp9s4vY78XxiSWEwRLCYAkRrrFSv/eT+ZvJuttkXio1p5Waw7vaX4f5xBLCYAlhsIQI1Fj0/E33Hrp7uVJ1zM77IfbaZ53PhP5KBksIgyXEzRqLnheZzPdUxunukUrNG+38dzvLJ5YQBksIgyXEgf5Yk/pmsme88udEP63KdbtOzY3V+cQSwmAJYbCECPfHIvpznuqrmeqVMJnTmvS56MrWWz6xhDBYQhgsIX6FuyIN9gntn2vJ3ltlnJXJfBgxl+Y8lh7KYAlhsIS4WWN1a5EVYn/3zj3jp+4z1XOV+xaQTywhDJYQBkuIcI21Mvnt795D6rs3k2Mqx+/8vmFq/MadbLiG/kEGSwiDJURgrXBnXTK5t5VT9VzFznm4ynXrfGIJYbCEMFhCHHivcDUO/Y4e0V+0gu4Zkfo39HuFegGDJYTBEiK85/2K6KW+Qvde33nd7nriE9ZtP4x24xzpRwZLCIMlxKa1wtXxFTvX4ybo2rE75s412Q8jB8eS/jBYQhgsIcJrhZW5EGLdrXsPK8QcUqoP1hPWZxtXgcbVP85gCWGwhAh/E3qFWAtL9XyvSNVAqZpm8u2gK+ex9DIGSwiDJUR4rfDq7e/craTWBIn9WKmeFKtr1fnEEsJgCWGwhAD7YxH7srvo3g1vGWfP+uCVTywhDJYQBksIcM/7zrWznf1FT/VKSL0LeeV+LL2MwRLCYAmx6Vs6qe/A0HvD6bW2U+9U7q+DfWIJYbCEMFhCBGqsnX2eiL1QlXFWx3Tvc4XucVUZx/1YegGDJYTBEgJ8r7Dye5/6RnL3XGJ/0qk+8t176J57j08sIQyWEAZLiPA8VuUYYq6L3seder+PQPQd9XuFeiiDJYTBEiIwj0V/f6Z7D6n9Ut37mczD7ezPvqdm9YklhMESwmAJEf5eIVHHpPpgPbmHFnHdSf3kPJYeymAJYbCEONAf69R7dk/o3bAap4J4p9LeDXoZgyWEwRICrLGuTn3jZWfPz8mYk3vY2S++zieWEAZLCIMlxIHeDal1w66d7/0RfSi6x6Tu5x6fWEIYLCEMlhDh3g2r3+nUXEuqbqNru+5eK7qv2Ir9sfQyBksIgyXEg/pjXaX2gxM9Rel3D7vndu3pK+ETSwiDJYTBEiL8XmHKpIZY2VmjPO27h/T3iz6McOMc6UcGSwiDJcTNeSy6BuoeQ+zBJ95D7N5D184+Wz+MHBxL+sNgCWGwhAisFRLv/VW+gVM5frIvavXn3f1hq3Em654rk7XLLJ9YQhgsIQyWEOH9WDt7JXT316fuJ7XulvomY2pO0d4NegGDJYTBEgLc807o1jGptT9iDTE195Za93StUC9gsIQwWEK8oMaavHM3qVdWxxPf5CHW+LrroZP7+XCV4fnSRwZLCIMlxKb+WCnEN3lW625P6MtVMVmLvMruwfeJJYTBEsJgCRGosYh3DFd29lufjEN892Zy3e68nfNYeiiDJYTBEuKh/bH0dj6xhDBYQhgsIQyWEAZLCIMlhMESwmAJYbCEMFhCGCwhDJYQBksIgyWEwRLCYAlhsIT4HybO2zx85W0PAAAAAElFTkSuQmCC'; + + const QRCODEPHPABOVE72_V2 = 'data:image/png;base64,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'; +} diff --git a/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/tests/Google2FATest.php b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/tests/Google2FATest.php new file mode 100644 index 0000000..e5c36b5 --- /dev/null +++ b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/tests/Google2FATest.php @@ -0,0 +1,52 @@ +<?php + +namespace PragmaRX\Google2FAQRCode\Tests; + +use BaconQrCode\Renderer\Image\ImagickImageBackEnd; +use BaconQrCode\Renderer\Image\Png; +use PHPUnit\Framework\TestCase; +use PragmaRX\Google2FAQRCode\Google2FA; +use Zxing\QrReader; + +class Google2FATest extends TestCase +{ + const EMAIL = 'acr+pragmarx@antoniocarlosribeiro.com'; + + const OTP_URL = 'otpauth://totp/PragmaRX:acr+pragmarx@antoniocarlosribeiro.com?secret=ADUMJO5634NPDEKW&issuer=PragmaRX'; + + public function setUp() + { + $this->google2fa = new Google2FA(); + } + + public function readQRCode($data) + { + list(, $data) = explode(';', $data); + + list(, $data) = explode(',', $data); + + return rawurldecode((new QrReader(base64_decode($data), QrReader::SOURCE_TYPE_BLOB))->text()); + } + + public function testQrcodeInline() + { + $this->assertEquals( + static::OTP_URL, + $this->readQRCode($this->google2fa->getQRCodeInline('PragmaRX', static::EMAIL, Constants::SECRET)) + ); + + if ($this->google2fa->getBaconQRCodeVersion() === 1) { + $google2fa = new Google2FA(new Png()); + $this->assertEquals( + static::OTP_URL, + $this->readQRCode($google2fa->getQRCodeInline('PragmaRX', static::EMAIL, Constants::SECRET)) + ); + } else { + $google2fa = new Google2FA(new ImagickImageBackEnd()); + $this->assertEquals( + static::OTP_URL, + $this->readQRCode($google2fa->getQRCodeInline('PragmaRX', static::EMAIL, Constants::SECRET)) + ); + } + } +} diff --git a/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/tests/bootstrap.php b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/tests/bootstrap.php new file mode 100644 index 0000000..56032ea --- /dev/null +++ b/srcs/phpmyadmin/vendor/pragmarx/google2fa-qrcode/tests/bootstrap.php @@ -0,0 +1,42 @@ +<?php + +/* +|-------------------------------------------------------------------------- +| Register The Composer Auto Loader +|-------------------------------------------------------------------------- +| +| Composer provides a convenient, automatically generated class loader +| for our application. We just need to utilize it! We'll require it +| into the script here so that we do not have to worry about the +| loading of any our classes "manually". Feels great to relax. +| +*/ + +require __DIR__.'/../vendor/autoload.php'; + +/* +|-------------------------------------------------------------------------- +| Set The Default Timezone +|-------------------------------------------------------------------------- +| +| Here we will set the default timezone for PHP. PHP is notoriously mean +| if the timezone is not explicitly set. This will be used by each of +| the PHP date and date-time functions throughout the application. +| +*/ + +date_default_timezone_set('UTC'); + +function d($args) +{ + foreach ($args as $arg) { + var_dump($arg); + } +} + +function dd() +{ + d(func_get_args()); + + die; +} |
