diff --git a/.appveyor.yml b/.appveyor.yml index f61289ad691ffd22bea93ff6fd0edcd7635528a7..492a836667285e2f0e4009a11b985795d197b27e 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -8,6 +8,7 @@ environment: matrix: - PHP_VERSION: "7.2" - PHP_VERSION: "7.3" + - PHP_VERSION: "7.4" install: - ps: Invoke-WebRequest "https://raw.githubusercontent.com/ChadSikorra/ps-install-php/master/Install-PHP.ps1" -OutFile "Install-PHP.ps1" diff --git a/.gitignore b/.gitignore index 6bde92f3c292f98a806c0a51719f9fce8c006029..d5e68ae74f68f03ecef05d3baa1279c1ef2fe035 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ /www/assets/js/*.map /www/assets/css/*.css /www/assets/css/*.map +.phpunit.result.cache !/config/.gitkeep !/metadata/.gitkeep diff --git a/.travis.yml b/.travis.yml index 19c197da2c2847895b0106b9f428766a6aabb937..20266611c2d2b595e60ce04f96111b7ab668e94f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,13 +32,13 @@ script: jobs: fast_finish: true allow_failures: - - php: 7.2 + - php: 7.3 env: Psalm - - php: 7.2 + - php: 7.3 env: Security check (composer install) - - php: 7.2 + - php: 7.3 env: Security check (composer update) - - php: 7.2 + - php: 7.3 env: PHP Codesniffer include: @@ -117,6 +117,7 @@ jobs: - composer update script: - vendor/bin/psalm + - vendor/bin/psalter --issues=UnnecessaryVarAnnotation --dry-run - stage: quality php: 7.3 diff --git a/composer.json b/composer.json index 9512ba875e581cfa6603a26e47daf695c8151787..2b9c145183993c797bfcf78880deffc38d294e84 100644 --- a/composer.json +++ b/composer.json @@ -75,28 +75,28 @@ "simplesamlphp/simplesamlphp-module-statistics": "^0.9", "simplesamlphp/simplesamlphp-module-sqlauth": "^0.9", "simplesamlphp/twig-configurable-i18n": "^2.1", - "symfony/cache": "^3.4 || ^4.0", - "symfony/config": "^3.4 || ^4.0", - "symfony/console": "^3.4 || ^4.0", - "symfony/dependency-injection": "^3.4 || ^4.0", - "symfony/finder": "^3.4 || ^4.0", - "symfony/framework-bundle": "^3.4 || ^4.0", - "symfony/http-foundation": "^3.4 || ^4.0", - "symfony/http-kernel": "^3.4 || ^4.0", - "symfony/routing": "^3.4 || ^4.0", - "symfony/yaml": "^3.4 || ^4.0", - "twig/twig": "~1.0 || ~2.0", - "webmozart/assert": "~1.5", + "symfony/cache": "^4.0", + "symfony/config": "^4.0", + "symfony/console": "^4.0", + "symfony/dependency-injection": "^4.0", + "symfony/finder": "^4.0", + "symfony/framework-bundle": "^4.0", + "symfony/http-foundation": "^4.0", + "symfony/http-kernel": "^4.0", + "symfony/routing": "^4.0", + "symfony/yaml": "^4.0", + "twig/twig": "~2.0", + "webmozart/assert": "~1.7", "whitehat101/apr1-md5": "~1.0" }, "require-dev": { "ext-curl": "*", "mikey179/vfsstream": "~1.6", - "phpunit/phpunit": "~6.3", + "phpunit/phpunit": "~8.5", "sensiolabs/security-checker": "^5.0.3", "simplesamlphp/simplesamlphp-test-framework": "^0.1.0", "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "~3.2" + "vimeo/psalm": "^3.8" }, "suggest": { "predis/predis": "Needed if a Redis server is used to store session information", diff --git a/composer.lock b/composer.lock index 4d5e361b8f28e9d3a96fccbdaa85223139718242..e54e4a73e1e9e1d5769945f26d379ee868462cf8 100644 --- a/composer.lock +++ b/composer.lock @@ -1,11 +1,10 @@ { "_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", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "hash": "0db7a68cb99ee8f7804f6e2fe4499e2e", - "content-hash": "1d87df89c6f632a5e3814d8253a726fe", + "content-hash": "8665019f383f4dce5678660e6a78f8b7", "packages": [ { "name": "gettext/gettext", @@ -67,7 +66,7 @@ "po", "translation" ], - "time": "2019-12-02 10:21:14" + "time": "2019-12-02T10:21:14+00:00" }, { "name": "gettext/languages", @@ -128,52 +127,7 @@ "translations", "unicode" ], - "time": "2019-11-13 10:30:21" - }, - { - "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-02 15:55:56" + "time": "2019-11-13T10:30:21+00:00" }, { "name": "phpfastcache/riak-client", @@ -245,7 +199,7 @@ "nosql", "riak" ], - "time": "2017-11-23 21:33:15" + "time": "2017-11-23T21:33:15+00:00" }, { "name": "phpmailer/phpmailer", @@ -307,7 +261,7 @@ } ], "description": "PHPMailer is a full-featured email creation and transfer class for PHP", - "time": "2019-12-10 11:17:38" + "time": "2019-12-10T11:17:38+00:00" }, { "name": "psr/cache", @@ -353,7 +307,7 @@ "psr", "psr-6" ], - "time": "2016-08-06 20:24:11" + "time": "2016-08-06T20:24:11+00:00" }, { "name": "psr/container", @@ -402,7 +356,7 @@ "container-interop", "psr" ], - "time": "2017-02-14 16:28:37" + "time": "2017-02-14T16:28:37+00:00" }, { "name": "psr/log", @@ -449,55 +403,7 @@ "psr", "psr-3" ], - "time": "2019-11-01 11:05:21" - }, - { - "name": "psr/simple-cache", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/simple-cache.git", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\SimpleCache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interfaces for simple caching", - "keywords": [ - "cache", - "caching", - "psr", - "psr-16", - "simple-cache" - ], - "time": "2017-10-23 01:57:42" + "time": "2019-11-01T11:05:21+00:00" }, { "name": "robrichards/xmlseclibs", @@ -535,7 +441,7 @@ "xml", "xmldsig" ], - "time": "2019-11-05 11:44:22" + "time": "2019-11-05T11:44:22+00:00" }, { "name": "simplesamlphp/composer-module-installer", @@ -566,53 +472,49 @@ }, "notification-url": "https://packagist.org/downloads/", "description": "A Composer plugin that allows installing SimpleSAMLphp modules through Composer.", - "time": "2017-04-24 07:12:50" + "time": "2017-04-24T07:12:50+00:00" }, { "name": "simplesamlphp/saml2", - "version": "v3.4.3", + "version": "v4.1.4", "source": { "type": "git", "url": "https://github.com/simplesamlphp/saml2.git", - "reference": "221fe97057fc4d918913b7e908b24da2a804d84c" + "reference": "1038c3335cb707058d6e49520e756765ddf7c741" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/saml2/zipball/221fe97057fc4d918913b7e908b24da2a804d84c", - "reference": "221fe97057fc4d918913b7e908b24da2a804d84c", + "url": "https://api.github.com/repos/simplesamlphp/saml2/zipball/1038c3335cb707058d6e49520e756765ddf7c741", + "reference": "1038c3335cb707058d6e49520e756765ddf7c741", "shasum": "" }, "require": { "ext-dom": "*", "ext-openssl": "*", "ext-zlib": "*", - "php": ">=5.4", - "psr/log": "~1.0", + "php": ">=7.2", + "psr/log": "~1.1", "robrichards/xmlseclibs": "^3.0.4", - "webmozart/assert": "^1.4" + "webmozart/assert": "^1.5" }, "require-dev": { - "mockery/mockery": "~0.9", - "phpmd/phpmd": "~2.6", - "phpunit/phpunit": "~5.7", - "sebastian/phpcpd": "~2.0", - "sensiolabs/security-checker": "~4.1", - "simplesamlphp/simplesamlphp-test-framework": "0.0.11", - "squizlabs/php_codesniffer": "~3.2" + "mockery/mockery": "~1.2", + "phpunit/phpunit": "^8.3", + "sebastian/phpcpd": "~4.1", + "sensiolabs/security-checker": "~6.0", + "simplesamlphp/simplesamlphp-test-framework": "~0.1.0", + "squizlabs/php_codesniffer": "~3.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "v3.1.x-dev" + "dev-master": "v4.0.x-dev" } }, "autoload": { - "psr-0": { - "SAML2\\": "src/" - }, - "files": [ - "src/_autoload.php" - ] + "psr-4": { + "SAML2\\": "src/SAML2" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -625,7 +527,7 @@ } ], "description": "SAML2 PHP library from SimpleSAMLphp", - "time": "2019-12-15 09:42:17" + "time": "2020-02-02T10:18:54+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-adfs", @@ -670,7 +572,7 @@ "adfs", "simplesamlphp" ], - "time": "2019-12-03 08:45:21" + "time": "2019-12-03T08:45:21+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-authcrypt", @@ -716,7 +618,7 @@ "authcrypt", "simplesamlphp" ], - "time": "2019-12-03 08:56:36" + "time": "2019-12-03T08:56:36+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-authfacebook", @@ -765,7 +667,7 @@ "facebook", "simplesamlphp" ], - "time": "2019-12-03 08:58:26" + "time": "2019-12-03T08:58:26+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-authorize", @@ -810,7 +712,7 @@ "authorize", "simplesamlphp" ], - "time": "2019-12-13 07:49:26" + "time": "2019-12-13T07:49:26+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-authtwitter", @@ -860,7 +762,7 @@ "simplesamlphp", "twitter" ], - "time": "2019-12-03 09:00:09" + "time": "2019-12-03T09:00:09+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-authwindowslive", @@ -911,7 +813,7 @@ "windows", "windowslive" ], - "time": "2019-12-03 09:01:13" + "time": "2019-12-03T09:01:13+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-authx509", @@ -965,7 +867,7 @@ "simplesamlphp", "x509" ], - "time": "2019-12-03 08:48:01" + "time": "2019-12-03T08:48:01+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-authyubikey", @@ -1014,7 +916,7 @@ "authyubikey", "simplesamlphp" ], - "time": "2019-12-03 08:52:49" + "time": "2019-12-03T08:52:49+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-cas", @@ -1061,7 +963,7 @@ "cas", "simplesamlphp" ], - "time": "2019-12-03 09:03:06" + "time": "2019-12-03T09:03:06+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-cdc", @@ -1110,7 +1012,7 @@ "cdc", "simplesamlphp" ], - "time": "2019-12-03 09:04:11" + "time": "2019-12-03T09:04:11+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-consent", @@ -1155,7 +1057,7 @@ "consent", "simplesamlphp" ], - "time": "2019-12-13 07:55:51" + "time": "2019-12-13T07:55:51+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-consentadmin", @@ -1204,26 +1106,26 @@ "consentadmin", "simplesamlphp" ], - "time": "2019-12-03 09:06:40" + "time": "2019-12-03T09:06:40+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-discopower", - "version": "v0.9.3", + "version": "v0.9.1", "source": { "type": "git", "url": "https://github.com/simplesamlphp/simplesamlphp-module-discopower.git", - "reference": "c892926e8186d0a2c638f7032dfc30540c1f92fb" + "reference": "006c0617610f1bae11cf4d17e8ce4c509239a60e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-discopower/zipball/c892926e8186d0a2c638f7032dfc30540c1f92fb", - "reference": "c892926e8186d0a2c638f7032dfc30540c1f92fb", + "url": "https://api.github.com/repos/simplesamlphp/simplesamlphp-module-discopower/zipball/006c0617610f1bae11cf4d17e8ce4c509239a60e", + "reference": "006c0617610f1bae11cf4d17e8ce4c509239a60e", "shasum": "" }, "require": { "php": ">=5.6", "simplesamlphp/composer-module-installer": "~1.1", - "webmozart/assert": "~1.4 <1.6" + "webmozart/assert": "~1.4" }, "require-dev": { "phpunit/phpunit": "~5.7", @@ -1251,7 +1153,7 @@ "discovery", "simplesamlphp" ], - "time": "2019-12-13 07:51:43" + "time": "2019-11-27T20:34:37+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-exampleattributeserver", @@ -1296,7 +1198,7 @@ "exampleattributeserver", "simplesamlphp" ], - "time": "2019-05-28 12:37:15" + "time": "2019-05-28T12:37:15+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-expirycheck", @@ -1342,7 +1244,7 @@ "expirycheck", "simplesamlphp" ], - "time": "2019-12-14 13:20:46" + "time": "2019-12-14T13:20:46+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-ldap", @@ -1394,7 +1296,7 @@ "ldap", "simplesamlphp" ], - "time": "2019-12-03 12:01:56" + "time": "2019-12-03T12:01:56+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-memcachemonitor", @@ -1441,7 +1343,7 @@ "memcachemonitor", "simplesamlphp" ], - "time": "2019-12-03 09:19:35" + "time": "2019-12-03T09:19:35+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-memcookie", @@ -1489,7 +1391,7 @@ "cookies", "simplesamlphp" ], - "time": "2019-08-08 18:33:47" + "time": "2019-08-08T18:33:47+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-metarefresh", @@ -1534,7 +1436,7 @@ "metarefresh", "simplesamlphp" ], - "time": "2019-12-15 09:44:34" + "time": "2019-12-15T09:44:34+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-negotiate", @@ -1584,7 +1486,7 @@ "negotiate", "simplesamlphp" ], - "time": "2019-11-20 08:50:01" + "time": "2019-11-20T08:50:01+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-oauth", @@ -1628,7 +1530,7 @@ "oauth1", "simplesamlphp" ], - "time": "2019-12-03 09:22:08" + "time": "2019-12-03T09:22:08+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-preprodwarning", @@ -1674,7 +1576,7 @@ "preprodwarning", "simplesamlphp" ], - "time": "2019-12-03 09:17:47" + "time": "2019-12-03T09:17:47+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-radius", @@ -1720,7 +1622,7 @@ "radius", "simplesamlphp" ], - "time": "2019-10-03 18:13:07" + "time": "2019-10-03T18:13:07+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-riak", @@ -1766,7 +1668,7 @@ "riak", "simplesamlphp" ], - "time": "2019-12-03 08:28:45" + "time": "2019-12-03T08:28:45+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-sanitycheck", @@ -1812,7 +1714,7 @@ "sanitycheck", "simplesamlphp" ], - "time": "2019-05-28 12:19:05" + "time": "2019-05-28T12:19:05+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-smartattributes", @@ -1857,7 +1759,7 @@ "simplesamlphp", "smartattributes" ], - "time": "2019-12-03 09:24:09" + "time": "2019-12-03T09:24:09+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-sqlauth", @@ -1903,7 +1805,7 @@ "simplesamlphp", "sqlauth" ], - "time": "2019-12-03 09:07:09" + "time": "2019-12-03T09:07:09+00:00" }, { "name": "simplesamlphp/simplesamlphp-module-statistics", @@ -1950,7 +1852,7 @@ "simplesamlphp", "statistics" ], - "time": "2019-12-03 08:42:27" + "time": "2019-12-03T08:42:27+00:00" }, { "name": "simplesamlphp/twig-configurable-i18n", @@ -1998,46 +1900,55 @@ "translation", "twig" ], - "time": "2019-07-09 08:35:44" + "time": "2019-07-09T08:35:44+00:00" }, { "name": "symfony/cache", - "version": "v3.4.36", + "version": "v4.4.4", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "3d9f46a6960fd5cd7f030f86adc5b4b63bcfa4e3" + "reference": "0198a01c8d918d6d717f96dfdcba9582bc5f6468" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/3d9f46a6960fd5cd7f030f86adc5b4b63bcfa4e3", - "reference": "3d9f46a6960fd5cd7f030f86adc5b4b63bcfa4e3", + "url": "https://api.github.com/repos/symfony/cache/zipball/0198a01c8d918d6d717f96dfdcba9582bc5f6468", + "reference": "0198a01c8d918d6d717f96dfdcba9582bc5f6468", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", + "php": "^7.1.3", "psr/cache": "~1.0", "psr/log": "~1.0", - "psr/simple-cache": "^1.0", - "symfony/polyfill-apcu": "~1.1" + "symfony/cache-contracts": "^1.1.7|^2", + "symfony/service-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.2|^5.0" }, "conflict": { - "symfony/var-dumper": "<3.3" + "doctrine/dbal": "<2.5", + "symfony/dependency-injection": "<3.4", + "symfony/http-kernel": "<4.4", + "symfony/var-dumper": "<4.4" }, "provide": { "psr/cache-implementation": "1.0", - "psr/simple-cache-implementation": "1.0" + "psr/simple-cache-implementation": "1.0", + "symfony/cache-implementation": "1.0" }, "require-dev": { "cache/integration-tests": "dev-master", "doctrine/cache": "~1.6", - "doctrine/dbal": "~2.4", - "predis/predis": "~1.0" + "doctrine/dbal": "~2.5", + "predis/predis": "~1.1", + "psr/simple-cache": "^1.0", + "symfony/config": "^4.2|^5.0", + "symfony/dependency-injection": "^3.4|^4.1|^5.0", + "symfony/var-dumper": "^4.4|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -2068,45 +1979,39 @@ "caching", "psr6" ], - "time": "2019-12-01 10:45:41" + "time": "2020-01-29T14:35:06+00:00" }, { - "name": "symfony/class-loader", - "version": "v3.4.36", + "name": "symfony/cache-contracts", + "version": "v2.0.1", "source": { "type": "git", - "url": "https://github.com/symfony/class-loader.git", - "reference": "e212b06996819a2bce026a63da03b7182d05a690" + "url": "https://github.com/symfony/cache-contracts.git", + "reference": "23ed8bfc1a4115feca942cb5f1aacdf3dcdf3c16" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/class-loader/zipball/e212b06996819a2bce026a63da03b7182d05a690", - "reference": "e212b06996819a2bce026a63da03b7182d05a690", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/23ed8bfc1a4115feca942cb5f1aacdf3dcdf3c16", + "reference": "23ed8bfc1a4115feca942cb5f1aacdf3dcdf3c16", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" - }, - "require-dev": { - "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/polyfill-apcu": "~1.1" + "php": "^7.2.5", + "psr/cache": "^1.0" }, "suggest": { - "symfony/polyfill-apcu": "For using ApcClassLoader on HHVM" + "symfony/cache-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "2.0-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\ClassLoader\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Contracts\\Cache\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2114,46 +2019,54 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony ClassLoader Component", + "description": "Generic abstractions related to caching", "homepage": "https://symfony.com", - "time": "2019-08-20 13:31:17" + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-11-18T17:27:11+00:00" }, { "name": "symfony/config", - "version": "v3.4.36", + "version": "v4.4.4", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "a599a867d0e4a07c342b5f1e656b3915a540ddbe" + "reference": "4d3979f54472637169080f802dc82197e21fdcce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/a599a867d0e4a07c342b5f1e656b3915a540ddbe", - "reference": "a599a867d0e4a07c342b5f1e656b3915a540ddbe", + "url": "https://api.github.com/repos/symfony/config/zipball/4d3979f54472637169080f802dc82197e21fdcce", + "reference": "4d3979f54472637169080f802dc82197e21fdcce", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/filesystem": "~2.8|~3.0|~4.0", + "php": "^7.1.3", + "symfony/filesystem": "^3.4|^4.0|^5.0", "symfony/polyfill-ctype": "~1.8" }, "conflict": { - "symfony/dependency-injection": "<3.3", - "symfony/finder": "<3.3" + "symfony/finder": "<3.4" }, "require-dev": { - "symfony/dependency-injection": "~3.3|~4.0", - "symfony/event-dispatcher": "~3.3|~4.0", - "symfony/finder": "~3.3|~4.0", - "symfony/yaml": "~3.0|~4.0" + "symfony/event-dispatcher": "^3.4|^4.0|^5.0", + "symfony/finder": "^3.4|^4.0|^5.0", + "symfony/messenger": "^4.1|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/yaml": "^3.4|^4.0|^5.0" }, "suggest": { "symfony/yaml": "To use the yaml reference dumper" @@ -2161,7 +2074,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -2188,29 +2101,32 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2019-12-01 10:45:41" + "time": "2020-01-04T13:00:46+00:00" }, { "name": "symfony/console", - "version": "v3.4.36", + "version": "v4.4.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "1ee23b3b659b06c622f2bd2492a229e416eb4586" + "reference": "f512001679f37e6a042b51897ed24a2f05eba656" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/1ee23b3b659b06c622f2bd2492a229e416eb4586", - "reference": "1ee23b3b659b06c622f2bd2492a229e416eb4586", + "url": "https://api.github.com/repos/symfony/console/zipball/f512001679f37e6a042b51897ed24a2f05eba656", + "reference": "f512001679f37e6a042b51897ed24a2f05eba656", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/debug": "~2.8|~3.0|~4.0", - "symfony/polyfill-mbstring": "~1.0" + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/service-contracts": "^1.1|^2" }, "conflict": { "symfony/dependency-injection": "<3.4", + "symfony/event-dispatcher": "<4.3|>=5", + "symfony/lock": "<4.4", "symfony/process": "<3.3" }, "provide": { @@ -2218,11 +2134,12 @@ }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~3.3|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~2.8|~3.0|~4.0", - "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.3|~4.0" + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/event-dispatcher": "^4.3", + "symfony/lock": "^4.4|^5.0", + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/var-dumper": "^4.3|^5.0" }, "suggest": { "psr/log": "For using the console logger", @@ -2233,7 +2150,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -2260,36 +2177,36 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2019-12-01 10:04:45" + "time": "2020-01-25T12:44:29+00:00" }, { "name": "symfony/debug", - "version": "v3.4.36", + "version": "v4.4.4", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "f72e33fdb1170b326e72c3157f0cd456351dd086" + "reference": "20236471058bbaa9907382500fc14005c84601f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/f72e33fdb1170b326e72c3157f0cd456351dd086", - "reference": "f72e33fdb1170b326e72c3157f0cd456351dd086", + "url": "https://api.github.com/repos/symfony/debug/zipball/20236471058bbaa9907382500fc14005c84601f0", + "reference": "20236471058bbaa9907382500fc14005c84601f0", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", + "php": "^7.1.3", "psr/log": "~1.0" }, "conflict": { - "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" + "symfony/http-kernel": "<3.4" }, "require-dev": { - "symfony/http-kernel": "~2.8|~3.0|~4.0" + "symfony/http-kernel": "^3.4|^4.0|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -2316,39 +2233,41 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2019-10-24 15:33:53" + "time": "2020-01-25T12:44:29+00:00" }, { "name": "symfony/dependency-injection", - "version": "v3.4.36", + "version": "v4.4.4", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "0d201916bfb3af939fec3c0c8815ea16c60ac1a2" + "reference": "ec60a7d12f5e8ab0f99456adce724717d9c1784a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/0d201916bfb3af939fec3c0c8815ea16c60ac1a2", - "reference": "0d201916bfb3af939fec3c0c8815ea16c60ac1a2", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/ec60a7d12f5e8ab0f99456adce724717d9c1784a", + "reference": "ec60a7d12f5e8ab0f99456adce724717d9c1784a", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "psr/container": "^1.0" + "php": "^7.1.3", + "psr/container": "^1.0", + "symfony/service-contracts": "^1.1.6|^2" }, "conflict": { - "symfony/config": "<3.3.7", - "symfony/finder": "<3.3", + "symfony/config": "<4.3|>=5.0", + "symfony/finder": "<3.4", "symfony/proxy-manager-bridge": "<3.4", "symfony/yaml": "<3.4" }, "provide": { - "psr/container-implementation": "1.0" + "psr/container-implementation": "1.0", + "symfony/service-implementation": "1.0" }, "require-dev": { - "symfony/config": "~3.3|~4.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/yaml": "~3.4|~4.0" + "symfony/config": "^4.3", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0" }, "suggest": { "symfony/config": "", @@ -2360,7 +2279,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -2387,34 +2306,97 @@ ], "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", - "time": "2019-12-01 08:33:36" + "time": "2020-01-31T09:49:27+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v4.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "d2721499ffcaf246a743e01cdf6696d3d5dd74c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/d2721499ffcaf246a743e01cdf6696d3d5dd74c1", + "reference": "d2721499ffcaf246a743e01cdf6696d3d5dd74c1", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "psr/log": "~1.0", + "symfony/debug": "^4.4", + "symfony/var-dumper": "^4.4|^5.0" + }, + "require-dev": { + "symfony/http-kernel": "^4.4|^5.0", + "symfony/serializer": "^4.4|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony ErrorHandler Component", + "homepage": "https://symfony.com", + "time": "2020-01-27T09:48:47+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v3.4.36", + "version": "v4.4.4", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "f9031c22ec127d4a2450760f81a8677fe8a10177" + "reference": "9e3de195e5bc301704dd6915df55892f6dfc208b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/f9031c22ec127d4a2450760f81a8677fe8a10177", - "reference": "f9031c22ec127d4a2450760f81a8677fe8a10177", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9e3de195e5bc301704dd6915df55892f6dfc208b", + "reference": "9e3de195e5bc301704dd6915df55892f6dfc208b", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^7.1.3", + "symfony/event-dispatcher-contracts": "^1.1" }, "conflict": { - "symfony/dependency-injection": "<3.3" + "symfony/dependency-injection": "<3.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "1.1" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0|~4.0", - "symfony/dependency-injection": "~3.3|~4.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/stopwatch": "~2.8|~3.0|~4.0" + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/stopwatch": "^3.4|^4.0|^5.0" }, "suggest": { "symfony/dependency-injection": "", @@ -2423,7 +2405,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -2450,30 +2432,88 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2019-10-24 15:33:53" + "time": "2020-01-10T21:54:01+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v1.1.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c43ab685673fb6c8d84220c77897b1d6cdbe1d18", + "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "suggest": { + "psr/event-dispatcher": "", + "symfony/event-dispatcher-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "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": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-09-17T09:54:03+00:00" }, { "name": "symfony/filesystem", - "version": "v3.4.36", + "version": "v5.0.4", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "00cdad0936d06fab136944bc2342b762b1c3a4a2" + "reference": "3afadc0f57cd74f86379d073e694b0f2cda2a88c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/00cdad0936d06fab136944bc2342b762b1c3a4a2", - "reference": "00cdad0936d06fab136944bc2342b762b1c3a4a2", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/3afadc0f57cd74f86379d073e694b0f2cda2a88c", + "reference": "3afadc0f57cd74f86379d073e694b0f2cda2a88c", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", + "php": "^7.2.5", "symfony/polyfill-ctype": "~1.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -2500,29 +2540,29 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2019-11-25 16:36:22" + "time": "2020-01-21T08:40:24+00:00" }, { "name": "symfony/finder", - "version": "v3.4.36", + "version": "v4.4.4", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "290ae21279b37bfd287cdcce640d51204e84afdf" + "reference": "3a50be43515590faf812fbd7708200aabc327ec3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/290ae21279b37bfd287cdcce640d51204e84afdf", - "reference": "290ae21279b37bfd287cdcce640d51204e84afdf", + "url": "https://api.github.com/repos/symfony/finder/zipball/3a50be43515590faf812fbd7708200aabc327ec3", + "reference": "3a50be43515590faf812fbd7708200aabc327ec3", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -2549,80 +2589,96 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2019-11-17 21:55:15" + "time": "2020-01-04T13:00:46+00:00" }, { "name": "symfony/framework-bundle", - "version": "v3.4.36", + "version": "v4.4.4", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "0d61117c7a770da0bd8bbe7ccfa34d8063f272ea" + "reference": "afc96daad6049cbed34312b34005d33fc670d022" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/0d61117c7a770da0bd8bbe7ccfa34d8063f272ea", - "reference": "0d61117c7a770da0bd8bbe7ccfa34d8063f272ea", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/afc96daad6049cbed34312b34005d33fc670d022", + "reference": "afc96daad6049cbed34312b34005d33fc670d022", "shasum": "" }, "require": { "ext-xml": "*", - "php": "^5.5.9|>=7.0.8", - "symfony/cache": "~3.4.31|^4.3.4", - "symfony/class-loader": "~3.2", - "symfony/config": "^3.4.31|^4.3.4", - "symfony/debug": "~2.8|~3.0|~4.0", - "symfony/dependency-injection": "^3.4.24|^4.2.5", - "symfony/event-dispatcher": "~3.4|~4.0", - "symfony/filesystem": "~2.8|~3.0|~4.0", - "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/http-foundation": "^3.4.13|~4.3", - "symfony/http-kernel": "^3.4.31|^4.3.4", + "php": "^7.1.3", + "symfony/cache": "^4.4|^5.0", + "symfony/config": "^4.3.4|^5.0", + "symfony/dependency-injection": "^4.4.1|^5.0.1", + "symfony/error-handler": "^4.4.1|^5.0.1", + "symfony/filesystem": "^3.4|^4.0|^5.0", + "symfony/finder": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/http-kernel": "^4.4", "symfony/polyfill-mbstring": "~1.0", - "symfony/routing": "^3.4.5|^4.0.5" + "symfony/routing": "^4.4|^5.0" }, "conflict": { + "doctrine/persistence": "<1.3", "phpdocumentor/reflection-docblock": "<3.0", "phpdocumentor/type-resolver": "<0.2.1", "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/asset": "<3.3", - "symfony/console": "<3.4", - "symfony/form": "<3.4", - "symfony/property-info": "<3.3", - "symfony/serializer": "<3.3", + "symfony/asset": "<3.4", + "symfony/browser-kit": "<4.3", + "symfony/console": "<4.3", + "symfony/dom-crawler": "<4.3", + "symfony/dotenv": "<4.3.6", + "symfony/form": "<4.3.5", + "symfony/http-client": "<4.4", + "symfony/lock": "<4.4", + "symfony/mailer": "<4.4", + "symfony/messenger": "<4.4", + "symfony/mime": "<4.4", + "symfony/property-info": "<3.4", + "symfony/security-bundle": "<4.4", + "symfony/serializer": "<4.4", "symfony/stopwatch": "<3.4", - "symfony/translation": "<3.4", - "symfony/validator": "<3.4", - "symfony/workflow": "<3.3" + "symfony/translation": "<4.4", + "symfony/twig-bridge": "<4.1.1", + "symfony/twig-bundle": "<4.4", + "symfony/validator": "<4.4", + "symfony/web-profiler-bundle": "<4.4", + "symfony/workflow": "<4.3.6" }, "require-dev": { "doctrine/annotations": "~1.7", "doctrine/cache": "~1.0", - "fig/link-util": "^1.0", + "paragonie/sodium_compat": "^1.8", "phpdocumentor/reflection-docblock": "^3.0|^4.0", - "symfony/asset": "~3.3|~4.0", - "symfony/browser-kit": "~2.8|~3.0|~4.0", - "symfony/console": "~3.4.31|^4.3.4", - "symfony/css-selector": "~2.8|~3.0|~4.0", - "symfony/dom-crawler": "~2.8|~3.0|~4.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/form": "^3.4.31|^4.3.4", - "symfony/lock": "~3.4|~4.0", + "symfony/asset": "^3.4|^4.0|^5.0", + "symfony/browser-kit": "^4.3|^5.0", + "symfony/console": "^4.3.4|^5.0", + "symfony/css-selector": "^3.4|^4.0|^5.0", + "symfony/dom-crawler": "^4.3|^5.0", + "symfony/dotenv": "^4.3.6|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/form": "^4.3.5|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/lock": "^4.4|^5.0", + "symfony/mailer": "^4.4|^5.0", + "symfony/messenger": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "~2.8|~3.0|~4.0", - "symfony/property-info": "~3.3|~4.0", - "symfony/security-core": "~3.2|~4.0", - "symfony/security-csrf": "^2.8.31|^3.3.13|~4.0", - "symfony/serializer": "~3.3|~4.0", - "symfony/stopwatch": "~3.4|~4.0", - "symfony/templating": "~2.8|~3.0|~4.0", - "symfony/translation": "~3.4|~4.0", - "symfony/validator": "~3.4|~4.0", - "symfony/var-dumper": "~3.3|~4.0", - "symfony/web-link": "~3.3|~4.0", - "symfony/workflow": "~3.3|~4.0", - "symfony/yaml": "~3.2|~4.0", - "twig/twig": "~1.34|~2.4" + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/property-info": "^3.4|^4.0|^5.0", + "symfony/security-csrf": "^3.4|^4.0|^5.0", + "symfony/security-http": "^3.4|^4.0|^5.0", + "symfony/serializer": "^4.4|^5.0", + "symfony/stopwatch": "^3.4|^4.0|^5.0", + "symfony/templating": "^3.4|^4.0|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/twig-bundle": "^4.4|^5.0", + "symfony/validator": "^4.4|^5.0", + "symfony/web-link": "^4.4|^5.0", + "symfony/workflow": "^4.3.6|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0", + "twig/twig": "^1.41|^2.10|^3.0" }, "suggest": { "ext-apcu": "For best performance of the system caches", @@ -2637,7 +2693,7 @@ "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -2664,34 +2720,35 @@ ], "description": "Symfony FrameworkBundle", "homepage": "https://symfony.com", - "time": "2019-11-23 20:30:33" + "time": "2020-01-30T16:24:07+00:00" }, { "name": "symfony/http-foundation", - "version": "v3.4.36", + "version": "v4.4.4", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "d2d0cfe8e319d9df44c4cca570710fcf221d4593" + "reference": "491a20dfa87e0b3990170593bc2de0bb34d828a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/d2d0cfe8e319d9df44c4cca570710fcf221d4593", - "reference": "d2d0cfe8e319d9df44c4cca570710fcf221d4593", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/491a20dfa87e0b3990170593bc2de0bb34d828a5", + "reference": "491a20dfa87e0b3990170593bc2de0bb34d828a5", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php70": "~1.6" + "php": "^7.1.3", + "symfony/mime": "^4.3|^5.0", + "symfony/polyfill-mbstring": "~1.1" }, "require-dev": { - "symfony/expression-language": "~2.8|~3.0|~4.0" + "predis/predis": "~1.0", + "symfony/expression-language": "^3.4|^4.0|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -2718,35 +2775,37 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2019-11-28 12:52:59" + "time": "2020-01-31T09:11:17+00:00" }, { "name": "symfony/http-kernel", - "version": "v3.4.36", + "version": "v4.4.4", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "c42c8339acb28cfff0fb1786948db4d23d609ff7" + "reference": "62116a9c8fb15faabb158ad9cb785c353c2572e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/c42c8339acb28cfff0fb1786948db4d23d609ff7", - "reference": "c42c8339acb28cfff0fb1786948db4d23d609ff7", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/62116a9c8fb15faabb158ad9cb785c353c2572e5", + "reference": "62116a9c8fb15faabb158ad9cb785c353c2572e5", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", + "php": "^7.1.3", "psr/log": "~1.0", - "symfony/debug": "^3.3.3|~4.0", - "symfony/event-dispatcher": "~2.8|~3.0|~4.0", - "symfony/http-foundation": "~3.4.12|~4.0.12|^4.1.1", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php56": "~1.8" + "symfony/error-handler": "^4.4", + "symfony/event-dispatcher": "^4.4", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php73": "^1.9" }, "conflict": { - "symfony/config": "<2.8", - "symfony/dependency-injection": "<3.4.10|<4.0.10,>=4", - "symfony/var-dumper": "<3.3", + "symfony/browser-kit": "<4.3", + "symfony/config": "<3.4", + "symfony/console": ">=5", + "symfony/dependency-injection": "<4.3", + "symfony/translation": "<4.2", "twig/twig": "<1.34|<2.4,>=2" }, "provide": { @@ -2754,34 +2813,32 @@ }, "require-dev": { "psr/cache": "~1.0", - "symfony/browser-kit": "~2.8|~3.0|~4.0", - "symfony/class-loader": "~2.8|~3.0", - "symfony/config": "~2.8|~3.0|~4.0", - "symfony/console": "~2.8|~3.0|~4.0", - "symfony/css-selector": "~2.8|~3.0|~4.0", - "symfony/dependency-injection": "^3.4.10|^4.0.10", - "symfony/dom-crawler": "~2.8|~3.0|~4.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/process": "~2.8|~3.0|~4.0", - "symfony/routing": "~3.4|~4.0", - "symfony/stopwatch": "~2.8|~3.0|~4.0", - "symfony/templating": "~2.8|~3.0|~4.0", - "symfony/translation": "~2.8|~3.0|~4.0", - "symfony/var-dumper": "~3.3|~4.0" + "symfony/browser-kit": "^4.3|^5.0", + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/console": "^3.4|^4.0", + "symfony/css-selector": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^4.3|^5.0", + "symfony/dom-crawler": "^3.4|^4.0|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/finder": "^3.4|^4.0|^5.0", + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/routing": "^3.4|^4.0|^5.0", + "symfony/stopwatch": "^3.4|^4.0|^5.0", + "symfony/templating": "^3.4|^4.0|^5.0", + "symfony/translation": "^4.2|^5.0", + "symfony/translation-contracts": "^1.1|^2", + "twig/twig": "^1.34|^2.4|^3.0" }, "suggest": { "symfony/browser-kit": "", "symfony/config": "", "symfony/console": "", - "symfony/dependency-injection": "", - "symfony/finder": "", - "symfony/var-dumper": "" + "symfony/dependency-injection": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -2808,37 +2865,46 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2019-12-01 13:50:37" + "time": "2020-01-31T12:45:06+00:00" }, { - "name": "symfony/polyfill-apcu", - "version": "v1.13.1", + "name": "symfony/mime", + "version": "v5.0.4", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-apcu.git", - "reference": "a8e961c841b9ec52927a87914f8820a1ad8f8116" + "url": "https://github.com/symfony/mime.git", + "reference": "2a3c7fee1f1a0961fa9cf360d5da553d05095e59" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/a8e961c841b9ec52927a87914f8820a1ad8f8116", - "reference": "a8e961c841b9ec52927a87914f8820a1ad8f8116", + "url": "https://api.github.com/repos/symfony/mime/zipball/2a3c7fee1f1a0961fa9cf360d5da553d05095e59", + "reference": "2a3c7fee1f1a0961fa9cf360d5da553d05095e59", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.2.5", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "symfony/mailer": "<4.4" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10", + "symfony/dependency-injection": "^4.4|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13-dev" + "dev-master": "5.0-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Apcu\\": "" + "Symfony\\Component\\Mime\\": "" }, - "files": [ - "bootstrap.php" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2847,37 +2913,34 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting apcu_* functions to lower PHP versions", + "description": "A library to manipulate MIME messages", "homepage": "https://symfony.com", "keywords": [ - "apcu", - "compatibility", - "polyfill", - "portable", - "shim" + "mime", + "mime-type" ], - "time": "2019-11-27 13:56:44" + "time": "2020-01-04T14:08:26+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.13.1", + "version": "v1.14.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3" + "reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", - "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/fbdeaec0df06cf3d51c93de80c7eb76e271f5a38", + "reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38", "shasum": "" }, "require": { @@ -2889,7 +2952,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13-dev" + "dev-master": "1.14-dev" } }, "autoload": { @@ -2922,37 +2985,39 @@ "polyfill", "portable" ], - "time": "2019-11-27 13:56:44" + "time": "2020-01-13T11:15:53+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.13.1", + "name": "symfony/polyfill-intl-idn", + "version": "v1.14.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f" + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "6842f1a39cf7d580655688069a03dd7cd83d244a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f", - "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6842f1a39cf7d580655688069a03dd7cd83d244a", + "reference": "6842f1a39cf7d580655688069a03dd7cd83d244a", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3.3", + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php72": "^1.10" }, "suggest": { - "ext-mbstring": "For best performance" + "ext-intl": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13-dev" + "dev-master": "1.14-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" + "Symfony\\Polyfill\\Intl\\Idn\\": "" }, "files": [ "bootstrap.php" @@ -2964,52 +3029,55 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Laurent Bassin", + "email": "laurent@bassin.info" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Mbstring extension", + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "mbstring", + "idn", + "intl", "polyfill", "portable", "shim" ], - "time": "2019-11-27 14:18:11" + "time": "2020-01-17T12:01:36+00:00" }, { - "name": "symfony/polyfill-php56", - "version": "v1.13.1", + "name": "symfony/polyfill-mbstring", + "version": "v1.14.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php56.git", - "reference": "53dd1cdf3cb986893ccf2b96665b25b3abb384f4" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "34094cfa9abe1f0f14f48f490772db7a775559f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/53dd1cdf3cb986893ccf2b96665b25b3abb384f4", - "reference": "53dd1cdf3cb986893ccf2b96665b25b3abb384f4", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/34094cfa9abe1f0f14f48f490772db7a775559f2", + "reference": "34094cfa9abe1f0f14f48f490772db7a775559f2", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/polyfill-util": "~1.0" + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13-dev" + "dev-master": "1.14-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php56\\": "" + "Symfony\\Polyfill\\Mbstring\\": "" }, "files": [ "bootstrap.php" @@ -3029,49 +3097,46 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", + "description": "Symfony polyfill for the Mbstring extension", "homepage": "https://symfony.com", "keywords": [ "compatibility", + "mbstring", "polyfill", "portable", "shim" ], - "time": "2019-11-27 13:56:44" + "time": "2020-01-13T11:15:53+00:00" }, { - "name": "symfony/polyfill-php70", - "version": "v1.13.1", + "name": "symfony/polyfill-php72", + "version": "v1.14.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "af23c7bb26a73b850840823662dda371484926c4" + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "46ecacf4751dd0dc81e4f6bf01dbf9da1dc1dadf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/af23c7bb26a73b850840823662dda371484926c4", - "reference": "af23c7bb26a73b850840823662dda371484926c4", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/46ecacf4751dd0dc81e4f6bf01dbf9da1dc1dadf", + "reference": "46ecacf4751dd0dc81e4f6bf01dbf9da1dc1dadf", "shasum": "" }, "require": { - "paragonie/random_compat": "~1.0|~2.0|~9.99", "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13-dev" + "dev-master": "1.14-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php70\\": "" + "Symfony\\Polyfill\\Php72\\": "" }, "files": [ "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -3088,7 +3153,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -3096,20 +3161,20 @@ "portable", "shim" ], - "time": "2019-11-27 13:56:44" + "time": "2020-01-13T11:15:53+00:00" }, { - "name": "symfony/polyfill-util", - "version": "v1.13.1", + "name": "symfony/polyfill-php73", + "version": "v1.14.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-util.git", - "reference": "964a67f293b66b95883a5ed918a65354fcd2258f" + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "5e66a0fa1070bf46bec4bea7962d285108edd675" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/964a67f293b66b95883a5ed918a65354fcd2258f", - "reference": "964a67f293b66b95883a5ed918a65354fcd2258f", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/5e66a0fa1070bf46bec4bea7962d285108edd675", + "reference": "5e66a0fa1070bf46bec4bea7962d285108edd675", "shasum": "" }, "require": { @@ -3118,13 +3183,19 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13-dev" + "dev-master": "1.14-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Util\\": "" - } + "Symfony\\Polyfill\\Php73\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3140,46 +3211,46 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony utilities for portability of PHP codes", + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ - "compat", "compatibility", "polyfill", + "portable", "shim" ], - "time": "2019-11-27 13:56:44" + "time": "2020-01-13T11:15:53+00:00" }, { "name": "symfony/routing", - "version": "v3.4.36", + "version": "v4.4.4", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "b689ccd48e234ea404806d94b07eeb45f9f6f06a" + "reference": "7bf4e38573728e317b926ca4482ad30470d0e86a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/b689ccd48e234ea404806d94b07eeb45f9f6f06a", - "reference": "b689ccd48e234ea404806d94b07eeb45f9f6f06a", + "url": "https://api.github.com/repos/symfony/routing/zipball/7bf4e38573728e317b926ca4482ad30470d0e86a", + "reference": "7bf4e38573728e317b926ca4482ad30470d0e86a", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^7.1.3" }, "conflict": { - "symfony/config": "<3.3.1", - "symfony/dependency-injection": "<3.3", + "symfony/config": "<4.2", + "symfony/dependency-injection": "<3.4", "symfony/yaml": "<3.4" }, "require-dev": { - "doctrine/annotations": "~1.0", + "doctrine/annotations": "~1.2", "psr/log": "~1.0", - "symfony/config": "^3.3.1|~4.0", - "symfony/dependency-injection": "~3.3|~4.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", - "symfony/http-foundation": "~2.8|~3.0|~4.0", - "symfony/yaml": "~3.4|~4.0" + "symfony/config": "^4.2|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0" }, "suggest": { "doctrine/annotations": "For using the annotation loader", @@ -3191,7 +3262,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -3224,48 +3295,39 @@ "uri", "url" ], - "time": "2019-12-01 08:33:36" + "time": "2020-01-08T17:29:02+00:00" }, { - "name": "symfony/yaml", - "version": "v3.4.36", + "name": "symfony/service-contracts", + "version": "v2.0.1", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "dab657db15207879217fc81df4f875947bf68804" + "url": "https://github.com/symfony/service-contracts.git", + "reference": "144c5e51266b281231e947b51223ba14acf1a749" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/dab657db15207879217fc81df4f875947bf68804", - "reference": "dab657db15207879217fc81df4f875947bf68804", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749", + "reference": "144c5e51266b281231e947b51223ba14acf1a749", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/console": "<3.4" - }, - "require-dev": { - "symfony/console": "~3.4|~4.0" + "php": "^7.2.5", + "psr/container": "^1.0" }, "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "symfony/service-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.4-dev" + "dev-master": "2.0-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Contracts\\Service\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3273,8 +3335,210 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-11-18T17:27:11+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v5.0.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "923591cfb78a935f0c98968fedfad05bfda9d01f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/923591cfb78a935f0c98968fedfad05bfda9d01f", + "reference": "923591cfb78a935f0c98968fedfad05bfda9d01f", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "phpunit/phpunit": "<5.4.3", + "symfony/console": "<4.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "twig/twig": "^2.4|^3.0" + }, + "suggest": { + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "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 mechanism for exploring and dumping PHP variables", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "time": "2020-01-25T15:56:29+00:00" + }, + { + "name": "symfony/var-exporter", + "version": "v5.0.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-exporter.git", + "reference": "960f9ac0fdbd642461ed29d7717aeb2a94d428b9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/960f9ac0fdbd642461ed29d7717aeb2a94d428b9", + "reference": "960f9ac0fdbd642461ed29d7717aeb2a94d428b9", + "shasum": "" + }, + "require": { + "php": "^7.2.5" + }, + "require-dev": { + "symfony/var-dumper": "^4.4|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\VarExporter\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "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": "A blend of var_export() + serialize() to turn any serializable data structure to plain PHP code", + "homepage": "https://symfony.com", + "keywords": [ + "clone", + "construct", + "export", + "hydrate", + "instantiate", + "serialize" + ], + "time": "2020-01-04T14:08:26+00:00" + }, + { + "name": "symfony/yaml", + "version": "v4.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "cd014e425b3668220adb865f53bff64b3ad21767" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/cd014e425b3668220adb865f53bff64b3ad21767", + "reference": "cd014e425b3668220adb865f53bff64b3ad21767", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<3.4" + }, + "require-dev": { + "symfony/console": "^3.4|^4.0|^5.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", @@ -3283,7 +3547,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2019-10-24 15:33:53" + "time": "2020-01-21T11:12:16+00:00" }, { "name": "twig/extensions", @@ -3338,20 +3602,20 @@ "i18n", "text" ], - "time": "2018-12-05 18:34:18" + "time": "2018-12-05T18:34:18+00:00" }, { "name": "twig/twig", - "version": "v2.12.3", + "version": "v2.12.5", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "97b6311585cae66a26833b14b33785f5797f7d39" + "reference": "18772e0190734944277ee97a02a9a6c6555fcd94" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/97b6311585cae66a26833b14b33785f5797f7d39", - "reference": "97b6311585cae66a26833b14b33785f5797f7d39", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/18772e0190734944277ee97a02a9a6c6555fcd94", + "reference": "18772e0190734944277ee97a02a9a6c6555fcd94", "shasum": "" }, "require": { @@ -3403,35 +3667,33 @@ "keywords": [ "templating" ], - "time": "2019-12-28 07:12:03" + "time": "2020-02-11T15:31:23+00:00" }, { "name": "webmozart/assert", - "version": "1.5.0", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4" + "reference": "aed98a490f9a8f78468232db345ab9cf606cf598" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/88e6d84706d09a236046d686bbea96f07b3a34f4", - "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4", + "url": "https://api.github.com/repos/webmozart/assert/zipball/aed98a490f9a8f78468232db345ab9cf606cf598", + "reference": "aed98a490f9a8f78468232db345ab9cf606cf598", "shasum": "" }, "require": { "php": "^5.3.3 || ^7.0", "symfony/polyfill-ctype": "^1.8" }, + "conflict": { + "vimeo/psalm": "<3.6.0" + }, "require-dev": { "phpunit/phpunit": "^4.8.36 || ^7.5.13" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, "autoload": { "psr-4": { "Webmozart\\Assert\\": "src/" @@ -3453,7 +3715,7 @@ "check", "validate" ], - "time": "2019-08-24 08:43:50" + "time": "2020-02-14T12:15:55+00:00" }, { "name": "whitehat101/apr1-md5", @@ -3497,22 +3759,22 @@ "MD5", "apr1" ], - "time": "2015-02-11 11:06:42" + "time": "2015-02-11T11:06:42+00:00" } ], "packages-dev": [ { "name": "amphp/amp", - "version": "v2.4.0", + "version": "v2.4.1", "source": { "type": "git", "url": "https://github.com/amphp/amp.git", - "reference": "13930a582947831bb66ff1aeac28672fd91c38ea" + "reference": "2ac3b550c4997f2ec304faa63c8b2885079a2dc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/amp/zipball/13930a582947831bb66ff1aeac28672fd91c38ea", - "reference": "13930a582947831bb66ff1aeac28672fd91c38ea", + "url": "https://api.github.com/repos/amphp/amp/zipball/2ac3b550c4997f2ec304faa63c8b2885079a2dc4", + "reference": "2ac3b550c4997f2ec304faa63c8b2885079a2dc4", "shasum": "" }, "require": { @@ -3576,20 +3838,20 @@ "non-blocking", "promise" ], - "time": "2019-11-11 19:32:05" + "time": "2020-02-10T18:10:57+00:00" }, { "name": "amphp/byte-stream", - "version": "v1.7.1", + "version": "v1.7.2", "source": { "type": "git", "url": "https://github.com/amphp/byte-stream.git", - "reference": "9d8205686a004948475dc43f8a88d2fa5e75a113" + "reference": "1e52f1752b2e20e2a7e464476ef887a2388e3832" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/byte-stream/zipball/9d8205686a004948475dc43f8a88d2fa5e75a113", - "reference": "9d8205686a004948475dc43f8a88d2fa5e75a113", + "url": "https://api.github.com/repos/amphp/byte-stream/zipball/1e52f1752b2e20e2a7e464476ef887a2388e3832", + "reference": "1e52f1752b2e20e2a7e464476ef887a2388e3832", "shasum": "" }, "require": { @@ -3635,7 +3897,7 @@ "non-blocking", "stream" ], - "time": "2019-10-27 14:33:41" + "time": "2020-01-29T18:22:23+00:00" }, { "name": "composer/ca-bundle", @@ -3691,7 +3953,68 @@ "ssl", "tls" ], - "time": "2020-01-13 10:02:55" + "time": "2020-01-13T10:02:55+00:00" + }, + { + "name": "composer/semver", + "version": "1.5.1", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/c6bea70230ef4dd483e6bbcab6005f682ed3a8de", + "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.5 || ^5.0.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "time": "2020-01-13T12:06:48+00:00" }, { "name": "composer/xdebug-handler", @@ -3735,36 +4058,38 @@ "Xdebug", "performance" ], - "time": "2019-11-06 16:40:04" + "time": "2019-11-06T16:40:04+00:00" }, { "name": "doctrine/instantiator", - "version": "1.0.5", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + "reference": "ae466f726242e637cebdd526a7d991b9433bacf1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1", + "reference": "ae466f726242e637cebdd526a7d991b9433bacf1", "shasum": "" }, "require": { - "php": ">=5.3,<8.0-DEV" + "php": "^7.1" }, "require-dev": { - "athletic/athletic": "~0.1.8", + "doctrine/coding-standard": "^6.0", "ext-pdo": "*", "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" + "phpbench/phpbench": "^0.13", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-shim": "^0.11", + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -3784,31 +4109,31 @@ } ], "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", "keywords": [ "constructor", "instantiate" ], - "time": "2015-06-14 21:17:01" + "time": "2019-10-21T16:45:58+00:00" }, { "name": "felixfbecker/advanced-json-rpc", - "version": "v3.0.4", + "version": "v3.1.0", "source": { "type": "git", "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git", - "reference": "23366dd0cab0a0f3fd3016bf3c0b36dec74348e7" + "reference": "a407a6cb0325cd489c6dff57afcba6baeccc0483" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/23366dd0cab0a0f3fd3016bf3c0b36dec74348e7", - "reference": "23366dd0cab0a0f3fd3016bf3c0b36dec74348e7", + "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/a407a6cb0325cd489c6dff57afcba6baeccc0483", + "reference": "a407a6cb0325cd489c6dff57afcba6baeccc0483", "shasum": "" }, "require": { "netresearch/jsonmapper": "^1.0", "php": ">=7.0", - "phpdocumentor/reflection-docblock": "^4.0.0" + "phpdocumentor/reflection-docblock": "^4.0.0 || ^5.0.0" }, "require-dev": { "phpunit/phpunit": "^6.0.0" @@ -3830,7 +4155,7 @@ } ], "description": "A more advanced JSONRPC implementation", - "time": "2019-09-12 22:41:08" + "time": "2020-02-11T20:48:40+00:00" }, { "name": "felixfbecker/language-server-protocol", @@ -3877,7 +4202,7 @@ "php", "server" ], - "time": "2019-06-23 21:03:50" + "time": "2019-06-23T21:03:50+00:00" }, { "name": "mikey179/vfsstream", @@ -3923,85 +4248,32 @@ ], "description": "Virtual file system to mock the real file system in unit tests.", "homepage": "http://vfs.bovigo.org/", - "time": "2019-10-30 15:31:00" - }, - { - "name": "muglug/package-versions-56", - "version": "1.2.4", - "source": { - "type": "git", - "url": "https://github.com/muglug/PackageVersions.git", - "reference": "a67bed26deaaf9269a348e53063bc8d4dcc60ffd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/muglug/PackageVersions/zipball/a67bed26deaaf9269a348e53063bc8d4dcc60ffd", - "reference": "a67bed26deaaf9269a348e53063bc8d4dcc60ffd", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0", - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "composer/composer": "^1.3", - "ext-zip": "*", - "phpunit/phpunit": "^5.7.5" - }, - "type": "composer-plugin", - "extra": { - "class": "Muglug\\PackageVersions\\Installer", - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Muglug\\PackageVersions\\": "src/PackageVersions" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - }, - { - "name": "Abdul Malik Ikhsan", - "email": "samsonasik@gmail.com" - }, - { - "name": "Matt Brown", - "email": "github@muglug.com" - } - ], - "description": "A backport of ocramius/package-versions that supports php ^5.6. Composer plugin that provides efficient querying for installed package versions (no runtime IO)", - "time": "2018-03-26 03:22:13" + "time": "2019-10-30T15:31:00+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.7.0", + "version": "1.9.5", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" + "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef", + "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" }, "require-dev": { "doctrine/collections": "^1.0", "doctrine/common": "^2.6", - "phpunit/phpunit": "^4.1" + "phpunit/phpunit": "^7.1" }, "type": "library", "autoload": { @@ -4024,7 +4296,7 @@ "object", "object graph" ], - "time": "2017-10-19 19:58:43" + "time": "2020-01-17T21:11:47+00:00" }, { "name": "netresearch/jsonmapper", @@ -4070,7 +4342,7 @@ } ], "description": "Map nested JSON structures onto PHP classes", - "time": "2019-08-15 19:41:25" + "time": "2019-08-15T19:41:25+00:00" }, { "name": "nikic/php-parser", @@ -4122,20 +4394,70 @@ "parser", "php" ], - "time": "2019-11-08 13:50:10" + "time": "2019-11-08T13:50:10+00:00" + }, + { + "name": "ocramius/package-versions", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/Ocramius/PackageVersions.git", + "reference": "44af6f3a2e2e04f2af46bcb302ad9600cba41c7d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/44af6f3a2e2e04f2af46bcb302ad9600cba41c7d", + "reference": "44af6f3a2e2e04f2af46bcb302ad9600cba41c7d", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0.0", + "php": "^7.1.0" + }, + "require-dev": { + "composer/composer": "^1.6.3", + "doctrine/coding-standard": "^5.0.1", + "ext-zip": "*", + "infection/infection": "^0.7.1", + "phpunit/phpunit": "^7.5.17" + }, + "type": "composer-plugin", + "extra": { + "class": "PackageVersions\\Installer", + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "PackageVersions\\": "src/PackageVersions" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", + "time": "2019-11-15T16:17:10+00:00" }, { "name": "openlss/lib-array2xml", - "version": "0.5.1", + "version": "1.0.0", "source": { "type": "git", "url": "https://github.com/nullivex/lib-array2xml.git", - "reference": "c8b5998a342d7861f2e921403f44e0a2f3ef2be0" + "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nullivex/lib-array2xml/zipball/c8b5998a342d7861f2e921403f44e0a2f3ef2be0", - "reference": "c8b5998a342d7861f2e921403f44e0a2f3ef2be0", + "url": "https://api.github.com/repos/nullivex/lib-array2xml/zipball/a91f18a8dfc69ffabe5f9b068bc39bb202c81d90", + "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90", "shasum": "" }, "require": { @@ -4154,43 +4476,43 @@ "authors": [ { "name": "Bryan Tong", - "email": "contact@nullivex.com", - "homepage": "http://bryantong.com" + "email": "bryan@nullivex.com", + "homepage": "https://www.nullivex.com" }, { "name": "Tony Butler", "email": "spudz76@gmail.com", - "homepage": "http://openlss.org" + "homepage": "https://www.nullivex.com" } ], "description": "Array2XML conversion library credit to lalit.org", - "homepage": "http://openlss.org", + "homepage": "https://www.nullivex.com", "keywords": [ "array", "array conversion", "xml", "xml conversion" ], - "time": "2016-11-10 19:10:18" + "time": "2019-03-29T20:06:56+00:00" }, { "name": "phar-io/manifest", - "version": "1.0.1", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", - "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", "shasum": "" }, "require": { "ext-dom": "*", "ext-phar": "*", - "phar-io/version": "^1.0.1", + "phar-io/version": "^2.0", "php": "^5.6 || ^7.0" }, "type": "library", @@ -4226,20 +4548,20 @@ } ], "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "time": "2017-03-05 18:14:27" + "time": "2018-07-08T19:23:20+00:00" }, { "name": "phar-io/version", - "version": "1.0.1", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", - "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", + "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", "shasum": "" }, "require": { @@ -4273,90 +4595,37 @@ } ], "description": "Library for handling version information and constraints", - "time": "2017-03-05 17:38:23" - }, - { - "name": "php-cs-fixer/diff", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/PHP-CS-Fixer/diff.git", - "reference": "78bb099e9c16361126c86ce82ec4405ebab8e756" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/78bb099e9c16361126c86ce82ec4405ebab8e756", - "reference": "78bb099e9c16361126c86ce82ec4405ebab8e756", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7.23 || ^6.4.3", - "symfony/process": "^3.3" - }, - "type": "library", - "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" - }, - { - "name": "SpacePossum" - } - ], - "description": "sebastian/diff v2 backport support for PHP5.6", - "homepage": "https://github.com/PHP-CS-Fixer", - "keywords": [ - "diff" - ], - "time": "2018-02-15 16:58:55" + "time": "2018-07-08T19:19:57+00:00" }, { "name": "phpdocumentor/reflection-common", - "version": "1.0.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a", + "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a", "shasum": "" }, "require": { - "php": ">=5.5" + "php": ">=7.1" }, "require-dev": { - "phpunit/phpunit": "^4.6" + "phpunit/phpunit": "~6" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src" - ] + "phpDocumentor\\Reflection\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4378,45 +4647,42 @@ "reflection", "static analysis" ], - "time": "2017-09-11 18:02:19" + "time": "2018-08-07T13:53:10+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.4", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c" + "reference": "a48807183a4b819072f26e347bbd0b5199a9d15f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c", - "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/a48807183a4b819072f26e347bbd0b5199a9d15f", + "reference": "a48807183a4b819072f26e347bbd0b5199a9d15f", "shasum": "" }, "require": { - "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0", - "phpdocumentor/type-resolver": "~0.4 || ^1.0.0", - "webmozart/assert": "^1.0" + "ext-filter": "^7.1", + "php": "^7.2", + "phpdocumentor/reflection-common": "^2.0", + "phpdocumentor/type-resolver": "^1.0", + "webmozart/assert": "^1" }, "require-dev": { - "doctrine/instantiator": "^1.0.5", - "mockery/mockery": "^1.0", - "phpdocumentor/type-resolver": "0.4.*", - "phpunit/phpunit": "^6.4" + "doctrine/instantiator": "^1", + "mockery/mockery": "^1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.x-dev" + "dev-master": "5.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -4427,37 +4693,42 @@ { "name": "Mike van Riel", "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2019-12-28 18:55:12" + "time": "2020-02-09T09:16:15+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "0.5.1", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "cf842904952e64e703800d094cdf34e715a8a3ae" + "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/cf842904952e64e703800d094cdf34e715a8a3ae", - "reference": "cf842904952e64e703800d094cdf34e715a8a3ae", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", + "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", "shasum": "" }, "require": { - "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0" + "php": "^7.1", + "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^6.4" + "ext-tokenizer": "^7.1", + "mockery/mockery": "~1", + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { @@ -4475,91 +4746,29 @@ "email": "me@mikevanriel.com" } ], - "time": "2017-12-30 13:23:38" - }, - { - "name": "phpmyadmin/sql-parser", - "version": "4.5.0", - "source": { - "type": "git", - "url": "https://github.com/phpmyadmin/sql-parser.git", - "reference": "b00f1c29ff80d0b68afaaa67a2d6b01ae74310f7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/b00f1c29ff80d0b68afaaa67a2d6b01ae74310f7", - "reference": "b00f1c29ff80d0b68afaaa67a2d6b01ae74310f7", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "symfony/polyfill-mbstring": "^1.3" - }, - "conflict": { - "phpmyadmin/motranslator": "<3.0" - }, - "require-dev": { - "phpunit/php-code-coverage": "*", - "phpunit/phpunit": "~4.8 || ~5.7 || ~6.5", - "sami/sami": "^4.0", - "squizlabs/php_codesniffer": "~2.9 || ~3.4" - }, - "suggest": { - "ext-mbstring": "For best performance", - "phpmyadmin/motranslator": "Translate messages to your favorite locale" - }, - "bin": [ - "bin/highlight-query", - "bin/lint-query", - "bin/tokenize-query" - ], - "type": "library", - "autoload": { - "psr-4": { - "PhpMyAdmin\\SqlParser\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "The phpMyAdmin Team", - "email": "developers@phpmyadmin.net", - "homepage": "https://www.phpmyadmin.net/team/" - } - ], - "description": "A validating SQL lexer and parser with a focus on MySQL dialect.", - "homepage": "https://github.com/phpmyadmin/sql-parser", - "keywords": [ - "analysis", - "lexer", - "parser", - "sql" - ], - "time": "2020-01-07 23:22:41" + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "time": "2019-08-22T18:11:29+00:00" }, { "name": "phpspec/prophecy", - "version": "1.10.1", + "version": "v1.10.2", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "cbe1df668b3fe136bcc909126a0f529a78d4cbbc" + "reference": "b4400efc9d206e83138e2bb97ed7f5b14b831cd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/cbe1df668b3fe136bcc909126a0f529a78d4cbbc", - "reference": "cbe1df668b3fe136bcc909126a0f529a78d4cbbc", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/b4400efc9d206e83138e2bb97ed7f5b14b831cd9", + "reference": "b4400efc9d206e83138e2bb97ed7f5b14b831cd9", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", "php": "^5.3|^7.0", "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", - "sebastian/comparator": "^1.2.3|^2.0|^3.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0" + "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" }, "require-dev": { "phpspec/phpspec": "^2.5 || ^3.2", @@ -4601,44 +4810,44 @@ "spy", "stub" ], - "time": "2019-12-22 21:05:45" + "time": "2020-01-20T15:57:02+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "5.3.2", + "version": "7.0.10", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "c89677919c5dd6d3b3852f230a663118762218ac" + "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac", - "reference": "c89677919c5dd6d3b3852f230a663118762218ac", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f1884187926fbb755a9aaf0b3836ad3165b478bf", + "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf", "shasum": "" }, "require": { "ext-dom": "*", "ext-xmlwriter": "*", - "php": "^7.0", - "phpunit/php-file-iterator": "^1.4.2", + "php": "^7.2", + "phpunit/php-file-iterator": "^2.0.2", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^2.0.1", + "phpunit/php-token-stream": "^3.1.1", "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^3.0", + "sebastian/environment": "^4.2.2", "sebastian/version": "^2.0.1", - "theseer/tokenizer": "^1.1" + "theseer/tokenizer": "^1.1.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^8.2.2" }, "suggest": { - "ext-xdebug": "^2.5.5" + "ext-xdebug": "^2.7.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.3.x-dev" + "dev-master": "7.0-dev" } }, "autoload": { @@ -4664,29 +4873,32 @@ "testing", "xunit" ], - "time": "2018-04-06 15:36:58" + "time": "2019-11-20T13:55:58+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "1.4.5", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" + "reference": "050bedf145a257b1ff02746c31894800e5122946" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", + "reference": "050bedf145a257b1ff02746c31894800e5122946", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -4701,7 +4913,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -4711,7 +4923,7 @@ "filesystem", "iterator" ], - "time": "2017-11-27 13:52:08" + "time": "2018-09-13T20:33:42+00:00" }, { "name": "phpunit/php-text-template", @@ -4752,32 +4964,32 @@ "keywords": [ "template" ], - "time": "2015-06-21 13:50:34" + "time": "2015-06-21T13:50:34+00:00" }, { "name": "phpunit/php-timer", - "version": "1.0.9", + "version": "2.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.1-dev" } }, "autoload": { @@ -4792,7 +5004,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -4801,33 +5013,33 @@ "keywords": [ "timer" ], - "time": "2017-02-26 11:10:40" + "time": "2019-06-07T04:22:29+00:00" }, { "name": "phpunit/php-token-stream", - "version": "2.0.2", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "791198a2c6254db10131eecfe8c06670700904db" + "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", - "reference": "791198a2c6254db10131eecfe8c06670700904db", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff", + "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": "^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^6.2.4" + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -4850,57 +5062,56 @@ "keywords": [ "tokenizer" ], - "time": "2017-11-27 05:48:46" + "time": "2019-09-17T06:23:10+00:00" }, { "name": "phpunit/phpunit", - "version": "6.5.14", + "version": "8.5.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7" + "reference": "018b6ac3c8ab20916db85fa91bf6465acb64d1e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bac23fe7ff13dbdb461481f706f0e9fe746334b7", - "reference": "bac23fe7ff13dbdb461481f706f0e9fe746334b7", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/018b6ac3c8ab20916db85fa91bf6465acb64d1e0", + "reference": "018b6ac3c8ab20916db85fa91bf6465acb64d1e0", "shasum": "" }, "require": { + "doctrine/instantiator": "^1.2.0", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", - "myclabs/deep-copy": "^1.6.1", - "phar-io/manifest": "^1.0.1", - "phar-io/version": "^1.0", - "php": "^7.0", - "phpspec/prophecy": "^1.7", - "phpunit/php-code-coverage": "^5.3", - "phpunit/php-file-iterator": "^1.4.3", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.9.1", + "phar-io/manifest": "^1.0.3", + "phar-io/version": "^2.0.1", + "php": "^7.2", + "phpspec/prophecy": "^1.8.1", + "phpunit/php-code-coverage": "^7.0.7", + "phpunit/php-file-iterator": "^2.0.2", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^1.0.9", - "phpunit/phpunit-mock-objects": "^5.0.9", - "sebastian/comparator": "^2.1", - "sebastian/diff": "^2.0", - "sebastian/environment": "^3.1", - "sebastian/exporter": "^3.1", - "sebastian/global-state": "^2.0", + "phpunit/php-timer": "^2.1.2", + "sebastian/comparator": "^3.0.2", + "sebastian/diff": "^3.0.2", + "sebastian/environment": "^4.2.2", + "sebastian/exporter": "^3.1.1", + "sebastian/global-state": "^3.0.0", "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^1.0", + "sebastian/resource-operations": "^2.0.1", + "sebastian/type": "^1.1.3", "sebastian/version": "^2.0.1" }, - "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2", - "phpunit/dbunit": "<3.0" - }, "require-dev": { "ext-pdo": "*" }, "suggest": { + "ext-soap": "*", "ext-xdebug": "*", - "phpunit/php-invoker": "^1.1" + "phpunit/php-invoker": "^2.0.0" }, "bin": [ "phpunit" @@ -4908,7 +5119,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "6.5.x-dev" + "dev-master": "8.5-dev" } }, "autoload": { @@ -4934,67 +5145,7 @@ "testing", "xunit" ], - "time": "2019-02-01 05:22:47" - }, - { - "name": "phpunit/phpunit-mock-objects", - "version": "5.0.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f", - "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.5", - "php": "^7.0", - "phpunit/php-text-template": "^1.2.1", - "sebastian/exporter": "^3.1" - }, - "conflict": { - "phpunit/phpunit": "<6.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.11" - }, - "suggest": { - "ext-soap": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.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": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "abandoned": true, - "time": "2018-08-09 05:50:03" + "time": "2020-01-08T08:49:49+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -5039,34 +5190,34 @@ ], "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-04 06:30:41" + "time": "2017-03-04T06:30:41+00:00" }, { "name": "sebastian/comparator", - "version": "2.1.3", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9" + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9", - "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", "shasum": "" }, "require": { - "php": "^7.0", - "sebastian/diff": "^2.0 || ^3.0", + "php": "^7.1", + "sebastian/diff": "^3.0", "sebastian/exporter": "^3.1" }, "require-dev": { - "phpunit/phpunit": "^6.4" + "phpunit/phpunit": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -5103,32 +5254,33 @@ "compare", "equality" ], - "time": "2018-02-01 13:46:46" + "time": "2018-07-12T15:12:46+00:00" }, { "name": "sebastian/diff", - "version": "2.0.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", - "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", "shasum": "" }, "require": { - "php": "^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^6.2" + "phpunit/phpunit": "^7.5 || ^8.0", + "symfony/process": "^2 || ^3.3 || ^4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -5153,34 +5305,40 @@ "description": "Diff implementation", "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "diff" + "diff", + "udiff", + "unidiff", + "unified diff" ], - "time": "2017-08-03 08:09:46" + "time": "2019-02-04T06:01:07+00:00" }, { "name": "sebastian/environment", - "version": "3.1.0", + "version": "4.2.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" + "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", - "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368", + "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368", "shasum": "" }, "require": { - "php": "^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^6.1" + "phpunit/phpunit": "^7.5" + }, + "suggest": { + "ext-posix": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1.x-dev" + "dev-master": "4.2-dev" } }, "autoload": { @@ -5205,7 +5363,7 @@ "environment", "hhvm" ], - "time": "2017-07-01 08:51:00" + "time": "2019-11-20T08:46:58+00:00" }, { "name": "sebastian/exporter", @@ -5272,27 +5430,30 @@ "export", "exporter" ], - "time": "2019-09-14 09:02:43" + "time": "2019-09-14T09:02:43+00:00" }, { "name": "sebastian/global-state", - "version": "2.0.0", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" + "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", + "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", "shasum": "" }, "require": { - "php": "^7.0" + "php": "^7.2", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "ext-dom": "*", + "phpunit/phpunit": "^8.0" }, "suggest": { "ext-uopz": "*" @@ -5300,7 +5461,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -5323,7 +5484,7 @@ "keywords": [ "global state" ], - "time": "2017-04-27 15:39:26" + "time": "2019-02-01T05:30:01+00:00" }, { "name": "sebastian/object-enumerator", @@ -5370,7 +5531,7 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-08-03 12:35:26" + "time": "2017-08-03T12:35:26+00:00" }, { "name": "sebastian/object-reflector", @@ -5415,7 +5576,7 @@ ], "description": "Allows reflection of object attributes, including inherited and non-public ones", "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "time": "2017-03-29 09:07:27" + "time": "2017-03-29T09:07:27+00:00" }, { "name": "sebastian/recursion-context", @@ -5468,29 +5629,29 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2017-03-03 06:23:57" + "time": "2017-03-03T06:23:57+00:00" }, { "name": "sebastian/resource-operations", - "version": "1.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", "shasum": "" }, "require": { - "php": ">=5.6.0" + "php": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -5510,7 +5671,53 @@ ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28 20:34:47" + "time": "2018-10-04T04:07:39+00:00" + }, + { + "name": "sebastian/type", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/3aaaa15fa71d27650d62a948be022fe3b48541a3", + "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3", + "shasum": "" + }, + "require": { + "php": "^7.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.2" + }, + "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", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "time": "2019-07-02T08:10:15+00:00" }, { "name": "sebastian/version", @@ -5553,7 +5760,7 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2016-10-03 07:35:21" + "time": "2016-10-03T07:35:21+00:00" }, { "name": "sensiolabs/security-checker", @@ -5599,7 +5806,7 @@ } ], "description": "A security checker for your composer.lock", - "time": "2018-12-19 17:14:59" + "time": "2018-12-19T17:14:59+00:00" }, { "name": "simplesamlphp/simplesamlphp-test-framework", @@ -5652,20 +5859,20 @@ "keywords": [ "test-framework" ], - "time": "2019-12-30 21:14:30" + "time": "2019-12-30T21:14:30+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.5.3", + "version": "3.5.4", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "557a1fc7ac702c66b0bbfe16ab3d55839ef724cb" + "reference": "dceec07328401de6211037abbb18bda423677e26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/557a1fc7ac702c66b0bbfe16ab3d55839ef724cb", - "reference": "557a1fc7ac702c66b0bbfe16ab3d55839ef724cb", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/dceec07328401de6211037abbb18bda423677e26", + "reference": "dceec07328401de6211037abbb18bda423677e26", "shasum": "" }, "require": { @@ -5703,7 +5910,7 @@ "phpcs", "standards" ], - "time": "2019-12-04 04:46:47" + "time": "2020-01-30T22:20:29+00:00" }, { "name": "theseer/tokenizer", @@ -5743,36 +5950,41 @@ } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2019-06-13 22:48:21" + "time": "2019-06-13T22:48:21+00:00" }, { "name": "vimeo/psalm", - "version": "3.2.12", + "version": "3.8.5", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "fe0f352132f798512ced19faf75cbfc84e4aabe7" + "reference": "e6ec5fa22a7b9e61670a24d07b3119aff80dcd89" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/fe0f352132f798512ced19faf75cbfc84e4aabe7", - "reference": "fe0f352132f798512ced19faf75cbfc84e4aabe7", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/e6ec5fa22a7b9e61670a24d07b3119aff80dcd89", + "reference": "e6ec5fa22a7b9e61670a24d07b3119aff80dcd89", "shasum": "" }, "require": { "amphp/amp": "^2.1", "amphp/byte-stream": "^1.5", + "composer/semver": "^1.4", "composer/xdebug-handler": "^1.1", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-simplexml": "*", + "ext-tokenizer": "*", "felixfbecker/advanced-json-rpc": "^3.0.3", - "felixfbecker/language-server-protocol": "^1.2", - "muglug/package-versions-56": "1.2.4", + "felixfbecker/language-server-protocol": "^1.4", "netresearch/jsonmapper": "^1.0", - "nikic/php-parser": "^4.0.2 || ^4.1", - "openlss/lib-array2xml": "^0.0.10||^0.5.1", - "php": "^7.0", - "php-cs-fixer/diff": "^1.2", - "phpmyadmin/sql-parser": "^4.0", - "symfony/console": "^3.3||^4.0", + "nikic/php-parser": "^4.3", + "ocramius/package-versions": "^1.2", + "openlss/lib-array2xml": "^1.0", + "php": "^7.1.3|^8", + "sebastian/diff": "^3.0 || ^4.0", + "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0", "webmozart/glob": "^4.1", "webmozart/path-util": "^2.3" }, @@ -5781,18 +5993,24 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.2", - "phpunit/phpunit": "^6.0 || ^7.0", - "psalm/plugin-phpunit": "^0.5.5", - "squizlabs/php_codesniffer": "3.4.0" + "ext-curl": "*", + "phpmyadmin/sql-parser": "^5.0", + "phpspec/prophecy": ">=1.9.0", + "phpunit/phpunit": "^7.5.16 || ^8.0", + "psalm/plugin-phpunit": "^0.6", + "slevomat/coding-standard": "^5.0", + "squizlabs/php_codesniffer": "^3.5", + "symfony/process": "^4.3" }, "suggest": { "ext-igbinary": "^2.0.5" }, "bin": [ "psalm", - "psalter", "psalm-language-server", - "psalm-plugin" + "psalm-plugin", + "psalm-refactor", + "psalter" ], "type": "library", "extra": { @@ -5806,7 +6024,11 @@ "psr-4": { "Psalm\\Plugin\\": "src/Psalm/Plugin", "Psalm\\": "src/Psalm" - } + }, + "files": [ + "src/functions.php", + "src/spl_object_id.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5823,7 +6045,7 @@ "inspection", "php" ], - "time": "2019-05-13 15:00:17" + "time": "2020-02-07T17:15:50+00:00" }, { "name": "webmozart/glob", @@ -5870,7 +6092,7 @@ } ], "description": "A PHP implementation of Ant's glob.", - "time": "2015-12-29 11:14:33" + "time": "2015-12-29T11:14:33+00:00" }, { "name": "webmozart/path-util", @@ -5916,7 +6138,7 @@ } ], "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.", - "time": "2015-12-17 08:42:14" + "time": "2015-12-17T08:42:14+00:00" } ], "aliases": [], @@ -5925,7 +6147,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=7.0", + "php": ">=7.2", "ext-spl": "*", "ext-zlib": "*", "ext-pcre": "*", diff --git a/config-templates/config.php b/config-templates/config.php index dc4280072051d418426572b56fa9d93766143ec7..56c06aa9365dbb71e2b342e2867be52f63e1b268 100644 --- a/config-templates/config.php +++ b/config-templates/config.php @@ -462,19 +462,8 @@ $config = [ * In example when you are setting up a federation bridge. */ 'enable.saml20-idp' => false, - 'enable.shib13-idp' => false, 'enable.adfs-idp' => false, - /* - * Whether SimpleSAMLphp should sign the response or the assertion in SAML 1.1 authentication - * responses. - * - * The default is to sign the assertion element, but that can be overridden by setting this - * option to TRUE. It can also be overridden on a pr. SP basis by adding an option with the - * same name to the metadata of the SP. - */ - 'shib13.signresponse' => true, - /*********** @@ -927,7 +916,6 @@ $config = [ /* * Authentication processing filters that will be executed for all IdPs - * Both Shibboleth and SAML 2.0 */ 'authproc.idp' => [ /* Enable the authproc filter below to add URN prefixes to all attributes @@ -983,7 +971,6 @@ $config = [ /* * Authentication processing filters that will be executed for all SPs - * Both Shibboleth and SAML 2.0 */ 'authproc.sp' => [ /* diff --git a/docs/simplesamlphp-authproc.md b/docs/simplesamlphp-authproc.md index 4e42b7fe7064b770143d676ac48035a159f77e44..cf249bc2d0e62154b8e4686ea4d340a2378844cd 100644 --- a/docs/simplesamlphp-authproc.md +++ b/docs/simplesamlphp-authproc.md @@ -38,9 +38,9 @@ How to configure Auth Proc Filters * Globally in `config.php` * On the SP: Specific for only the SP in `authsources.php` - * On the SP: Specific for only one remote IdP in `saml20-idp-remote` or `shib13-idp-remote` - * On the IdP: Specific for only one hosted IdP in `saml20-idp-hosted` or `shib13-idp-hosted` - * On the IdP: Specific for only one remote SP in `saml20-sp-remote` or `shib13-sp-remote` + * On the SP: Specific for only one remote IdP in `saml20-idp-remote` + * On the IdP: Specific for only one hosted IdP in `saml20-idp-hosted` + * On the IdP: Specific for only one remote SP in `saml20-sp-remote` The configuration of *Auth Proc Filters* is a list of filters with priority as *index*. Here is an example of *Auth Proc Filters* configured in `config.php`: diff --git a/docs/simplesamlphp-errorhandling.md b/docs/simplesamlphp-errorhandling.md index ddefac164874fca8a905af5e2478ab1ddb42986e..5dc6fa8ea8aff13317aa7f2d548500b01526029a 100644 --- a/docs/simplesamlphp-errorhandling.md +++ b/docs/simplesamlphp-errorhandling.md @@ -225,7 +225,7 @@ Example code for this function, which implements the same functionality as \Simp public static function show(\SimpleSAML\Configuration $config, array $data) { $t = new \SimpleSAML\XHTML\Template($config, 'error.php', 'errors'); $t->data = array_merge($t->data, $data); - $t->show(); + $t->send(); exit; } diff --git a/docs/simplesamlphp-googleapps.md b/docs/simplesamlphp-googleapps.md index 30cab47945824061a94ef5e6b0cab755f8e6f6aa..d74a04dbf972f67ed000c6c597101f8847f3a665 100644 --- a/docs/simplesamlphp-googleapps.md +++ b/docs/simplesamlphp-googleapps.md @@ -35,7 +35,6 @@ In this example we will setup this server as an IdP for Google Apps for Educatio Edit `config.php`, and enable the SAML 2.0 IdP: 'enable.saml20-idp' => true, - 'enable.shib13-idp' => false, ## Setting up a signing certificate diff --git a/docs/simplesamlphp-idp-more.md b/docs/simplesamlphp-idp-more.md index bb5ead1ac8bde0e79d9bdaa90299862db60d6163..a89c2c8af59512112812e076726dea06f25e4bf8 100644 --- a/docs/simplesamlphp-idp-more.md +++ b/docs/simplesamlphp-idp-more.md @@ -57,31 +57,6 @@ For compatibility with certain SPs, SimpleSAMLphp will also accept the `RelayState` and `ConsumerURL`, respectively. -### IdP first with SAML 1.1 - -A SAML 1.1 SP does not send an authentication request to the IdP, but instead triggers IdP initiated authentication directly. -If you want to do it manually, you can access the following URL: - - https://idp.example.org/simplesaml/shib13/idp/SSOService.php?providerId=urn:mace:feide.no:someservice&shire=https://sp.example.org/acs-endpoint&target=https://sp.example.org/somepage - -The parameters are as follows: - -`providerID` -: The entityID of the SP. - This parameter is required. - -`shire` -: The AssertionConsumerService endpoint of the SP. - This parameter is required. - -`target` -: The target parameter the SP should receive with the authentication response. - This is often the page the user should be sent to after authentication. - This parameter is optional for the IdP, but must be specified if the SP you are targeting is running SimpleSAMLphp. - -: *Note*: This parameter must be sent as `target` (with lowercase letters) when starting the authentication, while it is sent as `TARGET` (with uppercase letters) in the authentication response. - - IdP-initiated logout -------------------- diff --git a/docs/simplesamlphp-reference-idp-hosted.md b/docs/simplesamlphp-reference-idp-hosted.md index 3a6b47934b868487996c680f56b6ff66b96d0ffd..8291a610b1f70eb3ff4b3ff78ec7b3b57d1b1d5b 100644 --- a/docs/simplesamlphp-reference-idp-hosted.md +++ b/docs/simplesamlphp-reference-idp-hosted.md @@ -3,8 +3,7 @@ IdP hosted metadata reference <!-- {{TOC}} --> -This is a reference for the metadata files -`metadata/saml20-idp-hosted.php` and `metadata/shib13-idp-hosted.php`. +This is a reference for the metadata file `metadata/saml20-idp-hosted.php`. Both files have the following format: <?php @@ -396,28 +395,6 @@ messages from that SP. 'redirect.sign' => true, -Shibboleth 1.3 options ----------------------- - -The following options for Shibboleth 1.3 IdP's are avaiblable: - -`scopedattributes` -: Array with names of attributes which should be scoped. Scoped - attributes will receive a `Scope`-attribute on the - `AttributeValue`-element. The value of the Scope-attribute will - be taken from the attribute value: - -: `<AttributeValue>someuser@example.org</AttributeValue>` - -: will be transformed into - -: `<AttributeValue Scope="example.org">someuser</AttributeValue>` - -: By default, no attributes are scoped. Note that this option also - exists in the SP-remote metadata, and any value in the SP-remote - metadata overrides the one configured in the IdP metadata. - - Metadata extensions ------------------- @@ -434,7 +411,7 @@ Examples These are some examples of IdP metadata -### Minimal SAML 2.0 / Shibboleth 1.3 IdP ### +### Minimal SAML 2.0 IdP ### <?php /* diff --git a/docs/simplesamlphp-reference-idp-remote.md b/docs/simplesamlphp-reference-idp-remote.md index 95b4eda3e9d0b049267cf551a5d9b04f32986a60..30059f2c8b8ffa76b092343d7c3ca5c1535f421e 100644 --- a/docs/simplesamlphp-reference-idp-remote.md +++ b/docs/simplesamlphp-reference-idp-remote.md @@ -3,7 +3,7 @@ IdP remote metadata reference <!-- {{TOC}} --> -This is a reference for metadata options available for `metadata/saml20-idp-remote.php` and `metadata/shib13-idp-remote.php`. Both files have the following format: +This is a reference for metadata options available for `metadata/saml20-idp-remote.php`. The file has the following format: <?php /* The index of the array is the entity ID of this IdP. */ diff --git a/docs/simplesamlphp-reference-sp-remote.md b/docs/simplesamlphp-reference-sp-remote.md index 423df7b37f76366b4aa64cae63ba016b75b509e8..fb71d24c00a1c78bccb8096263b6c23e2e8713fc 100644 --- a/docs/simplesamlphp-reference-sp-remote.md +++ b/docs/simplesamlphp-reference-sp-remote.md @@ -3,8 +3,7 @@ SP remote metadata reference <!-- {{TOC}} --> -This is a reference for metadata options available for -`metadata/saml20-sp-remote.php` and `metadata/shib13-sp-remote.php`. +This is a reference for metadata options available for `metadata/saml20-sp-remote.php`. Both files have the following format: <?php @@ -21,8 +20,7 @@ Both files have the following format: Common options -------------- -The following options are common between both the SAML 2.0 protocol -and Shibboleth 1.3 protocol: +The following options can be set: `attributes` : This should indicate which attributes an SP should receive. It is @@ -108,12 +106,6 @@ and Shibboleth 1.3 protocol: SP-remote metadata has the highest priority. The default value is `eduPersonPrincipalName`. - -SAML 2.0 options ----------------- - -The following SAML 2.0 options are available: - `AssertionConsumerService` : The URL of the AssertionConsumerService endpoint for this SP. This option is required - without it you will not be able to send @@ -378,44 +370,3 @@ idp is in the intersection the discoveryservice will go directly to the idp. 'IDPList' => ['https://idp1.wayf.dk', 'https://idp2.wayf.dk'], - - -Shibboleth 1.3 options ----------------------- - -The following options for Shibboleth 1.3 SP's are avaiblable: - -`audience` -: The value which should be given in the `<Audience>`-element in the - `<AudienceRestrictionCondition>`-element in the response. The - default value is the entity ID of the SP. - -`AssertionConsumerService` -: The URL of the AssertionConsumerService endpoint for this SP. - This endpoint must accept the SAML responses encoded with the - `urn:oasis:names:tc:SAML:1.0:profiles:browser-post` encoding. - This option is required - without it you will not be able to send - responses back to the SP. - -: The value of this option is specified in one of several [endpoint formats](./simplesamlphp-metadata-endpoints). - -`NameQualifier` -: What the value of the `NameQualifier`-attribute of the - `<NameIdentifier>`-element should be. The default value is the - entity ID of the SP. - -`scopedattributes` -: Array with names of attributes which should be scoped. Scoped - attributes will receive a `Scope`-attribute on the - `AttributeValue`-element. The value of the Scope-attribute will - be taken from the attribute value: - -: `<AttributeValue>someuser@example.org</AttributeValue>` - -: will be transformed into - -: `<AttributeValue Scope="example.org">someuser</AttributeValue>` - -: By default, no attributes are scoped. This option overrides the - option with the same name in the `shib13-idp-hosted.php` metadata - file. diff --git a/docs/simplesamlphp-sp.md b/docs/simplesamlphp-sp.md index 1572e797595ba516ac778794fa0cb7f911426885..45ddf79f64b1ef6b2e3e49a300ee4761fb97e05a 100644 --- a/docs/simplesamlphp-sp.md +++ b/docs/simplesamlphp-sp.md @@ -65,7 +65,7 @@ Then edit your `authsources.php` entry, and add references to your certificate: Adding IdPs to the SP --------------------- -The service provider you are configuring needs to know about the identity providers you are going to connect to it. This is configured by metadata stored in `metadata/saml20-idp-remote.php` and `metadata/shib13-idp-remote.php`. +The service provider you are configuring needs to know about the identity providers you are going to connect to it. This is configured by metadata stored in `metadata/saml20-idp-remote.php`. This is a minimal example of a `metadata/saml20-idp-remote.php` metadata file: <?php diff --git a/extra/simplesamlphp.spec b/extra/simplesamlphp.spec index b06ae0ef937307cb84bada90597480ba9291a700..6a744a6e4aa8aae19fa5f962b3fec9267978f57b 100644 --- a/extra/simplesamlphp.spec +++ b/extra/simplesamlphp.spec @@ -78,10 +78,6 @@ tar cf - . | (cd %{buildroot}%{_prefix}simplesamlphp; tar xfp -) %config(noreplace) %attr(0640, root,apache) /var/lib/simplesamlphp/metadata/saml20-idp-hosted.php %config(noreplace) %attr(0640, root,apache) /var/lib/simplesamlphp/metadata/saml20-idp-remote.php %config(noreplace) %attr(0640, root,apache) /var/lib/simplesamlphp/metadata/saml20-sp-remote.php -%config(noreplace) %attr(0640, root,apache) /var/lib/simplesamlphp/metadata/shib13-idp-hosted.php -%config(noreplace) %attr(0640, root,apache) /var/lib/simplesamlphp/metadata/shib13-idp-remote.php -%config(noreplace) %attr(0640, root,apache) /var/lib/simplesamlphp/metadata/shib13-sp-hosted.php -%config(noreplace) %attr(0640, root,apache) /var/lib/simplesamlphp/metadata/shib13-sp-remote.php %dir %attr(0770, root, apache) /var/lib/simplesamlphp/log %dir %attr(0770, root, apache) /var/lib/simplesamlphp/data %dir %attr(0750, root, apache) /var/lib/simplesamlphp/cert diff --git a/lib/SimpleSAML/Auth/DefaultAuth.php b/lib/SimpleSAML/Auth/DefaultAuth.php deleted file mode 100644 index 192868f31635dbbbb8ca0ff4cd158d233fed3388..0000000000000000000000000000000000000000 --- a/lib/SimpleSAML/Auth/DefaultAuth.php +++ /dev/null @@ -1,168 +0,0 @@ -<?php - -declare(strict_types=1); - -namespace SimpleSAML\Auth; - -use SimpleSAML\Module\saml\Auth\Source\SP; -use SimpleSAML\Session; -use SimpleSAML\Utils; - -/** - * Implements the default behaviour for authentication. - * - * This class contains an implementation for default behaviour when authenticating. It will - * save the session information it got from the authentication client in the users session. - * - * @author Olav Morken, UNINETT AS. - * @package SimpleSAMLphp - * - * @deprecated This class will be removed in SSP 2.0. - */ - -class DefaultAuth -{ - /** - * @deprecated This method will be removed in SSP 2.0. Use Source::initLogin() instead. - * @param string $authId - * @param string $return - * @param string|null $errorURL - * @param array $params - * @return void - */ - public static function initLogin( - $authId, - $return, - $errorURL = null, - array $params = [] - ) { - - $as = self::getAuthSource($authId); - $as->initLogin($return, $errorURL, $params); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use - * State::getPersistentAuthData() instead. - * @param array &$state - * @return array - */ - public static function extractPersistentAuthState(array &$state) - { - return State::getPersistentAuthData($state); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use Source::loginCompleted() instead. - * @param array $state - * @return void - */ - public static function loginCompleted($state) - { - Source::loginCompleted($state); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. - * @param string $returnURL - * @param string $authority - * @return void - */ - public static function initLogoutReturn($returnURL, $authority) - { - assert(is_string($returnURL)); - assert(is_string($authority)); - - $session = Session::getSessionFromRequest(); - - $state = $session->getAuthData($authority, 'LogoutState'); - $session->doLogout($authority); - - $state['\SimpleSAML\Auth\DefaultAuth.ReturnURL'] = $returnURL; - $state['LogoutCompletedHandler'] = [get_class(), 'logoutCompleted']; - - $as = Source::getById($authority); - if ($as === null) { - // The authority wasn't an authentication source... - self::logoutCompleted($state); - } - - $as->logout($state); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. - * @param string $returnURL - * @param string $authority - * @return void - */ - public static function initLogout($returnURL, $authority) - { - assert(is_string($returnURL)); - assert(is_string($authority)); - - self::initLogoutReturn($returnURL, $authority); - - Utils\HTTP::redirectTrustedURL($returnURL); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. - * @param array $state - * @return void - */ - public static function logoutCompleted($state) - { - assert(is_array($state)); - assert(array_key_exists('\SimpleSAML\Auth\DefaultAuth.ReturnURL', $state)); - - Utils\HTTP::redirectTrustedURL($state['\SimpleSAML\Auth\DefaultAuth.ReturnURL']); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use Source::logoutCallback() instead. - * @param array $state - * @return void - */ - public static function logoutCallback($state) - { - Source::logoutCallback($state); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use - * \SimpleSAML\Module\saml\Auth\Source\SP::handleUnsolicitedAuth() instead. - * @param string $authId - * @param array $state - * @param string $redirectTo - * @return void - */ - public static function handleUnsolicitedAuth($authId, array $state, $redirectTo) - { - SP::handleUnsolicitedAuth($authId, $state, $redirectTo); - } - - - /** - * Return an authentication source by ID. - * - * @param string $id The id of the authentication source. - * @return Source The authentication source. - * @throws \Exception If the $id does not correspond with an authentication source. - */ - private static function getAuthSource($id) - { - $as = Source::getById($id); - if ($as === null) { - throw new \Exception('Invalid authentication source: ' . $id); - } - return $as; - } -} diff --git a/lib/SimpleSAML/Auth/LDAP.php b/lib/SimpleSAML/Auth/LDAP.php deleted file mode 100644 index 3977274e94fc4fe71edc18d37750cb256897c1cc..0000000000000000000000000000000000000000 --- a/lib/SimpleSAML/Auth/LDAP.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - -declare(strict_types=1); - -namespace SimpleSAML\Auth; - -\SimpleSAML\Logger::warning("The class \SimpleSAML\Auth\LDAP has been moved to the ldap module, please use \SimpleSAML\Module\saml\Auth\Ldap instead."); - -/** - * @deprecated To be removed in 2.0 - */ -if (class_exists('\SimpleSAML\Module\ldap\Auth\Ldap')) { - class_alias(\SimpleSAML\Module\ldap\Auth\Ldap::class, 'SimpleSAML\Auth\LDAP'); -} else { - throw new \Exception('The ldap module is either missing or disabled'); -} diff --git a/lib/SimpleSAML/Auth/ProcessingChain.php b/lib/SimpleSAML/Auth/ProcessingChain.php index 468940c71c41aa5be1d5a92eac6c468b90020139..5ae89b31ab3d2d84b1739fe0df532f0df48e4eb1 100644 --- a/lib/SimpleSAML/Auth/ProcessingChain.php +++ b/lib/SimpleSAML/Auth/ProcessingChain.php @@ -200,12 +200,6 @@ class ProcessingChain $state[self::FILTERS_INDEX] = $this->filters; try { - // TODO: remove this in SSP 2.0 - if (!array_key_exists('UserID', $state)) { - // No unique user ID present. Attempt to add one. - self::addUserID($state); - } - while (count($state[self::FILTERS_INDEX]) > 0) { $filter = array_shift($state[self::FILTERS_INDEX]); $filter->process($state); @@ -303,19 +297,10 @@ class ProcessingChain $state[self::FILTERS_INDEX] = $this->filters; - // TODO: remove this in SSP 2.0 - if (!array_key_exists('UserID', $state)) { - // No unique user ID present. Attempt to add one. - self::addUserID($state); - } - while (count($state[self::FILTERS_INDEX]) > 0) { $filter = array_shift($state[self::FILTERS_INDEX]); try { $filter->process($state); - } catch (Error\NoPassive $e) { - // @deprecated will be removed in 2.0 - // Ignore \SimpleSAML\Error\NoPassive exceptions } catch (Module\saml\Error\NoPassive $e) { // Ignore \SimpleSAML\Module\saml\Error\NoPassive exceptions } @@ -335,50 +320,4 @@ class ProcessingChain return State::loadState($id, self::COMPLETED_STAGE); } - - - /** - * @deprecated This method will be removed in SSP 2.0. - * @param array &$state - * @return void - */ - private static function addUserID(array &$state) - { - Assert::keyExists($state, 'Attributes'); - - if (isset($state['Destination']['userid.attribute'])) { - $attributeName = $state['Destination']['userid.attribute']; - Logger::debug("The 'userid.attribute' option has been deprecated."); - } elseif (isset($state['Source']['userid.attribute'])) { - $attributeName = $state['Source']['userid.attribute']; - Logger::debug("The 'userid.attribute' option has been deprecated."); - } else { - // Default attribute - $attributeName = 'eduPersonPrincipalName'; - } - - if (!array_key_exists($attributeName, $state['Attributes'])) { - return; - } - - $uid = $state['Attributes'][$attributeName]; - if (count($uid) === 0) { - Logger::warning('Empty user id attribute [' . $attributeName . '].'); - return; - } - - if (count($uid) > 1) { - Logger::warning('Multiple attribute values for user id attribute [' . $attributeName . '].'); - return; - } - - // TODO: the attribute value should be trimmed - $uid = $uid[0]; - - if (empty($uid)) { - Logger::warning('Empty value in attribute ' . $attributeName . ". on user. Cannot set UserID."); - return; - } - $state['UserID'] = $uid; - } } diff --git a/lib/SimpleSAML/Auth/ProcessingFilter.php b/lib/SimpleSAML/Auth/ProcessingFilter.php index 8622b987bccb17d720551d0e5c9edbd9c3dcf62f..f3bf7cfeb666f46c067677f2b5dd56d0ffe4fce7 100644 --- a/lib/SimpleSAML/Auth/ProcessingFilter.php +++ b/lib/SimpleSAML/Auth/ProcessingFilter.php @@ -67,6 +67,7 @@ abstract class ProcessingFilter * When a filter returns from this function, it is assumed to have completed its task. * * @param array &$request The request we are currently processing. + * @return void */ abstract public function process(&$request); } diff --git a/lib/SimpleSAML/Auth/TimeLimitedToken.php b/lib/SimpleSAML/Auth/TimeLimitedToken.php deleted file mode 100644 index 12b2096c7c807ed29278524c070bdb77448d7f4b..0000000000000000000000000000000000000000 --- a/lib/SimpleSAML/Auth/TimeLimitedToken.php +++ /dev/null @@ -1,155 +0,0 @@ -<?php - -declare(strict_types=1); - -namespace SimpleSAML\Auth; - -use SimpleSAML\Utils; - -/** - * A class that generates and verifies time-limited tokens. - * - * @deprecated This class was deprecated in 1.18 and will be removed in a future release - */ - -class TimeLimitedToken -{ - /** - * @var string - */ - protected $secretSalt; - - /** - * @var int - */ - protected $lifetime; - - /** - * @var int - */ - protected $skew; - - /** - * @var string - */ - protected $algo; - - - /** - * Create a new time-limited token. - * - * @param int $lifetime Token lifetime in seconds. Defaults to 900 (15 min). - * @param string $secretSalt A random and unique salt per installation. Defaults to the salt in the configuration. - * @param int $skew The allowed time skew (in seconds) to correct clock deviations. Defaults to 1 second. - * @param string $algo The hash algorithm to use to generate the tokens. Defaults to SHA-256. - * - * @throws \InvalidArgumentException if the given parameters are invalid. - */ - public function __construct($lifetime = 900, $secretSalt = null, $skew = 1, $algo = 'sha256') - { - if ($secretSalt === null) { - $secretSalt = Utils\Config::getSecretSalt(); - } - - if (!in_array($algo, hash_algos(), true)) { - throw new \InvalidArgumentException('Invalid hash algorithm "' . $algo . '"'); - } - - $this->secretSalt = $secretSalt; - $this->lifetime = $lifetime; - $this->skew = $skew; - $this->algo = $algo; - } - - - /** - * Add some given data to the current token. This data will be needed later too for token validation. - * - * This mechanism can be used to provide context for a token, such as a user identifier of the only subject - * authorised to use it. Note also that multiple data can be added to the token. This means that upon validation, - * not only the same data must be added, but also in the same order. - * - * @param string $data The data to incorporate into the current token. - * @return void - */ - public function addVerificationData($data) - { - $this->secretSalt .= '|' . $data; - } - - - /** - * Calculates a token value for a given offset. - * - * @param int $offset The offset to use. - * @param int|null $time The time stamp to which the offset is relative to. Defaults to the current time. - * - * @return string The token for the given time and offset. - */ - private function calculateTokenValue(int $offset, int $time = null): string - { - if ($time === null) { - $time = time(); - } - // a secret salt that should be randomly generated for each installation - return hash( - $this->algo, - $offset . ':' . floor(($time - $offset) / ($this->lifetime + $this->skew)) . ':' . $this->secretSalt - ); - } - - - /** - * Generates a token that contains an offset and a token value, using the current offset. - * - * @return string A time-limited token with the offset respect to the beginning of its time slot prepended. - */ - public function generate() - { - $time = time(); - $current_offset = ($time - $this->skew) % ($this->lifetime + $this->skew); - return dechex($current_offset) . '-' . $this->calculateTokenValue($current_offset, $time); - } - - - /** - * @see generate - * @deprecated This method will be removed in SSP 2.0. Use generate() instead. - * @return string - */ - public function generate_token() - { - return $this->generate(); - } - - - /** - * Validates a token by calculating the token value for the provided offset and comparing it. - * - * @param string $token The token to validate. - * - * @return bool True if the given token is currently valid, false otherwise. - */ - public function validate($token) - { - $splittoken = explode('-', $token); - if (count($splittoken) !== 2) { - return false; - } - $offset = intval(hexdec($splittoken[0])); - $value = $splittoken[1]; - return ($this->calculateTokenValue($offset) === $value); - } - - - /** - * @see validate - * @deprecated This method will be removed in SSP 2.0. Use validate() instead. - * @param string $token - * @return bool - */ - public function validate_token($token) - { - return $this->validate($token); - } -} diff --git a/lib/SimpleSAML/Bindings/Shib13/Artifact.php b/lib/SimpleSAML/Bindings/Shib13/Artifact.php deleted file mode 100644 index f1b6741c6904bdedc453964579d9ca280df42828..0000000000000000000000000000000000000000 --- a/lib/SimpleSAML/Bindings/Shib13/Artifact.php +++ /dev/null @@ -1,192 +0,0 @@ -<?php - -declare(strict_types=1); - -/** - * Implementation of the Shibboleth 1.3 Artifact binding. - * - * @package SimpleSAMLphp - * @deprecated This class will be removed in a future release - */ - -namespace SimpleSAML\Bindings\Shib13; - -use SAML2\DOMDocumentFactory; -use SimpleSAML\Configuration; -use SimpleSAML\Error; -use SimpleSAML\Utils; -use Webmozart\Assert\Assert; - -class Artifact -{ - /** - * Parse the query string, and extract the SAMLart parameters. - * - * This function is required because each query contains multiple - * artifact with the same parameter name. - * - * @return array The artifacts. - */ - private static function getArtifacts(): array - { - Assert::keyExists($_SERVER, 'QUERY_STRING'); - - // We need to process the query string manually, to capture all SAMLart parameters - - $artifacts = []; - - $elements = explode('&', $_SERVER['QUERY_STRING']); - foreach ($elements as $element) { - list($name, $value) = explode('=', $element, 2); - $name = urldecode($name); - $value = urldecode($value); - - if ($name === 'SAMLart') { - $artifacts[] = $value; - } - } - - return $artifacts; - } - - - /** - * Build the request we will send to the IdP. - * - * @param array $artifacts The artifacts we will request. - * @return string The request, as an XML string. - */ - private static function buildRequest(array $artifacts): string - { - $msg = '<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">'. - '<SOAP-ENV:Body>'. - '<samlp:Request xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol"'. - ' RequestID="'.Utils\Random::generateID().'"'. - ' MajorVersion="1" MinorVersion="1"'. - ' IssueInstant="'.Utils\Time::generateTimestamp().'"'. - '>'; - - foreach ($artifacts as $a) { - $msg .= '<samlp:AssertionArtifact>'.htmlspecialchars($a).'</samlp:AssertionArtifact>'; - } - - $msg .= '</samlp:Request>'. - '</SOAP-ENV:Body>'. - '</SOAP-ENV:Envelope>'; - - return $msg; - } - - - /** - * Extract the response element from the SOAP response. - * - * @param string $soapResponse The SOAP response. - * @return string The <saml1p:Response> element, as a string. - * @throws Error\Exception - */ - private static function extractResponse(string $soapResponse): string - { - try { - $doc = DOMDocumentFactory::fromString($soapResponse); - } catch (\Exception $e) { - throw new Error\Exception('Error parsing SAML 1 artifact response.'); - } - - $soapEnvelope = $doc->firstChild; - if (!Utils\XML::isDOMNodeOfType($soapEnvelope, 'Envelope', 'http://schemas.xmlsoap.org/soap/envelope/')) { - throw new Error\Exception('Expected artifact response to contain a <soap:Envelope> element.'); - } - - $soapBody = Utils\XML::getDOMChildren($soapEnvelope, 'Body', 'http://schemas.xmlsoap.org/soap/envelope/'); - if (count($soapBody) === 0) { - throw new Error\Exception('Couldn\'t find <soap:Body> in <soap:Envelope>.'); - } - $soapBody = $soapBody[0]; - - - $responseElement = Utils\XML::getDOMChildren($soapBody, 'Response', 'urn:oasis:names:tc:SAML:1.0:protocol'); - if (count($responseElement) === 0) { - throw new Error\Exception('Couldn\'t find <saml1p:Response> in <soap:Body>.'); - } - $responseElement = $responseElement[0]; - - /* - * Save the <saml1p:Response> element. Note that we need to import it - * into a new document, in order to preserve namespace declarations. - */ - $newDoc = DOMDocumentFactory::create(); - $newDoc->appendChild($newDoc->importNode($responseElement, true)); - $responseXML = $newDoc->saveXML(); - - return $responseXML; - } - - - /** - * This function receives a SAML 1.1 artifact. - * - * @param \SimpleSAML\Configuration $spMetadata The metadata of the SP. - * @param \SimpleSAML\Configuration $idpMetadata The metadata of the IdP. - * @return string The <saml1p:Response> element, as an XML string. - * @throws Error\Exception - */ - public static function receive(Configuration $spMetadata, Configuration $idpMetadata) - { - $artifacts = self::getArtifacts(); - $request = self::buildRequest($artifacts); - - Utils\XML::debugSAMLMessage($request, 'out'); - - /** @var array $url */ - $url = $idpMetadata->getDefaultEndpoint( - 'ArtifactResolutionService', - ['urn:oasis:names:tc:SAML:1.0:bindings:SOAP-binding'] - ); - $url = $url['Location']; - - $peerPublicKeys = $idpMetadata->getPublicKeys('signing', true); - $certData = ''; - foreach ($peerPublicKeys as $key) { - if ($key['type'] !== 'X509Certificate') { - continue; - } - $certData .= "-----BEGIN CERTIFICATE-----\n". - chunk_split($key['X509Certificate'], 64). - "-----END CERTIFICATE-----\n"; - } - - $file = Utils\System::getTempDir().DIRECTORY_SEPARATOR.sha1($certData).'.crt'; - if (!file_exists($file)) { - Utils\System::writeFile($file, $certData); - } - - $spKeyCertFile = Utils\Config::getCertPath($spMetadata->getString('privatekey')); - - $opts = [ - 'ssl' => [ - 'verify_peer' => true, - 'cafile' => $file, - 'local_cert' => $spKeyCertFile, - 'capture_peer_cert' => true, - 'capture_peer_chain' => true, - ], - 'http' => [ - 'method' => 'POST', - 'content' => $request, - 'header' => 'SOAPAction: http://www.oasis-open.org/committees/security'."\r\n". - 'Content-Type: text/xml', - ], - ]; - - // Fetch the artifact - /** @var string $response */ - $response = Utils\HTTP::fetch($url, $opts); - Utils\XML::debugSAMLMessage($response, 'in'); - - // Find the response in the SOAP message - $response = self::extractResponse($response); - - return $response; - } -} diff --git a/lib/SimpleSAML/Bindings/Shib13/HTTPPost.php b/lib/SimpleSAML/Bindings/Shib13/HTTPPost.php deleted file mode 100644 index 82e491ad4dba74236797b2951a561c2a58f26515..0000000000000000000000000000000000000000 --- a/lib/SimpleSAML/Bindings/Shib13/HTTPPost.php +++ /dev/null @@ -1,157 +0,0 @@ -<?php - -declare(strict_types=1); - -/** - * Implementation of the Shibboleth 1.3 HTTP-POST binding. - * - * @author Andreas Ã…kre Solberg, UNINETT AS. <andreas.solberg@uninett.no> - * @package SimpleSAMLphp - * @deprecated This class will be removed in a future release - */ - -namespace SimpleSAML\Bindings\Shib13; - -use SAML2\DOMDocumentFactory; -use SimpleSAML\Configuration; -use SimpleSAML\Metadata\MetaDataStorageHandler; -use SimpleSAML\Utils; -use SimpleSAML\XML\Shib13\AuthnResponse; -use SimpleSAML\XML\Signer; -use Webmozart\Assert\Assert; - -class HTTPPost -{ - /** - * @var \SimpleSAML\Configuration - */ - private $configuration; - - /** - * @var \SimpleSAML\Metadata\MetaDataStorageHandler - */ - private $metadata; - - - /** - * Constructor for the \SimpleSAML\Bindings\Shib13\HTTPPost class. - * - * @param \SimpleSAML\Configuration $configuration The configuration to use. - * @param \SimpleSAML\Metadata\MetaDataStorageHandler $metadatastore A store where to find metadata. - */ - public function __construct( - Configuration $configuration, - MetaDataStorageHandler $metadatastore - ) { - $this->configuration = $configuration; - $this->metadata = $metadatastore; - } - - - /** - * Send an authenticationResponse using HTTP-POST. - * - * @param string $response The response which should be sent. - * @param \SimpleSAML\Configuration $idpmd The metadata of the IdP which is sending the response. - * @param \SimpleSAML\Configuration $spmd The metadata of the SP which is receiving the response. - * @param string|null $relayState The relaystate for the SP. - * @param string $shire The shire which should receive the response. - * @return void - */ - public function sendResponse( - $response, - Configuration $idpmd, - Configuration $spmd, - $relayState, - $shire - ) { - Utils\XML::checkSAMLMessage($response, 'saml11'); - - $privatekey = Utils\Crypto::loadPrivateKey($idpmd, true); - $publickey = Utils\Crypto::loadPublicKey($idpmd, true); - - $responsedom = DOMDocumentFactory::fromString(str_replace("\r", "", $response)); - - $responseroot = $responsedom->getElementsByTagName('Response')->item(0); - $firstassertionroot = $responsedom->getElementsByTagName('Assertion')->item(0); - - /* Determine what we should sign - either the Response element or the Assertion. The default is to sign the - * Assertion, but that can be overridden by the 'signresponse' option in the SP metadata or - * 'saml20.signresponse' in the global configuration. - * - * TODO: neither 'signresponse' nor 'shib13.signresponse' are valid options any longer. Remove! - */ - if ($spmd->hasValue('signresponse')) { - $signResponse = $spmd->getBoolean('signresponse'); - } else { - $signResponse = $this->configuration->getBoolean('shib13.signresponse', true); - } - - // check if we have an assertion to sign. Force to sign the response if not - if ($firstassertionroot === null) { - $signResponse = true; - } - - $signer = new Signer([ - 'privatekey_array' => $privatekey, - 'publickey_array' => $publickey, - 'id' => ($signResponse ? 'ResponseID' : 'AssertionID'), - ]); - - if ($idpmd->hasValue('certificatechain')) { - $signer->addCertificate($idpmd->getString('certificatechain')); - } - - if ($signResponse) { - // sign the response - this must be done after encrypting the assertion - // we insert the signature before the saml2p:Status element - $statusElements = Utils\XML::getDOMChildren($responseroot, 'Status', '@saml1p'); - Assert::same(count($statusElements), 1); - $signer->sign($responseroot, $responseroot, $statusElements[0]); - } else { - // Sign the assertion - $signer->sign($firstassertionroot, $firstassertionroot); - } - - $response = $responsedom->saveXML(); - - Utils\XML::debugSAMLMessage($response, 'out'); - - Utils\HTTP::submitPOSTData($shire, [ - 'TARGET' => $relayState, - 'SAMLResponse' => base64_encode($response), - ]); - } - - - /** - * Decode a received response. - * - * @param array $post POST data received. - * @return \SimpleSAML\XML\Shib13\AuthnResponse The response decoded into an object. - * @throws \Exception If there is no SAMLResponse parameter. - */ - public function decodeResponse($post) - { - Assert::isArray($post); - - if (!array_key_exists('SAMLResponse', $post)) { - throw new \Exception('Missing required SAMLResponse parameter.'); - } - $rawResponse = $post['SAMLResponse']; - $samlResponseXML = base64_decode($rawResponse); - - Utils\XML::debugSAMLMessage($samlResponseXML, 'in'); - - Utils\XML::checkSAMLMessage($samlResponseXML, 'saml11'); - - $samlResponse = new AuthnResponse(); - $samlResponse->setXML($samlResponseXML); - - if (array_key_exists('TARGET', $post)) { - $samlResponse->setRelayState($post['TARGET']); - } - - return $samlResponse; - } -} diff --git a/lib/SimpleSAML/Configuration.php b/lib/SimpleSAML/Configuration.php index 7a58db7c38be548de8dde35a30903e499a008a9e..c9c9f90827889f9054fb5e4a6aa622ec8f1ee869 100644 --- a/lib/SimpleSAML/Configuration.php +++ b/lib/SimpleSAML/Configuration.php @@ -355,71 +355,6 @@ class Configuration implements Utils\ClearableState } - /** - * Initialize a instance name with the given configuration file. - * - * TODO: remove. - * - * @param string $path - * @param string $instancename - * @param string $configfilename - * @return \SimpleSAML\Configuration - * - * @see setConfigDir() - * @deprecated This function is superseeded by the setConfigDir function. - */ - public static function init($path, $instancename = 'simplesaml', $configfilename = 'config.php') - { - Assert::string($path); - Assert::string($instancename); - Assert::string($configfilename); - - if ($instancename === 'simplesaml') { - // for backwards compatibility - self::setConfigDir($path, 'simplesaml'); - } - - // check if we already have loaded the given config - return the existing instance if we have - if (array_key_exists($instancename, self::$instance)) { - return self::$instance[$instancename]; - } - - self::$instance[$instancename] = self::loadFromFile($path . '/' . $configfilename, true); - return self::$instance[$instancename]; - } - - - /** - * Load a configuration file which is located in the same directory as this configuration file. - * - * TODO: remove. - * - * @param string $instancename - * @param string $filename - * @return \SimpleSAML\Configuration - * - * @see getConfig() - * @deprecated This function is superseeded by the getConfig() function. - */ - public function copyFromBase($instancename, $filename) - { - Assert::string($instancename); - Assert::string($filename); - Assert::notNull($this->filename); - - // check if we already have loaded the given config - return the existing instance if we have - if (array_key_exists($instancename, self::$instance)) { - return self::$instance[$instancename]; - } - - /** @var string $this->filename */ - $dir = dirname($this->filename); - - self::$instance[$instancename] = self::loadFromFile($dir . '/' . $filename, true); - return self::$instance[$instancename]; - } - - /** * Retrieve the current version of SimpleSAMLphp. * @@ -491,35 +426,6 @@ class Configuration implements Utils\ClearableState } - /** - * Retrieve the absolute path of the SimpleSAMLphp installation, relative to the root of the website. - * - * For example: simplesaml/ - * - * The path will always end with a '/' and never have a leading slash. - * - * @return string The absolute path relative to the root of the website. - * - * @throws \SimpleSAML\Error\CriticalConfigurationError If the format of 'baseurlpath' is incorrect. - * - * @deprecated This method will be removed in SimpleSAMLphp 2.0. Please use getBasePath() instead. - */ - public function getBaseURL() - { - if (!$this->deprecated_base_url_used) { - $this->deprecated_base_url_used = true; - Logger::warning( - "\SimpleSAML\Configuration::getBaseURL() is deprecated, please use getBasePath() instead." - ); - } - if (preg_match('/^\*(.*)$/D', $this->getString('baseurlpath', 'simplesaml/'), $matches)) { - // deprecated behaviour, will be removed in the future - return Utils\HTTP::getFirstPathElement(false) . $matches[1]; - } - return ltrim($this->getBasePath(), '/'); - } - - /** * Retrieve the absolute path pointing to the SimpleSAMLphp installation. * @@ -1015,51 +921,6 @@ class Configuration implements Utils\ClearableState } - /** - * Retrieve an array of arrays as an array of \SimpleSAML\Configuration objects. - * - * This function will retrieve an option containing an array of arrays, and create an array of - * \SimpleSAML\Configuration objects from that array. The indexes in the new array will be the same as the original - * indexes, but the values will be \SimpleSAML\Configuration objects. - * - * An exception will be thrown if this option isn't an array of arrays, or if this option isn't found, and no - * default value is given. - * - * @param string $name The name of the option. - * - * @return array The array of \SimpleSAML\Configuration objects. - * - * @throws \Exception If the value of this element is not an array. - * - * @deprecated Very specific function, will be removed in a future release; use getConfigItem or getArray instead - */ - public function getConfigList($name) - { - Assert::string($name); - - $ret = $this->getValue($name, []); - - if (!is_array($ret)) { - throw new \Exception( - $this->location . ': The option ' . var_export($name, true) . - ' is not an array.' - ); - } - - $out = []; - foreach ($ret as $index => $config) { - $newLoc = $this->location . '[' . var_export($name, true) . '][' . - var_export($index, true) . ']'; - if (!is_array($config)) { - throw new \Exception($newLoc . ': The value of this element was expected to be an array.'); - } - $out[$index] = self::loadFromArray($config, $newLoc); - } - - return $out; - } - - /** * Retrieve list of options. * @@ -1111,10 +972,6 @@ class Configuration implements Utils\ClearableState return Constants::BINDING_HTTP_POST; case 'saml20-idp-remote:ArtifactResolutionService': return Constants::BINDING_SOAP; - case 'shib13-idp-remote:SingleSignOnService': - return 'urn:mace:shibboleth:1.0:profiles:AuthnRequest'; - case 'shib13-sp-remote:AssertionConsumerService': - return 'urn:oasis:names:tc:SAML:1.0:profiles:browser-post'; default: throw new \Exception('Missing default binding for ' . $endpointType . ' in ' . $set); } diff --git a/lib/SimpleSAML/Error/Error.php b/lib/SimpleSAML/Error/Error.php index ffa004f4ebe82233a1502abba40a82075f0f08fc..1f0e87d970857716f4a7eafdd54c0cfa6560cf7d 100644 --- a/lib/SimpleSAML/Error/Error.php +++ b/lib/SimpleSAML/Error/Error.php @@ -270,7 +270,7 @@ class Error extends Exception } else { $t = new Template($config, 'error.php', 'errors'); $t->data = array_merge($t->data, $data); - $t->show(); + $t->send(); } exit; diff --git a/lib/SimpleSAML/Error/NoPassive.php b/lib/SimpleSAML/Error/NoPassive.php deleted file mode 100644 index 5687adffd47abc0211f492a38d498192e440947d..0000000000000000000000000000000000000000 --- a/lib/SimpleSAML/Error/NoPassive.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php - -declare(strict_types=1); - -namespace SimpleSAML\Error; - -/** - * Class NoPassive - * - * @deprecated This class has been deprecated and will be removed in SimpleSAMLphp 2.0. Please use - * \SimpleSAML\Module\saml\Error\NoPassive instead. - * - * @see \SimpleSAML\Module\saml\Error\NoPassive - */ - -class NoPassive extends Exception -{ -} diff --git a/lib/SimpleSAML/Error/ProxyCountExceeded.php b/lib/SimpleSAML/Error/ProxyCountExceeded.php deleted file mode 100644 index a92844f2ee691b95c7610ca7720142962f4d8896..0000000000000000000000000000000000000000 --- a/lib/SimpleSAML/Error/ProxyCountExceeded.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php - -declare(strict_types=1); - -namespace SimpleSAML\Error; - -/** - * Class ProxyCountExceeded - * - * @deprecated This class has been deprecated and will be removed in SimpleSAMLphp 2.0. Please use - * \SimpleSAML\Module\saml\Error\ProxyCountExceeded instead. - * - * @see \SimpleSAML\Module\saml\Error\ProxyCountExceeded - */ - -class ProxyCountExceeded extends Exception -{ -} diff --git a/lib/SimpleSAML/IdP.php b/lib/SimpleSAML/IdP.php index 5590304f0010fbd92cbdcc4b4d8c1cf7a3663672..d91231183b9ea1f4629f60461b175e46d7aaf74b 100644 --- a/lib/SimpleSAML/IdP.php +++ b/lib/SimpleSAML/IdP.php @@ -80,11 +80,6 @@ class IdP throw new Error\Exception('enable.saml20-idp disabled in config.php.'); } $this->config = $metadata->getMetaDataConfig(substr($id, 6), 'saml20-idp-hosted'); - } elseif (substr($id, 0, 6) === 'saml1:') { - if (!$globalConfig->getBoolean('enable.shib13-idp', false)) { - throw new Error\Exception('enable.shib13-idp disabled in config.php.'); - } - $this->config = $metadata->getMetaDataConfig(substr($id, 6), 'shib13-idp-hosted'); } elseif (substr($id, 0, 5) === 'adfs:') { if (!$globalConfig->getBoolean('enable.adfs-idp', false)) { throw new Error\Exception('enable.adfs-idp disabled in config.php.'); @@ -188,11 +183,7 @@ class IdP try { $spMetadata = $metadata->getMetaDataConfig($spEntityId, 'saml20-sp-remote'); } catch (\Exception $e) { - try { - $spMetadata = $metadata->getMetaDataConfig($spEntityId, 'shib13-sp-remote'); - } catch (\Exception $e) { - return null; - } + return null; } } else { if ($prefix === 'adfs') { diff --git a/lib/SimpleSAML/IdP/IFrameLogoutHandler.php b/lib/SimpleSAML/IdP/IFrameLogoutHandler.php index b95fc62feee9ea9d8554333486bb8c57269d34c0..6c7b2e7d5f1079b2515a5a68e227e55a258714ef 100644 --- a/lib/SimpleSAML/IdP/IFrameLogoutHandler.php +++ b/lib/SimpleSAML/IdP/IFrameLogoutHandler.php @@ -110,6 +110,6 @@ class IFrameLogoutHandler implements LogoutHandlerInterface $t->data['errorMsg'] = $error->getMessage(); } - $t->show(); + $t->send(); } } diff --git a/lib/SimpleSAML/Locale/Translate.php b/lib/SimpleSAML/Locale/Translate.php index 4d441c21b0e53e4aa3398be9483a8df6a7d7c0dd..d8a77a749f18591fd3538d4c6278c8bc461176b8 100644 --- a/lib/SimpleSAML/Locale/Translate.php +++ b/lib/SimpleSAML/Locale/Translate.php @@ -240,76 +240,6 @@ class Translate return $tag; } - /** - * Translate a tag into the current language, with a fallback to english. - * - * This function is used to look up a translation tag in dictionaries, and return the translation into the current - * language. If no translation into the current language can be found, english will be tried, and if that fails, - * placeholder text will be returned. - * - * An array can be passed as the tag. In that case, the array will be assumed to be on the form (language => text), - * and will be used as the source of translations. - * - * This function can also do replacements into the translated tag. It will search the translated tag for the keys - * provided in $replacements, and replace any found occurrences with the value of the key. - * - * @param string|array $tag A tag name for the translation which should be looked up, or an array with - * (language => text) mappings. The array version will go away in 2.0 - * @param array $replacements An associative array of keys that should be replaced with values in the - * translated string. - * @param boolean $fallbackdefault Default translation to use as a fallback if no valid translation was found. - * @param array $oldreplacements - * @param bool $striptags - * @deprecated Not used in twig, gettext - * - * @return string The translated tag, or a placeholder value if the tag wasn't found. - */ - public function t( - $tag, - $replacements = [], - // TODO: remove this for 2.0. Assume true - $fallbackdefault = true, - // TODO: remove this for 2.0 - $oldreplacements = [], - // TODO: remove this for 2.0 - $striptags = false - ) { - $backtrace = debug_backtrace(); - $where = $backtrace[0]['file'] . ':' . $backtrace[0]['line']; - if (!$fallbackdefault) { - Logger::warning( - 'Deprecated use of new SimpleSAML\Locale\Translate::t(...) at ' . $where . - '. This parameter will go away, the fallback will become' . - ' identical to the $tag in 2.0.' - ); - } - - if (is_array($tag)) { - $tagData = $tag; - Logger::warning( - 'Deprecated use of new SimpleSAML\Locale\Translate::t(...) at ' . $where . - '. The $tag-parameter can only be a string in 2.0.' - ); - } else { - $tagData = $this->getTag($tag); - if ($tagData === null) { - // tag not found - Logger::info('Translate: Looking up [' . $tag . ']: not translated at all.'); - return $this->getStringNotTranslated($tag, $fallbackdefault); - } - } - - $translated = $this->getPreferredTranslation($tagData); - - foreach ($replacements as $k => $v) { - // try to translate if no replacement is given - if ($v == null) { - $v = $this->t($k); - } - $translated = str_replace($k, $v, $translated); - } - return $translated; - } /** * Return the string that should be used when no translation was found. diff --git a/lib/SimpleSAML/Memcache.php b/lib/SimpleSAML/Memcache.php index 84b5b83f48be6a7b9a52349a54c1ccc7e784b428..196608bc7c3b8560f02bce98f0fda7dcc0a5ca01 100644 --- a/lib/SimpleSAML/Memcache.php +++ b/lib/SimpleSAML/Memcache.php @@ -29,7 +29,7 @@ class Memcache /** * Cache of the memcache servers we are using. * - * @var \Memcache[]|\Memcached[]|null + * @var \Memcached[]|null */ private static $serverGroups = null; @@ -215,7 +215,7 @@ class Memcache * The timeout for contacting this server, in seconds. * The default value is 3 seconds. * - * @param \Memcache|\Memcached $memcache The Memcache object we should add this server to. + * @param \Memcached $memcache The Memcache object we should add this server to. * @param array $server An associative array with the configuration options for the server to add. * @return void * @@ -293,11 +293,7 @@ class Memcache } // add this server to the Memcache object - if ($memcache instanceof \Memcached) { - $memcache->addServer($hostname, $port); - } else { - $memcache->addServer($hostname, $port, true, $weight, $timeout, $timeout, true); - } + $memcache->addServer($hostname, $port); } @@ -307,29 +303,14 @@ class Memcache * * @param array $group Array of servers which should be created as a group. * - * @return \Memcache|\Memcached A Memcache object of the servers in the group + * @return \Memcached A Memcache object of the servers in the group * * @throws \Exception If the servers configuration is invalid. */ private static function loadMemcacheServerGroup(array $group) { - if (class_exists(\Memcached::class)) { - $memcache = new \Memcached(); - self::$extension = \Memcached::class; - } elseif (class_exists(\Memcache::class)) { - $memcache = new \Memcache(); - self::$extension = \Memcache::class; - } else { - throw new \Exception( - 'Missing Memcached implementation. You must install either the Memcache or Memcached extension.' - ); - } - - if (self::$extension === \Memcache::class) { - Logger::warning( - "The use of PHP-extension memcache is deprecated. Please migrate to the memcached extension." - ); - } + $memcache = new \Memcached(); + self::$extension = \Memcached::class; // iterate over all the servers in the group and add them to the Memcache object foreach ($group as $index => $server) { @@ -354,7 +335,7 @@ class Memcache self::addMemcacheServer($memcache, $server); } - /** @var \Memcache|\Memcached */ + /** @var \Memcached */ return $memcache; } @@ -363,7 +344,7 @@ class Memcache * This function gets a list of all configured memcache servers. This list is initialized based * on the content of 'memcache_store.servers' in the configuration. * - * @return \Memcache[]|\Memcached[] Array with Memcache objects. + * @return \Memcached[] Array with Memcache objects. * * @throws \Exception If the servers configuration is invalid. */ @@ -422,7 +403,7 @@ class Memcache * set in the configuration, then we will use a default value of 0. * 0 means that the item will never expire. * - * @return integer The value which should be passed in the set(...) calls to the memcache objects. + * @return int The value which should be passed in the set(...) calls to the memcache objects. * * @throws \Exception If the option 'memcache_store.expires' has a negative value. */ diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php b/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php index c284deec700137d53f31faf19d3a95d21fed8d48..292cdee7c89463c2fb681bb46a1c416adca19659 100644 --- a/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php +++ b/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php @@ -130,10 +130,6 @@ class MetaDataStorageHandler implements \SimpleSAML\Utils\ClearableState case 'SingleLogoutServiceBinding': return Constants::BINDING_HTTP_REDIRECT; } - } elseif ($set == 'shib13-idp-hosted') { - if ($property === 'SingleSignOnService') { - return $baseurl . 'shib13/idp/SSOService.php'; - } } throw new \Exception('Could not generate metadata property ' . $property . ' for set ' . $set . '.'); diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerFlatFile.php b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerFlatFile.php index fb123fcb43046eb4c32af62a3cb0c2b34c2c6e78..b1921c9a30b9a37f2f11658e2e2818271b2d93f5 100644 --- a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerFlatFile.php +++ b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerFlatFile.php @@ -114,7 +114,6 @@ class MetaDataStorageHandlerFlatFile extends MetaDataStorageSource return $this->cachedMetadata[$set]; } - /** @var array|null $metadataSet */ $metadataSet = $this->load($set); if ($metadataSet === null) { $metadataSet = []; diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php index d6c08b0e9cdda475d5d87531603b794f65c8d572..27d185d7bea11a2c8435d25cd170b5284d20b6e9 100644 --- a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php +++ b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php @@ -44,10 +44,6 @@ class MetaDataStorageHandlerPdo extends MetaDataStorageSource 'saml20-idp-hosted', 'saml20-idp-remote', 'saml20-sp-remote', - 'shib13-idp-hosted', - 'shib13-idp-remote', - 'shib13-sp-hosted', - 'shib13-sp-remote' ]; @@ -134,7 +130,6 @@ class MetaDataStorageHandlerPdo extends MetaDataStorageSource $metadataSet = []; } - /** @var array $metadataSet */ foreach ($metadataSet as $entityId => &$entry) { $entry = $this->updateEntityID($set, $entityId, $entry); } diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerXML.php b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerXML.php index d1ae78c84b7511a583c6b0ee7ab49c473193aecc..523b52e34574d6a6d1c745b24828cd717994edbc 100644 --- a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerXML.php +++ b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerXML.php @@ -65,16 +65,6 @@ class MetaDataStorageHandlerXML extends MetaDataStorageSource throw new \Exception("Neither source file path/URI nor string data provided"); } foreach ($entities as $entityId => $entity) { - $md = $entity->getMetadata1xSP(); - if ($md !== null) { - $SP1x[$entityId] = $md; - } - - $md = $entity->getMetadata1xIdP(); - if ($md !== null) { - $IdP1x[$entityId] = $md; - } - $md = $entity->getMetadata20SP(); if ($md !== null) { $SP20[$entityId] = $md; @@ -92,8 +82,6 @@ class MetaDataStorageHandlerXML extends MetaDataStorageSource } $this->metadata = [ - 'shib13-sp-remote' => $SP1x, - 'shib13-idp-remote' => $IdP1x, 'saml20-sp-remote' => $SP20, 'saml20-idp-remote' => $IdP20, 'attributeauthority-remote' => $AAD, diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageSource.php b/lib/SimpleSAML/Metadata/MetaDataStorageSource.php index 481572288dca6fe0b82e4912c749296be6db93b2..9a32daa8e1af79597ff5e726665fcff0ecc11e5e 100644 --- a/lib/SimpleSAML/Metadata/MetaDataStorageSource.php +++ b/lib/SimpleSAML/Metadata/MetaDataStorageSource.php @@ -335,10 +335,6 @@ abstract class MetaDataStorageSource return $baseUrl . 'saml2/idp/metadata.php'; } elseif ($set === 'saml20-sp-hosted') { return $baseUrl . 'saml2/sp/metadata.php'; - } elseif ($set === 'shib13-idp-hosted') { - return $baseUrl . 'shib13/idp/metadata.php'; - } elseif ($set === 'shib13-sp-hosted') { - return $baseUrl . 'shib13/sp/metadata.php'; } elseif ($set === 'adfs-idp-hosted') { return 'urn:federation:' . Utils\HTTP::getSelfHost() . ':idp'; } else { @@ -346,6 +342,7 @@ abstract class MetaDataStorageSource } } + /** * Updates the metadata entry's entity id and returns the modified array. If the entity id is __DYNAMIC:*__ a * the current url is assigned. If it is explicit the entityid array key is updated to the entityId that was diff --git a/lib/SimpleSAML/Metadata/SAMLBuilder.php b/lib/SimpleSAML/Metadata/SAMLBuilder.php index b066db7427e06b15e67cfb2a981316366c7f872f..392024ebf9e4fdfb990cea2de17202476ecf804d 100644 --- a/lib/SimpleSAML/Metadata/SAMLBuilder.php +++ b/lib/SimpleSAML/Metadata/SAMLBuilder.php @@ -491,12 +491,6 @@ class SAMLBuilder case 'saml20-idp-remote': $this->addMetadataIdP20($metadata); break; - case 'shib13-sp-remote': - $this->addMetadataSP11($metadata); - break; - case 'shib13-idp-remote': - $this->addMetadataIdP11($metadata); - break; case 'attributeauthority-remote': $this->addAttributeAuthority($metadata); break; diff --git a/lib/SimpleSAML/Metadata/SAMLParser.php b/lib/SimpleSAML/Metadata/SAMLParser.php index 45880788020fcbe58ba310b0c698f51f79c08c94..7cb5b20d840665a51af106effb86778829002b9a 100644 --- a/lib/SimpleSAML/Metadata/SAMLParser.php +++ b/lib/SimpleSAML/Metadata/SAMLParser.php @@ -40,11 +40,11 @@ use SimpleSAML\Utils; use Webmozart\Assert\Assert; /** - * This is class for parsing of SAML 1.x and SAML 2.0 metadata. + * This is class for parsing of SAML 2.0 metadata. * * Metadata is loaded by calling the static methods parseFile, parseString or parseElement. * These functions returns an instance of SAMLParser. To get metadata - * from this object, use the methods getMetadata1xSP or getMetadata20SP. + * from this object, use the method getMetadata20SP. * * To parse a file which can contain a collection of EntityDescriptor or EntitiesDescriptor elements, use the * parseDescriptorsFile, parseDescriptorsString or parseDescriptorsElement methods. These functions will return @@ -53,16 +53,6 @@ use Webmozart\Assert\Assert; class SAMLParser { - /** - * This is the list of SAML 1.x protocols. - * - * @var string[] - */ - private static $SAML1xProtocols = [ - 'urn:oasis:names:tc:SAML:1.0:protocol', - 'urn:oasis:names:tc:SAML:1.1:protocol', - ]; - /** * This is the list with the SAML 2.0 protocol. * @@ -541,135 +531,6 @@ class SAMLParser } - /** - * This function returns the metadata for SAML 1.x SPs in the format SimpleSAMLphp expects. - * This is an associative array with the following fields: - * - 'entityid': The entity id of the entity described in the metadata. - * - 'AssertionConsumerService': String with the URL of the assertion consumer service which supports - * the browser-post binding. - * - 'certData': X509Certificate for entity (if present). - * - * Metadata must be loaded with one of the parse functions before this function can be called. - * - * @return array|null An associative array with metadata or NULL if we are unable to - * generate metadata for a SAML 1.x SP. - */ - public function getMetadata1xSP() - { - $ret = $this->getMetadataCommon(); - $ret['metadata-set'] = 'shib13-sp-remote'; - - - // find SP information which supports one of the SAML 1.x protocols - $spd = $this->getSPDescriptors(self::$SAML1xProtocols); - if (count($spd) === 0) { - return null; - } - - // we currently only look at the first SPDescriptor which supports SAML 1.x - $spd = $spd[0]; - - // add expire time to metadata - if (array_key_exists('expire', $spd)) { - $ret['expire'] = $spd['expire']; - } - - // find the assertion consumer service endpoints - $ret['AssertionConsumerService'] = $spd['AssertionConsumerService']; - - // add the list of attributes the SP should receive - if (array_key_exists('attributes', $spd)) { - $ret['attributes'] = $spd['attributes']; - } - if (array_key_exists('attributes.required', $spd)) { - $ret['attributes.required'] = $spd['attributes.required']; - } - if (array_key_exists('attributes.NameFormat', $spd)) { - $ret['attributes.NameFormat'] = $spd['attributes.NameFormat']; - } - - // add name & description - if (array_key_exists('name', $spd)) { - $ret['name'] = $spd['name']; - } - if (array_key_exists('description', $spd)) { - $ret['description'] = $spd['description']; - } - - // add public keys - if (!empty($spd['keys'])) { - $ret['keys'] = $spd['keys']; - } - - // add extensions - $this->addExtensions($ret, $spd); - - // prioritize mdui:DisplayName as the name if available - if (!empty($ret['UIInfo']['DisplayName'])) { - $ret['name'] = $ret['UIInfo']['DisplayName']; - } - - return $ret; - } - - - /** - * This function returns the metadata for SAML 1.x IdPs in the format SimpleSAMLphp expects. - * This is an associative array with the following fields: - * - 'entityid': The entity id of the entity described in the metadata. - * - 'name': Auto generated name for this entity. Currently set to the entity id. - * - 'SingleSignOnService': String with the URL of the SSO service which supports the redirect binding. - * - 'SingleLogoutService': String with the URL where we should send logout requests/responses. - * - 'certData': X509Certificate for entity (if present). - * - 'certFingerprint': Fingerprint of the X509Certificate from the metadata. (deprecated) - * - * Metadata must be loaded with one of the parse functions before this function can be called. - * - * @return array|null An associative array with metadata or NULL if we are unable to - * generate metadata for a SAML 1.x IdP. - */ - public function getMetadata1xIdP() - { - $ret = $this->getMetadataCommon(); - $ret['metadata-set'] = 'shib13-idp-remote'; - - // find IdP information which supports the SAML 1.x protocol - $idp = $this->getIdPDescriptors(self::$SAML1xProtocols); - if (count($idp) === 0) { - return null; - } - - // we currently only look at the first IDP descriptor which supports SAML 1.x - $idp = $idp[0]; - - // fdd expire time to metadata - if (array_key_exists('expire', $idp)) { - $ret['expire'] = $idp['expire']; - } - - // find the SSO service endpoints - $ret['SingleSignOnService'] = $idp['SingleSignOnService']; - - // find the ArtifactResolutionService endpoint - $ret['ArtifactResolutionService'] = $idp['ArtifactResolutionService']; - - // add public keys - if (!empty($idp['keys'])) { - $ret['keys'] = $idp['keys']; - } - - // add extensions - $this->addExtensions($ret, $idp); - - // prioritize mdui:DisplayName as the name if available - if (!empty($ret['UIInfo']['DisplayName'])) { - $ret['name'] = $ret['UIInfo']['DisplayName']; - } - - return $ret; - } - - /** * This function returns the metadata for SAML 2.0 SPs in the format SimpleSAMLphp expects. * This is an associative array with the following fields: @@ -781,7 +642,6 @@ class SAMLParser * the 'SingleLogoutService' endpoint. * - 'NameIDFormats': The name ID formats this IdP supports. * - 'certData': X509Certificate for entity (if present). - * - 'certFingerprint': Fingerprint of the X509Certificate from the metadata. (deprecated) * * Metadata must be loaded with one of the parse functions before this function can be called. * @@ -1079,7 +939,6 @@ class SAMLParser // only saml:Attribute are currently supported here. The specifications also allows // saml:Assertions, which more complex processing if ($attr instanceof Attribute) { - /** @psalm-var string|null $attrName Remove for SSP 2.0 */ $attrName = $attr->getName(); $attrNameFormat = $attr->getNameFormat(); $attrValue = $attr->getAttributeValue(); @@ -1475,73 +1334,4 @@ class SAMLParser Logger::debug('Could not validate signature'); return false; } - - - /** - * @param string $algorithm - * @param string $data - * @throws \UnexpectedValueException - * @return string - */ - private function computeFingerprint(string $algorithm, string $data): string - { - switch ($algorithm) { - case XMLSecurityDSig::SHA1: - $algo = 'SHA1'; - break; - case XMLSecurityDSig::SHA256: - $algo = 'SHA256'; - break; - case XMLSecurityDSig::SHA384: - $algo = 'SHA384'; - break; - case XMLSecurityDSig::SHA512: - $algo = 'SHA512'; - break; - default: - $known_opts = implode(", ", [ - XMLSecurityDSig::SHA1, - XMLSecurityDSig::SHA256, - XMLSecurityDSig::SHA384, - XMLSecurityDSig::SHA512, - ]); - throw new \UnexpectedValueException( - "Unsupported hashing function {$algorithm}. " . - "Known options: [{$known_opts}]" - ); - } - return hash($algo, $data); - } - - - /** - * This function checks if this EntityDescriptor was signed with a certificate with the - * given fingerprint. - * - * @param string $fingerprint Fingerprint of the certificate which should have been used to sign this - * EntityDescriptor. - * @param string $algorithm Algorithm used to compute the fingerprint of the signing certicate. - * - * @return boolean True if it was signed with the certificate with the given fingerprint, false otherwise. - */ - public function validateFingerprint($fingerprint, $algorithm) - { - Assert::string($fingerprint); - - $fingerprint = strtolower(str_replace(":", "", $fingerprint)); - - $candidates = []; - foreach ($this->validators as $validator) { - foreach ($validator->getValidatingCertificates() as $cert) { - $decoded_cert = base64_decode($cert); - $fp = $this->computeFingerprint($algorithm, $decoded_cert); - $candidates[] = $fp; - if ($fp === $fingerprint) { - return true; - } - } - } - Logger::debug('Fingerprint was [' . $fingerprint . '] not one of [' . join(', ', $candidates) . ']'); - return false; - } } diff --git a/lib/SimpleSAML/Metadata/Sources/MDQ.php b/lib/SimpleSAML/Metadata/Sources/MDQ.php index 889b429e086f68d9f86883048494cb085f0b4b07..dea938b4932c8ef74592c144113afcdb53683a88 100644 --- a/lib/SimpleSAML/Metadata/Sources/MDQ.php +++ b/lib/SimpleSAML/Metadata/Sources/MDQ.php @@ -30,19 +30,6 @@ class MDQ extends \SimpleSAML\Metadata\MetaDataStorageSource */ private $server; - /** - * The fingerprint of the certificate used to sign the metadata. You don't need this option if you don't want to - * validate the signature on the metadata. - * - * @var string|null - */ - private $validateFingerprint; - - /** - * @var string - */ - private $validateFingerprintAlgorithm; - /** * The cache directory, or null if no cache directory is configured. * @@ -64,8 +51,7 @@ class MDQ extends \SimpleSAML\Metadata\MetaDataStorageSource * * Options: * - 'server': URL of the MDQ server (url:port). Mandatory. - * - 'validateFingerprint': The fingerprint of the certificate used to sign the metadata. - * You don't need this option if you don't want to validate the signature on the metadata. + * * Optional. * - 'cachedir': Directory where metadata can be cached. Optional. * - 'cachelength': Maximum time metadata cah be cached, in seconds. Default to 24 @@ -85,17 +71,6 @@ class MDQ extends \SimpleSAML\Metadata\MetaDataStorageSource $this->server = $config['server']; } - if (array_key_exists('validateFingerprint', $config)) { - $this->validateFingerprint = $config['validateFingerprint']; - } else { - $this->validateFingerprint = null; - } - if (isset($config['validateFingerprintAlgorithm'])) { - $this->validateFingerprintAlgorithm = $config['validateFingerprintAlgorithm']; - } else { - $this->validateFingerprintAlgorithm = XMLSecurityDSig::SHA1; - } - if (array_key_exists('cachedir', $config)) { $globalConfig = Configuration::getInstance(); $this->cacheDir = $globalConfig->resolvePath($config['cachedir']); @@ -245,10 +220,6 @@ class MDQ extends \SimpleSAML\Metadata\MetaDataStorageSource return $entity->getMetadata20IdP(); case 'saml20-sp-remote': return $entity->getMetadata20SP(); - case 'shib13-idp-remote': - return $entity->getMetadata1xIdP(); - case 'shib13-sp-remote': - return $entity->getMetadata1xSP(); case 'attributeauthority-remote': $ret = $entity->getAttributeAuthorities(); return $ret[0]; @@ -328,17 +299,6 @@ class MDQ extends \SimpleSAML\Metadata\MetaDataStorageSource $entity = SAMLParser::parseString($xmldata); Logger::debug(__CLASS__ . ': completed parsing of [' . $mdq_url . ']'); - if ($this->validateFingerprint !== null) { - if ( - !$entity->validateFingerprint( - $this->validateFingerprint, - $this->validateFingerprintAlgorithm - ) - ) { - throw new \Exception(__CLASS__ . ': error, could not verify signature for entity: ' . $index . '".'); - } - } - $data = self::getParsedSet($entity, $set); if ($data === null) { throw new \Exception(__CLASS__ . ': no metadata for set "' . $set . '" available from "' . $index . '".'); diff --git a/lib/SimpleSAML/SessionHandler.php b/lib/SimpleSAML/SessionHandler.php index 50498dcf4783a72754a8edd3cdd6c1d4868fceff..df9fd67387b2b204d73f3a7c99429e418b919a8d 100644 --- a/lib/SimpleSAML/SessionHandler.php +++ b/lib/SimpleSAML/SessionHandler.php @@ -139,7 +139,6 @@ abstract class SessionHandler if ($store === false) { self::$sessionHandler = new SessionHandlerPHP(); } else { - /** @var \SimpleSAML\Store $store At this point, $store can only be an object */ self::$sessionHandler = new SessionHandlerStore($store); } } diff --git a/lib/SimpleSAML/SessionHandlerPHP.php b/lib/SimpleSAML/SessionHandlerPHP.php index 1952946d3e913e55bf8e76464cee3e4141e94b11..27fba38a8a013b2befed682a6c976f16c06c0642 100644 --- a/lib/SimpleSAML/SessionHandlerPHP.php +++ b/lib/SimpleSAML/SessionHandlerPHP.php @@ -81,7 +81,6 @@ class SessionHandlerPHP extends SessionHandler if (!headers_sent()) { if (version_compare(PHP_VERSION, '7.3.0', '>=')) { - /** @psalm-suppress InvalidArgument This annotation may be removed in Psalm >=3.0.15 */ session_set_cookie_params([ 'lifetime' => $params['lifetime'], 'path' => $params['path'], @@ -173,10 +172,6 @@ class SessionHandlerPHP extends SessionHandler if (($sid_length * $sid_bits_per_char) < 128) { Logger::warning("Unsafe defaults used for sessionId generation!"); } - /** - * This annotation may be removed as soon as we start using vimeo/psalm 3.x - * @psalm-suppress TooFewArguments - */ $sessionId = session_create_id(); } else { $sessionId = bin2hex(openssl_random_pseudo_bytes(16)); @@ -367,7 +362,6 @@ class SessionHandlerPHP extends SessionHandler } if (version_compare(PHP_VERSION, '7.3.0', '>=')) { - /** @psalm-suppress InvalidArgument This annotation may be removed in Psalm >=3.0.15 */ session_set_cookie_params($cookieParams); } else { session_set_cookie_params( diff --git a/lib/SimpleSAML/Stats.php b/lib/SimpleSAML/Stats.php index 281e35bb6d9ba8db5eed3e0c8ba548da4e87767f..7bb0aa33d38ef49ed2b102e110a8dab068e49c67 100644 --- a/lib/SimpleSAML/Stats.php +++ b/lib/SimpleSAML/Stats.php @@ -33,15 +33,15 @@ class Stats /** - * Create an output from a configuration object. + * Create an output from a configuration array. * - * @param \SimpleSAML\Configuration $config The configuration object. + * @param array $config The configuration. * * @return mixed A new instance of the configured class. */ - private static function createOutput(Configuration $config) + private static function createOutput(array $config) { - $cls = $config->getString('class'); + $cls = $config['class']; $cls = Module::resolveClass($cls, 'Stats\Output', '\SimpleSAML\Stats\Output'); $output = new $cls($config); @@ -57,7 +57,7 @@ class Stats private static function initOutputs() { $config = Configuration::getInstance(); - $outputCfgs = $config->getConfigList('statistics.out'); + $outputCfgs = $config->getArray('statistics.out', []); self::$outputs = []; foreach ($outputCfgs as $cfg) { diff --git a/lib/SimpleSAML/Stats/Output.php b/lib/SimpleSAML/Stats/Output.php index 7ac5a71ec741a5fc3a38350e5fcaa11bc043ee5c..0fa1dbbda0a3d82fd601a4f76f0430133387a5d5 100644 --- a/lib/SimpleSAML/Stats/Output.php +++ b/lib/SimpleSAML/Stats/Output.php @@ -29,6 +29,7 @@ abstract class Output * Write a stats event. * * @param array $data The event. + * @return void */ abstract public function emit(array $data); } diff --git a/lib/SimpleSAML/Utilities.php b/lib/SimpleSAML/Utilities.php deleted file mode 100644 index ca5536a44a2dafc6d4a1762f129e1dff0e7be041..0000000000000000000000000000000000000000 --- a/lib/SimpleSAML/Utilities.php +++ /dev/null @@ -1,870 +0,0 @@ -<?php - -declare(strict_types=1); - -namespace SimpleSAML; - -use SimpleSAML\Error\Error; - -/** - * Misc static functions that is used several places.in example parsing and id generation. - * - * @author Andreas Ã…kre Solberg, UNINETT AS. <andreas.solberg@uninett.no> - * @package SimpleSAMLphp - * - * @deprecated This entire class will be removed in SimpleSAMLphp 2.0. - */ - -class Utilities -{ - /** - * @deprecated This property will be removed in SSP 2.0. Please use SimpleSAML\Logger::isErrorMasked() instead. - * @var int - */ - public static $logMask = 0; - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::getSelfHost() instead. - * @return string - */ - public static function getSelfHost() - { - return \SimpleSAML\Utils\HTTP::getSelfHost(); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::getSelfURLHost() instead. - * @return string - */ - public static function selfURLhost() - { - return \SimpleSAML\Utils\HTTP::getSelfURLHost(); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::isHTTPS() instead. - * @return bool - */ - public static function isHTTPS() - { - return \SimpleSAML\Utils\HTTP::isHTTPS(); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::getSelfURLNoQuery() - * instead. - * @return string - */ - public static function selfURLNoQuery() - { - return \SimpleSAML\Utils\HTTP::getSelfURLNoQuery(); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::getSelfHostWithPath() - * instead. - * @return string - */ - public static function getSelfHostWithPath() - { - return \SimpleSAML\Utils\HTTP::getSelfHostWithPath(); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::getFirstPathElement() - * instead. - * @param bool $trailingslash - * @return string - */ - public static function getFirstPathElement($trailingslash = true) - { - return \SimpleSAML\Utils\HTTP::getFirstPathElement($trailingslash); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::getSelfURL() instead. - * @return string - */ - public static function selfURL() - { - return \SimpleSAML\Utils\HTTP::getSelfURL(); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::getBaseURL() instead. - * @return string - */ - public static function getBaseURL() - { - return \SimpleSAML\Utils\HTTP::getBaseURL(); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::addURLParameters() instead. - * @param string $url - * @param array $parameters - * @return string - */ - public static function addURLparameter($url, $parameters) - { - return \SimpleSAML\Utils\HTTP::addURLParameters($url, $parameters); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use \SimpleSAML\Utils\HTTP::checkURLAllowed() instead. - * @param string $url - * @param array|null $trustedSites - * @return string - */ - public static function checkURLAllowed($url, array $trustedSites = null) - { - return \SimpleSAML\Utils\HTTP::checkURLAllowed($url, $trustedSites); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use \SimpleSAML\Auth\State::parseStateID() instead. - * @param string $stateId - * @return array - */ - public static function parseStateID($stateId) - { - return \SimpleSAML\Auth\State::parseStateID($stateId); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. - * @param string|null $start - * @param string|null $end - * @return bool - */ - public static function checkDateConditions($start = null, $end = null) - { - $currentTime = time(); - - if (!empty($start)) { - $startTime = \SAML2\Utils::xsDateTimeToTimestamp($start); - // Allow for a 10 minute difference in Time - if (($startTime < 0) || (($startTime - 600) > $currentTime)) { - return false; - } - } - if (!empty($end)) { - $endTime = \SAML2\Utils::xsDateTimeToTimestamp($end); - if (($endTime < 0) || ($endTime <= $currentTime)) { - return false; - } - } - return true; - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\Random::generateID() instead. - * @return string - */ - public static function generateID() - { - return \SimpleSAML\Utils\Random::generateID(); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use \SimpleSAML\Utils\Time::generateTimestamp() - * instead. - * @param int|null $instant - * @return string - */ - public static function generateTimestamp($instant = null) - { - return \SimpleSAML\Utils\Time::generateTimestamp($instant); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use \SimpleSAML\Utils\Time::parseDuration() instead. - * @param string $duration - * @param int|null $timestamp - * @return int - */ - public static function parseDuration($duration, $timestamp = null) - { - return \SimpleSAML\Utils\Time::parseDuration($duration, $timestamp); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please raise a SimpleSAML\Error\Error exception instead. - * @param string $trackId - * @param int|null $errorCode - * @param \Exception|null $e - * @throws \SimpleSAML\Error\Error - * @return void - */ - public static function fatalError($trackId = 'na', $errorCode = null, \Exception $e = null) - { - throw new \SimpleSAML\Error\Error($errorCode, $e); - } - - - /** - * @deprecated This method will be removed in version 2.0. Use SimpleSAML\Utils\Net::ipCIDRcheck() instead. - * @param string $cidr - * @param string|null $ip - * @return bool - */ - public static function ipCIDRcheck($cidr, $ip = null) - { - return \SimpleSAML\Utils\Net::ipCIDRcheck($cidr, $ip); - } - - - /** - * @param string $url - * @param array $parameters - * @return void - */ - private static function doRedirect($url, $parameters = []) - { - assert(is_string($url)); - assert(!empty($url)); - assert(is_array($parameters)); - - if (!empty($parameters)) { - $url = self::addURLparameter($url, $parameters); - } - - /* Set the HTTP result code. This is either 303 See Other or - * 302 Found. HTTP 303 See Other is sent if the HTTP version - * is HTTP/1.1 and the request type was a POST request. - */ - if ($_SERVER['SERVER_PROTOCOL'] === 'HTTP/1.1' && - $_SERVER['REQUEST_METHOD'] === 'POST' - ) { - $code = 303; - } else { - $code = 302; - } - - if (strlen($url) > 2048) { - \SimpleSAML\Logger::warning('Redirecting to a URL longer than 2048 bytes.'); - } - - // Set the location header - header('Location: '.$url, true, $code); - - // Disable caching of this response - header('Pragma: no-cache'); - header('Cache-Control: no-cache, must-revalidate'); - - // Show a minimal web page with a clickable link to the URL - echo '<?xml version="1.0" encoding="UTF-8"?>'."\n"; - echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"'. - ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'."\n"; - echo '<html xmlns="http://www.w3.org/1999/xhtml">'; - echo '<head> - <meta http-equiv="content-type" content="text/html; charset=utf-8"> - <title>Redirect</title> - </head>'; - echo '<body>'; - echo '<h1>Redirect</h1>'; - echo '<p>'; - echo 'You were redirected to: '; - echo '<a id="redirlink" href="'. - htmlspecialchars($url).'">'.htmlspecialchars($url).'</a>'; - echo '<script type="text/javascript">document.getElementById("redirlink").focus();</script>'; - echo '</p>'; - echo '</body>'; - echo '</html>'; - - // End script execution - exit; - } - - - /** - * @deprecated 1.12.0 This method will be removed from the API. Instead, use the redirectTrustedURL() or - * redirectUntrustedURL() functions accordingly. - * @param string $url - * @param array $parameters - * @param array|null $allowed_redirect_hosts - * @return void - */ - public static function redirect($url, $parameters = [], $allowed_redirect_hosts = null) - { - assert(is_string($url)); - assert(strlen($url) > 0); - assert(is_array($parameters)); - - if ($allowed_redirect_hosts !== null) { - $url = self::checkURLAllowed($url, $allowed_redirect_hosts); - } else { - $url = self::normalizeURL($url); - } - self::doRedirect($url, $parameters); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::redirectTrustedURL() - * instead. - * @param string $url - * @param array $parameters - * @return void - */ - public static function redirectTrustedURL($url, $parameters = []) - { - \SimpleSAML\Utils\HTTP::redirectTrustedURL($url, $parameters); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::redirectUntrustedURL() - * instead. - * @param string $url - * @param array $parameters - * @return void - */ - public static function redirectUntrustedURL($url, $parameters = []) - { - \SimpleSAML\Utils\HTTP::redirectUntrustedURL($url, $parameters); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\Arrays::transpose() instead. - * @param array $in - * @return mixed - */ - public static function transposeArray($in) - { - return \SimpleSAML\Utils\Arrays::transpose($in); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\XML::isDOMNodeOfType() - * instead. - * @param \DOMNode $element - * @param string $name - * @param string $nsURI - * @return bool - */ - public static function isDOMElementOfType(\DOMNode $element, $name, $nsURI) - { - return \SimpleSAML\Utils\XML::isDOMNodeOfType($element, $name, $nsURI); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\XML::getDOMChildren() instead. - * @param \DOMElement $element - * @param string $localName - * @param string $namespaceURI - * @return array - */ - public static function getDOMChildren(\DOMElement $element, $localName, $namespaceURI) - { - return \SimpleSAML\Utils\XML::getDOMChildren($element, $localName, $namespaceURI); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\XML::getDOMText() instead. - * @param \DOMNode $element - * @return string - */ - public static function getDOMText($element) - { - return \SimpleSAML\Utils\XML::getDOMText($element); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::getAcceptLanguage() - * instead. - * @return array - */ - public static function getAcceptLanguage() - { - return \SimpleSAML\Utils\HTTP::getAcceptLanguage(); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\XML::isValid() instead. - * @param string $xml - * @param string $schema - * @return string|false - */ - public static function validateXML($xml, $schema) - { - $result = \SimpleSAML\Utils\XML::isValid($xml, $schema); - return ($result === true) ? '' : $result; - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\XML::checkSAMLMessage() instead. - * @param string $message - * @param string $type - * @return void - */ - public static function validateXMLDocument($message, $type) - { - \SimpleSAML\Utils\XML::checkSAMLMessage($message, $type); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use openssl_random_pseudo_bytes() instead. - * @param int $length - * @return string - */ - public static function generateRandomBytes($length) - { - assert(is_int($length)); - - return openssl_random_pseudo_bytes($length); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use bin2hex() instead. - * @param string $bytes - * @return string - */ - public static function stringToHex($bytes) - { - $ret = ''; - for ($i = 0; $i < strlen($bytes); $i++) { - $ret .= sprintf('%02x', ord($bytes[$i])); - } - return $ret; - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\System::resolvePath() instead. - * @param string $path - * @param string|null $base - * @return string - */ - public static function resolvePath($path, $base = null) - { - return \SimpleSAML\Utils\System::resolvePath($path, $base); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::resolveURL() instead. - * @param string $url - * @param string|null $base - * @return string - */ - public static function resolveURL($url, $base = null) - { - return \SimpleSAML\Utils\HTTP::resolveURL($url, $base); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::normalizeURL() instead. - * @param string $url - * @return string - */ - public static function normalizeURL($url) - { - return \SimpleSAML\Utils\HTTP::normalizeURL($url); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::parseQueryString() instead. - * @param string $query_string - * @return array - */ - public static function parseQueryString($query_string) - { - return \SimpleSAML\Utils\HTTP::parseQueryString($query_string); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use - * SimpleSAML\Utils\Attributes::normalizeAttributesArray() instead. - * @param array $attributes - * @return array - */ - public static function parseAttributes($attributes) - { - return \SimpleSAML\Utils\Attributes::normalizeAttributesArray($attributes); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\Config::getSecretSalt() instead. - * @return string - */ - public static function getSecretSalt() - { - return \SimpleSAML\Utils\Config::getSecretSalt(); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please call error_get_last() directly. - * @return string - */ - public static function getLastError() - { - - if (!function_exists('error_get_last')) { - return '[Cannot get error message]'; - } - - $error = error_get_last(); - if ($error === null) { - return '[No error message found]'; - } - - return $error['message']; - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\Config::getCertPath() instead. - * @param string $path - * @return string - */ - public static function resolveCert($path) - { - return \SimpleSAML\Utils\Config::getCertPath($path); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\Crypto::loadPublicKey() instead. - * @param \SimpleSAML\Configuration $metadata - * @param bool $required - * @param string $prefix - * @return array|null - */ - public static function loadPublicKey(\SimpleSAML\Configuration $metadata, $required = false, $prefix = '') - { - return \SimpleSAML\Utils\Crypto::loadPublicKey($metadata, $required, $prefix); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\Crypto::loadPrivateKey() instead. - * @param \SimpleSAML\Configuration $metadata - * @param bool $required - * @param string $prefix - * @return array|null - */ - public static function loadPrivateKey(\SimpleSAML\Configuration $metadata, $required = false, $prefix = '') - { - return \SimpleSAML\Utils\Crypto::loadPrivateKey($metadata, $required, $prefix); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\XML::formatDOMElement() instead. - * @param \DOMElement $root - * @param string $indentBase - * @return void - */ - public static function formatDOMElement(\DOMElement $root, $indentBase = '') - { - \SimpleSAML\Utils\XML::formatDOMElement($root, $indentBase); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\XML::formatXMLString() instead. - * @param string $xml - * @param string $indentBase - * @return string - */ - public static function formatXMLString($xml, $indentBase = '') - { - return \SimpleSAML\Utils\XML::formatXMLString($xml, $indentBase); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\Arrays::arrayize() instead. - * @param mixed $data - * @param int $index - * @return array - */ - public static function arrayize($data, $index = 0) - { - return \SimpleSAML\Utils\Arrays::arrayize($data, $index); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\Auth::isAdmin() instead. - * @return bool - */ - public static function isAdmin() - { - return \SimpleSAML\Utils\Auth::isAdmin(); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\Auth::getAdminLoginURL instead(); - * @param string|null $returnTo - * @return string - */ - public static function getAdminLoginURL($returnTo = null) - { - return \SimpleSAML\Utils\Auth::getAdminLoginURL($returnTo); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\Auth::requireAdmin() instead. - * @return void - */ - public static function requireAdmin() - { - \SimpleSAML\Utils\Auth::requireAdmin(); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::submitPOSTData() instead. - * @param string $destination - * @param array $post - * @return void - */ - public static function postRedirect($destination, $post) - { - \SimpleSAML\Utils\HTTP::submitPOSTData($destination, $post); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. PLease use SimpleSAML\Utils\HTTP::getPOSTRedirectURL() - * instead. - * @param string $destination - * @param array $post - * @return string - */ - public static function createPostRedirectLink($destination, $post) - { - return \SimpleSAML\Utils\HTTP::getPOSTRedirectURL($destination, $post); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::getPOSTRedirectURL() - * instead. - * @param string $destination - * @param array $post - * @return string - * @throws Error If the current session is a transient session. - */ - public static function createHttpPostRedirectLink($destination, $post) - { - assert(is_string($destination)); - assert(is_array($post)); - - $postId = \SimpleSAML\Utils\Random::generateID(); - $postData = [ - 'post' => $post, - 'url' => $destination, - ]; - - $session = \SimpleSAML\Session::getSessionFromRequest(); - if ($session->isTransient()) { - throw new Error('Cannot save data to a transient session'); - } - - $session->setData('core_postdatalink', $postId, $postData); - - $redirInfo = base64_encode(\SimpleSAML\Utils\Crypto::aesEncrypt($session->getSessionId().':'.$postId)); - - $url = \SimpleSAML\Module::getModuleURL('core/postredirect.php', ['RedirInfo' => $redirInfo]); - $url = preg_replace("#^https:#", "http:", $url); - - return $url; - } - - - /** - * @deprecated This method will be removed in SSP 2.0. - * @param string $certificate - * @param string $caFile - * @return void - */ - public static function validateCA($certificate, $caFile) - { - \SimpleSAML\XML\Validator::validateCertificate($certificate, $caFile); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\Time::initTimezone() instead. - * @return void - */ - public static function initTimezone() - { - \SimpleSAML\Utils\Time::initTimezone(); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\System::writeFile() instead. - * @param string $filename - * @param string $data - * @param int $mode - * @return void - */ - public static function writeFile($filename, $data, $mode = 0600) - { - \SimpleSAML\Utils\System::writeFile($filename, $data, $mode); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\System::getTempDir instead. - * @return string - */ - public static function getTempDir() - { - return \SimpleSAML\Utils\System::getTempDir(); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Logger::maskErrors() instead. - * @param int $mask - * @return void - */ - public static function maskErrors($mask) - { - \SimpleSAML\Logger::maskErrors($mask); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Logger::popErrorMask() instead. - * @return void - */ - public static function popErrorMask() - { - \SimpleSAML\Logger::popErrorMask(); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use - * SimpleSAML\Utils\Config\Metadata::getDefaultEndpoint() instead. - * @param array $endpoints - * @param array|null $bindings - * @return array|null - */ - public static function getDefaultEndpoint(array $endpoints, array $bindings = null) - { - return \SimpleSAML\Utils\Config\Metadata::getDefaultEndpoint($endpoints, $bindings); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::checkSessionCookie() - * instead. - * @param string|null $retryURL - * @return void - */ - public static function checkCookie($retryURL = null) - { - \SimpleSAML\Utils\HTTP::checkSessionCookie($retryURL); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\XML::debugSAMLMessage() instead. - * @param string|\DOMElement $message - * @param string $type - * @return void - */ - public static function debugMessage($message, $type) - { - \SimpleSAML\Utils\XML::debugSAMLMessage($message, $type); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::fetch() instead. - * @param string $path - * @param array $context - * @param bool $getHeaders - * @return string|array - */ - public static function fetch($path, $context = [], $getHeaders = false) - { - return \SimpleSAML\Utils\HTTP::fetch($path, $context, $getHeaders); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\Crypto::aesEncrypt() instead. - * @param string $clear - * @return string - */ - public static function aesEncrypt($clear) - { - return \SimpleSAML\Utils\Crypto::aesEncrypt($clear); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\Crypto::aesDecrypt() instead. - * @param string $encData - * @return string - */ - public static function aesDecrypt($encData) - { - return \SimpleSAML\Utils\Crypto::aesDecrypt($encData); - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\System::getOS() instead. - * @return bool - */ - public static function isWindowsOS() - { - return \SimpleSAML\Utils\System::getOS() === \SimpleSAML\Utils\System::WINDOWS; - } - - - /** - * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::setCookie() instead. - * @param string $name - * @param string|null $value - * @param array|null $params - * @param bool $throw - * @return void - */ - public static function setCookie($name, $value, array $params = null, $throw = true) - { - \SimpleSAML\Utils\HTTP::setCookie($name, $value, $params, $throw); - } -} diff --git a/lib/SimpleSAML/Utils/ClearableState.php b/lib/SimpleSAML/Utils/ClearableState.php index 5c90ccfc5245b5cfcc083e2ce672c11f8de4e9b7..60550261efdc93d6b4b7c8ea624fc752e5602e88 100644 --- a/lib/SimpleSAML/Utils/ClearableState.php +++ b/lib/SimpleSAML/Utils/ClearableState.php @@ -14,6 +14,7 @@ interface ClearableState { /** * Clear any cached internal state. + * @return void */ public static function clearInternalState(); } diff --git a/lib/SimpleSAML/Utils/Config.php b/lib/SimpleSAML/Utils/Config.php index 6059ff35e6514cdce334114b395f3cc51b47a550..56fe3e0445473f607c826b8c05ae003b811a783e 100644 --- a/lib/SimpleSAML/Utils/Config.php +++ b/lib/SimpleSAML/Utils/Config.php @@ -71,7 +71,6 @@ class Config public static function getConfigDir() { $configDir = dirname(dirname(dirname(__DIR__))) . '/config'; - /** @var string|false $configDirEnv */ $configDirEnv = getenv('SIMPLESAMLPHP_CONFIG_DIR'); if ($configDirEnv === false) { diff --git a/lib/SimpleSAML/Utils/Crypto.php b/lib/SimpleSAML/Utils/Crypto.php index c12519adb178984f355ee19eeec5138c4fc7e1e0..425eb56a48024a5682207b1d18ddfc5b1e692bbb 100644 --- a/lib/SimpleSAML/Utils/Crypto.php +++ b/lib/SimpleSAML/Utils/Crypto.php @@ -110,7 +110,6 @@ class Crypto $iv = openssl_random_pseudo_bytes(16); // encrypt the message - /** @var string|false $ciphertext */ $ciphertext = openssl_encrypt( $data, 'AES-256-CBC', @@ -231,14 +230,10 @@ class Crypto * It will search for the following elements in the metadata: * - 'certData': The certificate as a base64-encoded string. * - 'certificate': A file with a certificate or public key in PEM-format. - * - 'certFingerprint': The fingerprint of the certificate. Can be a single fingerprint, or an array of multiple - * valid fingerprints. (deprecated) * * This function will return an array with these elements: * - 'PEM': The public key/certificate in PEM-encoding. * - 'certData': The certificate data, base64 encoded, on a single line. (Only present if this is a certificate.) - * - 'certFingerprint': Array of valid certificate fingerprints. (Deprecated. Only present if this is a - * certificate.) * * @param \SimpleSAML\Configuration $metadata The metadata. * @param bool $required Whether the public key is required. If this is TRUE, a missing key @@ -275,30 +270,12 @@ class Crypto $pem = "-----BEGIN CERTIFICATE-----\n" . chunk_split($certData, 64) . "-----END CERTIFICATE-----\n"; - $certFingerprint = strtolower(sha1(base64_decode($certData))); - return [ 'certData' => $certData, 'PEM' => $pem, - 'certFingerprint' => [$certFingerprint], ]; } // no valid key found - } elseif ($metadata->hasValue($prefix . 'certFingerprint')) { - // we only have a fingerprint available - $fps = $metadata->getArrayizeString($prefix . 'certFingerprint'); - - // normalize fingerprint(s) - lowercase and no colons - foreach ($fps as &$fp) { - Assert::string($fp); - $fp = strtolower(str_replace(':', '', $fp)); - } - - /* - * We can't build a full certificate from a fingerprint, and may as well return an array with only the - * fingerprint(s) immediately. - */ - return ['certFingerprint' => $fps]; } // no public key/certificate available @@ -343,9 +320,6 @@ class Crypto * This function hashes a password with a given algorithm. * * @param string $password The password to hash. - * @param string|null $algorithm @deprecated The hashing algorithm, uppercase, optionally - * prepended with 'S' (salted). See hash_algos() for a complete list of hashing algorithms. - * @param string|null $salt @deprecated An optional salt to use. * * @return string The hashed password. * @throws \InvalidArgumentException If the input parameter is not a string. @@ -356,42 +330,14 @@ class Crypto * @author Dyonisius Visser, TERENA <visser@terena.org> * @author Jaime Perez, UNINETT AS <jaime.perez@uninett.no> */ - public static function pwHash($password, $algorithm = null, $salt = null) + public static function pwHash($password) { - if (!is_null($algorithm)) { - // @deprecated Old-style - if (!is_string($algorithm) || !is_string($password)) { - throw new \InvalidArgumentException('Invalid input parameters.'); - } - // hash w/o salt - if (in_array(strtolower($algorithm), hash_algos(), true)) { - $alg_str = '{' . str_replace('SHA1', 'SHA', $algorithm) . '}'; // LDAP compatibility - $hash = hash(strtolower($algorithm), $password, true); - return $alg_str . base64_encode($hash); - } - // hash w/ salt - if ($salt === null) { - // no salt provided, generate one - // default 8 byte salt, but 4 byte for LDAP SHA1 hashes - $bytes = ($algorithm == 'SSHA1') ? 4 : 8; - $salt = openssl_random_pseudo_bytes($bytes); - } - - if ($algorithm[0] == 'S' && in_array(substr(strtolower($algorithm), 1), hash_algos(), true)) { - $alg = substr(strtolower($algorithm), 1); // 'sha256' etc - $alg_str = '{' . str_replace('SSHA1', 'SSHA', $algorithm) . '}'; // LDAP compatibility - $hash = hash($alg, $password . $salt, true); - return $alg_str . base64_encode($hash . $salt); - } - throw new Error\Exception('Hashing algorithm \'' . strtolower($algorithm) . '\' is not supported'); - } else { - if (!is_string($password)) { - throw new \InvalidArgumentException('Invalid input parameter.'); - } elseif (!is_string($hash = password_hash($password, PASSWORD_DEFAULT))) { - throw new \InvalidArgumentException('Error while hashing password.'); - } - return $hash; + if (!is_string($password)) { + throw new \InvalidArgumentException('Invalid input parameter.'); + } elseif (!is_string($hash = password_hash($password, PASSWORD_DEFAULT))) { + throw new \InvalidArgumentException('Error while hashing password.'); } + return $hash; } @@ -433,31 +379,6 @@ class Crypto if (password_verify($password, $hash)) { return true; } - // return $hash === $password - - // @deprecated remove everything below this line for 2.0 - // match algorithm string (e.g. '{SSHA256}', '{MD5}') - if (preg_match('/^{(.*?)}(.*)$/', $hash, $matches)) { - // LDAP compatibility - $alg = preg_replace('/^(S?SHA)$/', '${1}1', $matches[1]); - - // hash w/o salt - if (in_array(strtolower($alg), hash_algos(), true)) { - return self::secureCompare($hash, self::pwHash($password, $alg)); - } - - // hash w/ salt - if ($alg[0] === 'S' && in_array(substr(strtolower($alg), 1), hash_algos(), true)) { - $php_alg = substr(strtolower($alg), 1); - - // get hash length of this algorithm to learn how long the salt is - $hash_length = strlen(hash($php_alg, '', true)); - $salt = substr(base64_decode($matches[2]), $hash_length); - return self::secureCompare($hash, self::pwHash($password, $alg, $salt)); - } - throw new Error\Exception('Hashing algorithm \'' . strtolower($alg) . '\' is not supported'); - } else { - return $hash === $password; - } + return $hash === $password; } } diff --git a/lib/SimpleSAML/Utils/HTTP.php b/lib/SimpleSAML/Utils/HTTP.php index 79371893058f06f6d33c7b1ace948af47199e649..18a78cd676340c9ec890b972ad191a33511bee6f 100644 --- a/lib/SimpleSAML/Utils/HTTP.php +++ b/lib/SimpleSAML/Utils/HTTP.php @@ -288,7 +288,6 @@ class HTTP $oldQuery = []; $url .= '?'; } else { - /** @var string|false $oldQuery */ $oldQuery = substr($url, $queryStart + 1); if ($oldQuery === false) { $oldQuery = []; @@ -298,7 +297,6 @@ class HTTP $url = substr($url, 0, $queryStart + 1); } - /** @var array $oldQuery */ $query = array_merge($oldQuery, $parameters); $url .= http_build_query($query, '', '&'); @@ -500,14 +498,8 @@ class HTTP // data and headers if ($getHeaders) { - /** - * @psalm-suppress UndefinedVariable Remove when Psalm >= 3.0.17 - */ if (!empty($http_response_header)) { $headers = []; - /** - * @psalm-suppress UndefinedVariable Remove when Psalm >= 3.0.17 - */ foreach ($http_response_header as $h) { if (preg_match('@^HTTP/1\.[01]\s+\d{3}\s+@', $h)) { $headers = []; // reset @@ -1206,7 +1198,6 @@ class HTTP if (version_compare(PHP_VERSION, '7.3.0', '>=')) { /* use the new options array for PHP >= 7.3 */ if ($params['raw']) { - /** @psalm-suppress InvalidArgument Remove when Psalm >= 3.4.10 */ $success = @setrawcookie( $name, $value, @@ -1220,7 +1211,6 @@ class HTTP ] ); } else { - /** @psalm-suppress InvalidArgument Remove when Psalm >= 3.4.10 */ $success = @setcookie( $name, $value, @@ -1311,7 +1301,7 @@ class HTTP $p = new Template($config, 'post.php'); $p->data['destination'] = $destination; $p->data['post'] = $data; - $p->show(); + $p->send(); exit(0); } } diff --git a/lib/SimpleSAML/XHTML/IdPDisco.php b/lib/SimpleSAML/XHTML/IdPDisco.php index 8e941879832f9151505eb40c39446144e30baf50..b81df687000ffeb12a9969e35f924435854c5b86 100644 --- a/lib/SimpleSAML/XHTML/IdPDisco.php +++ b/lib/SimpleSAML/XHTML/IdPDisco.php @@ -645,7 +645,7 @@ class IdPDisco $t->data['entityID'] = $this->spEntityId; $t->data['urlpattern'] = htmlspecialchars(Utils\HTTP::getSelfURLNoQuery()); $t->data['rememberenabled'] = $this->config->getBoolean('idpdisco.enableremember', false); - $t->show(); + $t->send(); } diff --git a/lib/SimpleSAML/XHTML/Template.php b/lib/SimpleSAML/XHTML/Template.php index 4ceed77ea29ccb2139e7e6c15fe0e5df3e688ad8..b2404b82673bbf1f8acc61fd4c5ec1f1c6c92d7c 100644 --- a/lib/SimpleSAML/XHTML/Template.php +++ b/lib/SimpleSAML/XHTML/Template.php @@ -536,25 +536,6 @@ class Template extends Response } - /** - * Show the template to the user. - * - * This method is a remnant of the old templating system, where templates where shown manually instead of - * returning a response. - * - * @return void - * @deprecated Do not use this method, use Twig + send() instead. Will be removed in 2.0 - */ - public function show() - { - if ($this->useNewUI) { - echo $this->getContents(); - } else { - require($this->findTemplatePath($this->template)); - } - } - - /** * Find module the template is in, if any * @@ -589,7 +570,6 @@ class Template extends Response { $extensions = ['.tpl.php', '.php']; - $extensions = ['.tpl.php', '.php']; list($templateModule, $templateName) = $this->findModuleAndTemplateName($template); $templateModule = ($templateModule !== null) ? $templateModule : 'default'; @@ -685,73 +665,6 @@ class Template extends Response } - /* - * Deprecated methods of this interface, all of them should go away. - */ - - - /** - * @param string $name - * - * @return string - * @deprecated This method will be removed in SSP 2.0. Please use \SimpleSAML\Locale\Language::getLanguage() - * instead. - */ - public function getAttributeTranslation($name) - { - return $this->translator->getAttributeTranslation($name); - } - - - /** - * @return string - * @deprecated This method will be removed in SSP 2.0. Please use \SimpleSAML\Locale\Language::getLanguage() - * instead. - */ - public function getLanguage() - { - return $this->translator->getLanguage()->getLanguage(); - } - - - /** - * @param string $language - * @param bool $setLanguageCookie - * @return void - * - * @deprecated This method will be removed in SSP 2.0. Please use \SimpleSAML\Locale\Language::setLanguage() - * instead. - */ - public function setLanguage($language, $setLanguageCookie = true) - { - $this->translator->getLanguage()->setLanguage($language, $setLanguageCookie); - } - - - /** - * @return null|string - * @deprecated This method will be removed in SSP 2.0. Please use \SimpleSAML\Locale\Language::getLanguageCookie() - * instead. - */ - public static function getLanguageCookie() - { - return Language::getLanguageCookie(); - } - - - /** - * @param string $language - * @return void - * - * @deprecated This method will be removed in SSP 2.0. Please use \SimpleSAML\Locale\Language::setLanguageCookie() - * instead. - */ - public static function setLanguageCookie($language) - { - Language::setLanguageCookie($language); - } - - /** * Wraps Language->getLanguageList * @@ -763,82 +676,6 @@ class Template extends Response } - /** - * @param string $tag - * - * @return array|null - * @deprecated This method will be removed in SSP 2.0. Please use \SimpleSAML\Locale\Translate::getTag() instead. - */ - public function getTag($tag) - { - return $this->translator->getTag($tag); - } - - - /** - * Temporary wrapper for \SimpleSAML\Locale\Translate::getPreferredTranslation(). - * - * @deprecated This method will be removed in SSP 2.0. Please use - * \SimpleSAML\Locale\Translate::getPreferredTranslation() instead. - * - * @param array $translations - * @return string - */ - public function getTranslation($translations) - { - return $this->translator->getPreferredTranslation($translations); - } - - - /** - * Includes a file relative to the template base directory. - * This function can be used to include headers and footers etc. - * - * @deprecated This function will be removed in SSP 2.0. Use Twig-templates instead - * @param string $file - * @return void - */ - private function includeAtTemplateBase(string $file) - { - $data = $this->data; - - $filename = $this->findTemplatePath($file); - - include($filename); - } - - - /** - * Wraps Translate->includeInlineTranslation() - * - * @see \SimpleSAML\Locale\Translate::includeInlineTranslation() - * @deprecated This method will be removed in SSP 2.0. Please use - * \SimpleSAML\Locale\Translate::includeInlineTranslation() instead. - * - * @param string $tag - * @param string $translation - * @return void - */ - public function includeInlineTranslation($tag, $translation) - { - $this->translator->includeInlineTranslation($tag, $translation); - } - - - /** - * @param string $file - * @param \SimpleSAML\Configuration|null $otherConfig - * @return void - * - * @deprecated This method will be removed in SSP 2.0. Please use - * \SimpleSAML\Locale\Translate::includeLanguageFile() instead. - */ - public function includeLanguageFile($file, $otherConfig = null) - { - $this->translator->includeLanguageFile($file, $otherConfig); - } - - /** * Wrap Language->isLanguageRTL * @@ -848,63 +685,4 @@ class Template extends Response { return $this->translator->getLanguage()->isLanguageRTL(); } - - - /** - * Merge two translation arrays. - * - * @param array $def The array holding string definitions. - * @param array $lang The array holding translations for every string. - * - * @return array The recursive merge of both arrays. - * @deprecated This method will be removed in SimpleSAMLphp 2.0. Please use array_merge_recursive() instead. - */ - public static function lang_merge($def, $lang) - { - foreach ($def as $key => $value) { - if (array_key_exists($key, $lang)) { - $def[$key] = array_merge($value, $lang[$key]); - } - } - return $def; - } - - - /** - * Behave like Language->noop to mark a tag for translation but actually do it later. - * - * @see \SimpleSAML\Locale\Translate::noop() - * @deprecated This method will be removed in SSP 2.0. Please use \SimpleSAML\Locale\Translate::noop() instead. - * - * @param string $tag - * @return string - */ - public static function noop($tag) - { - return $tag; - } - - - /** - * Wrap Language->t to translate tag into the current language, with a fallback to english. - * - * @see \SimpleSAML\Locale\Translate::t() - * @deprecated This method will be removed in SSP 2.0. Please use \SimpleSAML\Locale\Translate::t() instead. - * - * @param string $tag - * @param array $replacements - * @param bool $fallbackdefault - * @param array $oldreplacements - * @param bool $striptags - * @return string|null - */ - public function t( - $tag, - $replacements = [], - $fallbackdefault = true, - $oldreplacements = [], - $striptags = false - ) { - return $this->translator->t($tag, $replacements, $fallbackdefault, $oldreplacements, $striptags); - } } diff --git a/lib/SimpleSAML/XML/Shib13/AuthnRequest.php b/lib/SimpleSAML/XML/Shib13/AuthnRequest.php deleted file mode 100644 index ee16db4c3c318a6f752839fe9ea0e48c845f52d1..0000000000000000000000000000000000000000 --- a/lib/SimpleSAML/XML/Shib13/AuthnRequest.php +++ /dev/null @@ -1,91 +0,0 @@ -<?php - -declare(strict_types=1); - -/** - * The Shibboleth 1.3 Authentication Request. Not part of SAML 1.1, - * but an extension using query paramters no XML. - * - * @author Andreas Ã…kre Solberg, UNINETT AS. <andreas.solberg@uninett.no> - * @package SimpleSAMLphp - * @deprecated This class will be removed in a future release - */ - -namespace SimpleSAML\XML\Shib13; - -use SimpleSAML\Metadata\MetaDataStorageHandler; - -class AuthnRequest -{ - /** @var string|null */ - private $issuer = null; - - /** @var string|null */ - private $relayState = null; - - - /** - * @param string|null $relayState - * @return void - */ - public function setRelayState($relayState) - { - $this->relayState = $relayState; - } - - - /** - * @return string|null - */ - public function getRelayState() - { - return $this->relayState; - } - - - /** - * @param string|null $issuer - * @return void - */ - public function setIssuer($issuer) - { - $this->issuer = $issuer; - } - - - /** - * @return string|null - */ - public function getIssuer() - { - return $this->issuer; - } - - - /** - * @param string $destination - * @param string $shire - * @return string - */ - public function createRedirect($destination, $shire) - { - $metadata = MetaDataStorageHandler::getMetadataHandler(); - $idpmetadata = $metadata->getMetaDataConfig($destination, 'shib13-idp-remote'); - - $desturl = $idpmetadata->getDefaultEndpoint( - 'SingleSignOnService', - ['urn:mace:shibboleth:1.0:profiles:AuthnRequest'] - ); - $desturl = $desturl['Location']; - - $target = $this->getRelayState(); - $issuer = $this->getIssuer(); - assert($issuer !== null); - - $url = $desturl . '?' . - 'providerId=' . urlencode($issuer) . - '&shire=' . urlencode($shire) . - (isset($target) ? '&target=' . urlencode($target) : ''); - return $url; - } -} diff --git a/lib/SimpleSAML/XML/Shib13/AuthnResponse.php b/lib/SimpleSAML/XML/Shib13/AuthnResponse.php deleted file mode 100644 index 0d666a97fc237d2422d03ec6f75cab5fc8dbdcda..0000000000000000000000000000000000000000 --- a/lib/SimpleSAML/XML/Shib13/AuthnResponse.php +++ /dev/null @@ -1,528 +0,0 @@ -<?php - -declare(strict_types=1); - -/** - * A Shibboleth 1.3 authentication response. - * - * @author Andreas Ã…kre Solberg, UNINETT AS. <andreas.solberg@uninett.no> - * @package SimpleSAMLphp - * @deprecated This class will be removed in a future release - */ - -namespace SimpleSAML\XML\Shib13; - -use DOMDocument; -use DOMNode; -use DOMNodeList; -use DOMXpath; -use SAML2\DOMDocumentFactory; -use SimpleSAML\Configuration; -use SimpleSAML\Error; -use SimpleSAML\Metadata\MetaDataStorageHandler; -use SimpleSAML\Utils; -use SimpleSAML\XML\Validator; -use Webmozart\Assert\Assert; - -class AuthnResponse -{ - /** - * @var \SimpleSAML\XML\Validator|null This variable contains an XML validator for this message. - */ - private $validator = null; - - - /** - * @var bool Whether this response was validated by some external means (e.g. SSL). - */ - private $messageValidated = false; - - - /** @var string */ - const SHIB_PROTOCOL_NS = 'urn:oasis:names:tc:SAML:1.0:protocol'; - - - /** @var string */ - const SHIB_ASSERT_NS = 'urn:oasis:names:tc:SAML:1.0:assertion'; - - - /** - * @var \DOMDocument|null The DOMDocument which represents this message. - */ - private $dom = null; - - /** - * @var string|null The relaystate which is associated with this response. - */ - private $relayState = null; - - - /** - * Set whether this message was validated externally. - * - * @param bool $messageValidated TRUE if the message is already validated, FALSE if not. - * @return void - */ - public function setMessageValidated($messageValidated) - { - Assert::boolean($messageValidated); - - $this->messageValidated = $messageValidated; - } - - - /** - * @param string $xml - * @throws \Exception - * @return void - */ - public function setXML($xml) - { - Assert::string($xml); - - try { - $this->dom = DOMDocumentFactory::fromString(str_replace("\r", "", $xml)); - } catch (\Exception $e) { - throw new \Exception('Unable to parse AuthnResponse XML.'); - } - } - - - /** - * @param string|null $relayState - * @return void - */ - public function setRelayState($relayState) - { - $this->relayState = $relayState; - } - - - /** - * @return string|null - */ - public function getRelayState() - { - return $this->relayState; - } - - - /** - * @throws \SimpleSAML\Error\Exception - * @return bool - */ - public function validate() - { - Assert::isInstanceOf($this->dom, DOMDocument::class); - - if ($this->messageValidated) { - // This message was validated externally - return true; - } - - // Validate the signature - /** @var \DOMDocument $this->dom */ - $this->validator = new Validator($this->dom, ['ResponseID', 'AssertionID']); - - // Get the issuer of the response - $issuer = $this->getIssuer(); - - // Get the metadata of the issuer - $metadata = MetaDataStorageHandler::getMetadataHandler(); - $md = $metadata->getMetaDataConfig($issuer, 'shib13-idp-remote'); - - $publicKeys = $md->getPublicKeys('signing'); - if (!empty($publicKeys)) { - $certFingerprints = []; - foreach ($publicKeys as $key) { - if ($key['type'] !== 'X509Certificate') { - continue; - } - $certFingerprints[] = sha1(base64_decode($key['X509Certificate'])); - } - $this->validator->validateFingerprint($certFingerprints); - } elseif ($md->hasValue('certFingerprint')) { - $certFingerprints = $md->getArrayizeString('certFingerprint'); - - // Validate the fingerprint - $this->validator->validateFingerprint($certFingerprints); - } elseif ($md->hasValue('caFile')) { - // Validate against CA - $this->validator->validateCA(Utils\Config::getCertPath($md->getString('caFile'))); - } else { - throw new Error\Exception( - 'Missing certificate in Shibboleth 1.3 IdP Remote metadata for identity provider [' . $issuer . '].' - ); - } - - return true; - } - - - /** - * Checks if the given node is validated by the signature on this response. - * - * @param \DOMElement|\SimpleXMLElement $node Node to be validated. - * @return bool TRUE if the node is validated or FALSE if not. - */ - private function isNodeValidated($node): bool - { - if ($this->messageValidated) { - // This message was validated externally - return true; - } - - if ($this->validator === null) { - return false; - } - - // Convert the node to a DOM node if it is an element from SimpleXML - if ($node instanceof \SimpleXMLElement) { - $node = dom_import_simplexml($node); - } - - Assert::isInstanceOf($node, DOMNode::class); - - return $this->validator->isNodeValidated($node); - } - - - /** - * This function runs an xPath query on this authentication response. - * - * @param string $query The query which should be run. - * @param \DOMNode $node The node which this query is relative to. If this node is NULL (the default) - * then the query will be relative to the root of the response. - * @return \DOMNodeList - */ - private function doXPathQuery(string $query, DOMNode $node = null): DOMNodeList - { - Assert::isInstanceOf($this->dom, DOMDocument::class); - if ($node === null) { - /** @var \DOMDocument $this->dom */ - $node = $this->dom->documentElement; - } - - Assert::isInstanceOf($node, DOMNode::class); - - /** @var \DOMDocument $this->dom */ - $xPath = new DOMXpath($this->dom); - $xPath->registerNamespace('shibp', self::SHIB_PROTOCOL_NS); - $xPath->registerNamespace('shib', self::SHIB_ASSERT_NS); - - return $xPath->query($query, $node); - } - - - /** - * Retrieve the session index of this response. - * - * @return string|null The session index of this response. - */ - public function getSessionIndex() - { - Assert::isInstanceOf($this->dom, DOMDocument::class); - - $query = '/shibp:Response/shib:Assertion/shib:AuthnStatement'; - $nodelist = $this->doXPathQuery($query); - if ($node = $nodelist->item(0)) { - return $node->getAttribute('SessionIndex'); - } - - return null; - } - - - /** - * @throws \Exception - * @return array - */ - public function getAttributes() - { - $metadata = MetaDataStorageHandler::getMetadataHandler(); - $md = $metadata->getMetaData($this->getIssuer(), 'shib13-idp-remote'); - $base64 = isset($md['base64attributes']) ? $md['base64attributes'] : false; - - if (!($this->dom instanceof DOMDocument)) { - return []; - } - - $attributes = []; - - $assertions = $this->doXPathQuery('/shibp:Response/shib:Assertion'); - - foreach ($assertions as $assertion) { - if (!$this->isNodeValidated($assertion)) { - throw new \Exception('Shib13 AuthnResponse contained an unsigned assertion.'); - } - - $conditions = $this->doXPathQuery('shib:Conditions', $assertion); - if ($conditions->length > 0) { - $condition = $conditions->item(0); - - $start = $condition->getAttribute('NotBefore'); - $end = $condition->getAttribute('NotOnOrAfter'); - - if ($start && $end) { - if (!self::checkDateConditions($start, $end)) { - error_log('Date check failed ... (from ' . $start . ' to ' . $end . ')'); - continue; - } - } - } - - $attribute_nodes = $this->doXPathQuery( - 'shib:AttributeStatement/shib:Attribute/shib:AttributeValue', - $assertion - ); - - foreach ($attribute_nodes as $attribute) { - /** @var \DOMElement $attribute */ - - $value = $attribute->textContent; - /** @var \DOMElement $parentNode */ - $parentNode = $attribute->parentNode; - $name = $parentNode->getAttribute('AttributeName'); - - if ($attribute->hasAttribute('Scope')) { - $scopePart = '@' . $attribute->getAttribute('Scope'); - } else { - $scopePart = ''; - } - - if (empty($name)) { - throw new \Exception('Shib13 Attribute node without an AttributeName.'); - } - - if (!array_key_exists($name, $attributes)) { - $attributes[$name] = []; - } - - if ($base64) { - $encodedvalues = explode('_', $value); - foreach ($encodedvalues as $v) { - $attributes[$name][] = base64_decode($v) . $scopePart; - } - } else { - $attributes[$name][] = $value . $scopePart; - } - } - } - - return $attributes; - } - - - /** - * @throws \Exception - * @return string - */ - public function getIssuer() - { - $query = '/shibp:Response/shib:Assertion/@Issuer'; - $nodelist = $this->doXPathQuery($query); - - if ($attr = $nodelist->item(0)) { - return $attr->value; - } else { - throw new \Exception('Could not find Issuer field in Authentication response'); - } - } - - - /** - * @return array - */ - public function getNameID() - { - $nameID = []; - - $query = '/shibp:Response/shib:Assertion/shib:AuthenticationStatement/shib:Subject/shib:NameIdentifier'; - $nodelist = $this->doXPathQuery($query); - - if ($node = $nodelist->item(0)) { - $nameID["Value"] = $node->nodeValue; - $nameID["Format"] = $node->getAttribute('Format'); - } - - return $nameID; - } - - - /** - * Build a authentication response. - * - * @param \SimpleSAML\Configuration $idp Metadata for the IdP the response is sent from. - * @param \SimpleSAML\Configuration $sp Metadata for the SP the response is sent to. - * @param string $shire The endpoint on the SP the response is sent to. - * @param array|null $attributes The attributes which should be included in the response. - * @return string The response. - */ - public function generate(Configuration $idp, Configuration $sp, $shire, $attributes) - { - Assert::string($shire); - Assert::nullOrArray($attributes); - - if ($sp->hasValue('scopedattributes')) { - $scopedAttributes = $sp->getArray('scopedattributes'); - } elseif ($idp->hasValue('scopedattributes')) { - $scopedAttributes = $idp->getArray('scopedattributes'); - } else { - $scopedAttributes = []; - } - - $id = Utils\Random::generateID(); - - $issueInstant = Utils\Time::generateTimestamp(); - - // 30 seconds timeskew back in time to allow differing clocks - $notBefore = Utils\Time::generateTimestamp(time() - 30); - - - $assertionExpire = Utils\Time::generateTimestamp(time() + 300); // 5 minutes - $assertionid = Utils\Random::generateID(); - - $spEntityId = $sp->getString('entityid'); - - $audience = $sp->getString('audience', $spEntityId); - $base64 = $sp->getBoolean('base64attributes', false); - - $namequalifier = $sp->getString('NameQualifier', $spEntityId); - $nameid = Utils\Random::generateID(); - $subjectNode = - '<Subject>' . - '<NameIdentifier' . - ' Format="urn:mace:shibboleth:1.0:nameIdentifier"' . - ' NameQualifier="' . htmlspecialchars($namequalifier) . '"' . - '>' . - htmlspecialchars($nameid) . - '</NameIdentifier>' . - '<SubjectConfirmation>' . - '<ConfirmationMethod>' . - 'urn:oasis:names:tc:SAML:1.0:cm:bearer' . - '</ConfirmationMethod>' . - '</SubjectConfirmation>' . - '</Subject>'; - - $encodedattributes = ''; - - if (is_array($attributes)) { - $encodedattributes .= '<AttributeStatement>'; - $encodedattributes .= $subjectNode; - - foreach ($attributes as $name => $value) { - $encodedattributes .= $this->encAttribute($name, $value, $base64, $scopedAttributes); - } - - $encodedattributes .= '</AttributeStatement>'; - } - - /* - * The SAML 1.1 response message - */ - $response = '<Response xmlns="urn:oasis:names:tc:SAML:1.0:protocol" - xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" - xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" xmlns:xsd="http://www.w3.org/2001/XMLSchema" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" IssueInstant="' . $issueInstant . '" - MajorVersion="1" MinorVersion="1" - Recipient="' . htmlspecialchars($shire) . '" ResponseID="' . $id . '"> - <Status> - <StatusCode Value="samlp:Success" /> - </Status> - <Assertion xmlns="urn:oasis:names:tc:SAML:1.0:assertion" - AssertionID="' . $assertionid . '" IssueInstant="' . $issueInstant . '" - Issuer="' . htmlspecialchars($idp->getString('entityid')) . '" MajorVersion="1" MinorVersion="1"> - <Conditions NotBefore="' . $notBefore . '" NotOnOrAfter="' . $assertionExpire . '"> - <AudienceRestrictionCondition> - <Audience>' . htmlspecialchars($audience) . '</Audience> - </AudienceRestrictionCondition> - </Conditions> - <AuthenticationStatement AuthenticationInstant="' . $issueInstant . '" - AuthenticationMethod="urn:oasis:names:tc:SAML:1.0:am:unspecified">' . - $subjectNode . ' - </AuthenticationStatement> - ' . $encodedattributes . ' - </Assertion> -</Response>'; - - return $response; - } - - - /** - * Format a shib13 attribute. - * - * @param string $name Name of the attribute. - * @param array $values Values of the attribute (as an array of strings). - * @param bool $base64 Whether the attriubte values should be base64-encoded. - * @param array $scopedAttributes Array of attributes names which are scoped. - * @return string The attribute encoded as an XML-string. - */ - private function encAttribute(string $name, array $values, bool $base64, array $scopedAttributes): string - { - if (in_array($name, $scopedAttributes, true)) { - $scoped = true; - } else { - $scoped = false; - } - - $attr = '<Attribute AttributeName="' . htmlspecialchars($name) . - '" AttributeNamespace="urn:mace:shibboleth:1.0:attributeNamespace:uri">'; - foreach ($values as $value) { - $scopePart = ''; - if ($scoped) { - $tmp = explode('@', $value, 2); - if (count($tmp) === 2) { - $value = $tmp[0]; - $scopePart = ' Scope="' . htmlspecialchars($tmp[1]) . '"'; - } - } - - if ($base64) { - $value = base64_encode($value); - } - - $attr .= '<AttributeValue' . $scopePart . '>' . htmlspecialchars($value) . '</AttributeValue>'; - } - $attr .= '</Attribute>'; - - return $attr; - } - - /** - * Check if we are currently between the given date & time conditions. - * - * Note that this function allows a 10-minute leap from the initial time as marked by $start. - * - * @param string|null $start A SAML2 timestamp marking the start of the period to check. Defaults to null, in which - * case there's no limitations in the past. - * @param string|null $end A SAML2 timestamp marking the end of the period to check. Defaults to null, in which - * case there's no limitations in the future. - * - * @return bool True if the current time belongs to the period specified by $start and $end. False otherwise. - * - * @see \SAML2\Utils::xsDateTimeToTimestamp. - * - * @author Andreas Solberg, UNINETT AS <andreas.solberg@uninett.no> - * @author Olav Morken, UNINETT AS <olav.morken@uninett.no> - */ - protected static function checkDateConditions($start = null, $end = null) - { - $currentTime = time(); - - if (!empty($start)) { - $startTime = \SAML2\Utils::xsDateTimeToTimestamp($start); - // allow for a 10 minute difference in time - if (($startTime < 0) || (($startTime - 600) > $currentTime)) { - return false; - } - } - if (!empty($end)) { - $endTime = \SAML2\Utils::xsDateTimeToTimestamp($end); - if (($endTime < 0) || ($endTime <= $currentTime)) { - return false; - } - } - return true; - } -} diff --git a/lib/SimpleSAML/XML/Validator.php b/lib/SimpleSAML/XML/Validator.php index 33c17bf234b6b58d69312a0c7223db317b6bca1f..f2f0ac1ab4535330dd9cc42c4e4ac19daf904c7c 100644 --- a/lib/SimpleSAML/XML/Validator.php +++ b/lib/SimpleSAML/XML/Validator.php @@ -108,24 +108,6 @@ class Validator if (!XMLSecEnc::staticLocateKeyInfo($objKey, $signatureElement)) { throw new \Exception('Error finding key data for XML signature validation.'); } - - if ($publickey !== false) { - /* $publickey is set, and should therefore contain one or more fingerprints. - * Check that the response contains a certificate with a matching - * fingerprint. - */ - Assert::isArray($publickey['certFingerprint']); - - $certificate = $objKey->getX509Certificate(); - if ($certificate === null) { - // Wasn't signed with an X509 certificate - throw new \Exception('Message wasn\'t signed with an X509 certificate,' . - ' and no public key was provided in the metadata.'); - } - - self::validateCertificateFingerprint($certificate, $publickey['certFingerprint']); - // Key OK - } } // Check the signature @@ -155,116 +137,6 @@ class Validator } - /** - * Calculates the fingerprint of an X509 certificate. - * - * @param string $x509cert The certificate as a base64-encoded string. The string may optionally - * be framed with '-----BEGIN CERTIFICATE-----' and '-----END CERTIFICATE-----'. - * @return string|null The fingerprint as a 40-character lowercase hexadecimal number. NULL is returned if the - * argument isn't an X509 certificate. - */ - private static function calculateX509Fingerprint(string $x509cert) - { - $lines = explode("\n", $x509cert); - - $data = ''; - - foreach ($lines as $line) { - // Remove '\r' from end of line if present - $line = rtrim($line); - if ($line === '-----BEGIN CERTIFICATE-----') { - // Delete junk from before the certificate - $data = ''; - } elseif ($line === '-----END CERTIFICATE-----') { - // Ignore data after the certificate - break; - } elseif ($line === '-----BEGIN PUBLIC KEY-----') { - // This isn't an X509 certificate - return null; - } else { - // Append the current line to the certificate data - $data .= $line; - } - } - - /* $data now contains the certificate as a base64-encoded string. The fingerprint - * of the certificate is the sha1-hash of the certificate. - */ - return strtolower(sha1(base64_decode($data))); - } - - - /** - * Helper function for validating the fingerprint. - * - * Checks the fingerprint of a certificate against an array of valid fingerprints. - * Will throw an exception if none of the fingerprints matches. - * - * @param string $certificate The X509 certificate we should validate. - * @param array $fingerprints The valid fingerprints. - * @throws \Exception - * @return void - */ - private static function validateCertificateFingerprint(string $certificate, array $fingerprints) - { - $certFingerprint = self::calculateX509Fingerprint($certificate); - if ($certFingerprint === null) { - // Couldn't calculate fingerprint from X509 certificate. Should not happen. - throw new \Exception('Unable to calculate fingerprint from X509' . - ' certificate. Maybe it isn\'t an X509 certificate?'); - } - - foreach ($fingerprints as $fp) { - Assert::string($fp); - - if ($fp === $certFingerprint) { - // The fingerprints matched - return; - } - } - - // None of the fingerprints matched. Throw an exception describing the error. - throw new \Exception('Invalid fingerprint of certificate. Expected one of [' . - implode('], [', $fingerprints) . '], but got [' . $certFingerprint . ']'); - } - - - /** - * Validate the fingerprint of the certificate which was used to sign this document. - * - * This function accepts either a string, or an array of strings as a parameter. If this - * is an array, then any string (certificate) in the array can match. If this is a string, - * then that string must match, - * - * @param string|array $fingerprints The fingerprints which should match. This can be a single string, - * or an array of fingerprints. - * @throws \Exception - * @return void - */ - public function validateFingerprint($fingerprints) - { - Assert::true(is_string($fingerprints) || is_array($fingerprints)); - - if ($this->x509Certificate === null) { - throw new \Exception('Key used to sign the message was not an X509 certificate.'); - } - - if (!is_array($fingerprints)) { - $fingerprints = [$fingerprints]; - } - - // Normalize the fingerprints - foreach ($fingerprints as &$fp) { - Assert::string($fp); - - // Make sure that the fingerprint is in the correct format - $fp = strtolower(str_replace(":", "", $fp)); - } - - self::validateCertificateFingerprint($this->x509Certificate, $fingerprints); - } - - /** * This function checks if the given XML node was signed. * @@ -291,153 +163,4 @@ class Validator */ return false; } - - - /** - * Validate the certificate used to sign the XML against a CA file. - * - * This function throws an exception if unable to validate against the given CA file. - * - * @param string $caFile File with trusted certificates, in PEM-format. - * @throws \Exception - * @return void - */ - public function validateCA($caFile) - { - Assert::string($caFile); - - if ($this->x509Certificate === null) { - throw new \Exception('Key used to sign the message was not an X509 certificate.'); - } - - self::validateCertificate($this->x509Certificate, $caFile); - } - - /** - * Validate a certificate against a CA file, by using the builtin - * openssl_x509_checkpurpose function - * - * @param string $certificate The certificate, in PEM format. - * @param string $caFile File with trusted certificates, in PEM-format. - * @return boolean|string TRUE on success, or a string with error messages if it failed. - * @deprecated - */ - private static function validateCABuiltIn(string $certificate, string $caFile) - { - // Clear openssl errors - while (openssl_error_string() !== false) { - } - - $res = openssl_x509_checkpurpose($certificate, X509_PURPOSE_ANY, [$caFile]); - - $errors = ''; - // Log errors - while (($error = openssl_error_string()) !== false) { - $errors .= ' [' . $error . ']'; - } - - if ($res !== true) { - return $errors; - } - - return true; - } - - - /** - * Validate the certificate used to sign the XML against a CA file, by using the "openssl verify" command. - * - * This function uses the openssl verify command to verify a certificate, to work around limitations - * on the openssl_x509_checkpurpose function. That function will not work on certificates without a purpose - * set. - * - * @param string $certificate The certificate, in PEM format. - * @param string $caFile File with trusted certificates, in PEM-format. - * @return bool|string TRUE on success, a string with error messages on failure. - * @throws \Exception - * @deprecated - */ - private static function validateCAExec(string $certificate, string $caFile) - { - $command = [ - 'openssl', 'verify', - '-CAfile', $caFile, - '-purpose', 'any', - ]; - - $cmdline = ''; - foreach ($command as $c) { - $cmdline .= escapeshellarg($c) . ' '; - } - - $cmdline .= '2>&1'; - $descSpec = [ - 0 => ['pipe', 'r'], - 1 => ['pipe', 'w'], - ]; - $process = proc_open($cmdline, $descSpec, $pipes); - if (!is_resource($process)) { - throw new \Exception('Failed to execute verification command: ' . $cmdline); - } - - if (fwrite($pipes[0], $certificate) === false) { - throw new \Exception('Failed to write certificate for verification.'); - } - fclose($pipes[0]); - - $out = ''; - while (!feof($pipes[1])) { - $line = trim(fgets($pipes[1])); - if (strlen($line) > 0) { - $out .= ' [' . $line . ']'; - } - } - fclose($pipes[1]); - - $status = proc_close($process); - if ($status !== 0 || $out !== ' [stdin: OK]') { - return $out; - } - - return true; - } - - - /** - * Validate the certificate used to sign the XML against a CA file. - * - * This function throws an exception if unable to validate against the given CA file. - * - * @param string $certificate The certificate, in PEM format. - * @param string $caFile File with trusted certificates, in PEM-format. - * @throws \Exception - * @return void - * @deprecated - */ - public static function validateCertificate($certificate, $caFile) - { - Assert::string($certificate); - Assert::string($caFile); - - if (!file_exists($caFile)) { - throw new \Exception('Could not load CA file: ' . $caFile); - } - - Logger::debug('Validating certificate against CA file: ' . var_export($caFile, true)); - - $resBuiltin = self::validateCABuiltIn($certificate, $caFile); - if ($resBuiltin !== true) { - Logger::debug('Failed to validate with internal function: ' . var_export($resBuiltin, true)); - - $resExternal = self::validateCAExec($certificate, $caFile); - if ($resExternal !== true) { - Logger::debug('Failed to validate with external function: ' . var_export($resExternal, true)); - throw new \Exception('Could not verify certificate against CA file "' . - $caFile . '". Internal result:' . var_export($resBuiltin, true) . - ' External result:' . var_export($resExternal, true)); - } - } - - Logger::debug('Successfully validated certificate.'); - } } diff --git a/lib/_autoload_modules.php b/lib/_autoload_modules.php index 3d7ca91848c91c77f886d2e96a9db0ec7bbe3607..621edabf0ccbfe3e2be4fbebfb263d8a99d3ee01 100644 --- a/lib/_autoload_modules.php +++ b/lib/_autoload_modules.php @@ -10,134 +10,6 @@ declare(strict_types=1); * @package SimpleSAMLphp */ -/** - * This temporary autoloader allows loading classes with their old-style names (SimpleSAML_Path_Something) even if they - * have been migrated to namespaces, by registering an alias for the new class. If the class has not yet been migrated, - * the autoloader will then try to load it. - * - * @param string $class The full name of the class using underscores to separate the elements of the path, and starting - * with 'SimpleSAML_'. - * @deprecated This function will be removed in SSP 2.0. - */ -function temporaryLoader(string $class) -{ - // handle the upgrade to the latest version of XMLSecLibs using namespaces - if (strstr($class, 'XMLSec') && !strstr($class, '\\RobRichards\\XMLSecLibs\\')) { - $new = '\\RobRichards\\XMLSecLibs\\' . $class; - if (class_exists($new, true)) { - class_alias($new, $class); - SimpleSAML\Logger::warning("The class '$class' is now using namespaces, please use '$new'."); - return; - } - } - - if (!strstr($class, 'SimpleSAML_')) { - return; // not a valid class name for old classes - } - $original = $class; - - // list of classes that have been renamed or moved - $renamed = [ - 'SimpleSAML_Metadata_MetaDataStorageHandlerMDX' => 'SimpleSAML_Metadata_Sources_MDQ', - 'SimpleSAML_Logger_LoggingHandlerSyslog' => 'SimpleSAML_Logger_SyslogLoggingHandler', - 'SimpleSAML_Logger_LoggingHandlerErrorLog' => 'SimpleSAML_Logger_ErrorLogLoggingHandler', - 'SimpleSAML_Logger_LoggingHandlerFile' => 'SimpleSAML_Logger_FileLoggingHandler', - 'SimpleSAML_Logger_LoggingHandler' => 'SimpleSAML_Logger_LoggingHandlerInterface', - 'SimpleSAML_IdP_LogoutHandler' => 'SimpleSAML_IdP_LogoutHandlerInterface', - 'SimpleSAML_IdP_LogoutIFrame' => 'SimpleSAML_IdP_IFrameLogoutHandler', - 'SimpleSAML_IdP_LogoutTraditional' => 'SimpleSAML_IdP_TraditionalLogoutHandler', - 'SimpleSAML_Auth_Default' => 'SimpleSAML_Auth_DefaultAuth', - 'SimpleSAML_Auth_LDAP' => 'SimpleSAML_Module_ldap_Auth_Ldap', - ]; - if (array_key_exists($class, $renamed)) { - // the class has been renamed, try to load it and create an alias - $class = $renamed[$class]; - } - - // try to load it from the corresponding file - $path = explode('_', $class); - $file = dirname(__FILE__) . DIRECTORY_SEPARATOR . join(DIRECTORY_SEPARATOR, $path) . '.php'; - if (file_exists($file)) { - require_once $file; - } - - // it exists, so it's not yet migrated to namespaces - if (class_exists($class, false) || interface_exists($class, false)) { - return; - } - - // it didn't exist, try to see if it was migrated to namespaces - $new = join('\\', $path); - if (class_exists($new, false) || interface_exists($new, false)) { - // do not try to autoload it if it doesn't exist! It should! - class_alias($new, $original); - SimpleSAML\Logger::warning("The class or interface '$original' is now using namespaces, please use '$new'."); - } -} - - -/** - * Autoload function for SimpleSAMLphp modules following PSR-0. - * - * @param string $className Name of the class. - * - * @deprecated This method will be removed in SSP 2.0. - * - * TODO: this autoloader should be removed once everything has been migrated to namespaces. - */ -function sspmodAutoloadPSR0(string $className) -{ - $modulePrefixLength = strlen('sspmod_'); - $classPrefix = substr($className, 0, $modulePrefixLength); - if ($classPrefix !== 'sspmod_') { - return; - } - - // list of classes that have been renamed or moved - $renamed = [ - 'sspmod_adfs_SAML2_XML_fed_Const' => [ - 'module' => 'adfs', - 'path' => ['SAML2', 'XML', 'fed', 'Constants'] - ], - ]; - if (array_key_exists($className, $renamed)) { - // the class has been renamed, try to load it and create an alias - $module = $renamed[$className]['module']; - $path = $renamed[$className]['path']; - } else { - $modNameEnd = strpos($className, '_', $modulePrefixLength); - $module = substr($className, $modulePrefixLength, $modNameEnd - $modulePrefixLength); - $path = explode('_', substr($className, $modNameEnd + 1)); - } - - if (!\SimpleSAML\Module::isModuleEnabled($module)) { - return; - } - - $file = \SimpleSAML\Module::getModuleDir($module) . '/lib/' . join('/', $path) . '.php'; - if (!file_exists($file)) { - return; - } - require_once($file); - - if (!class_exists($className, false) && !interface_exists($className, false)) { - // the file exists, but the class is not defined. Is it using namespaces? - $nspath = join('\\', $path); - if ( - class_exists('SimpleSAML\\Module\\' . $module . '\\' . $nspath) - || interface_exists('SimpleSAML\\Module\\' . $module . '\\' . $nspath) - ) { - // the class has been migrated, create an alias and warn about it - \SimpleSAML\Logger::warning( - "The class or interface '$className' is now using namespaces, please use 'SimpleSAML\\Module\\" . - $module . "\\" . $nspath . "' instead." - ); - class_alias("SimpleSAML\\Module\\$module\\$nspath", $className); - } - } -} - - /** * Autoload function for SimpleSAMLphp modules following PSR-4. * @@ -173,6 +45,4 @@ function sspmodAutoloadPSR4(string $className) } } -spl_autoload_register("temporaryLoader"); -spl_autoload_register('sspmodAutoloadPSR0'); spl_autoload_register('sspmodAutoloadPSR4'); diff --git a/locales/ar/LC_MESSAGES/messages.po b/locales/ar/LC_MESSAGES/messages.po index 45600f9e771282ce924bc25a15b9831093219113..0017cd139fda076b671f76c4a602470b355fa03e 100644 --- a/locales/ar/LC_MESSAGES/messages.po +++ b/locales/ar/LC_MESSAGES/messages.po @@ -108,9 +108,6 @@ msgstr "يمكنك رؤية Ù…ØØªÙˆÙŠ Ø§Ù„Ø±Ø³Ø§Ù„Ø© طالما كنت ÙÙŠ Ø msgid "{errors:descr_RESPONSESTATUSNOSUCCESS}" msgstr "مقدم الهوية استجاب بخطأ. (رمز Ø§Ù„ØØ§Ù„Ø© باستجابة SAML ÙØ§Ø´Ù„)" -msgid "{admin:metadata_shib13-idp}" -msgstr "البيانات الوصÙية Ù„Shib 1.3 IdP" - msgid "{login:help_text}" msgstr "" "لسوء Ø§Ù„ØØ¸ لا يمكننا التوثق من هويتك بدون اسم المستخدم Ùˆ كلمة السر " @@ -209,9 +206,6 @@ msgstr "تسجيل الخروج" msgid "{login:error_wrongpassword}" msgstr " اسم مستخدم او كلمة سر خطا" -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "مقدم خدمة Shib 1.3 البعيد" - msgid "{errors:descr_PROCESSAUTHNREQUEST}" msgstr "ØØµÙ„ مقدم الهوية هذا علي طلب توثيق من مقدم الخدمة لكن ØØ¯Ø« خطا بالإجراءات " @@ -432,9 +426,6 @@ msgstr "ارسل رسالة" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "خطا تم Ø§Ù„ØØµÙˆÙ„ عليه من مقدم الهوية" -msgid "{admin:metadata_shib13-sp}" -msgstr "البيانات الوصÙية Ù„Shib 1.3 SP" - msgid "{admin:metaover_intro}" msgstr "لإلغاء نظرة علي ØªÙØ§ØµÙŠÙ„ Ø§ØØ¯ÙŠ ÙˆØØ¯Ø§Øª SAML, اضغط علي ترويسة Ø§Ù„ÙˆØØ¯Ø© " @@ -505,9 +496,6 @@ msgstr "Ø§Ù„ØµÙØØ© غير موجودة" msgid "{logout:logged_out_text}" msgstr "لقدخروج لقد قمت بالخروج" -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "مقدم خدمة Shib 1.3 المستضاÙ" - msgid "{admin:metadata_cert_intro}" msgstr "ØÙ…Ù„ شهادات X509 ÙƒÙ…Ù„ÙØ§Øª بترميز PEM" @@ -534,8 +522,11 @@ msgstr "" " بالمشر٠علي تسجيل الدخول لهذه الخدمة Ùˆ قم بإرسال تقرير الخطأ أعلاه لهم " "أيضاً " -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "مقدم هوية Shib 1.3 المستضاÙ" +msgid "{attributes:attribute_mobile}" +msgstr "رقم الهات٠السيار" + +msgid "{attributes:attribute_preferredlanguage}" +msgstr "اللغة Ø§Ù„Ù…ÙØ¶Ù„Ø©" msgid "{errors:descr_NOTVALIDCERT}" msgstr "لم تقدم شهادة صØÙŠØØ©" @@ -567,9 +558,6 @@ msgstr "الشهادات Ù…Ùقودة" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "معلومات تسجيل الخروج Ù…Ùقودة" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "مقدم هوية Shib 1.3 البعيد" - msgid "{errors:descr_CONFIG}" msgstr "يبدو ان ترتيب SimpleSAMLphp غير صØÙŠØ" diff --git a/locales/cs/LC_MESSAGES/messages.po b/locales/cs/LC_MESSAGES/messages.po index ca82ad8b3489eafcba5f14c378726f6350bdd1ec..eb77773b99b4bc1e63c744b787c481dec3af4fef 100644 --- a/locales/cs/LC_MESSAGES/messages.po +++ b/locales/cs/LC_MESSAGES/messages.po @@ -112,9 +112,6 @@ msgstr "Pokud jste v debug módu, můžete vidÄ›t obsah zprávy, kterou posÃlá msgid "{errors:descr_RESPONSESTATUSNOSUCCESS}" msgstr "Poskytovatel identity odpovÄ›dÄ›l chybou. (Stavový kód v SAML nebyl úspěšný)" -msgid "{admin:metadata_shib13-idp}" -msgstr "Shib 1.3 IdP Metadata" - msgid "{login:help_text}" msgstr "" "Bez jména a hesla se nemůžete identifikovat. Zkuste " @@ -212,9 +209,6 @@ msgstr "OdhlaÅ¡uji..." msgid "{login:error_wrongpassword}" msgstr "Nesprávné jméno nebo heslo." -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Shib 1.3 Service Provider (Remote - vzdálený)" - msgid "{errors:descr_PROCESSAUTHNREQUEST}" msgstr "" "Tento poskytovatel identity pÅ™ijal požadavek od poskytovatele služby, ale" @@ -439,9 +433,6 @@ msgstr "PosÃlám zprávu" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "Chyba pÅ™ijatá od poskytovatele identity" -msgid "{admin:metadata_shib13-sp}" -msgstr "Shib 1.3 SP Metadata" - msgid "{admin:metaover_intro}" msgstr "Pro zobrazenà detailu SAML entity, klikni na hlaviÄku entity" @@ -510,9 +501,6 @@ msgstr "Stránka nenalezena." msgid "{logout:logged_out_text}" msgstr "Jste odhlášen. DÄ›kujeme za použità této služby." -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Shib 1.3 Service Provider (Hosted - lokálnÃ)" - msgid "{admin:metadata_cert_intro}" msgstr "StáhnÄ›te certifikát X509 jako PEM-encoded soubor" @@ -540,8 +528,11 @@ msgstr "" "konfiguraci. Kontaktujte administrátora této pÅ™ihlaÅ¡ovacà služby a " "zaÅ¡lete mu tuto zprávu." -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Shib 1.3 Identity Provider (Hosted - lokálnÃ)" +msgid "{attributes:attribute_mobile}" +msgstr "Mobil" + +msgid "{attributes:attribute_preferredlanguage}" +msgstr "Preferovaný jazyk" msgid "{errors:descr_NOTVALIDCERT}" msgstr "NepÅ™edložil jste validnà certifikát." @@ -575,9 +566,6 @@ msgstr "Chybà certifikát" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "OdhlaÅ¡ovacà informace ztracena" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Shib 1.3 Identity Provider (Remote - vzdálený)" - msgid "{errors:descr_CONFIG}" msgstr "SimpleSAMLphp je Å¡patnÄ› nakonfigurovaný" diff --git a/locales/da/LC_MESSAGES/messages.po b/locales/da/LC_MESSAGES/messages.po index fa8cbc6b15843c2959455bbdf5a7f2c82a6f4dff..d6cf3cd58915aa0354b42135332dd5b829272051 100644 --- a/locales/da/LC_MESSAGES/messages.po +++ b/locales/da/LC_MESSAGES/messages.po @@ -112,9 +112,6 @@ msgstr "" "Institutionen har sendt en fejl. (Status koden i SAML responset var ikke " "succes)" -msgid "{admin:metadata_shib13-idp}" -msgstr "Shibboleth 1.3 identitetsudbyders metadata" - msgid "{login:help_text}" msgstr "" "Desværre, uden korrekt brugernavn og kodeord kan du ikke fÃ¥ adgang til " @@ -215,9 +212,6 @@ msgstr "Logger ud..." msgid "{login:error_wrongpassword}" msgstr "Forkert brugernavn eller kodeord." -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Shibboleth 1.3 tjenesteudbyder (remote)" - msgid "{login:remember_username}" msgstr "Husk mit brugernavn" @@ -451,9 +445,6 @@ msgstr "Sender besked" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "Fejl modtaget fra institution" -msgid "{admin:metadata_shib13-sp}" -msgstr "Shibboleth 1.3 tjenesteudbyders metadata" - msgid "{admin:metaover_intro}" msgstr "For at se detaljer vedrørende SAML-entiteten, klik pÃ¥ entitets-headeren" @@ -530,9 +521,6 @@ msgstr "Siden kunne ikke findes" msgid "{logout:logged_out_text}" msgstr "Du er blevet logget ud. Tak for fordi du brugte denne tjeneste." -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Shibboleth 1.3 tjenesteudbyder (hosted)" - msgid "{admin:metadata_cert_intro}" msgstr "Download X509 certifikaterne som PEM-indkodet filer." @@ -565,8 +553,8 @@ msgstr "" msgid "{admin:metadata_adfs-idp}" msgstr "ADFS identitetsudbyder metadata" -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Shibboleth 1.3 identitetsudbyder (hosted)" +msgid "{attributes:attribute_preferredlanguage}" +msgstr "Foretrukket sprog (evt. flere)" msgid "{errors:descr_NOTVALIDCERT}" msgstr "Du har ikke valgt et gyldigt certifikat" @@ -598,9 +586,6 @@ msgstr "Intet certifikat" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "Manglende logout-oplysninger" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Shibboleth 1.3 identitetsudbyder (remote)" - msgid "{errors:descr_CONFIG}" msgstr "SimpleSAMLphp er tilsyneladende ikke Konfigureret korrekt" diff --git a/locales/de/LC_MESSAGES/messages.po b/locales/de/LC_MESSAGES/messages.po index a7dbdbf51ba5cdccbaae8924b52a57a58e346482..167f6fe9eeaa70d395469a575dcdfb6d87aa6f76 100644 --- a/locales/de/LC_MESSAGES/messages.po +++ b/locales/de/LC_MESSAGES/messages.po @@ -122,9 +122,6 @@ msgstr "" "Der Identity Provider gab einen Fehler zurück (Der Statuscode in der " "SAML-Antwort war nicht \"Erfolg\")" -msgid "{admin:metadata_shib13-idp}" -msgstr "Shib 1.3 IdP Metadaten" - msgid "{login:help_text}" msgstr "" "Tut uns leid - Ohne Nutzername und Passwort können Sie sich nicht " @@ -228,9 +225,6 @@ msgstr "Abmeldung läuft..." msgid "{login:error_wrongpassword}" msgstr "Falscher Nutzername oder Passwort." -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Shib 1.3 Service Provider (entfernt)" - msgid "{errors:descr_PROCESSAUTHNREQUEST}" msgstr "" "Dieser Identity Provider hat eine Authentifizierungsanfrage von einem " @@ -470,9 +464,6 @@ msgstr "Sende Nachricht" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "Fehlermeldung vom Identity Provider erhalten" -msgid "{admin:metadata_shib13-sp}" -msgstr "Shib 1.3 SP Metadaten" - msgid "{admin:metaover_intro}" msgstr "" "Um sich Details für eine SAML-Entität anzusehen, klicken Sie auf die " @@ -545,9 +536,6 @@ msgstr "Seite nicht gefunden" msgid "{logout:logged_out_text}" msgstr "Sie wurden abgemeldet. Danke, dass Sie diesen Dienst verwendet haben." -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Shib 1.3 Service Provider (gehosted)" - msgid "{admin:metadata_cert_intro}" msgstr "Die X509-Zertifikate als PEM-kodierte Dateien herunterladen." @@ -578,8 +566,11 @@ msgstr "" "Kontaktieren Sie bitte den Administrator dieses Dienstes und teilen die " "obige Fehlermeldung mit." -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Shib 1.3 Identity Provider (gehosted)" +msgid "{attributes:attribute_mobile}" +msgstr "Mobiltelefon" + +msgid "{attributes:attribute_preferredlanguage}" +msgstr "Bevorzugte Sprache" msgid "{errors:descr_NOTVALIDCERT}" msgstr "Sie haben kein gültiges Zertifikat benutzt." @@ -619,9 +610,6 @@ msgstr "Kein Zertifikat" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "Abmeldeinformation verloren gegangen" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Shib 1.3 Identity Provider (entfernt)" - msgid "{errors:descr_CONFIG}" msgstr "SimpleSAMLphp scheint falsch konfiguriert zu sein." diff --git a/locales/el/LC_MESSAGES/messages.po b/locales/el/LC_MESSAGES/messages.po index c0bc349fc2c3e63f256c8c2c77c0557420b99db8..6c1e4cef53db91b49a7610c2b51c05035ee6a0f7 100644 --- a/locales/el/LC_MESSAGES/messages.po +++ b/locales/el/LC_MESSAGES/messages.po @@ -121,9 +121,6 @@ msgstr "" "Ο κωδικός κατάστασης που πεÏιÎχει η απάντηση του παÏόχου ταυτότητας " "υποδεικνÏει σφάλμα." -msgid "{admin:metadata_shib13-idp}" -msgstr "ΜεταδεδομÎνα ΠαÏόχου Ταυτότητας Shib 1.3" - msgid "{login:help_text}" msgstr "" "ΛυποÏμαστε. ΧωÏίς το όνομα χÏήστη και τον κωδικό σας, δεν μποÏείτε να " @@ -232,9 +229,6 @@ msgstr "Γίνεται αποσÏνδεση..." msgid "{login:error_wrongpassword}" msgstr "Το όνομα χÏήστη ή ο κωδικός Ï€Ïόσβασης είναι λάθος." -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "ΠάÏοχος ΥπηÏεσιών Shib 1.3 (ΑπομακÏυσμÎνος)" - msgid "{login:remember_username}" msgstr "Îα θυμάσαι το όνομα χÏήστη" @@ -492,9 +486,6 @@ msgstr "Αποστολή αÏχείου" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "Λήψη ÎºÏ‰Î´Î¹ÎºÎ¿Ï ÏƒÏ†Î¬Î»Î¼Î±Ï„Î¿Ï‚ από τον πάÏοχο ταυτότητας" -msgid "{admin:metadata_shib13-sp}" -msgstr "ΜεταδεδομÎνα ΠαÏόχου ΥπηÏεσιών Shib 1.3" - msgid "{admin:metaover_intro}" msgstr "" "Για να δείτε τις λεπτομÎÏειες για μια οντότητα SAML, κάντε κλικ στην " @@ -574,9 +565,6 @@ msgstr "Η σελίδα δεν βÏÎθηκε" msgid "{logout:logged_out_text}" msgstr "Έχετε αποσυνδεθεί." -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "ΠάÏοχος ΥπηÏεσιών Shib 1.3 (ΦιλοξενοÏμενος)" - msgid "{admin:metadata_cert_intro}" msgstr "Λήψη πιστοποιητικών X.509 σε κωδικοποίηση PEM." @@ -610,8 +598,11 @@ msgstr "" msgid "{admin:metadata_adfs-idp}" msgstr "ΜεταδεδομÎνα ΠαÏόχου Ταυτότητας ADFS" -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "ΠάÏοχος Ταυτότητας Shib 1.3 (ΦιλοξενοÏμενος)" +msgid "{attributes:attribute_edupersonorcid}" +msgstr "ΑναγνωÏιστικά εÏευνητή ORCID" + +msgid "{attributes:attribute_preferredlanguage}" +msgstr "Î Ïοτιμώμενη γλώσσα" msgid "{errors:descr_NOTVALIDCERT}" msgstr "ΠαÏουσιάστηκε σφάλμα λόγω μη ÎγκυÏου πιστοποιητικοÏ." diff --git a/locales/en/LC_MESSAGES/messages.po b/locales/en/LC_MESSAGES/messages.po index eac57388e8c9cb5b2177104124d7759d35b7ef46..f6edd046e080e86ff8075f84bb22e261afd2afe5 100644 --- a/locales/en/LC_MESSAGES/messages.po +++ b/locales/en/LC_MESSAGES/messages.po @@ -126,9 +126,6 @@ msgstr "" "The Identity Provider responded with an error. (The status code in the " "SAML Response was not success)" -msgid "{admin:metadata_shib13-idp}" -msgstr "Shib 1.3 IdP Metadata" - msgid "{login:help_text}" msgstr "" "Without your username and password you cannot authenticate " @@ -240,9 +237,6 @@ msgstr "Logging out..." msgid "{login:error_wrongpassword}" msgstr "Incorrect username or password." -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Shib 1.3 Service Provider (Remote)" - msgid "{login:remember_username}" msgstr "Remember my username" @@ -486,9 +480,6 @@ msgstr "Sending message" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "Error received from Identity Provider" -msgid "{admin:metadata_shib13-sp}" -msgstr "Shib 1.3 SP Metadata" - msgid "{admin:metaover_intro}" msgstr "" "To look at the details for an SAML entity, click on the SAML entity " @@ -573,9 +564,6 @@ msgstr "Page not found" msgid "{logout:logged_out_text}" msgstr "You have been logged out." -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Shib 1.3 Service Provider (Hosted)" - msgid "{admin:metadata_cert_intro}" msgstr "Download the X509 certificates as PEM-encoded files." @@ -608,8 +596,11 @@ msgstr "" msgid "{admin:metadata_adfs-idp}" msgstr "ADFS IdP Metadata" -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Shib 1.3 Identity Provider (Hosted)" +msgid "{attributes:attribute_edupersonorcid}" +msgstr "ORCID researcher identifiers" + +msgid "{attributes:attribute_preferredlanguage}" +msgstr "Preferred language" msgid "{errors:descr_NOTVALIDCERT}" msgstr "You did not present a valid certificate." @@ -651,9 +642,6 @@ msgstr "No certificate" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "Logout information lost" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Shib 1.3 Identity Provider (Remote)" - msgid "{errors:descr_CONFIG}" msgstr "SimpleSAMLphp appears to be misconfigured." diff --git a/locales/es/LC_MESSAGES/messages.po b/locales/es/LC_MESSAGES/messages.po index c6eb2c1f37cf120a6e269b3b797117896bb5b3a2..a9b3f9454f5362060d8e6dc8a8b6fcc2cf7db31d 100644 --- a/locales/es/LC_MESSAGES/messages.po +++ b/locales/es/LC_MESSAGES/messages.po @@ -120,9 +120,6 @@ msgstr "" "El IdP respondió a la solicitud con un error. (El código de estado en la " "respuesta SAML no fue exitoso)" -msgid "{admin:metadata_shib13-idp}" -msgstr "Metadatos IdP Shib 1.3" - msgid "{login:help_text}" msgstr "" "¡Muy mal! - Sin su nombre de usuario y su clave de acceso usted no " @@ -230,9 +227,6 @@ msgstr "Desconectando..." msgid "{login:error_wrongpassword}" msgstr "Nombre de usuario o contraseña erróneos" -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Proveedor de Servicio Shib 1.3 (remoto)" - msgid "{login:remember_username}" msgstr "Recordar mi nombre de usuario" @@ -481,9 +475,6 @@ msgstr "Enviando mensaje" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "Hubo un error por parte del IdP" -msgid "{admin:metadata_shib13-sp}" -msgstr "Metadatos SP Shib 1.3" - msgid "{admin:metaover_intro}" msgstr "" "Para ver los detalles de una entidad SAML, haga click en la cabecera de " @@ -562,9 +553,6 @@ msgstr "Página no encontrada" msgid "{logout:logged_out_text}" msgstr "Ha sido desconectado. Gracias por usar este servicio." -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Proveedor de Servicio Shib 1.3 (local)" - msgid "{admin:metadata_cert_intro}" msgstr "Descargar los certificados X509 en formato PEM." @@ -599,8 +587,8 @@ msgstr "" msgid "{admin:metadata_adfs-idp}" msgstr "Metadatos IdP ADFS" -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Proveedor de Identidad Shib 1.3 (local)" +msgid "{attributes:attribute_preferredlanguage}" +msgstr "Idioma preferido" msgid "{errors:descr_NOTVALIDCERT}" msgstr "No se ha podido validar el certificado recibido" @@ -638,9 +626,6 @@ msgstr "No certificado" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "Se perdió la información para cerrar la sesión" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Proveedor de Identidad Shib 1.3 (remoto)" - msgid "{errors:descr_CONFIG}" msgstr "Parece que hay un error en la configuración de SimpleSAMLphp" diff --git a/locales/et/LC_MESSAGES/messages.po b/locales/et/LC_MESSAGES/messages.po index c4eb2f2a5f9d475ea389fe5b538e0da456ac0389..22e031c0eeec39f2b2875ff6e20d47cc132d6bdb 100644 --- a/locales/et/LC_MESSAGES/messages.po +++ b/locales/et/LC_MESSAGES/messages.po @@ -115,9 +115,6 @@ msgstr "" "Identiteedipakkuja vastas tõrkega (SAML-vastuse olekukood polnud " "positiivne)." -msgid "{admin:metadata_shib13-idp}" -msgstr "Shib 1.3 IdP metaandmed" - msgid "{login:help_text}" msgstr "" "Paha lugu! Ilma kasutajatunnust ja parooli teadmata pole võimalik seda " @@ -217,9 +214,6 @@ msgstr "Välja logimine..." msgid "{login:error_wrongpassword}" msgstr "Kasutajatunnus või parool pole õige." -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Shib 1.3 teenusepakkuja (kaug)" - msgid "{errors:descr_PROCESSAUTHNREQUEST}" msgstr "" "Identiteedipakkuja sai teenusepakkujalt autentimispäringu, kui päringu " @@ -447,9 +441,6 @@ msgstr "Teate saatmine" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "Identiteedipakkujalt saadi tõrge" -msgid "{admin:metadata_shib13-sp}" -msgstr "Shib 1.3 SP metaandmed" - msgid "{admin:metaover_intro}" msgstr "SAML olemi detailide vaatamiseks klõpsa SAML olemi päisel." @@ -520,9 +511,6 @@ msgstr "Lehekülge ei leitud" msgid "{logout:logged_out_text}" msgstr "Sa oled välja logitud." -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Shib 1.3 teenusepakkuja (hostitud)" - msgid "{admin:metadata_cert_intro}" msgstr "Lae alla X509 sertifikaadid PEM kodeeringus failidena." @@ -550,8 +538,11 @@ msgstr "" "valesti seadistamise tõttu. Võta ühendust selle sisselogimisteenuse " "administraatoriga ja saada talle ülalolev veateade." -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Shib 1.3 identiteedipakkuja (hostitud)" +msgid "{attributes:attribute_mobile}" +msgstr "Mobiil" + +msgid "{attributes:attribute_preferredlanguage}" +msgstr "Eelistatud keel" msgid "{errors:descr_NOTVALIDCERT}" msgstr "Sa ei esitanud kehtivat sertifikaati." @@ -583,9 +574,6 @@ msgstr "Sertifikaat puudub" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "Väljalogimisinfo läks kaotsi" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Shib 1.3 identiteedipakkuja (kaug)" - msgid "{errors:descr_CONFIG}" msgstr "Paistab, et SimpleSAMLphp on vigaselt seadistatud." diff --git a/locales/eu/LC_MESSAGES/messages.po b/locales/eu/LC_MESSAGES/messages.po index 83dc59edea4e6188006700c02b130a6c863141b6..d37408c447e7b1b91dad498a9d06dee3d0d15c2c 100644 --- a/locales/eu/LC_MESSAGES/messages.po +++ b/locales/eu/LC_MESSAGES/messages.po @@ -117,9 +117,6 @@ msgstr "" "Idp-ak errore batekin erantzun dio eskaerari. (SAML erantzunean egoera " "kodea ez da arrakastatsua izan)" -msgid "{admin:metadata_shib13-idp}" -msgstr "Shib 1.3 IdP Metadatuak " - msgid "{login:help_text}" msgstr "" "Zeinen txarto! - Zure erabiltziale-izena eta pasahitza gabe ezin zara " @@ -220,9 +217,6 @@ msgstr "Saioa ixten..." msgid "{login:error_wrongpassword}" msgstr "Erabiltzaile-izena edo pasahitza okerra" -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Shib 1.3 Zerbitzu hornitzailea (Urrunekoa)" - msgid "{errors:descr_PROCESSAUTHNREQUEST}" msgstr "" "IdP honek zerbitzu hornitzaile baten kautotze eskaera jaso du baina " @@ -451,9 +445,6 @@ msgstr "Mezua bidaltzen" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "Errore bat jazo da IdP-aren aldetik" -msgid "{admin:metadata_shib13-sp}" -msgstr "Shib 1.3 SP Metadatuak " - msgid "{admin:metaover_intro}" msgstr "SAML entitate baten xehetasunak ikusteko, klikatu entitatearen goiburua." @@ -524,9 +515,6 @@ msgstr "Ez da orria aurkitu" msgid "{logout:logged_out_text}" msgstr "Saioa itxi da." -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Shib 1.3 Zerbitzu hornitzailea (Anfitrioia)" - msgid "{admin:metadata_cert_intro}" msgstr "X509 ziurtagiriak PEM formatuan deskargatu." @@ -554,8 +542,11 @@ msgstr "" "okerra izan da. Jar zaitez harremanetan identifikazio zerbitzu honen " "administratzailearekin eta bidal iezaiozu lehenagoko errore mezua. " -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Shib 1.3 Identitate hornitzailea (Anfitrioia)" +msgid "{attributes:attribute_mobile}" +msgstr "Mugikorra" + +msgid "{attributes:attribute_preferredlanguage}" +msgstr "Hizkuntza lehenetsia" msgid "{errors:descr_NOTVALIDCERT}" msgstr "Ez duzu baliozko ziurtagiririk aurkeztu " @@ -593,9 +584,6 @@ msgstr "Ziurtagiri gabe" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "Saioa ixteko informazioa galdu da" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "ΠάÏοχος Ταυτότητας Shib 1.3 (ΑπομακÏυσμÎνος)" - msgid "{errors:descr_CONFIG}" msgstr "Badirudi errore bat jazo dela SimpleSAMLphp-en konfigurazioan" diff --git a/locales/fr/LC_MESSAGES/messages.po b/locales/fr/LC_MESSAGES/messages.po index 7e004a7c47f7abda489fa603063cacbb653c0e6a..3e88b72bf0e6ee17a82f0e04d56425131a467774 100644 --- a/locales/fr/LC_MESSAGES/messages.po +++ b/locales/fr/LC_MESSAGES/messages.po @@ -119,9 +119,6 @@ msgstr "" "Le fournisseur d'identité a renvoyé une erreur (le code de statut de la " "réponse SAML n'indiquait pas le succès)" -msgid "{admin:metadata_shib13-idp}" -msgstr "Métadonnées d'IdP Shib 1.3" - msgid "{login:help_text}" msgstr "" "Pas de chance! Sans votre identifiant et votre mot de passe vous ne " @@ -226,9 +223,6 @@ msgstr "Déconnexion..." msgid "{login:error_wrongpassword}" msgstr "Mauvais identifiant ou mot de passe." -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Fournisseur de service Shib 1.3 distant" - msgid "{errors:descr_PROCESSAUTHNREQUEST}" msgstr "" "Ce fournisseur de service a reçu une requête d'authentification d'un " @@ -467,9 +461,6 @@ msgstr "Envoi du message" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "Erreur levée par le fournisseur d'identité" -msgid "{admin:metadata_shib13-sp}" -msgstr "Métadonnées de SP Shib 1.3" - msgid "{admin:metaover_intro}" msgstr "Pour examiner les détails d'une entité SAML, cliquez sur son en-tête." @@ -541,9 +532,6 @@ msgstr "Page introuvable" msgid "{logout:logged_out_text}" msgstr "Vous avez été déconnecté. Merci d'avoir utilisé ce service." -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Fournisseur de service Shib 1.3 local" - msgid "{admin:metadata_cert_intro}" msgstr "Télécharger les certificats X509 en tant que fichiers encodés PEM." @@ -571,8 +559,11 @@ msgstr "" "mauvaise configuration de SimpleSAMLphp. Contactez l'administrateur de " "ce service d'identification et envoyez lui le message d'erreur." -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Fournisseur d'identité Shib 1.3 local" +msgid "{attributes:attribute_mobile}" +msgstr "Mobile" + +msgid "{attributes:attribute_preferredlanguage}" +msgstr "Langue préférée" msgid "{errors:descr_NOTVALIDCERT}" msgstr "Vous n'avez pas présenté de certificat valide" @@ -610,9 +601,6 @@ msgstr "Aucun certificat présenté" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "Information de déconnexion perdue" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Fournisseur d'identité Shib 1.3 distant" - msgid "{errors:descr_CONFIG}" msgstr "Il semble que SimpleSAMLphp soit mal configuré." diff --git a/locales/he/LC_MESSAGES/messages.po b/locales/he/LC_MESSAGES/messages.po index 4983a25aa8d7f8636762501338376abf29700f12..4c65f1b09d21acb52636aa23ab737249b3c4bbcf 100644 --- a/locales/he/LC_MESSAGES/messages.po +++ b/locales/he/LC_MESSAGES/messages.po @@ -109,9 +109,6 @@ msgstr "כיוון ש×תה במצב מבדיקת ב××’×™×, ×תה רו××” × msgid "{errors:descr_RESPONSESTATUSNOSUCCESS}" msgstr "ספק הזיהות החזיר שגי××”. (קוד המצב בתגובת ×” SAML ×©×•× ×” מהצלחה)" -msgid "{admin:metadata_shib13-idp}" -msgstr "מט×-מידע של סז מסוג Shib 1.3" - msgid "{login:help_text}" msgstr "" "חבל! - בלי ×©× ×”×ž×©×ª×ž×© והסיסמה שלך ×תה ×œ× ×™×›×•×œ להזדהות בכדי לגשת לשירות. " @@ -207,9 +204,6 @@ msgstr "×ž×ª× ×ª×§ מהמערכת..." msgid "{login:error_wrongpassword}" msgstr "סיסמה ×ו ×©× ×ž×©×ª×ž×© ×œ× × ×›×•× ×™×." -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "ספק שירות מרוחק מסוג Shib 1.3" - msgid "{errors:descr_PROCESSAUTHNREQUEST}" msgstr "ספק זהות ×–×” קיבל בקשת הזדהות מספק שירות, ××•×œ× ×§×¨×ª×” שגי××” בזמן עיבוד הבקשה." @@ -427,9 +421,6 @@ msgstr "שולח הודעה" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "התקבלה שגי××” מספק הזיהות" -msgid "{admin:metadata_shib13-sp}" -msgstr "מט×-מידע של סש מסוג Shib 1.3" - msgid "{admin:metaover_intro}" msgstr "כדי להסתכל על ×”×¤×¨×˜×™× ×©×œ ישות SAML, לחץ על כותרת ישות ×”SAML " @@ -498,9 +489,6 @@ msgstr "דף ×œ× × ×ž×¦×" msgid "{logout:logged_out_text}" msgstr "×”×ª× ×ª×§×ª מן המערכת" -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "ספק שירות מקומי מסוג Shib 1.3" - msgid "{admin:metadata_cert_intro}" msgstr "הורד ×ת תעודות X509 כקבצי PEM-מקודד." @@ -526,8 +514,11 @@ msgstr "" "שגי××” זו ×”×™× ×›×›×œ ×”× ×¨××” בשל ×”×ª× ×”×’×•×ª בלתי צפויה ×ו שגויה של SimpleSAMLphp. " "צור קשר ×¢× ×ž× ×”×œ המערכת של שירות ההתחברות ×”×–×”, ושלח לו ×ת השגי××” למעלה." -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "ספק זהות מקומי מסוג Shib 1.3" +msgid "{attributes:attribute_mobile}" +msgstr "× ×™×™×“" + +msgid "{attributes:attribute_preferredlanguage}" +msgstr "שפה מועדפת" msgid "{errors:descr_NOTVALIDCERT}" msgstr "×œ× ×”×¦×’×ª תעודה חוקית " @@ -559,9 +550,6 @@ msgstr "×ין תעודה" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "מידע ×”×”×ª× ×ª×§×•×ª ×בד" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "ספק זהות מרוחק מסוג Shib 1.3" - msgid "{errors:descr_CONFIG}" msgstr "× ×¨××” ש SimpleSAMLphp ×œ× ×ž×•×’×“×¨ × ×›×•×Ÿ" diff --git a/locales/hr/LC_MESSAGES/messages.po b/locales/hr/LC_MESSAGES/messages.po index 0903bbbf654e568c96fadd94da0cca5519f0c37b..29307a5e1e5d2d00306034d74d83e99c967fdc86 100644 --- a/locales/hr/LC_MESSAGES/messages.po +++ b/locales/hr/LC_MESSAGES/messages.po @@ -122,9 +122,6 @@ msgstr "" "pojavi greÅ¡ke. (Å ifra statusa dostavljena u SAML odgovoru ne odgovara " "Å¡ifri uspjeÅ¡no obraÄ‘enog zahtjeva)" -msgid "{admin:metadata_shib13-idp}" -msgstr "Shib 1.3 metapodaci o autentifikacijskom servisu" - msgid "{login:help_text}" msgstr "" "Å teta! - Bez ispravne korisniÄke oznake i zaporke ne možete pristupiti " @@ -224,9 +221,6 @@ msgstr "Odjava u tijeku..." msgid "{login:error_wrongpassword}" msgstr "Neispravna korisniÄka oznaka ili zaporka." -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Shib 1.3 davatelj usluge (udaljeni)" - msgid "{errors:descr_PROCESSAUTHNREQUEST}" msgstr "" "Autentifikacijski servis je dobio zahtjev od davatelja usluge, ali se " @@ -464,9 +458,6 @@ msgstr "Å aljem poruku" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "Autentifikacijski servis je prijavio greÅ¡ku" -msgid "{admin:metadata_shib13-sp}" -msgstr "Shib 1.3 metapodaci o davatelju usluge" - msgid "{admin:metaover_intro}" msgstr "Da biste vidjeli detalje o SAML entitetu, kliknite na njegovo zaglavlje." @@ -537,9 +528,6 @@ msgstr "Stranica nije pronaÄ‘ena" msgid "{logout:logged_out_text}" msgstr "UspjeÅ¡no ste se odjavili." -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Shib 1.3 davatelj usluge (lokalni)" - msgid "{admin:metadata_cert_intro}" msgstr "Preuzmite X509 certifikate u PEM formatu." @@ -567,8 +555,11 @@ msgstr "" "neispravne konfiguracije programskog alata SimpleSAMLphp. Kontaktirajte " "administratore ovog servisa i poÅ¡aljite im gore navedenu poruku o greÅ¡ki." -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Shib 1.3 autentifikacijski servis (lokalni)" +msgid "{attributes:attribute_mobile}" +msgstr "Broj mobilnog telefona" + +msgid "{attributes:attribute_preferredlanguage}" +msgstr "Primarni jezik" msgid "{errors:descr_NOTVALIDCERT}" msgstr "Niste predoÄili valjani certifikat." @@ -604,9 +595,6 @@ msgstr "Nema digitalnog certifikata" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "Informacija o odjavljivanju je izgubljena" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Shib 1.3 autentifikacijski servis (udaljeni)" - msgid "{errors:descr_CONFIG}" msgstr "ÄŒini se da je SimpleSAMLphp pogreÅ¡no iskonfiguriran." diff --git a/locales/hu/LC_MESSAGES/messages.po b/locales/hu/LC_MESSAGES/messages.po index 12c1bee662316443a53fbba620c0e6e7e285cae9..3f6531b632eb02d8c9c8668e72fab026d141e8c8 100644 --- a/locales/hu/LC_MESSAGES/messages.po +++ b/locales/hu/LC_MESSAGES/messages.po @@ -114,9 +114,6 @@ msgstr "Mivel hibakeresÅ‘ módban van, láthatja az elküldendÅ‘ üzenet tartalm msgid "{errors:descr_RESPONSESTATUSNOSUCCESS}" msgstr "Hiba történt az azonosÃtó szervezet (IdP) oldalán. Ismeretlen állapotkód." -msgid "{admin:metadata_shib13-idp}" -msgstr "Shib 1.3 IdP Metaadatok" - msgid "{login:help_text}" msgstr "" "Ajaj! - Felhasználói neve és jelszava nélkül nem tudja azonosÃtani magát," @@ -216,9 +213,6 @@ msgstr "Kijelentkezés..." msgid "{login:error_wrongpassword}" msgstr "Hibás felhasználói név vagy jelszó!" -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Shib 1.3 alkalmazásszolgáltató (távoli)" - msgid "{login:remember_username}" msgstr "Emlékezzen a felhasználónevemre" @@ -449,9 +443,6 @@ msgstr "Üzenet küldése" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "Hiba történt az azonosÃtó szervezet (IdP) oldalán" -msgid "{admin:metadata_shib13-sp}" -msgstr "Shib 1.3 SP Metaadatok" - msgid "{admin:metaover_intro}" msgstr "A SAML entitások részleteiért kattintson a SAML entitás fejlécére" @@ -525,9 +516,6 @@ msgstr "Oldal nem található" msgid "{logout:logged_out_text}" msgstr "Sikeresen kijelentkezett. Köszönjük, hogy használta a szolgáltatást." -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Shib 1.3 alkalmazásszolgálató (helyi)" - msgid "{admin:metadata_cert_intro}" msgstr "PEM formátumú X509 tanúsÃtvány letöltése." @@ -554,8 +542,11 @@ msgstr "" "félrekonfigurálásával kapcsolatos. Kérjük, keresse meg a bejelentkezÅ‘ " "szolgáltatás adminisztrátorát, és küldje el neki a fenti hibaüzenetet!" -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Shib 1.3 személyazonosság-szolgáltató (helyi)" +msgid "{attributes:attribute_mobile}" +msgstr "Mobil" + +msgid "{attributes:attribute_preferredlanguage}" +msgstr "ElsÅ‘dleges nyelv" msgid "{errors:descr_NOTVALIDCERT}" msgstr "Nem található hiteles tanúsÃtvány" @@ -589,9 +580,6 @@ msgstr "Hiányzó tanúsÃtvány." msgid "{errors:title_LOGOUTINFOLOST}" msgstr "Elveszett kijelentkezési információk" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Shib 1.3 személyazonosság-szolgáltató (távoli)" - msgid "{errors:descr_CONFIG}" msgstr "ValószÃnűleg helytelenül lett konfigurálva a SimpleSAMLphp" diff --git a/locales/id/LC_MESSAGES/messages.po b/locales/id/LC_MESSAGES/messages.po index 35c3a2a36f59976253c16caa27871da4da8b649d..493e2f20bf3fc5fb4139f2365ae01de5a14e6bd3 100644 --- a/locales/id/LC_MESSAGES/messages.po +++ b/locales/id/LC_MESSAGES/messages.po @@ -117,9 +117,6 @@ msgstr "" "Identity Provider merespon dengan error. (Kode status di Response SAML " "adalah tidak berhasil)" -msgid "{admin:metadata_shib13-idp}" -msgstr "Metadata Shib 1.3 IdP" - msgid "{login:help_text}" msgstr "" "Sayang sekali! - Tanpa username dan password Anda tidak dapat melakukan " @@ -222,9 +219,6 @@ msgstr "Log out..." msgid "{login:error_wrongpassword}" msgstr "Username atau password salah" -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Service Provider Shib 1.3 (Remote)" - msgid "{errors:descr_PROCESSAUTHNREQUEST}" msgstr "" "Identity Provider ini menerima Request Autentifikasi dari sebuah Service " @@ -454,9 +448,6 @@ msgstr "Mengirimpan pesan" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "Error diterima dari Identity Provider" -msgid "{admin:metadata_shib13-sp}" -msgstr "Metadata Shib 1.3 SP" - msgid "{admin:metaover_intro}" msgstr "Untuk melihat detail entiti SAML, klik pada bagian header entiti SAML" @@ -527,9 +518,6 @@ msgstr "Halaman tidak ditemukan" msgid "{logout:logged_out_text}" msgstr "Anda telah log out." -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Service Provider Shib 1.3 (Hosted)" - msgid "{admin:metadata_cert_intro}" msgstr "Download sertifikat X509 sebagai file dikodekan-PEM." @@ -557,8 +545,11 @@ msgstr "" " yang salah di SimpleSAMLphp. Hubungi administrator dari layanan login " "ini, dan kirimkan kepada mereka pesan error diatas." -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Identity Provider Shib 1.3 (Hosted)" +msgid "{attributes:attribute_mobile}" +msgstr "Handphone" + +msgid "{attributes:attribute_preferredlanguage}" +msgstr "Pilihan Bahasa" msgid "{errors:descr_NOTVALIDCERT}" msgstr "Anda tidak menyediakan sertifikat yang valid." @@ -596,9 +587,6 @@ msgstr "Tidak ada sertifikat" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "Informasi logout hilang" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Identity Provider Shib 1.3 (Remote)" - msgid "{errors:descr_CONFIG}" msgstr "SimpleSAMLphp sepertinya telah salah dikonfigurasi" diff --git a/locales/it/LC_MESSAGES/messages.po b/locales/it/LC_MESSAGES/messages.po index 3a52011922b24665c2acee35ed4a482dd1b83332..4accd61b442359376a38aa69c065ad008c89d8c1 100644 --- a/locales/it/LC_MESSAGES/messages.po +++ b/locales/it/LC_MESSAGES/messages.po @@ -120,9 +120,6 @@ msgstr "" "L'Identity Provider ha risposto con un errore. (Il codice di stato nel " "messaggio SAML Response non indicava un successo)" -msgid "{admin:metadata_shib13-idp}" -msgstr "Metadati Shib 1.3 IdP" - msgid "{login:help_text}" msgstr "" "Senza il nome utente e la password, non è possibile effettuare " @@ -223,9 +220,6 @@ msgstr "Disconnessione..." msgid "{login:error_wrongpassword}" msgstr "Nome utente o password errati." -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Shib 1.3 Service Provider (Remoto)" - msgid "{errors:descr_PROCESSAUTHNREQUEST}" msgstr "" "Questo Identity Provider ha ricevuto una richiesta di autenticazione da " @@ -467,9 +461,6 @@ msgstr "Invio del messaggio" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "E' stato ricevuto un errore dall'Identity Provider" -msgid "{admin:metadata_shib13-sp}" -msgstr "Metadati Shib 1.3 SP" - msgid "{admin:metaover_intro}" msgstr "" "Per visualizzare i dettagli di una entità SAML, cliccare sull'header SAML" @@ -542,9 +533,6 @@ msgstr "Pagina non trovata" msgid "{logout:logged_out_text}" msgstr "Sei stato disconnesso" -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Shib 1.3 Service Provider (Hosted)" - msgid "{admin:metadata_cert_intro}" msgstr "Scarica i certificati X509 come file PEM-encoded" @@ -572,8 +560,11 @@ msgstr "" " di questo servizio di login con una copia del messaggio di errore " "riportato qui sopra." -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Shib 1.3 Identity Provider (Hosted)" +msgid "{attributes:attribute_mobile}" +msgstr "Cellulare" + +msgid "{attributes:attribute_preferredlanguage}" +msgstr "Lingua preferita" msgid "{errors:descr_NOTVALIDCERT}" msgstr "Non hai fornito un certificato valido." @@ -609,9 +600,6 @@ msgstr "Nessun certificato" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "Informazioni di disconnessione smarrite." -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Shib 1.3 Identity Provider (Remoto)" - msgid "{errors:descr_CONFIG}" msgstr "Sembra che SimpleSAMLphp non sia configurato correttamente." diff --git a/locales/ja/LC_MESSAGES/messages.po b/locales/ja/LC_MESSAGES/messages.po index cc6d3fd36c0217a11a4f50f89bfa53f3de97db0c..782a677f5b73d7720262c7668c9735e23acae662 100644 --- a/locales/ja/LC_MESSAGES/messages.po +++ b/locales/ja/LC_MESSAGES/messages.po @@ -101,9 +101,6 @@ msgstr "ç¾åœ¨ã¯ãƒ‡ãƒãƒƒã‚°ãƒ¢ãƒ¼ãƒ‰ã§ã™ã€‚ã‚ãªãŸã¯é€ä¿¡ã™ã‚‹ãƒ¡ãƒƒã‚» msgid "{errors:descr_RESPONSESTATUSNOSUCCESS}" msgstr "アイデンティティプãƒãƒã‚¤ãƒ€ãŒã‚¨ãƒ©ãƒ¼ã‚’å—ã‘ã¨ã‚Šã¾ã—ãŸã€‚(SAMLレスãƒãƒ³ã‚¹ã«å¤±æ•—ã—ãŸã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚³ãƒ¼ãƒ‰)" -msgid "{admin:metadata_shib13-idp}" -msgstr "Shib 1.3 IdPメタデータ" - msgid "{login:help_text}" msgstr "" "ユーザーåã¨ãƒ‘スワードãŒãªã„ã¨ã€ã‚µãƒ¼ãƒ“スã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãŸã‚ã®èªè¨¼ãŒã§ãã¾ã›ã‚“。" @@ -193,9 +190,6 @@ msgstr "ãƒã‚°ã‚¢ã‚¦ãƒˆä¸â€¦" msgid "{login:error_wrongpassword}" msgstr "ユーザーåã‹ãƒ‘スワードãŒé–“é•ã£ã¦ã„ã¾ã™ã€‚" -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Shib 1.3サービスプãƒãƒã‚¤ãƒ€(リモート)" - msgid "{errors:descr_PROCESSAUTHNREQUEST}" msgstr "ã“ã®ã‚¢ã‚¤ãƒ‡ãƒ³ãƒ†ã‚£ãƒ†ã‚£ãƒ—ãƒãƒã‚¤ãƒ€ã¯ã‚µãƒ¼ãƒ“スプãƒãƒã‚¤ãƒ€ã‹ã‚‰ã®èªè¨¼ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’å—ã‘付ã‘ã¾ã—ãŸãŒã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆã®å‡¦ç†ä¸ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚" @@ -405,9 +399,6 @@ msgstr "メッセージをé€ä¿¡ä¸" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "アイデンティティプãƒãƒã‚¤ãƒ€ã‹ã‚‰ã‚¨ãƒ©ãƒ¼ã‚’å—ä¿¡ã—ã¾ã—ãŸ" -msgid "{admin:metadata_shib13-sp}" -msgstr "Shib 1.3 SPメタデータ" - msgid "{admin:metaover_intro}" msgstr "SAMLエンティティã®è©³ç´°ã‚’確èªã™ã‚‹ãŸã‚ã«ã¯ã€SAMLエンティティヘッダをクリックã—ã¦ä¸‹ã•ã„。" @@ -474,9 +465,6 @@ msgstr "ページãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" msgid "{logout:logged_out_text}" msgstr "ãƒã‚°ã‚¢ã‚¦ãƒˆã—ã¾ã—ãŸã€‚" -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Shib 1.3サービスプãƒãƒã‚¤ãƒ€(ホスト)" - msgid "{admin:debug_sending_message_msg_title}" msgstr "メッセージ" @@ -495,8 +483,8 @@ msgstr "与ãˆã‚‰ã‚ŒãŸãƒšãƒ¼ã‚¸ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚URLã¯: %URL msgid "{errors:howto_text}" msgstr "ã“ã®ã‚¨ãƒ©ãƒ¼ã¯æã‚‰ã未知ã®å•題ã€ã¾ãŸã¯SimpleSAMLphpã®è¨å®šãƒŸã‚¹ã§ã™ã€‚ãƒã‚°ã‚¤ãƒ³ã‚µãƒ¼ãƒ“スã®ç®¡ç†è€…ã«ä¸Šè¨˜ã®ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’連絡ã—ã¦ä¸‹ã•ã„。" -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Shib 1.3アイデンティティプãƒãƒã‚¤ãƒ€(ホスト)" +msgid "{attributes:attribute_preferredlanguage}" +msgstr "言語" msgid "{errors:descr_NOTVALIDCERT}" msgstr "æ£å½“ãªè¨¼æ˜Žæ›¸ãŒæç¤ºã•れã¾ã›ã‚“ã§ã—ãŸã€‚" @@ -528,9 +516,6 @@ msgstr "証明書ãŒã‚りã¾ã›ã‚“" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "ãƒã‚°ã‚¢ã‚¦ãƒˆæƒ…å ±ã‚’å¤±ã„ã¾ã—ãŸ" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Shib 1.3アイデンティティプãƒãƒã‚¤ãƒ€(リモート)" - msgid "{errors:descr_CONFIG}" msgstr "SimpleSAMLphpã®è¨å®šã«ãƒŸã‚¹ãŒã‚るよã†ã§ã™ã€‚" diff --git a/locales/lt/LC_MESSAGES/messages.po b/locales/lt/LC_MESSAGES/messages.po index 05ce6bef742061d966d16d2150d961f9fae16d2c..ba00bcc3b7617bd96da398b719ec73518f4c9e41 100644 --- a/locales/lt/LC_MESSAGES/messages.po +++ b/locales/lt/LC_MESSAGES/messages.po @@ -116,9 +116,6 @@ msgstr "" "Tapatybių teikÄ—jas atsakÄ— klaidos praneÅ¡imu. (Statuso kodas SAML atsakyme" " buvo nesÄ—kmingas)" -msgid "{admin:metadata_shib13-idp}" -msgstr "Shib 1.3 IdP Metaduomenys" - msgid "{login:help_text}" msgstr "" "Blogai - be prisijungimo vardo ir slaptažodžio negalÄ—site autentikuotis " @@ -216,9 +213,6 @@ msgstr "Atjungiama..." msgid "{login:error_wrongpassword}" msgstr "Neteisingas prisijungimo vardas arba slaptažodis." -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Shib 1.3 Paslaugos teikÄ—jas (nutolÄ™s)" - msgid "{errors:descr_PROCESSAUTHNREQUEST}" msgstr "" "Å is tapatybių tiekÄ—jas gavo autentikacijos praÅ¡ymo užklausÄ… iÅ¡ paslaugos " @@ -446,9 +440,6 @@ msgstr "SiunÄiamas praneÅ¡imas" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "Gautas klaidos praneÅ¡imas iÅ¡ tapatybių teikÄ—jo" -msgid "{admin:metadata_shib13-sp}" -msgstr "Shib 1.3 SP Metaduomenys" - msgid "{admin:metaover_intro}" msgstr "" "NorÄ—dami peržiÅ«rÄ—ti detalesnÄ™ informacijÄ… apie SAML, paspauskite ant SAML" @@ -521,9 +512,6 @@ msgstr "Puslapis nerastas" msgid "{logout:logged_out_text}" msgstr "JÅ«s buvote atjungtas nuo sistemos." -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Shib 1.3 Paslaugos teikÄ—jas (vietinis)" - msgid "{admin:metadata_cert_intro}" msgstr "Parsisiųsti X509 sertifikatus kaip PEM koduotÄ—s failus." @@ -550,8 +538,11 @@ msgstr "" "sukonfigÅ«ravimo. Susisiekite su Å¡ios sistemos administratoriumi ir " "nusiųskite žemiau rodomÄ… klaidos praneÅ¡imÄ…." -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Shib 1.3 Tapatybių teikÄ—jas (vietinis)" +msgid "{attributes:attribute_mobile}" +msgstr "Mobiliojo numeris" + +msgid "{attributes:attribute_preferredlanguage}" +msgstr "Kalba" msgid "{errors:descr_NOTVALIDCERT}" msgstr "JÅ«s nepateikÄ—te teisingo sertifikato." @@ -589,9 +580,6 @@ msgstr "NÄ—ra sertifikato" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "Atsijungimo informacija prarasta" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Shib 1.3 Tapatybių teikÄ—jas (nutolÄ™s)" - msgid "{errors:descr_CONFIG}" msgstr "SimpleSAMLphp tikriausiai klaidingai sukonfigÅ«ruotas." diff --git a/locales/lv/LC_MESSAGES/messages.po b/locales/lv/LC_MESSAGES/messages.po index 1ef6079aed1c8eb52a59480bb4e897b1f75515cd..ba2133a36aeedb8468984a9977b2cde4d66855c8 100644 --- a/locales/lv/LC_MESSAGES/messages.po +++ b/locales/lv/LC_MESSAGES/messages.po @@ -113,9 +113,6 @@ msgstr "" "IdentitÄtes piegÄdÄtÄjs atbildÄ“jis ar kļūdu. Statusa kods SAML atbildÄ“ " "atšķiras no veiksmÄ«ga" -msgid "{admin:metadata_shib13-idp}" -msgstr "Shib 1.3 IdP metadati" - msgid "{login:help_text}" msgstr "" "Bez lietotÄja vÄrda un paroles JÅ«s nevarat autentificÄ“ties un nevarat " @@ -212,9 +209,6 @@ msgstr "AtslÄ“gÅ¡anÄs..." msgid "{login:error_wrongpassword}" msgstr "Nekorekts lietotÄja vÄrds vai parole." -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Shib 1.3 servisa piegÄdÄtÄjs (attÄlinÄts)" - msgid "{errors:descr_PROCESSAUTHNREQUEST}" msgstr "" "IdentitÄtes piegÄdÄtÄjs ir saņēmis autentifikÄcijas pieprasÄ«jumu no " @@ -442,9 +436,6 @@ msgstr "Ziņas sÅ«tīšana" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "Kļūda no identitÄtes piegÄdÄtÄja" -msgid "{admin:metadata_shib13-sp}" -msgstr "Shib 1.3 SP metadati" - msgid "{admin:metaover_intro}" msgstr "Lai aplÅ«kotu SAML vienuma detaļas, klikšķiniet uz vienuma galvenes." @@ -515,9 +506,6 @@ msgstr "Lapa nav atrasta" msgid "{logout:logged_out_text}" msgstr "JÅ«s esat izgÄjis no sistÄ“mas." -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Shib 1.3 servisa piegÄdÄtÄjs (hostÄ“ts)" - msgid "{admin:metadata_cert_intro}" msgstr "LejupielÄdÄ“t X509 sertifikÄtus kÄ PEM-kodÄ“tus failus." @@ -543,8 +531,11 @@ msgstr "" "IespÄ“jams, kļūda radusies no neparedzÄ“tas darbÄ«bas vai nepareizas " "SimpleSAMLphp konfigurÄcijas. NosÅ«tiet administratoram kļūdas ziņojumu." -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Shib 1.3 identitÄtes piegÄdÄtÄjs (hostÄ“ts)" +msgid "{attributes:attribute_mobile}" +msgstr "Mobilais telefons" + +msgid "{attributes:attribute_preferredlanguage}" +msgstr "VÄ“lamÄ valoda" msgid "{errors:descr_NOTVALIDCERT}" msgstr "JÅ«s neesat norÄdÄ«jis derÄ«gu sertifikÄtu." @@ -580,9 +571,6 @@ msgstr "Nav sertifikÄta" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "AtslÄ“gÅ¡anÄs informÄcija zaudÄ“ta" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Shib 1.3 identitÄtes piegÄdÄtÄjs (attÄlinÄts)" - msgid "{errors:descr_CONFIG}" msgstr "SimpleSAMLphp nav pareizi nokonfigurÄ“ts." diff --git a/locales/nb/LC_MESSAGES/messages.po b/locales/nb/LC_MESSAGES/messages.po index 26479a688d09600df1d7f57decc32eac552426ef..09858e93926532fe184b4c0fc7e81a4cb43f02b3 100644 --- a/locales/nb/LC_MESSAGES/messages.po +++ b/locales/nb/LC_MESSAGES/messages.po @@ -113,9 +113,6 @@ msgstr "" "Innloggingstjenesten svarte med en feilmelding. (Statuskoden i SAML-" "svaret var noe annet enn OK)" -msgid "{admin:metadata_shib13-idp}" -msgstr "Shib 1.3 IdP metadata" - msgid "{login:help_text}" msgstr "" "Synd! - Uten riktig brukernavn og passord kan du ikke autentisere deg. " @@ -216,9 +213,6 @@ msgstr "Logger ut..." msgid "{login:error_wrongpassword}" msgstr "Feil brukernavn eller passord." -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Shib 1.3 Tjenesteleverandør (ekstern)" - msgid "{errors:descr_PROCESSAUTHNREQUEST}" msgstr "" "Innloggingstjenesten mottok en autentiserings-forespørsel fra en " @@ -448,9 +442,6 @@ msgstr "Sender melding" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "Feilmelding mottatt fra innloggingstjenesten" -msgid "{admin:metadata_shib13-sp}" -msgstr "Shib 1.3 SP metadata" - msgid "{admin:metaover_intro}" msgstr "" "For Ã¥ se pÃ¥ detaljene i en SAML-entitet, klikk pÃ¥ SAML-entitet " @@ -523,9 +514,6 @@ msgstr "Kan ikke finne siden" msgid "{logout:logged_out_text}" msgstr "Du er nÃ¥ utlogget." -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Shib 1.3 Tjenesteleverandør (intern)" - msgid "{admin:metadata_cert_intro}" msgstr "Last ned X509-sertifikatene som PEM-filer." @@ -553,8 +541,11 @@ msgstr "" "eller den er en følge av en uforutsett hendelse. Kontakt administratoren " "av denne tjenesten og rapporter sÃ¥ mye som mulig angÃ¥ende feilen." -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Shib 1.3 Identitetsleverandør (ekstern)" +msgid "{attributes:attribute_mobile}" +msgstr "Mobiltelefon" + +msgid "{attributes:attribute_preferredlanguage}" +msgstr "Foretrukket sprÃ¥k" msgid "{errors:descr_NOTVALIDCERT}" msgstr "Du presenterte ikke et gyldig sertifikat" @@ -590,9 +581,6 @@ msgstr "Ikke noe sertifikat mottatt" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "Informasjon om utlogging er tapt" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Shib 1.3 Identitetsleverandør (ekstern) " - msgid "{errors:descr_CONFIG}" msgstr "Det virker som det er en feil i oppsettet av SimpleSAMLphp." diff --git a/locales/nl/LC_MESSAGES/messages.po b/locales/nl/LC_MESSAGES/messages.po index 9eed3f830f582fe6d20132ea4f51f49493cc4023..692a0d815f6b89fe6f5379b2df58f02a74360b78 100644 --- a/locales/nl/LC_MESSAGES/messages.po +++ b/locales/nl/LC_MESSAGES/messages.po @@ -120,9 +120,6 @@ msgstr "" "De Identity Provider antwoordde met een fout. (De statuscode in de SAML " "Response was niet success)" -msgid "{admin:metadata_shib13-idp}" -msgstr "Shib 1.3 IdP Metadata" - msgid "{login:help_text}" msgstr "" "Zonder je gebruikersnaam en wachtwoord kun je je niet authenticeren en " @@ -229,9 +226,6 @@ msgstr "Uitloggen..." msgid "{login:error_wrongpassword}" msgstr "Gebruikersnaam of wachtwoord niet bekend." -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Shib 1.3 Service Provider (Remote)" - msgid "{login:remember_username}" msgstr "Onthoud gebruikersnaam" @@ -478,9 +472,6 @@ msgstr "Bericht" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "Foutmelding ontvangen van Identity Provider" -msgid "{admin:metadata_shib13-sp}" -msgstr "Shib 1.3 SP Metadata" - msgid "{admin:metaover_intro}" msgstr "Klik op een SAML-entiteit om de details voor die entiteit te bekijken." @@ -557,9 +548,6 @@ msgstr "Pagina niet gevonden" msgid "{logout:logged_out_text}" msgstr "U bent uitgelogd. Dank u voor het gebruiken van deze dienst." -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Shib 1.3 Service Provider (Hosted)" - msgid "{admin:metadata_cert_intro}" msgstr "Download de X509-certificaten in PEM-formaat." @@ -593,8 +581,8 @@ msgstr "" msgid "{admin:metadata_adfs-idp}" msgstr "ADFS IdP Metadata" -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Shib 1.3 Identity Provider (Hosted)" +msgid "{attributes:attribute_preferredlanguage}" +msgstr "Voorkeurstaal" msgid "{errors:descr_NOTVALIDCERT}" msgstr "Je hebt geen geldig certificaat meegegeven" @@ -632,9 +620,6 @@ msgstr "Geen certificaat" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "Logout informatie is verloren gegaan" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Shib 1.3 Identity Provider (Remote)" - msgid "{errors:descr_CONFIG}" msgstr "SimpleSAMLphp is niet goed geconfigureerd." diff --git a/locales/nn/LC_MESSAGES/messages.po b/locales/nn/LC_MESSAGES/messages.po index c22f8b668bb4cc38de598d8b0e8cc9f6a20d30b2..9aac32e52c02ea2321aa972d5949b0cadb712af8 100644 --- a/locales/nn/LC_MESSAGES/messages.po +++ b/locales/nn/LC_MESSAGES/messages.po @@ -116,9 +116,6 @@ msgstr "" "Vertsorganisasjonen din (IdP) gav feilmelding (SAML-svaret hadde " "statuskode som varsla om feil)" -msgid "{admin:metadata_shib13-idp}" -msgstr "Shib 1.3 IdP Metadata" - msgid "{login:help_text}" msgstr "" "Synd! - Utan riktig brukarnamn og passord kan du ikkje autentisera deg. " @@ -217,9 +214,6 @@ msgstr "Loggar ut..." msgid "{login:error_wrongpassword}" msgstr "Feil brukarnamn eller passord." -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Shib 1.3 Service Provider (Remote)" - msgid "{errors:descr_PROCESSAUTHNREQUEST}" msgstr "" "Denne identitetsleverandøren (IdP) mottok ei autentiseringsmelding frÃ¥ " @@ -455,9 +449,6 @@ msgstr "Sender melding" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "Feil frÃ¥ vertsorganisasjonen (IdP)" -msgid "{admin:metadata_shib13-sp}" -msgstr "Shib 1.3 SP Metadata" - msgid "{admin:metaover_intro}" msgstr "For Ã¥ sjÃ¥ pÃ¥ detaljane for ein SAML entitet, klikk pÃ¥ SAML entitet" @@ -528,9 +519,6 @@ msgstr "Fann ikkje sida" msgid "{logout:logged_out_text}" msgstr "Du har blitt logga ut. Takk for at du brukte denne tenesta." -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Shib 1.3 Service Provider (Hosted)" - msgid "{admin:metadata_cert_intro}" msgstr "Last ned X509-sertifikat som PEM-koda filer" @@ -557,8 +545,11 @@ msgstr "" "eller ein ukjent feil. Kontakt administrator av tenesta og rapporter " "detaljar om feilen." -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Shib 1.3 Identity Provider (Hosted)" +msgid "{attributes:attribute_mobile}" +msgstr "Mobiltelefon" + +msgid "{attributes:attribute_preferredlanguage}" +msgstr "Førsteval for sprÃ¥k eller mÃ¥lform" msgid "{errors:descr_NOTVALIDCERT}" msgstr "Du har ikkje brukt eit gyldig sertifikat i kommunikasjonen din" @@ -594,9 +585,6 @@ msgstr "Manglar sertifikat" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "Mista utloggingsinformasjon" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Shib 1.3 Identity Provider (Remote)" - msgid "{errors:descr_CONFIG}" msgstr "SimpleSAMLphp ser ut til Ã¥ vera feilkonfigurert" diff --git a/locales/pl/LC_MESSAGES/messages.po b/locales/pl/LC_MESSAGES/messages.po index 2a4dbb8678050cd984b00d0b5fb9fbec1650f427..2c766cbbe274080e9c39a12352833b05cd64831c 100644 --- a/locales/pl/LC_MESSAGES/messages.po +++ b/locales/pl/LC_MESSAGES/messages.po @@ -112,9 +112,6 @@ msgstr "" "Odpowiedź dostawcy tożsamoÅ›ci oznacza błąd (kod stanu w odpowiedzi SAML " "nie oznacza sukcesu)" -msgid "{admin:metadata_shib13-idp}" -msgstr "Shib 1.3 IdP - Metadane" - msgid "{login:help_text}" msgstr "" "Niedobrze! - Bez nazwy użytkownika i/lub hasÅ‚a nie możesz zostać " @@ -212,9 +209,6 @@ msgstr "Wylogowywanie..." msgid "{login:error_wrongpassword}" msgstr "NieprawidÅ‚owa nazwa użytkownika lub hasÅ‚o." -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Shib 1.3 Dostawca Serwisu (Zdalny)" - msgid "{errors:descr_PROCESSAUTHNREQUEST}" msgstr "" "Dostawca tożsamoÅ›ci otrzymaÅ‚ od dostawcy usÅ‚ugi zlecenie " @@ -441,9 +435,6 @@ msgstr "WysyÅ‚anie wiadomoÅ›ci" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "Dostawca tożsamoÅ›ci przesÅ‚aÅ‚ błąd" -msgid "{admin:metadata_shib13-sp}" -msgstr "Shib 1.3 SP - Metadane" - msgid "{admin:metaover_intro}" msgstr "Kliknij na nagłówek koÅ„cówki aby wyÅ›wietlić szczegóły SAML." @@ -509,9 +500,6 @@ msgstr "Nie znaleziono strony" msgid "{logout:logged_out_text}" msgstr "ZostaÅ‚eÅ› wylogowany. DziÄ™kujÄ™ za skorzystanie z serwisu." -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Shib 1.3 Dostawca Serwisu (Lokalny)" - msgid "{admin:debug_sending_message_msg_title}" msgstr "Wiadomość" @@ -566,9 +554,6 @@ msgstr "Brak certyfikatu" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "Utracono informacjÄ™ o wylogowaniu" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Shib 1.3 Dostawca TożsamoÅ›ci (Zdalny)" - msgid "{errors:descr_CONFIG}" msgstr "wydaje siÄ™, że SimpleSAMLphp jest błędnie skonfigurowany." diff --git a/locales/pt-br/LC_MESSAGES/messages.po b/locales/pt-br/LC_MESSAGES/messages.po index 351ea0525111faa634bc4560f2237681293c0426..2a26fedb07812e1fd0bc91612288034980aa76d5 100644 --- a/locales/pt-br/LC_MESSAGES/messages.po +++ b/locales/pt-br/LC_MESSAGES/messages.po @@ -120,9 +120,6 @@ msgstr "" "O Provedor de Identidade respondeu com um erro. (O código de resposta do " "SAML não teve sucesso." -msgid "{admin:metadata_shib13-idp}" -msgstr "Shib 1.3 IdP Metadata" - msgid "{login:help_text}" msgstr "" "Muito mal! - Sem o seu nome de usuário e a senha você não pode " @@ -225,9 +222,6 @@ msgstr "Saindo do serviço..." msgid "{login:error_wrongpassword}" msgstr "Nome de usuário ou senha incorretos." -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Shib 1.3 Service Provider (Remoto)" - msgid "{login:remember_username}" msgstr "Lembrar meu nome de usuário" @@ -464,9 +458,6 @@ msgstr "Enviando a mensagem" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "Erro recebido do Provedor de Identidade" -msgid "{admin:metadata_shib13-sp}" -msgstr "Shib 1.3 SP Metadata" - msgid "{admin:metaover_intro}" msgstr "Para ver os detalhes da entidade SAML, clique " @@ -540,9 +531,6 @@ msgstr "Página não encontrada" msgid "{logout:logged_out_text}" msgstr "Você foi desconectado." -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Shib 1.3 Service Provider (Local)" - msgid "{admin:debug_sending_message_msg_title}" msgstr "Mensagem" @@ -566,8 +554,11 @@ msgstr "" "SimpleSAMLphp. Contate o administrador deste serviço de login e envie-lhe" " a mensagem de erro acima." -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Shib 1.3 Identity Provider (Local)" +msgid "{attributes:attribute_mobile}" +msgstr "Celular" + +msgid "{attributes:attribute_preferredlanguage}" +msgstr "Linguagem preferida" msgid "{errors:descr_NOTVALIDCERT}" msgstr "Você não possui um certificado válido" @@ -605,9 +596,6 @@ msgstr "Sem Certificado" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "Informações de desconexão perdidas" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Shib 1.3 Identity Provider (Remoto)" - msgid "{errors:descr_CONFIG}" msgstr "SimpleSAMLphp parece estar mal configurado." diff --git a/locales/pt/LC_MESSAGES/messages.po b/locales/pt/LC_MESSAGES/messages.po index 48cdd4f953f00bad8b1b74756d776c65f6cd4b81..2add121d3dc17dcd1326c554eaee27df1197acd2 100644 --- a/locales/pt/LC_MESSAGES/messages.po +++ b/locales/pt/LC_MESSAGES/messages.po @@ -104,9 +104,6 @@ msgstr "" "O Fornecedor de Identidade respondeu com um erro. (A resposta SAML contém" " um código de insucesso)" -msgid "{admin:metadata_shib13-idp}" -msgstr "Metadados Shib 1.3 IdP" - msgid "{login:help_text}" msgstr "" "Sem o seu nome de utilizador e senha não se pode autenticar para acesso " @@ -201,9 +198,6 @@ msgstr "A sair..." msgid "{login:error_wrongpassword}" msgstr "Nome de utilizador ou senha incorrecta." -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Fornecedor de serviço (SP) SAML 2.0 (Remoto)" - msgid "{errors:descr_PROCESSAUTHNREQUEST}" msgstr "" "Ocorreu um erro ao processar o pedido de autenticação emitido pelo " @@ -412,9 +406,6 @@ msgstr "A enviar a mensagem" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "Erro recebido do Fornecedor de Identidade" -msgid "{admin:metadata_shib13-sp}" -msgstr "Metadados Shib 1.3 SP" - msgid "{admin:metaover_intro}" msgstr "Para obter detalhes sobre uma entidade SAML, clique no tÃtulo da entidade." @@ -482,9 +473,6 @@ msgstr "Página não encontrada" msgid "{logout:logged_out_text}" msgstr "SaÃda efectuada com sucesso. Obrigado por ter usado este serviço." -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Fornecedor de serviço (SP) Shib 1.3 (Local)" - msgid "{admin:debug_sending_message_msg_title}" msgstr "Mensagem" @@ -505,8 +493,11 @@ msgstr "" "uma má configuração do SimpleSAMLphp. Contacte o administrador deste " "serviço de login, e comunique a mensagem de erro." -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Fornecedor de identidade (IdP) Shib 1.3 (Local)" +msgid "{attributes:attribute_mobile}" +msgstr "Telemóvel" + +msgid "{attributes:attribute_preferredlanguage}" +msgstr "Idioma" msgid "{errors:descr_NOTVALIDCERT}" msgstr "Não foi apresentado um certificado válido." @@ -541,9 +532,6 @@ msgstr "" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "Informação de logout perdida" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Fornecedor de identidade (IdP) Shib 1.3 (Remoto)" - msgid "{errors:descr_CONFIG}" msgstr "O software SimpleSAMLphp tem um problema de configuração." diff --git a/locales/ro/LC_MESSAGES/messages.po b/locales/ro/LC_MESSAGES/messages.po index 864bffb1d6d010876ded74c918dc50d1729899df..af699cecc22eb2a877e9afba5705c707978374c9 100644 --- a/locales/ro/LC_MESSAGES/messages.po +++ b/locales/ro/LC_MESSAGES/messages.po @@ -122,9 +122,6 @@ msgstr "" "Furnizorul de identitate a răspuns cu o eroare. (Codul de stare in " "răspunsul SAML a fost încercare nereuÈ™ită)" -msgid "{admin:metadata_shib13-idp}" -msgstr "Metadate furnizor de identitate (IdP) Shib 1.3" - msgid "{login:help_text}" msgstr "" "Din păcate fără nume de utilizator È™i parolă nu vă puteÈ›i autentifica " @@ -226,9 +223,6 @@ msgstr "Deautentificare ..." msgid "{login:error_wrongpassword}" msgstr "Nume de utilizator incorect sau parola incorectă." -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Furnizor de servicii Shib 1.3 (distant)" - msgid "{errors:descr_PROCESSAUTHNREQUEST}" msgstr "" "Acest furnizor de identitate a primit o cerere de autentificare de la un " @@ -463,9 +457,6 @@ msgstr "Se trimite mesajul" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "Eroare primită de la furnizorul de identitate" -msgid "{admin:metadata_shib13-sp}" -msgstr "Metadate furnizor de servicii (SP) Shib 1.3" - msgid "{admin:metaover_intro}" msgstr "" "Pentru a vizualiza detalii privind o entitate SAML, apăsaÈ›i pe antetul " @@ -538,9 +529,6 @@ msgstr "Pagina nu a fost găsită" msgid "{logout:logged_out_text}" msgstr "AÈ›i fost deautentificat" -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Furnizor de servicii Shib 1.3 (găzduit)" - msgid "{admin:metadata_cert_intro}" msgstr "DescărcaÈ›i certificatele X509 ca fiÈ™iere PEM." @@ -569,8 +557,11 @@ msgstr "" "administratorul acestui serviciu È™i să-i furnizaÈ›i mesajul de eroare de " "mai sus." -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Furnizor de identitate Shib 1.3 (găzduit)" +msgid "{attributes:attribute_mobile}" +msgstr "Mobil" + +msgid "{attributes:attribute_preferredlanguage}" +msgstr "Limba preferată" msgid "{errors:descr_NOTVALIDCERT}" msgstr "Nu aÈ›i oferit un certificat valid." @@ -610,9 +601,6 @@ msgstr "LipseÈ™te certificatul" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "InformaÈ›ia de deautentificare a fost pierdută" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Furnizor de identitate Shib 1.3 (distant)" - msgid "{errors:descr_CONFIG}" msgstr "Probleme la configurarea SimpleSAMLphp." diff --git a/locales/ru/LC_MESSAGES/messages.po b/locales/ru/LC_MESSAGES/messages.po index f71ee414fb1c6158f7a0c9896d210e34ace30f63..6dc35b848a96736ed2c7c7bcaf61411dbe2261d9 100644 --- a/locales/ru/LC_MESSAGES/messages.po +++ b/locales/ru/LC_MESSAGES/messages.po @@ -118,9 +118,6 @@ msgstr "" "Провайдер идентификации Ñообщает об ошибке. (Код ÑÑ‚Ð°Ñ‚ÑƒÑ Ð² отклике SAML " "Ñообщает о неуÑпешной попытке)" -msgid "{admin:metadata_shib13-idp}" -msgstr "Метаданные провайдера идентификации Shib 1.3 IdP" - msgid "{login:help_text}" msgstr "" "Очень плохо! - Без ваших имени Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð²Ñ‹ не можете " @@ -229,9 +226,6 @@ msgstr "Выход из ÑиÑтемы..." msgid "{login:error_wrongpassword}" msgstr "Ðеправильное Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð»Ð¸ пароль." -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Ð¡ÐµÑ€Ð²Ð¸Ñ Ð¿Ñ€Ð¾Ð²Ð°Ð¹Ð´ÐµÑ€ Shib 1.3 (удаленное размещение)" - msgid "{login:remember_username}" msgstr "Запомнить моё Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ" @@ -470,9 +464,6 @@ msgstr "Отправка ÑообщениÑ" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "От провайдера идентификации получена ошибка" -msgid "{admin:metadata_shib13-sp}" -msgstr "Метаданные ÑÐµÑ€Ð²Ð¸Ñ Ð¿Ñ€Ð¾Ð²Ð°Ð¹Ð´ÐµÑ€Ð° Shib 1.3 SP" - msgid "{admin:metaover_intro}" msgstr "Ð”Ð»Ñ Ð¿Ñ€Ð¾Ñмотра подробноÑтей запиÑи SAML, кликните на заголовок запиÑи SAML." @@ -547,9 +538,6 @@ msgstr "Страница не найдена" msgid "{logout:logged_out_text}" msgstr "Ð’Ñ‹ уÑпешно вышли из ÑиÑтемы" -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Ð¡ÐµÑ€Ð²Ð¸Ñ Ð¿Ñ€Ð¾Ð²Ð°Ð¹Ð´ÐµÑ€ Shib 1.3 (локальное размещение)" - msgid "{admin:metadata_cert_intro}" msgstr "Скачать Ñертификаты X509 в формате PEM файлов." @@ -582,8 +570,8 @@ msgstr "" msgid "{admin:metadata_adfs-idp}" msgstr "Метаданные провайдера идентификации ADFS" -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Провайдер идентификации Shib 1.3 (локальное размещение)" +msgid "{attributes:attribute_preferredlanguage}" +msgstr "Предпочитаемый Ñзык" msgid "{errors:descr_NOTVALIDCERT}" msgstr "Ð’Ñ‹ не предоÑтавили дейÑтвительный Ñертификат." @@ -621,9 +609,6 @@ msgstr "Сертификат отÑутÑтвует" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "ПотерÑна Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ выходе." -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Провайдер идентификации Shib 1.3 (удаленное размещение)" - msgid "{errors:descr_CONFIG}" msgstr "Видимо, SimpleSAMLphp Ñконфигурирован неправильно." diff --git a/locales/sl/LC_MESSAGES/messages.po b/locales/sl/LC_MESSAGES/messages.po index 130a2756260580441bc59d3c3c63e3ed960d948c..2d320d4226b76365d100ff32d207a206d2aa6b46 100644 --- a/locales/sl/LC_MESSAGES/messages.po +++ b/locales/sl/LC_MESSAGES/messages.po @@ -112,9 +112,6 @@ msgstr "Ste v debug naÄinu, lahko si ogledate vsebino sporoÄila, ki ga poÅ¡ilj msgid "{errors:descr_RESPONSESTATUSNOSUCCESS}" msgstr "Odziv IdP vsebuje napako (\"SAML-Response\" ni uspel)! " -msgid "{admin:metadata_shib13-idp}" -msgstr "Shib 1.3 IdP Metapodatki" - msgid "{login:help_text}" msgstr "" "Žal se brez uporabniÅ¡kega imena in gesla ne morete prijaviti in " @@ -212,9 +209,6 @@ msgstr "Odjavljanje..." msgid "{login:error_wrongpassword}" msgstr "NapaÄno uporabniÅ¡ko ime ali geslo!" -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Shib 1.3 SP (Oddaljeni)" - msgid "{errors:descr_PROCESSAUTHNREQUEST}" msgstr "" "IdP je prejel avtenticirano zahtevo SP-ja, vendar je priÅ¡lo do napake pri" @@ -441,9 +435,6 @@ msgstr "PoÅ¡iljanje sporoÄila" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "Napaka na IdP" -msgid "{admin:metadata_shib13-sp}" -msgstr "Shib 1.3 SP Metapodatki" - msgid "{admin:metaover_intro}" msgstr "Za pregled podrobnosti SAML entitete, kliknite na glavo te entitete" @@ -514,9 +505,6 @@ msgstr "Strani ni bilo mogoÄe najti." msgid "{logout:logged_out_text}" msgstr "Odjava je bila uspeÅ¡na. Hvala, ker uporabljate to storitev." -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Shib 1.3 SP (Lokalni)" - msgid "{admin:metadata_cert_intro}" msgstr "Prenesi X509 digitalno potrdilo v PEM datoteki." @@ -542,8 +530,11 @@ msgstr "" "Ta napaka je verjetno posledica nepravilne konfiguracije SimpleSAMLphp-" "ja. Obrnite se na skrbnika in mu posredujte to napako." -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Shib 1.3 SP (Lokalni)" +msgid "{attributes:attribute_mobile}" +msgstr "Mobilni telefon" + +msgid "{attributes:attribute_preferredlanguage}" +msgstr "Želen jezik" msgid "{errors:descr_NOTVALIDCERT}" msgstr "Posredovan certifikat je neveljaven" @@ -577,9 +568,6 @@ msgstr "Ni digitalnega potrdila" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "Odjavni (Logout) parametri niso na voljo." -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Shib 1.3 SP (Oddaljeni)" - msgid "{errors:descr_CONFIG}" msgstr "Nastavitve SimpleSAMLphp so napaÄne ali se med seboj izkljuÄujejo." diff --git a/locales/sr/LC_MESSAGES/messages.po b/locales/sr/LC_MESSAGES/messages.po index eec871b9727491bd8f8645f2337a5c558c394dd4..3b63b99ff9243b69a60177196920f8101aaf1d83 100644 --- a/locales/sr/LC_MESSAGES/messages.po +++ b/locales/sr/LC_MESSAGES/messages.po @@ -122,9 +122,6 @@ msgstr "" "greÅ¡ke(Å ifra statusa dostavljena u SAML odgovoru ne odgovara Å¡ifri " "uspeÅ¡no obraÄ‘enog zahteva)." -msgid "{admin:metadata_shib13-idp}" -msgstr "Shib 1.3 IdP metapodaci" - msgid "{login:help_text}" msgstr "" "Å teta! - Bez ispravnog korisniÄkog imena i lozinke ne možete pristupiti " @@ -223,9 +220,6 @@ msgstr "Odjava u toku..." msgid "{login:error_wrongpassword}" msgstr "Neispravno korisniÄko ime ili lozinka." -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Shib 1.3 Davalac Servisa (udaljeni)" - msgid "{errors:descr_PROCESSAUTHNREQUEST}" msgstr "" "Davalac Identiteta je primio zahtev za autentikacijom od strane Davaoca " @@ -461,9 +455,6 @@ msgstr "Å aljem poruku" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "Davalac Identiteta je prijavio greÅ¡ku" -msgid "{admin:metadata_shib13-sp}" -msgstr "Shib 1.3 SP metapodaci" - msgid "{admin:metaover_intro}" msgstr "Da biste videli detalje o SAML entitetu, kliknite na njegovo zaglavlje." @@ -534,9 +525,6 @@ msgstr "Stranica nije pronaÄ‘ena" msgid "{logout:logged_out_text}" msgstr "UspeÅ¡no ste se odjavili." -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Shib 1.3 Davalac Servisa (lokalni)" - msgid "{admin:metadata_cert_intro}" msgstr "Preuzmite X509 sertifikate u PEM formatu." @@ -564,8 +552,11 @@ msgstr "" " podeÅ¡avanja SimpleSAMLphp-a. Kontaktirajte administratora ovog servisa i" " poÅ¡aljite mu poruku o greÅ¡ci prikazanu iznad." -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Shib 1.3 Davalac Identiteta(lokalni)" +msgid "{attributes:attribute_mobile}" +msgstr "Broj mobilnog telefona" + +msgid "{attributes:attribute_preferredlanguage}" +msgstr "Preferirani jezik" msgid "{errors:descr_NOTVALIDCERT}" msgstr "Niste dostavili validan setifikat." @@ -603,9 +594,6 @@ msgstr "Nema digitalnog sertifikata" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "Informacija o odjavljivanju je izgubljena" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Shib 1.3 Davalac Identiteta (udaljeni)" - msgid "{errors:descr_CONFIG}" msgstr "Izgleda da postoji greÅ¡ka u podeÅ¡avanjima SimpleSAMLphp-a." diff --git a/locales/sv/LC_MESSAGES/messages.po b/locales/sv/LC_MESSAGES/messages.po index c090e00df8d13cd2a665be92eb3dcc321bfb60c0..a5e374ca068be06620f17f91071ebbe13b97c4b8 100644 --- a/locales/sv/LC_MESSAGES/messages.po +++ b/locales/sv/LC_MESSAGES/messages.po @@ -117,9 +117,6 @@ msgstr "" "Identitetshanteraren (Identity Provider) svarade med ett felmeddelande. " "(Statusmeddelandet i SAML-svaret var ett felmeddelande)" -msgid "{admin:metadata_shib13-idp}" -msgstr "Shib 1.3 IdP Metadata" - msgid "{login:help_text}" msgstr "" "Tyvärr kan du inte logga in i tjänsten om du inte har ditt användarnamn " @@ -222,9 +219,6 @@ msgstr "Loggar ut..." msgid "{login:error_wrongpassword}" msgstr "Fel användarnamn eller lösenord." -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Shib 1.3 Service Provider (Fjärr)" - msgid "{errors:descr_PROCESSAUTHNREQUEST}" msgstr "" "Identitetshanteraren (Identity Provider) har tagit emot en " @@ -459,9 +453,6 @@ msgstr "Skickar meddelande" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "Fel mottaget frÃ¥n IdP" -msgid "{admin:metadata_shib13-sp}" -msgstr "Shib 1.3 SP Metadata" - msgid "{admin:metaover_intro}" msgstr "" "För att titta pÃ¥ detaljer för en SAML-entitet klicka pÃ¥ rubriken för " @@ -534,9 +525,6 @@ msgstr "Sidan finns inte" msgid "{logout:logged_out_text}" msgstr "Du har blivit uloggad. Tack för att du använde denna tjänst." -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Shib 1.3 Service Provider (Värd)" - msgid "{admin:metadata_cert_intro}" msgstr "Hämta X509-certifikaten som PEM-kodade filer." @@ -564,8 +552,11 @@ msgstr "" " av SimpleSAMLphp. Kontakta den som sköter inloggningtjänsten för att " "meddela dem ovanstÃ¥ende felmeddelande." -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Shib 1.3 Identity Provider (Värd)" +msgid "{attributes:attribute_mobile}" +msgstr "Mobiltelefon" + +msgid "{attributes:attribute_preferredlanguage}" +msgstr "Önskvärt sprÃ¥k" msgid "{errors:descr_NOTVALIDCERT}" msgstr "Du tillhandahöll inget godkänt certifikat" @@ -601,9 +592,6 @@ msgstr "Inget certfikat" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "Utloggningsinformation är borta" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Shib 1.3 Identity Provider (Fjärr)" - msgid "{errors:descr_CONFIG}" msgstr "Det förfaller som SimpleSAMLphp är felkonfigurerat." diff --git a/locales/tr/LC_MESSAGES/messages.po b/locales/tr/LC_MESSAGES/messages.po index b882653da59406d27638d4aa3bb1087ab4425ed2..dfb51e1910afe824175aa000425fa8d584b0b4a9 100644 --- a/locales/tr/LC_MESSAGES/messages.po +++ b/locales/tr/LC_MESSAGES/messages.po @@ -105,9 +105,6 @@ msgstr "" "Kimlik SaÄŸlayıcı hatalı cevap verdi. (SAML Cevabı'ndaki durum kodu " "baÅŸarılamadı)" -msgid "{admin:metadata_shib13-idp}" -msgstr "Shib 1.3 IdP Üstveri (Metadata)" - msgid "{login:help_text}" msgstr "" "Çok kötü! - Kullanıcı adınız ve ÅŸifreniz olmadan bu servisi " @@ -203,9 +200,6 @@ msgstr "Çıkıyor" msgid "{login:error_wrongpassword}" msgstr "Kullanıcı adı ve/veya ÅŸifre yanlış." -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Shib 1.3 Servis SaÄŸlayıcı (Uzak sistemde sunulan)" - msgid "{errors:descr_PROCESSAUTHNREQUEST}" msgstr "" "Bu Kimlik SaÄŸlayıcı bir Servis SaÄŸlayıcı'dan kimlik doÄŸrulama isteÄŸi " @@ -416,9 +410,6 @@ msgstr "Mesaj gönderiliyor" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "Kimlik SaÄŸlayıcıdan hata alındı." -msgid "{admin:metadata_shib13-sp}" -msgstr "Shib 1.3 SP Üstveri (Metadata)" - msgid "{admin:metaover_intro}" msgstr "" "Bir SAML elemanı hakkındaki detayları görmek için, SAML elemanı baÅŸlığına" @@ -485,9 +476,6 @@ msgstr "Sayfa bulunamadı" msgid "{logout:logged_out_text}" msgstr "Çıktınız" -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Shib 1.3 Servis SaÄŸlayıcı (Bu sistemde sunulan)" - msgid "{admin:debug_sending_message_msg_title}" msgstr "Mesaj" @@ -503,8 +491,11 @@ msgstr "" " ndeniyle oluÅŸmuÅŸ olabilir. Bu oturum açma servisinin yöneticisi ile " "iletiÅŸim kurun ve yukarıdaki hata mesajını gönderin." -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Shib 1.3 Kimlik SaÄŸlayıcı (Bu sistemde sunulan)" +msgid "{attributes:attribute_mobile}" +msgstr "Cep telefonu numarası" + +msgid "{attributes:attribute_preferredlanguage}" +msgstr "Tercih edilen dil" msgid "{errors:descr_NOTVALIDCERT}" msgstr "Geçerli bir sertifika saÄŸlamadınız. " @@ -535,9 +526,6 @@ msgstr "Verilen sayfa bulunamadı. Nedeni %REASON% idi. URL %URL% idi." msgid "{errors:title_LOGOUTINFOLOST}" msgstr "Çıkış bilgisi kaybedildi" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Shib 1.3 Kimlik SaÄŸlayıcı (Uzak sistemde sunulan)" - msgid "{errors:descr_CONFIG}" msgstr "SimpleSAMLphp doÄŸru yapılandırılmış gibi görünmüyor." diff --git a/locales/zh-tw/LC_MESSAGES/messages.po b/locales/zh-tw/LC_MESSAGES/messages.po index 00b2748d02d588ab477f93c689bf20eebe5a95ce..ad3f1b19b0d91d8e62e92012976d3f619ce44182 100644 --- a/locales/zh-tw/LC_MESSAGES/messages.po +++ b/locales/zh-tw/LC_MESSAGES/messages.po @@ -98,9 +98,6 @@ msgstr "當您在除錯模å¼ï¼Œæ‚¨å¯ä»¥çœ‹åˆ°æ‚¨æ‰€å‚³éžçš„訊æ¯å…§å®¹ï¼š" msgid "{errors:descr_RESPONSESTATUSNOSUCCESS}" msgstr "é©—è‰æä¾›è€…å›žæ‡‰ä¸€å€‹éŒ¯èª¤ã€‚(在 SAML å›žæ‡‰è£¡çš„ç‹€æ…‹ç¢¼ç‚ºä¸æˆåŠŸ)" -msgid "{admin:metadata_shib13-idp}" -msgstr "Shib 1.3 IdP Metadata" - msgid "{login:help_text}" msgstr "喔喔ï¼å¦‚果您的帳號和密碼錯誤,系統將無法æä¾›ç›¸é—œæœå‹™ï¼" @@ -194,9 +191,6 @@ msgstr "登出ä¸..." msgid "{login:error_wrongpassword}" msgstr "錯誤的帳號或密碼。" -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Shib 1.3 æœå‹™æä¾›è€…(é 端)" - msgid "{login:remember_username}" msgstr "è¨˜ä½æˆ‘的使用者å稱" @@ -415,9 +409,6 @@ msgstr "傳é€è¨Šæ¯" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "å¾žé©—è‰æä¾›è€…æ”¶åˆ°éŒ¯èª¤" -msgid "{admin:metadata_shib13-sp}" -msgstr "Shib 1.3 SP Metadata" - msgid "{admin:metaover_intro}" msgstr "é»žé¸ SAML ç‰©ä»¶æ¨™é¡Œï¼Œå¯æª¢è¦– SAML 物件詳細資訊。" @@ -490,9 +481,6 @@ msgstr "找ä¸åˆ°é é¢" msgid "{logout:logged_out_text}" msgstr "您已登出" -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Shib 1.3 æœå‹™æä¾›è€…(主機)" - msgid "{admin:metadata_cert_intro}" msgstr "下載 PEM æ ¼å¼ä¹‹ X.509 æ†‘è‰æª”案" @@ -520,8 +508,8 @@ msgstr "這個å•題å¯èƒ½æ˜¯å› 為 SimpleSAMLphp çš„æŸäº›ä¾‹å¤–的行為或無 msgid "{admin:metadata_adfs-idp}" msgstr "ADFS é©—è‰æä¾›è€… Metadata" -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Shib 1.3 é©—è‰æä¾›è€…(主機)" +msgid "{attributes:attribute_preferredlanguage}" +msgstr "喜好語言" msgid "{errors:descr_NOTVALIDCERT}" msgstr "您æä¾›çš„æ†‘è‰ç„¡æ•ˆã€‚" @@ -553,9 +541,6 @@ msgstr "無憑è‰" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "登出訊æ¯éºå¤±" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Shib 1.3 é©—è‰æä¾›è€…(é 端)" - msgid "{errors:descr_CONFIG}" msgstr "SimpleSAMLphp 出ç¾ç„¡æ•ˆè¨å®šã€‚" diff --git a/locales/zh/LC_MESSAGES/messages.po b/locales/zh/LC_MESSAGES/messages.po index 93b138bcaf5f20e302d3713d48a5a083ce56758f..f78ef546a40202d349f491410e6f9009c6d1652b 100644 --- a/locales/zh/LC_MESSAGES/messages.po +++ b/locales/zh/LC_MESSAGES/messages.po @@ -96,9 +96,6 @@ msgstr "å½“ä½ å¤„åœ¨è°ƒè¯•æ¨¡å¼ä¸æ—¶ï¼Œä½ å°†çœ‹åˆ°ä½ æ£åœ¨å‘é€çš„æ¶ˆæ¯çš„ msgid "{errors:descr_RESPONSESTATUSNOSUCCESS}" msgstr "身份æä¾›è€…的应ç”å˜åœ¨é”™è¯¯ï¼ˆSAML应ç”状æ€ç 并没有æˆåŠŸï¼‰" -msgid "{admin:metadata_shib13-idp}" -msgstr "Shib 1.3 IdP 元信æ¯" - msgid "{login:help_text}" msgstr "太糟糕了ï¼-æ²¡æœ‰ä½ çš„ç”¨æˆ·å和密ç ä½ å°†ä¸èƒ½è®¿é—®è¯¥æœåŠ¡ï¼Œä¹Ÿè®¸æœ‰äººèƒ½å¤Ÿå¸®åŠ©ä½ ï¼Œè¯·å’¨è¯¢ä½ æ‰€åœ¨å¤§å¦çš„æœåŠ¡å°" @@ -186,9 +183,6 @@ msgstr "æ£åœ¨é€€å‡º" msgid "{login:error_wrongpassword}" msgstr "é”™è¯¯çš„ç”¨æˆ·åæˆ–者密ç " -msgid "{admin:metaover_group_metadata.shib13-sp-remote}" -msgstr "Shib 1.3 æœåŠ¡æä¾›è€…(远程)" - msgid "{errors:descr_PROCESSAUTHNREQUEST}" msgstr "该身份æä¾›è€…接å—到了一个æ¥è‡ªæœåŠ¡æä¾›è€…的认è¯è¯·æ±‚,但是在试图处ç†è¯¥è¯·æ±‚的过程ä¸å‘生了错误" @@ -396,9 +390,6 @@ msgstr "æ£åœ¨å‘逿¶ˆæ¯" msgid "{errors:title_RESPONSESTATUSNOSUCCESS}" msgstr "从身份æä¾›è€…收到一个错误" -msgid "{admin:metadata_shib13-sp}" -msgstr "Shib 1.3 SP 元信æ¯" - msgid "{admin:metaover_intro}" msgstr "æƒ³è¦æŸ¥çœ‹SAML实体的详细情况,请点击SAML实体载入器" @@ -465,9 +456,6 @@ msgstr "页颿²¡æœ‰æ‰¾åˆ°" msgid "{logout:logged_out_text}" msgstr "ä½ å·²ç»é€€å‡ºäº†" -msgid "{admin:metaover_group_metadata.shib13-sp-hosted}" -msgstr "Shib 1.3 æœåŠ¡æä¾›è€…(本地)" - msgid "{admin:metadata_cert_intro}" msgstr "下载X509è¯ä¹¦ä½œä¸ºPEMç¼–ç 的文件" @@ -489,8 +477,11 @@ msgstr "没有找到给定的URL:%URL%" msgid "{errors:howto_text}" msgstr "这个错误å¯èƒ½æ˜¯ç”±äºŽä¸€äº›æ„想ä¸åˆ°çš„行为或者是SimpleSAMLphpçš„é…置错误导致的,请è”系这个登录æœåŠ¡å™¨çš„ç®¡ç†å‘˜å¹¶æŠŠä¸Šé¢çš„错误消æ¯å‘é€ç»™ä»–们" -msgid "{admin:metaover_group_metadata.shib13-idp-hosted}" -msgstr "Shib 1.3 è®¤è¯æä¾›è€…ï¼ˆæœ¬åœ°ï¼‰" +msgid "{attributes:attribute_mobile}" +msgstr "手机" + +msgid "{attributes:attribute_preferredlanguage}" +msgstr "首选è¯è¨€" msgid "{errors:descr_NOTVALIDCERT}" msgstr "ä½ æ²¡æœ‰æäº¤ä¸€ä¸ªæœ‰æ•ˆçš„è¯ä¹¦" @@ -522,9 +513,6 @@ msgstr "æ— è¯ä¹¦" msgid "{errors:title_LOGOUTINFOLOST}" msgstr "丢失了退出消æ¯" -msgid "{admin:metaover_group_metadata.shib13-idp-remote}" -msgstr "Shib 1.3 è®¤è¯æä¾›è€…ï¼ˆè¿œç¨‹ï¼‰" - msgid "{errors:descr_CONFIG}" msgstr "SimpleSAMLphp出现é…置错误" diff --git a/metadata-templates/shib13-idp-hosted.php b/metadata-templates/shib13-idp-hosted.php deleted file mode 100644 index dc6c9e0a9516b5eb756b2a4960b6a16fdab15df8..0000000000000000000000000000000000000000 --- a/metadata-templates/shib13-idp-hosted.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php - -/** - * SAML 1.1 IdP configuration for SimpleSAMLphp. - * - * See: https://simplesamlphp.org/docs/stable/simplesamlphp-reference-idp-hosted - */ - -$metadata['__DYNAMIC:1__'] = [ - /* - * The hostname of the server (VHOST) that will use this SAML entity. - * - * Can be '__DEFAULT__', to use this entry by default. - */ - 'host' => '__DEFAULT__', - - // X.509 key and certificate. Relative to the cert directory. - 'privatekey' => 'server.pem', - 'certificate' => 'server.crt', - - /* - * Authentication source to use. Must be one that is configured in - * 'config/authsources.php'. - */ - 'auth' => 'example-userpass', -]; diff --git a/metadata-templates/shib13-idp-remote.php b/metadata-templates/shib13-idp-remote.php deleted file mode 100644 index 9aa6f0e647b7dbe9a6c008b8f08f855bfc2d000e..0000000000000000000000000000000000000000 --- a/metadata-templates/shib13-idp-remote.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - -/** - * SAML 1.1 remote IdP metadata for SimpleSAMLphp. - * - * Remember to remove the IdPs you don't use from this file. - * - * See: https://simplesamlphp.org/docs/stable/simplesamlphp-reference-idp-remote - */ - -/* -$metadata['theproviderid-of-the-idp'] = [ - 'SingleSignOnService' => 'https://idp.example.org/shibboleth-idp/SSO', - 'certificate' => 'example.pem', -]; -*/ diff --git a/metadata-templates/shib13-sp-hosted.php b/metadata-templates/shib13-sp-hosted.php deleted file mode 100644 index 15a275a3837e0670afe7954712deebfc5ada0b71..0000000000000000000000000000000000000000 --- a/metadata-templates/shib13-sp-hosted.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php - -/** - * SAML 1.1 SP configuration for SimpleSAMLphp. - * - * See: https://simplesamlphp.org/docs/stable/saml:sp - */ - -/* - * Example of hosted Shibboleth 1.3 SP. - */ -$metadata['__DYNAMIC:1__'] = [ - 'host' => '__DEFAULT__', -]; diff --git a/metadata-templates/shib13-sp-remote.php b/metadata-templates/shib13-sp-remote.php deleted file mode 100644 index b2fb1d8e0a07cb2c7c8733b5e3c16b13e019c458..0000000000000000000000000000000000000000 --- a/metadata-templates/shib13-sp-remote.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - -/** - * SAML 1.1 remote SP metadata for SimpleSAMLphp. - * - * See: https://simplesamlphp.org/docs/stable/simplesamlphp-reference-sp-remote - */ - -/* - * This is just an example: - */ -$metadata['https://sp.shiblab.feide.no'] = [ - 'AssertionConsumerService' => 'http://sp.shiblab.feide.no/Shibboleth.sso/SAML/POST', - 'audience' => 'urn:mace:feide:shiblab', - 'base64attributes' => false, -]; diff --git a/modules/admin/lib/Controller/Config.php b/modules/admin/lib/Controller/Config.php index 445ff8c23b350fbf1e0ae0d530b6fea3562488f0..ad94e0df787de7f4c0bac48391819f1a1f4b0afb 100644 --- a/modules/admin/lib/Controller/Config.php +++ b/modules/admin/lib/Controller/Config.php @@ -111,7 +111,6 @@ class Config ], 'enablematrix' => [ 'saml20idp' => $this->config->getBoolean('enable.saml20-idp', false), - 'shib13idp' => $this->config->getBoolean('enable.shib13-idp', false), ], 'funcmatrix' => $this->getPrerequisiteChecks(), 'logouturl' => Utils\Auth::getAdminLogoutURL(), diff --git a/modules/admin/lib/Controller/Federation.php b/modules/admin/lib/Controller/Federation.php index 93f0eeab3be89a2fbc3cfe5c02764cf9c3c42cf2..6b6e0ca3710b152700ffc72cfba9f10173f6e1da 100644 --- a/modules/admin/lib/Controller/Federation.php +++ b/modules/admin/lib/Controller/Federation.php @@ -73,11 +73,8 @@ class Federation 'hosted' => array_merge($hostedSPs, $hostedIdPs), 'remote' => [ 'saml20-idp-remote' => !empty($hostedSPs) ? $this->mdHandler->getList('saml20-idp-remote', true) : [], - 'shib13-idp-remote' => !empty($hostedSPs) ? $this->mdHandler->getList('shib13-idp-remote', true) : [], 'saml20-sp-remote' => $this->config->getBoolean('enable.saml20-idp', false) === true ? $this->mdHandler->getList('saml20-sp-remote', true) : [], - 'shib13-sp-remote' => $this->config->getBoolean('enable.shib13-idp', false) === true - ? $this->mdHandler->getList('shib13-sp-remote', true) : [], 'adfs-sp-remote' => ($this->config->getBoolean('enable.adfs-idp', false) === true) && Module::isModuleEnabled('adfs') ? $this->mdHandler->getList('adfs-sp-remote', true) : [], ], @@ -139,10 +136,6 @@ class Federation 'saml20-sp-hosted' => Translate::noop('SAML 2.0 SP metadata'), 'saml20-idp-remote' => Translate::noop('SAML 2.0 IdP metadata'), 'saml20-idp-hosted' => Translate::noop('SAML 2.0 IdP metadata'), - 'shib13-sp-remote' => Translate::noop('SAML 1.1 SP metadata'), - 'shib13-sp-hosted' => Translate::noop('SAML 1.1 SP metadata'), - 'shib13-idp-remote' => Translate::noop('SAML 1.1 IdP metadata'), - 'shib13-idp-hosted' => Translate::noop('SAML 1.1 IdP metadata'), 'adfs-sp-remote' => Translate::noop('ADFS SP metadata'), 'adfs-sp-hosted' => Translate::noop('ADFS SP metadata'), 'adfs-idp-remote' => Translate::noop('ADFS IdP metadata'), @@ -208,47 +201,6 @@ class Federation } } - // SAML 1.1 / Shib13 - if ($this->config->getBoolean('enable.shib13-idp', false)) { - try { - $idps = $this->mdHandler->getList('shib13-idp-hosted'); - $shib13entities = []; - if (count($idps) > 1) { - foreach ($idps as $index => $idp) { - $idp['url'] = Module::getModuleURL('saml/1.1/idp/metadata/' . $idp['auth']); - $idp['metadata-set'] = 'shib13-idp-hosted'; - $idp['metadata-index'] = $index; - $idp['metadata_array'] = SAML1_IdP::getHostedMetadata($idp['entityid']); - $shib13entities[] = $idp; - } - } else { - $shib13entities['shib13-idp'] = $this->mdHandler->getMetaDataCurrent('shib13-idp-hosted'); - $shib13entities['shib13-idp']['url'] = Utils\HTTP::getBaseURL() . 'shib13/idp/metadata.php'; - $shib13entities['shib13-idp']['metadata_array'] = SAML1_IdP::getHostedMetadata( - $this->mdHandler->getMetaDataCurrentEntityID('shib13-idp-hosted') - ); - } - - foreach ($shib13entities as $index => $entity) { - $builder = new SAMLBuilder($entity['entityid']); - $builder->addMetadataIdP11($entity['metadata_array']); - $builder->addOrganizationInfo($entity['metadata_array']); - foreach ($entity['metadata_array']['contacts'] as $contact) { - $builder->addContact($contact['contactType'], $contact); - } - - $entity['metadata'] = Signer::sign( - $builder->getEntityDescriptorText(), - $entity['metadata_array'], - 'Shib 1.3 IdP' - ); - $entities[$index] = $entity; - } - } catch (\Exception $e) { - Logger::error('Federation: Error loading shib13-idp: ' . $e->getMessage()); - } - } - // ADFS if ($this->config->getBoolean('enable.adfs-idp', false) && Module::isModuleEnabled('adfs')) { try { @@ -408,8 +360,6 @@ class Federation // get all metadata for the entities foreach ($entities as &$entity) { $entity = [ - 'shib13-sp-remote' => $entity->getMetadata1xSP(), - 'shib13-idp-remote' => $entity->getMetadata1xIdP(), 'saml20-sp-remote' => $entity->getMetadata20SP(), 'saml20-idp-remote' => $entity->getMetadata20IdP(), ]; diff --git a/modules/admin/templates/config.twig b/modules/admin/templates/config.twig index 017b653eee05d21f50c85eedbf19220a81c6424d..0fddf8fdbd7c698fc2d4f4d1b82050d475875393 100644 --- a/modules/admin/templates/config.twig +++ b/modules/admin/templates/config.twig @@ -27,10 +27,6 @@ <td>SAML 2.0 IdP</td> <td><i class="fa fa-{%- if enablematrix.saml20idp %}check{% else %}ban{% endif %}"></i></td> </tr> - <tr class="{%- if enablematrix.shib13idp %}enabled{% else %}disabled{% endif -%}"> - <td>Shib 1.3 IdP</td> - <td><i class="fa fa-{%- if enablematrix.shib13idp %}check{% else %}ban{% endif %}"></i></td> - </tr> </table> </div> <ul> diff --git a/modules/core/locales/ar/LC_MESSAGES/core.po b/modules/core/locales/ar/LC_MESSAGES/core.po index 84c0fc10ca1ca5631ce6175e2751a6bf68f3f968..6aab0ba6eb85244f6c0a2041c24e6699712e38a3 100644 --- a/modules/core/locales/ar/LC_MESSAGES/core.po +++ b/modules/core/locales/ar/LC_MESSAGES/core.po @@ -28,9 +28,6 @@ msgstr "استخدام أزرار الرجوع للخل٠و الامام بمت msgid "{core:no_metadata:not_found_for}" msgstr "لا يمكننا ØªØØ¯ÙŠØ¯ موقع البيانات الوصÙية لهذه الجزئية" -msgid "{core:frontpage:link_shib13example}" -msgstr "مثال Shibboleth 1.3 SP- اختبر تسجيل الدخول مستخدماً هوية Shib IdP" - msgid "{core:no_state:suggestions}" msgstr "Ø§Ù‚ØªØ±Ø§ØØ§Øª Ù„ØÙ„ المشكلة " @@ -71,11 +68,6 @@ msgstr "" msgid "{core:frontpage:optional}" msgstr "اختياري" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "" -"البيانات الوصÙية/الميتاداتا لمقدم Shibboleth 1.3 الضي٠(تم تجهيزها " -"اتوماتيكياً)" - msgid "{core:frontpage:doc_header}" msgstr "الكتيبات التعريÙية" @@ -159,11 +151,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "البيانات الوصÙية Ù…Ùقودة" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "" -"البيانات الوصÙية/الميتاداتا لهوية مقدم Shibboleth 1.3 الضي٠(تم تجهيزها " -"اتوماتيكياً)" - msgid "{core:frontpage:required}" msgstr "مطلوب" diff --git a/modules/core/locales/cs/LC_MESSAGES/core.po b/modules/core/locales/cs/LC_MESSAGES/core.po index 0c5a0b5c613eeca008b188e005dd65acbe14d84d..1d27e4a80e61a1ab1c0b9fdd3cf954181e4ab2dc 100644 --- a/modules/core/locales/cs/LC_MESSAGES/core.po +++ b/modules/core/locales/cs/LC_MESSAGES/core.po @@ -28,9 +28,6 @@ msgstr "PoužitÃm tlaÄÃtek zpÄ›t a vpÅ™ed ve webvém prohlÞeÄi." msgid "{core:no_metadata:not_found_for}" msgstr "Nebyla nalezena metadata pro entitu:" -msgid "{core:frontpage:link_shib13example}" -msgstr "Shibboleth 1.3 SP ukázka - testovacà pÅ™ihlášenà pomocà vašà Shib IdP" - msgid "{core:no_state:suggestions}" msgstr "Návrhy pro vyÅ™eÅ¡enà tohoto problému:" @@ -74,11 +71,6 @@ msgstr "" msgid "{core:frontpage:optional}" msgstr "Volitelné" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "" -"Metada lookálnÃho (hosted) Shibboleth 1.3 poskytovatele služby (SP) " -"(automaticky generované)" - msgid "{core:frontpage:doc_header}" msgstr "Dokumentace" @@ -162,11 +154,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "Metadata nebyla nalezena" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "" -"Metada lookálnÃho (hosted) Shibboleth 1.3 poskytovatele služby (IdP) " -"(automaticky generované)" - msgid "{core:frontpage:required}" msgstr "Požadováno" diff --git a/modules/core/locales/da/LC_MESSAGES/core.po b/modules/core/locales/da/LC_MESSAGES/core.po index ed0dbe54c6bce2d86f1b9ce9b4b3234e70875041..7b48446e58223ff831f6d6b8a0218cb82b209f44 100644 --- a/modules/core/locales/da/LC_MESSAGES/core.po +++ b/modules/core/locales/da/LC_MESSAGES/core.po @@ -29,11 +29,6 @@ msgstr "Brug frem- og tilbage-knappen i browseren." msgid "{core:no_metadata:not_found_for}" msgstr "Vi kan ikke finde metadata for denne forbindelse:" -msgid "{core:frontpage:link_shib13example}" -msgstr "" -"Shibboleth 1.3 SP eksempel - test indlogning med Shibboleth 1.3 via din " -"IdP" - msgid "{core:no_state:suggestions}" msgstr "Løsningsforslag til problemet:" @@ -73,9 +68,6 @@ msgstr "Hosted SAML 2.0 identitetsudbyder metadata (automatisk genereret)" msgid "{core:frontpage:optional}" msgstr "Valgfrit" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "Hosted Shibboleth 1.3 tjenesteudbyder metadata (automatisk genereret)" - msgid "{core:frontpage:doc_header}" msgstr "Dokumentation" @@ -166,9 +158,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "Metadata er ikke fundt" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "Hosted Shibboleth 1.3 identitetsudbyder metadata (automatisk genereret)" - msgid "{core:frontpage:required}" msgstr "PÃ¥krævet" diff --git a/modules/core/locales/de/LC_MESSAGES/core.po b/modules/core/locales/de/LC_MESSAGES/core.po index c6648ced42ba13a2c629d44045331a7dcd68f94d..4a53b47796c3a1550e14277afc5079850d446d4f 100644 --- a/modules/core/locales/de/LC_MESSAGES/core.po +++ b/modules/core/locales/de/LC_MESSAGES/core.po @@ -29,9 +29,6 @@ msgstr "Das Benutzen der Zurück- und Vorwärts-Schaltflächen im Web-Browser." msgid "{core:no_metadata:not_found_for}" msgstr "Für folgende Entität konnten keine Metadaten gefunden werden:" -msgid "{core:frontpage:link_shib13example}" -msgstr "Shibboleth 1.3 SP Beispiel - Anmelden über ihren Shibboleth IdP testen" - msgid "{core:no_state:suggestions}" msgstr "Empfehlungen um dieses Problem zu lösen:" @@ -71,9 +68,6 @@ msgstr "Hosted SAML 2.0 Identity Provider Metadaten (automatisch generiert)" msgid "{core:frontpage:optional}" msgstr "Optional" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "Hosted Shibboleth 1.3 Service Provider Metadaten (automatisch generiert)" - msgid "{core:frontpage:doc_header}" msgstr "Dokumentation" @@ -162,9 +156,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "Keine Metadaten gefunden" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "Hosted Shibboleth 1.3 Identity Provider Metadaten (automatisch generiert)" - msgid "{core:frontpage:required}" msgstr "Erforderlich" diff --git a/modules/core/locales/el/LC_MESSAGES/core.po b/modules/core/locales/el/LC_MESSAGES/core.po index a2f7c1563303b807287a7828262619075a2bc061..36d11b41cfdfece620c31534f539753e211d4a36 100644 --- a/modules/core/locales/el/LC_MESSAGES/core.po +++ b/modules/core/locales/el/LC_MESSAGES/core.po @@ -29,11 +29,6 @@ msgstr "Μεταβήκατε πίσω και εμπÏός στο ιστοÏικ msgid "{core:no_metadata:not_found_for}" msgstr "Δεν ήταν δυνατό να βÏεθοÏν μεταδεδομÎνα για την οντότητα:" -msgid "{core:frontpage:link_shib13example}" -msgstr "" -"ΠαÏάδειγμα ΠαÏόχου ΥπηÏεσιών Shibboleth 1.3 - δοκιμή εισόδου μÎσω ΠαÏόχου" -" Ταυτότητας Shibboleth 1.3" - msgid "{core:no_state:suggestions}" msgstr "Î Ïοτάσεις για την επίλυση Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… Ï€Ïοβλήματος:" @@ -79,11 +74,6 @@ msgstr "" msgid "{core:frontpage:optional}" msgstr "Î ÏοαιÏετικό" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "" -"ΜεταδεδομÎνα φιλοξενοÏμενου ΠαÏόχου ΥπηÏεσιών Shibboleth 1.3 (παÏάγονται " -"αυτόματα)" - msgid "{core:frontpage:doc_header}" msgstr "ΤεκμηÏίωση" @@ -182,11 +172,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "Δεν βÏÎθηκαν μεταδεδομÎνα" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "" -"ΜεταδεδομÎνα φιλοξενοÏμενου ΠαÏόχου Ταυτότητας Shibboleth 1.3 (παÏάγονται" -" αυτόματα)" - msgid "{core:frontpage:required}" msgstr "Απαιτείται" diff --git a/modules/core/locales/en/LC_MESSAGES/core.po b/modules/core/locales/en/LC_MESSAGES/core.po index b7c59dcf45e2be9c8bc6c74ce8ca5c2e34e7f0db..6abe03ef7fab4ebc5696447213b263ef00508e15 100644 --- a/modules/core/locales/en/LC_MESSAGES/core.po +++ b/modules/core/locales/en/LC_MESSAGES/core.po @@ -30,9 +30,6 @@ msgstr "Using the back and forward buttons in the web browser." msgid "{core:no_metadata:not_found_for}" msgstr "We were unable to locate the metadata for the entity:" -msgid "{core:frontpage:link_shib13example}" -msgstr "Shibboleth 1.3 SP example - test logging in through your Shib IdP" - msgid "{core:no_state:suggestions}" msgstr "Suggestions for resolving this problem:" @@ -99,9 +96,6 @@ msgstr "Hosted SAML 2.0 Identity Provider Metadata (automatically generated)" msgid "{core:frontpage:optional}" msgstr "Optional" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "Hosted Shibboleth 1.3 Service Provider Metadata (automatically generated)" - msgid "{core:frontpage:doc_header}" msgstr "Documentation" @@ -202,9 +196,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "Metadata not found" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "Hosted Shibboleth 1.3 Identity Provider Metadata (automatically generated)" - msgid "{core:frontpage:required}" msgstr "Required" diff --git a/modules/core/locales/es/LC_MESSAGES/core.po b/modules/core/locales/es/LC_MESSAGES/core.po index 44ad5e2ef0255d0c92cc771ca963babdcbb3c277..4950c24963a20c62751d64b10b03cabee7b506af 100644 --- a/modules/core/locales/es/LC_MESSAGES/core.po +++ b/modules/core/locales/es/LC_MESSAGES/core.po @@ -29,11 +29,6 @@ msgstr "Usando los botones atrás y adelante de su navegador web." msgid "{core:no_metadata:not_found_for}" msgstr "Fue imposible localizar los metadatos para la entidad:" -msgid "{core:frontpage:link_shib13example}" -msgstr "" -"Ejemplo de SP empleando Shibboleth 1.3 - Prueba a acceder empleando tu " -"IdP Shibboleth" - msgid "{core:no_state:suggestions}" msgstr "Sugerencias para resolver este problema" @@ -73,9 +68,6 @@ msgstr "Metadatos alojados del IdP SAML 2.0 (generados automáticamente)" msgid "{core:frontpage:optional}" msgstr "Opcional" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "Metadatos alojados del SP Shibooleth 1.3 (generados automáticamente)" - msgid "{core:frontpage:doc_header}" msgstr "Documentación" @@ -177,9 +169,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "Metadatos no encontrados" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "Metadatos alojados del IdP Shibooleth 1.3 (generados automáticamente)" - msgid "{core:frontpage:required}" msgstr "Necesario" diff --git a/modules/core/locales/et/LC_MESSAGES/core.po b/modules/core/locales/et/LC_MESSAGES/core.po index 0e39b15bab51be78e6f880444a886423b526dbaa..699b09bf97bc60c3e421da840244095262b83ca1 100644 --- a/modules/core/locales/et/LC_MESSAGES/core.po +++ b/modules/core/locales/et/LC_MESSAGES/core.po @@ -27,9 +27,6 @@ msgstr "brauseri edasi-tagasi nuppude kasutamisest" msgid "{core:no_metadata:not_found_for}" msgstr "Ei suudetud leida olemi metaandmeid:" -msgid "{core:frontpage:link_shib13example}" -msgstr "Shibboleth 1.3 SP näide - sisselogimine sinu Shib IdP kaudu" - msgid "{core:no_state:suggestions}" msgstr "Nõuanded selle probleemi lahendamiseks:" @@ -71,11 +68,6 @@ msgstr "" msgid "{core:frontpage:optional}" msgstr "Vabatahtlik" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "" -"Hostitud Shibboleth 1.3 identiteedipakkuja metaandmed (automaatselt " -"genereeritud) " - msgid "{core:frontpage:doc_header}" msgstr "Dokumentatsioon" @@ -159,11 +151,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "Metaandmeid ei leitud" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "" -"Hostitud Shibboleth 2.0 identiteedipakkuja metaandmed (automaatselt " -"genereeritud) " - msgid "{core:frontpage:required}" msgstr "Nõutav" diff --git a/modules/core/locales/eu/LC_MESSAGES/core.po b/modules/core/locales/eu/LC_MESSAGES/core.po index d979950a1de6dcc8101453a0318bd930b3df4647..7337f6243988d6c0203abde4777789668205e75d 100644 --- a/modules/core/locales/eu/LC_MESSAGES/core.po +++ b/modules/core/locales/eu/LC_MESSAGES/core.po @@ -29,11 +29,6 @@ msgstr "Zure web nabigatzaileko atzera eta aurrera botoiak erabiltzen." msgid "{core:no_metadata:not_found_for}" msgstr "Ezinezkoa izan da erakunde honentzat metadaturik aurkitzea: " -msgid "{core:frontpage:link_shib13example}" -msgstr "" -"SPren adibidea Shibboleth 1.3 erabiliz - saikera zure IdP Shibboleth " -"erabiliz sartzen" - msgid "{core:no_state:suggestions}" msgstr "Arazo hau konpontzeko iradokizunak:" @@ -73,9 +68,6 @@ msgstr "IdP SAML 2.0ren ostatatutako metadatuak (automatikoki sortuak)" msgid "{core:frontpage:optional}" msgstr "Hautazkoa" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "SP Shibooleth 1.3ren ostatatutako metadatuak (automatikoki sortuak)" - msgid "{core:frontpage:doc_header}" msgstr "Dokumentazioa" @@ -163,9 +155,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "Ez da aurkitu metadaturik" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "IdP Shibooleth 1.3ren ostatatutako metadatuak (automatikoki sortuak)" - msgid "{core:frontpage:required}" msgstr "Beharrezkoa" diff --git a/modules/core/locales/fi/LC_MESSAGES/core.po b/modules/core/locales/fi/LC_MESSAGES/core.po index 729b867ca7db55796e5f63fe4daea96b9d268235..7c7b1d618f3b9b7debce25494cb8d0f618302d81 100644 --- a/modules/core/locales/fi/LC_MESSAGES/core.po +++ b/modules/core/locales/fi/LC_MESSAGES/core.po @@ -18,9 +18,6 @@ msgstr "" msgid "{core:frontpage:link_phpinfo}" msgstr "PHP info" -msgid "{core:frontpage:link_shib13example}" -msgstr "Shibboleth 1.3 SP esimerkki - testikirjautuminen Shib IdP:si kautta" - msgid "{core:frontpage:login_as_admin}" msgstr "Kirjaudu ylläpitäjänä" @@ -45,11 +42,6 @@ msgstr "Isännöidyn SAML 2.0 identiteetintarjoajan Metadata (automaattisesti lu msgid "{core:frontpage:optional}" msgstr "Valinnainen" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "" -"Isännöidyn Shibboleth 1.3 palveluntarjoajan Metadata (automaattisesti " -"luotu)" - msgid "{core:frontpage:doc_header}" msgstr "Dokumentaatio" @@ -112,11 +104,6 @@ msgstr "" "SimpleSAMLphp:n. Tämä on asennuksen lähtösivu, millä löydät linkkejä " "testiesimerkkeihin, diagnostiikkaan, metadataan ja dokumentaatioon." -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "" -"Isännöidyn Shibboleth 1.3 identiteetintarjoajan Metadata (automaattisesti" -" luotu)" - msgid "{core:frontpage:required}" msgstr "Pakollinen" diff --git a/modules/core/locales/fr/LC_MESSAGES/core.po b/modules/core/locales/fr/LC_MESSAGES/core.po index 188d437f3ea0d032f0504322c347cc1951bd8aad..2178bffeebbe44257ce8001afa433747798ae0f8 100644 --- a/modules/core/locales/fr/LC_MESSAGES/core.po +++ b/modules/core/locales/fr/LC_MESSAGES/core.po @@ -29,9 +29,6 @@ msgstr "Utilisation des boutons avance et retour dans le navigateur." msgid "{core:no_metadata:not_found_for}" msgstr "Nous ne trouvons pas les métadonnées de l'entité :" -msgid "{core:frontpage:link_shib13example}" -msgstr "SP Shibboleth 1.3 d'exemple - tester l'identification via votre IdP" - msgid "{core:no_state:suggestions}" msgstr "Suggestions pour résoudre ce problème :" @@ -70,11 +67,6 @@ msgstr "Métadonnées du fournisseur d'identités SAML 2.0 (générées automati msgid "{core:frontpage:optional}" msgstr "Facultatif" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "" -"Métadonnées du fournisseur de service Shibboleth 1.3 (générées " -"automatiquement)" - msgid "{core:frontpage:doc_header}" msgstr "Documentation" @@ -162,11 +154,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "Métadonnées non trouvées" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "" -"Métadonnées du fournisseur d'identités Shibboleth 1.3 (générées " -"automatiquement)" - msgid "{core:frontpage:required}" msgstr "Obligatoire" diff --git a/modules/core/locales/he/LC_MESSAGES/core.po b/modules/core/locales/he/LC_MESSAGES/core.po index ea53dbbe1b247484ad4de84cfca8124722cb834d..af76673a85254234df0a6d9621b651d8bcaeb58b 100644 --- a/modules/core/locales/he/LC_MESSAGES/core.po +++ b/modules/core/locales/he/LC_MESSAGES/core.po @@ -27,11 +27,6 @@ msgstr "שימוש בכפתורי ×”×‘× ×•×”×§×•×“× ×‘×“×¤×“×¤×Ÿ." msgid "{core:no_metadata:not_found_for}" msgstr "×œ× ×”×¦×œ×—× ×• ל×תר מט×-מידע עבור הישות:" -msgid "{core:frontpage:link_shib13example}" -msgstr "" -"×“×•×’×ž× ×œ×¡\"ש מסוג Shibboleth 1.3 - בוחן ×›× ×™×¡×” למערכת דרך ס\"×– מסוג - " -"Shibboleth" - msgid "{core:no_state:suggestions}" msgstr "הצעות לפתרון הבעייה ×”× ×•×›×—×™×ª:" @@ -70,9 +65,6 @@ msgstr "מט×-×”× ×ª×•× ×™× ×©×œ ספק הזהויות מסוג SAML 2.0 המ msgid "{core:frontpage:optional}" msgstr "× ×ª×•×Ÿ לבחירה" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "מט×-×”× ×ª×•× ×™× ×©×œ ספק ×”×©×™×¨×•×ª×™× ×ž×¡×•×’ Shibboleth 1.3 המ×ורח (× ×•×¦×¨ ×וטומטית)" - msgid "{core:frontpage:doc_header}" msgstr "תיעוד" @@ -156,9 +148,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "מט×-מידע ×œ× × ×ž×¦×" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "מט×-×”× ×ª×•× ×™× ×©×œ ספק השזהויות מסוג Shibboleth 1.3 המ×ורח (× ×•×¦×¨ ×וטומטית)" - msgid "{core:frontpage:required}" msgstr "דרוש" diff --git a/modules/core/locales/hr/LC_MESSAGES/core.po b/modules/core/locales/hr/LC_MESSAGES/core.po index 4e0311f3db3fe617ff3177d05b342761e15a33ea..c6b0ff417a40b234c7bc02bf88030408eea18678 100644 --- a/modules/core/locales/hr/LC_MESSAGES/core.po +++ b/modules/core/locales/hr/LC_MESSAGES/core.po @@ -32,9 +32,6 @@ msgstr "" msgid "{core:no_metadata:not_found_for}" msgstr "Ne mogu pronaći metapodatke za entitet:" -msgid "{core:frontpage:link_shib13example}" -msgstr "Shibboleth 1.3 SP primjer - isprobajte autentifikaciju kroz vaÅ¡ Shib IdP" - msgid "{core:no_state:suggestions}" msgstr "Preporuke za rjeÅ¡avanje ovog problema:" @@ -76,9 +73,6 @@ msgstr "Metapodaci za lokalni SAML 2.0 IdP (automatski generirani) " msgid "{core:frontpage:optional}" msgstr "Opcionalno" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "Metapodaci za lokalni Shibboleth 1.3 SP (automatski generirani)" - msgid "{core:frontpage:doc_header}" msgstr "Dokumentacija" @@ -169,9 +163,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "Metapodaci nisu pronaÄ‘eni" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "Metapodaci za lokalni Shibboleth 1.3 IdP (automatski generirani)" - msgid "{core:frontpage:required}" msgstr "Obavezno" diff --git a/modules/core/locales/hu/LC_MESSAGES/core.po b/modules/core/locales/hu/LC_MESSAGES/core.po index 2304e086d459c8a2ede5de935fb6b58b6d7d5348..e4363a422e68ad594c0056e316c09a28ec2b69b4 100644 --- a/modules/core/locales/hu/LC_MESSAGES/core.po +++ b/modules/core/locales/hu/LC_MESSAGES/core.po @@ -29,11 +29,6 @@ msgstr "Használja a böngészÅ‘ elÅ‘re, ill. vissza gombjait" msgid "{core:no_metadata:not_found_for}" msgstr "Az következÅ‘ entitáshoz nem található metaadat:" -msgid "{core:frontpage:link_shib13example}" -msgstr "" -"Shibboleth 1.3 SP példa - teszt bejelentkezés saját Shibboleth 1.3 IdP " -"keresztül" - msgid "{core:no_state:suggestions}" msgstr "Javaslat a probléma elhárÃtására:" @@ -77,11 +72,6 @@ msgstr "" msgid "{core:frontpage:optional}" msgstr "Opcionális" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "" -"Ezen a gépen futó (hosted) Shibboleth 1.3 alkalmazásszolgáltató (SP) " -"metaadat (automatikusan generált)" - msgid "{core:frontpage:doc_header}" msgstr "Dokumentáció" @@ -165,11 +155,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "Nem található használható metaadat" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "" -"Ezen a gépen futó (hosted) Shibboleth 1.3 személyazonosság-szolgáltató " -"(IdP) metaadat (automatikusan generált)" - msgid "{core:frontpage:required}" msgstr "Szükséges" diff --git a/modules/core/locales/id/LC_MESSAGES/core.po b/modules/core/locales/id/LC_MESSAGES/core.po index 75646d0a570c75863ca422da57c77de83b69ca91..3dc63134e3cdaad4165cb014614272444fed4e87 100644 --- a/modules/core/locales/id/LC_MESSAGES/core.po +++ b/modules/core/locales/id/LC_MESSAGES/core.po @@ -29,9 +29,6 @@ msgstr "Menggunakan tombol back dan forward pada browser web." msgid "{core:no_metadata:not_found_for}" msgstr "Kita tidak dapat menemukan metadata untuk entity" -msgid "{core:frontpage:link_shib13example}" -msgstr "Contoh Shibboleth 1.3 SP - Tes login melalui IdP Shib Anda" - msgid "{core:no_state:suggestions}" msgstr "Saran untuk memperbaiki masalah ini:" @@ -71,11 +68,6 @@ msgstr "Metadata Identity Provider SAML 2.0 Hosted (secara otomatis digenerate)" msgid "{core:frontpage:optional}" msgstr "Opsional" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "" -"Metadata Service Provider Shibboleth 1.3 Hosted (secara otomatis " -"digenerate)" - msgid "{core:frontpage:doc_header}" msgstr "Dokumentasi" @@ -161,11 +153,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "Metadata tidak ditemukan" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "" -"Metadata Identity Provider Shibboleth 1.3 Hosted (secara otomatis " -"digenerate)" - msgid "{core:frontpage:required}" msgstr "Diperlukan" diff --git a/modules/core/locales/it/LC_MESSAGES/core.po b/modules/core/locales/it/LC_MESSAGES/core.po index 555f86a8e2b379ffd15042f3ec814dbf4470b3c4..207a2951338d3e26fe6421b34508e5afcbf487c0 100644 --- a/modules/core/locales/it/LC_MESSAGES/core.po +++ b/modules/core/locales/it/LC_MESSAGES/core.po @@ -29,11 +29,6 @@ msgstr "Utilizzo i pulsanti avanti ed indietro del browser web." msgid "{core:no_metadata:not_found_for}" msgstr "Non siamo stati in grado di localizzare i metadati per l'entità :" -msgid "{core:frontpage:link_shib13example}" -msgstr "" -"Esempio di Shibboleth 1.3 SP - prova l'autenticazione tramite il tuo IdP " -"Shibboleth" - msgid "{core:no_state:suggestions}" msgstr "Suggerimenti per risolvere questo problema:" @@ -73,11 +68,6 @@ msgstr "Metadati dell'Identity Provider SAML 2.0 Locale (generati automaticament msgid "{core:frontpage:optional}" msgstr "Facoltativo" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "" -"Metadati del Service Provider Shibboleth 1.3 Locale (generati " -"automaticamente)" - msgid "{core:frontpage:doc_header}" msgstr "Documentazione" @@ -166,11 +156,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "Metadati non trovati" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "" -"Metadati dell'Identity Provider Shibboleth 1.3 Locale (generati " -"automaticamente)" - msgid "{core:frontpage:required}" msgstr "Obbligatorio" diff --git a/modules/core/locales/ja/LC_MESSAGES/core.po b/modules/core/locales/ja/LC_MESSAGES/core.po index 95736ce65122088fcd18e73d7d3480eae6d458d5..d9f42d940f1ec631ade86886160b50d03afd189b 100644 --- a/modules/core/locales/ja/LC_MESSAGES/core.po +++ b/modules/core/locales/ja/LC_MESSAGES/core.po @@ -30,9 +30,6 @@ msgstr "WEBãƒ–ãƒ©ã‚¦ã‚¶ã®æˆ»ã‚‹ã‚„次ã¸ã®ãƒœã‚¿ãƒ³ã‚’使用ã—ã¾ã™ã€‚" msgid "{core:no_metadata:not_found_for}" msgstr "メタデータã®å®Ÿä½“を見ã¤ã‘ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã›ã‚“ã§ã—ãŸ:" -msgid "{core:frontpage:link_shib13example}" -msgstr "Shibboleth 1.3 SP example - Shib IdP 経由ã§ãƒ†ã‚¹ãƒˆãƒã‚°ã‚¤ãƒ³" - msgid "{core:no_state:suggestions}" msgstr "ã“ã®å•題を解決ã™ã‚‹ç‚ºã®ææ¡ˆ:" @@ -96,9 +93,6 @@ msgstr "ホスト SAML 2.0 アイデンティティプãƒãƒã‚¤ãƒ€ãƒ¡ã‚¿ãƒ‡ãƒ¼ msgid "{core:frontpage:optional}" msgstr "ä»»æ„" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "ホスト Shibboleth 1.3 サービスプãƒãƒã‚¤ãƒ€ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿(自動生æˆ)" - msgid "{core:frontpage:doc_header}" msgstr "ドã‚ュメント" @@ -190,9 +184,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "メタデータãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "ホスト Shibboleth 1.3 アイデンティティプãƒãƒã‚¤ãƒ€ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ (自動生æˆ)" - msgid "{core:frontpage:required}" msgstr "å¿…é ˆ" diff --git a/modules/core/locales/lb/LC_MESSAGES/core.po b/modules/core/locales/lb/LC_MESSAGES/core.po index da87760a77048056f117e49d6349b6ed09f1d2ab..55cdbde9632aba437bcb08e44ada03f2ce8ea9ee 100644 --- a/modules/core/locales/lb/LC_MESSAGES/core.po +++ b/modules/core/locales/lb/LC_MESSAGES/core.po @@ -18,9 +18,6 @@ msgstr "" msgid "{core:frontpage:link_phpinfo}" msgstr "PHPinfo" -msgid "{core:frontpage:link_shib13example}" -msgstr "Shibboleth 1.3 SP Beispill - probeier dech iwer dain Shib IdP anzeloggen" - msgid "{core:frontpage:link_doc_sp}" msgstr "SimpleSAMLphp als Service Provicer benotzen" @@ -42,9 +39,6 @@ msgstr "Hosted SAML 2.0 Identity Provider Meta Données (automatesch erstallt)" msgid "{core:frontpage:optional}" msgstr "Optional" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "Hosted Shibboleth 1.3 Service Provider Meta Données (automatesch erstallt)" - msgid "{core:frontpage:doc_header}" msgstr "Dokumentatioun" @@ -81,11 +75,6 @@ msgstr "" "Links, Beispiller, Diagnoseméiglechkeeten, Meta Données an Links op " "relevant Dokumenter fannt." -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "" -"Hosted Shibboleth 1.3 Identity Provider Meta Données (automatesch " -"erstallt)" - msgid "{core:frontpage:required}" msgstr "Néideg" diff --git a/modules/core/locales/lt/LC_MESSAGES/core.po b/modules/core/locales/lt/LC_MESSAGES/core.po index aa83f7aaa0d6907754c2a90702d01d0b31bdf6fd..53bc9acb3a2f8be82e6f49698b68154293ce2971 100644 --- a/modules/core/locales/lt/LC_MESSAGES/core.po +++ b/modules/core/locales/lt/LC_MESSAGES/core.po @@ -30,11 +30,6 @@ msgstr "Back (Atgal) ir Forward (Pirmyn) mygtukų naudojimas interneto narÅ¡ykl msgid "{core:no_metadata:not_found_for}" msgstr "Nepavyko nustatyti metaduomenų Å¡iems objektams:" -msgid "{core:frontpage:link_shib13example}" -msgstr "" -"Shibboleth 1.3 SP pavyzdys - istorinių duomenų testavimas kartu su JÅ«sų " -"Shib IdP" - msgid "{core:no_state:suggestions}" msgstr "PasiÅ«lymai sprÄ™sti Å¡iÄ… problemÄ…:" @@ -74,11 +69,6 @@ msgstr "Vietinio SAML 2.0 IdP metaduomenys (sugeneruoti automatiÅ¡kai)" msgid "{core:frontpage:optional}" msgstr "Neprivalomas" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "" -"Vietinio Shibboleth 1.3 paslaugos teikÄ—jo (SP) metaduomenys (sugeneruoti " -"automatiÅ¡kai)" - msgid "{core:frontpage:doc_header}" msgstr "Dokumentacija" @@ -164,11 +154,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "Metaduomenys nerasti" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "" -"Vietinio Shibboleth 1.3 tapatybÄ—s teikÄ—jo (IdP) metaduomenys (sugeneruoti" -" automatiÅ¡kai)" - msgid "{core:frontpage:required}" msgstr "BÅ«tinas" diff --git a/modules/core/locales/lv/LC_MESSAGES/core.po b/modules/core/locales/lv/LC_MESSAGES/core.po index 61743892b824f10f948cc63b0f852577b5ceec8d..36c334aebd61ddd4f761c371750550c7db486adb 100644 --- a/modules/core/locales/lv/LC_MESSAGES/core.po +++ b/modules/core/locales/lv/LC_MESSAGES/core.po @@ -28,9 +28,6 @@ msgstr "Interneta pÄrlÅ«ka pogu Uz priekÅ¡u un Atpakaļ lietoÅ¡ana." msgid "{core:no_metadata:not_found_for}" msgstr "Metadati Å¡ai entÄ«tijai nav atrasti:" -msgid "{core:frontpage:link_shib13example}" -msgstr "Shibboleth 1.3 SP piemÄ“rs - testa pieslÄ“gÅ¡anÄs caur JÅ«su Shib IDP" - msgid "{core:no_state:suggestions}" msgstr "Ieteikumi problÄ“mas atrisinÄÅ¡anai:" @@ -69,9 +66,6 @@ msgstr "HostÄ“ta SAML 2.0 identitÄtes piegÄdÄtÄja metadati (Ä£enerÄ“ti autom msgid "{core:frontpage:optional}" msgstr "NeobligÄts" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "HostÄ“ta Shibboleth 1.3 servisa piegÄdÄtÄja metadati (Ä£enerÄ“ti automÄtiski)" - msgid "{core:frontpage:doc_header}" msgstr "DokumentÄcija" @@ -155,11 +149,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "Metadati nav atrasti" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "" -"HostÄ“ta Shibboleth 1.3 identitÄtes piegÄdÄtÄja metadati (Ä£enerÄ“ti " -"automÄtiski)" - msgid "{core:frontpage:required}" msgstr "ObligÄts" diff --git a/modules/core/locales/nb/LC_MESSAGES/core.po b/modules/core/locales/nb/LC_MESSAGES/core.po index c10d9d2e5ca974ac419976cad669912ef0699d32..c72b207abf57021ef3081a78d6520f0f381e24df 100644 --- a/modules/core/locales/nb/LC_MESSAGES/core.po +++ b/modules/core/locales/nb/LC_MESSAGES/core.po @@ -27,11 +27,6 @@ msgstr "Bruk av \"frem\"- og \"tilbake\"-knappene i nettleseren." msgid "{core:no_metadata:not_found_for}" msgstr "Vi fant ikke metadataene for:" -msgid "{core:frontpage:link_shib13example}" -msgstr "" -"Shibboleth 1.3 SP eksempel - test innlogging med Shibboleth 1.3 via din " -"IdP" - msgid "{core:no_state:suggestions}" msgstr "Forslag for Ã¥ løse dette problemet:" @@ -71,9 +66,6 @@ msgstr "Hosted SAML 2.0 Identity Provider Metadata (automatisk generert)" msgid "{core:frontpage:optional}" msgstr "Valgfritt" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "Hosted Shibboleth 1.3 Service Provider Metadata (automatisk generert)" - msgid "{core:frontpage:doc_header}" msgstr "Dokumentasjon" @@ -163,9 +155,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "Kunne ikke finne metadata" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "Hosted Shibboleth 1.3 Identity Provider Metadata (automatisk generert)" - msgid "{core:frontpage:required}" msgstr "PÃ¥krevd" diff --git a/modules/core/locales/nl/LC_MESSAGES/core.po b/modules/core/locales/nl/LC_MESSAGES/core.po index 425e4712d94cdf946746eff05cd7c8329b226908..be8f20c20ec378ed8b4f574e74be3daddfe7dc9b 100644 --- a/modules/core/locales/nl/LC_MESSAGES/core.po +++ b/modules/core/locales/nl/LC_MESSAGES/core.po @@ -27,9 +27,6 @@ msgstr "Gebruik van de 'Volgende'- en 'Terug'-knoppen in de web browser." msgid "{core:no_metadata:not_found_for}" msgstr "De metadata voor de volgende entity kon niet gevonden worden:" -msgid "{core:frontpage:link_shib13example}" -msgstr "Shibboleth 1.3 SP voorbeeld - test inloggen via je Shibboleth 1.3 IdP" - msgid "{core:no_state:suggestions}" msgstr "Suggesties om dit probleem op te lossen:" @@ -75,9 +72,6 @@ msgstr "Lokale SAML 2.0 Identity Provider Metadata (automatisch gegenereerd)" msgid "{core:frontpage:optional}" msgstr "Optioneel" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "Lokale Shibboleth 1.3 Service Provider Metadata (automatisch gegenereerd)" - msgid "{core:frontpage:doc_header}" msgstr "Documentatie" @@ -182,9 +176,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "Metadata niet gevonden" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "Lokale Shibboleth 1.3 Identity Provider Metadata (automatisch gegenereerd)" - msgid "{core:frontpage:required}" msgstr "Vereist" diff --git a/modules/core/locales/nn/LC_MESSAGES/core.po b/modules/core/locales/nn/LC_MESSAGES/core.po index 368dd7e76b37c2525b2126bf239176d2c92514eb..54942f81d9025205147440376892ba5e4a9280fb 100644 --- a/modules/core/locales/nn/LC_MESSAGES/core.po +++ b/modules/core/locales/nn/LC_MESSAGES/core.po @@ -27,9 +27,6 @@ msgstr "Bruk av \"fram\"- og \"attende\"-knappane i nettlesaren." msgid "{core:no_metadata:not_found_for}" msgstr "Vi fann ikkje metadataene for:" -msgid "{core:frontpage:link_shib13example}" -msgstr "Shibboleth 1.3 SP eksempel - testinnlogging med Shibboleth 1.3 via din IdP" - msgid "{core:no_state:suggestions}" msgstr "Forslag for Ã¥ løyse dette problemet:" @@ -69,9 +66,6 @@ msgstr "Hosted SAML 2.0 Identity Provider Metadata (automatisk generert)" msgid "{core:frontpage:optional}" msgstr "Valfritt" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "Hosted Shibboleth 1.3 Service Provider Metadata (automatisk generert)" - msgid "{core:frontpage:doc_header}" msgstr "Dokumentasjon" @@ -159,9 +153,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "Kunne ikkje finne metadata" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "Hosted Shibboleth 1.3 Identity Provider Metadata (automatisk generert)" - msgid "{core:frontpage:required}" msgstr "Naudsynt" diff --git a/modules/core/locales/pl/LC_MESSAGES/core.po b/modules/core/locales/pl/LC_MESSAGES/core.po index fadeeb468d7d263ef45ff81f6120c1c9c415e48c..1a461afe244bfd97bd825f749e9336f4d6c0d4f5 100644 --- a/modules/core/locales/pl/LC_MESSAGES/core.po +++ b/modules/core/locales/pl/LC_MESSAGES/core.po @@ -19,9 +19,6 @@ msgstr "" msgid "{core:frontpage:link_phpinfo}" msgstr "PHP info" -msgid "{core:frontpage:link_shib13example}" -msgstr "Shibboleth 1.3 SP - przykÅ‚ad - test logowania przez Twoje Shib IdP" - msgid "{core:frontpage:login_as_admin}" msgstr "Zaloguj siÄ™ jako administrator" @@ -46,11 +43,6 @@ msgstr "Metadane - Lokalny SAML 2.0 Dostawca TożsamoÅ›ci (generowane automatycz msgid "{core:frontpage:optional}" msgstr "Opcjonalne" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "" -"Metadane - Lokalny Shibboleth 1.3 Dostawca Serwisu (generowane " -"automatycznie)" - msgid "{core:frontpage:doc_header}" msgstr "Dokumentacja" @@ -106,11 +98,6 @@ msgstr "" "znajdziesz odnoÅ›niki do przykÅ‚adów, narzÄ™dzi do diagnozowania, metadane a" " nawet linki do dokumentacji." -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "" -"Metadane - Lokalny Shibboleth 1.3 Dostawca TożsamoÅ›ci (generowane " -"automatycznie)" - msgid "{core:frontpage:required}" msgstr "Wymagane" diff --git a/modules/core/locales/pt-br/LC_MESSAGES/core.po b/modules/core/locales/pt-br/LC_MESSAGES/core.po index 271528eb1050bc934dec64a89dce3df30560ade0..2d1b13141bde4c64fdb5145aa1bc7632b643ca29 100644 --- a/modules/core/locales/pt-br/LC_MESSAGES/core.po +++ b/modules/core/locales/pt-br/LC_MESSAGES/core.po @@ -21,9 +21,6 @@ msgstr "Informações do PHP" msgid "{core:no_metadata:not_found_for}" msgstr "Não foi possÃvel localizar os metadados da entidade:" -msgid "{core:frontpage:link_shib13example}" -msgstr "Shibboleth 1.3 SP exemplo - efetuar login na sua Shib IDP" - msgid "{core:frontpage:login_as_admin}" msgstr "Login como Administrador" @@ -48,11 +45,6 @@ msgstr "Hospedado SAML 2.0 Identity Provider Metadata (gerado automaticamente)" msgid "{core:frontpage:optional}" msgstr "Opcional" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "" -"Hospedado Shibboleth 1.3 Service Provider Metadata (gerado " -"automaticamente)" - msgid "{core:frontpage:doc_header}" msgstr "Documentação" @@ -119,11 +111,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "Metadata não encontrado" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "" -"Hospedado Shibboleth 1.3 Identity Provider Metadata (gerado " -"automaticamente)" - msgid "{core:frontpage:required}" msgstr "Requerido" diff --git a/modules/core/locales/pt/LC_MESSAGES/core.po b/modules/core/locales/pt/LC_MESSAGES/core.po index 599cf95aac19d32fc5870fa66d3729c700f5b716..4ead99e9b333136d9bb60cd8657c3188660e7a17 100644 --- a/modules/core/locales/pt/LC_MESSAGES/core.po +++ b/modules/core/locales/pt/LC_MESSAGES/core.po @@ -18,9 +18,6 @@ msgstr "" msgid "{core:frontpage:link_phpinfo}" msgstr "PHP info" -msgid "{core:frontpage:link_shib13example}" -msgstr "Exemplo de um SP Shibboleth 1.3 - Para testes de login pelo seu IdP Shib" - msgid "{core:frontpage:login_as_admin}" msgstr "Entrar como administrador" @@ -54,11 +51,6 @@ msgstr "" msgid "{core:frontpage:optional}" msgstr "Opcional" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "" -"Metadados do fornecedor de serviço (SP) Shibboleth 1.3 local (gerado " -"automaticamente)" - msgid "{core:frontpage:doc_header}" msgstr "Documentação" @@ -125,11 +117,6 @@ msgstr "" "ligações para páginas de teste, de diagnóstico, de metadados e de " "documentação relevante." -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "" -"Metadados do fornecedor de identidade (IdP) Shibboleth 1.3 local (gerado " -"automaticamente)" - msgid "{core:frontpage:required}" msgstr "Necessário" diff --git a/modules/core/locales/ro/LC_MESSAGES/core.po b/modules/core/locales/ro/LC_MESSAGES/core.po index ead982bb2899b7b1871280d2ca6f2bfe72e86612..9ebf3a69874f12ca82ba7820ef6cca9db399df47 100644 --- a/modules/core/locales/ro/LC_MESSAGES/core.po +++ b/modules/core/locales/ro/LC_MESSAGES/core.po @@ -28,11 +28,6 @@ msgstr "Utilizarea butoanelor \"înainte\" sau \"înapoi\" din browser." msgid "{core:no_metadata:not_found_for}" msgstr "Nu am găsit metadate pentru următoarea entitate:" -msgid "{core:frontpage:link_shib13example}" -msgstr "" -"Exemplu furnizor de servicii Shibboleth 1.3 - testarea autentificării " -"prin furnizorul dumneavoastră de identitate Shib" - msgid "{core:no_state:suggestions}" msgstr "Sugestii pentru rezolvarea acestei probleme:" @@ -74,11 +69,6 @@ msgstr "" msgid "{core:frontpage:optional}" msgstr "OpÈ›ional" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "" -"Metadate pentru furnizorul de servicii Shibboleth 1.3 găzduit (generate " -"automat)" - msgid "{core:frontpage:doc_header}" msgstr "DocumentaÈ›ie" @@ -171,11 +161,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "Nu au fost găsite metadate" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "" -"Metadate pentru furnizorul de identitate Shibboleth 1.3 găzduit (generate" -" automat)" - msgid "{core:frontpage:required}" msgstr "Necesar" diff --git a/modules/core/locales/ru/LC_MESSAGES/core.po b/modules/core/locales/ru/LC_MESSAGES/core.po index 699936c8d91610edbc33c57ea7d61a1fe205f338..328dbe2de88df405e957da783024ee99f5dbf763 100644 --- a/modules/core/locales/ru/LC_MESSAGES/core.po +++ b/modules/core/locales/ru/LC_MESSAGES/core.po @@ -28,9 +28,6 @@ msgstr "ИÑпользуйте клавиши \"Вперед\" \"Ðазад\" в msgid "{core:no_metadata:not_found_for}" msgstr "Мы не нашли метаданные Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°:" -msgid "{core:frontpage:link_shib13example}" -msgstr "Пример Shibboleth 1.3 SP - теÑтовый вход в ÑиÑтему через ваш Shib IdP" - msgid "{core:no_state:suggestions}" msgstr "Варианты Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ñ‹:" @@ -72,11 +69,6 @@ msgstr "" msgid "{core:frontpage:optional}" msgstr "Опционально" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "" -"Метаданные Shibboleth 1.3 ПоÑтавщика УÑлуг (SP) (генерируютÑÑ " -"автоматичеÑки)" - msgid "{core:frontpage:doc_header}" msgstr "ДокументациÑ" @@ -169,11 +161,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "Метаданные не найдены" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "" -"Метаданные Shibboleth 1.3 Провайдера подлинноÑти (IdP) (генерируютÑÑ " -"автоматичеÑки)" - msgid "{core:frontpage:required}" msgstr "ОбÑзательный" diff --git a/modules/core/locales/sl/LC_MESSAGES/core.po b/modules/core/locales/sl/LC_MESSAGES/core.po index 802a6f38c92d9cbce6effef674e8c7e3ce553e7d..389cc14db2ba2608e99af148aaf8105dfc4ebe74 100644 --- a/modules/core/locales/sl/LC_MESSAGES/core.po +++ b/modules/core/locales/sl/LC_MESSAGES/core.po @@ -28,9 +28,6 @@ msgstr "Uporaba gumbov \"nazaj\" ali \"naprej\" v spletnem brskalniku." msgid "{core:no_metadata:not_found_for}" msgstr "Metapodatkov za to entiteto ni bilo moÄ najti." -msgid "{core:frontpage:link_shib13example}" -msgstr "Shibboleth 1.3 SP primer - preveri prijavo preko svojega Shib IdP" - msgid "{core:no_state:suggestions}" msgstr "Predloga za razreÅ¡itev nastale težave:" @@ -69,9 +66,6 @@ msgstr "Metapodatki za SAML 2.0 IdP (samodejno generirani)" msgid "{core:frontpage:optional}" msgstr "Dodatno" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "Metapodatki za Shibboleth 1.3 SP (samodejno generirani)" - msgid "{core:frontpage:doc_header}" msgstr "Dokumentacija" @@ -155,9 +149,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "Metapodatkov ni bilo moÄ najti." -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "Metapodatki za Shibboleth 1.3 IdP (samodejno generirani)" - msgid "{core:frontpage:required}" msgstr "Zahtevano" diff --git a/modules/core/locales/sr/LC_MESSAGES/core.po b/modules/core/locales/sr/LC_MESSAGES/core.po index 9f7a9ea2083b377d1b3b038fa6fed1956cf1194f..d064999ddb065fbc6d781bb743666e3cf9f3ba32 100644 --- a/modules/core/locales/sr/LC_MESSAGES/core.po +++ b/modules/core/locales/sr/LC_MESSAGES/core.po @@ -32,11 +32,6 @@ msgstr "" msgid "{core:no_metadata:not_found_for}" msgstr "Ne mogu pronaći metapodatke za entitet:" -msgid "{core:frontpage:link_shib13example}" -msgstr "" -"Shibboleth 1.3 SP primer - testirajte autentifikaciju kroz vaÅ¡ Shib " -"Davalac Servisa" - msgid "{core:no_state:suggestions}" msgstr "Preporuke za reÅ¡avanje ovog problema:" @@ -78,11 +73,6 @@ msgstr "Metapodaci za lokalni SAML 2.0 Davalac Identiteta (automatski generisani msgid "{core:frontpage:optional}" msgstr "Opciono" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "" -"Metapodaci za lokalni Shibboleth 1.3 Davalac Servisa (automatski " -"generisani)" - msgid "{core:frontpage:doc_header}" msgstr "Dokumentacija" @@ -170,11 +160,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "Metapodaci nisu pronaÄ‘eni" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "" -"Metapodaci za lokalni Shibboleth 1.3 Davalac Identiteta (automatski " -"generisani)" - msgid "{core:frontpage:required}" msgstr "Obavezno" diff --git a/modules/core/locales/sv/LC_MESSAGES/core.po b/modules/core/locales/sv/LC_MESSAGES/core.po index 6adaceec51b3eb397f156ce0456c5a8eec24f448..20bc0f764282cb24a7d475776987f73d6853a8dd 100644 --- a/modules/core/locales/sv/LC_MESSAGES/core.po +++ b/modules/core/locales/sv/LC_MESSAGES/core.po @@ -27,9 +27,6 @@ msgstr "Användning av framÃ¥t- och bakÃ¥tknappar i webbläsaren." msgid "{core:no_metadata:not_found_for}" msgstr "Metadata för enehten hittades inte:" -msgid "{core:frontpage:link_shib13example}" -msgstr "Shibboleth 1.3 SP exempel - testinloggning med SAML 2.0 via din IdP" - msgid "{core:no_state:suggestions}" msgstr "Förslag för att Ã¥tgärda detta problem:" @@ -69,9 +66,6 @@ msgstr "Lokala SAML 2.0 Identity Provider Metadata (automatiskt genererat)" msgid "{core:frontpage:optional}" msgstr "Valfri" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "Lokala Shibboleth 1.3 Service Provider Metadata (automatiskt genererat)" - msgid "{core:frontpage:doc_header}" msgstr "Dokumentation" @@ -160,9 +154,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "Metadata saknas" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "Lokala Shibboleth 1.3 Identity Provider Metadata (automatiskt genererat)" - msgid "{core:frontpage:required}" msgstr "Obligatoriskt" diff --git a/modules/core/locales/tr/LC_MESSAGES/core.po b/modules/core/locales/tr/LC_MESSAGES/core.po index fd7f6435dcbcabc197429ad8eaca2c85b656b183..4aef1be2d17ada7101ce6c972a43fdb05650a5f9 100644 --- a/modules/core/locales/tr/LC_MESSAGES/core.po +++ b/modules/core/locales/tr/LC_MESSAGES/core.po @@ -18,9 +18,6 @@ msgstr "" msgid "{core:frontpage:link_phpinfo}" msgstr "PHP info" -msgid "{core:frontpage:link_shib13example}" -msgstr "Shibboleth 1.3 SP örneÄŸi - Shib IdP'nizden giriÅŸ yaparak test edin" - msgid "{core:frontpage:login_as_admin}" msgstr "Yönetici olarak giriÅŸ" @@ -49,11 +46,6 @@ msgstr "" msgid "{core:frontpage:optional}" msgstr "İsteÄŸe baÄŸlı" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "" -"Sunulan Shibboleth 1.3 Servis SaÄŸlayıcı Üstverisi (metadata) (otomatik " -"olarak üretilmiÅŸtir)" - msgid "{core:frontpage:doc_header}" msgstr "Dokümantasyon" @@ -114,11 +106,6 @@ msgstr "" "ilgili dokümanlara baÄŸlantılar bulabileceÄŸiniz, kurulumun baÅŸlangıç " "sayfasıdır." -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "" -"Sunulan Shibboleth 1.3 Kimlik SaÄŸlayıcı Üstverisi (metadata) (otomatik " -"olarak üretilmiÅŸtir)" - msgid "{core:frontpage:required}" msgstr "Gerekli" diff --git a/modules/core/locales/zh-tw/LC_MESSAGES/core.po b/modules/core/locales/zh-tw/LC_MESSAGES/core.po index 24d8ebbbf4a48d95ee0b4bbc7d287eeb8ae742d1..3e27847d15cc2d68ba9ae525e0ae8ebcc6b12389 100644 --- a/modules/core/locales/zh-tw/LC_MESSAGES/core.po +++ b/modules/core/locales/zh-tw/LC_MESSAGES/core.po @@ -27,9 +27,6 @@ msgstr "於網é ç€è¦½å™¨ä½¿ç”¨ä¸Šä¸€é åŠä¸‹ä¸€é 。" msgid "{core:no_metadata:not_found_for}" msgstr "æˆ‘å€‘ç„¡æ³•å®šä½æ¤å¯¦é«”之詮釋資料:" -msgid "{core:frontpage:link_shib13example}" -msgstr "Shibboleth 1.3 SP 範本 - 測試使用您的 Shib IdP 登入" - msgid "{core:no_state:suggestions}" msgstr "建è°è§£æ±ºé€™å€‹å•題:" @@ -66,9 +63,6 @@ msgstr "託管 SAML 2.0 é©—è‰æä¾›è€…è©®é‡‹è³‡æ–™(自動產生)" msgid "{core:frontpage:optional}" msgstr "é¸é …" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "託管 Shibboleth 1.3 æœå‹™æä¾›è€…詮釋資料(自動產生)" - msgid "{core:frontpage:doc_header}" msgstr "說明文件" @@ -155,9 +149,6 @@ msgstr "" msgid "{core:no_metadata:header}" msgstr "找ä¸åˆ°è©®é‡‹è³‡æ–™" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "託管Shibboleth 1.3 é©—è‰æä¾›è€…è©®é‡‹è³‡æ–™(自動產生)" - msgid "{core:frontpage:required}" msgstr "請求" diff --git a/modules/core/locales/zh/LC_MESSAGES/core.po b/modules/core/locales/zh/LC_MESSAGES/core.po index f883464c23da8b5a70db3b4816a382738e025155..e74b5a0f3d35feca2853c97dfb3746edbd8b7414 100644 --- a/modules/core/locales/zh/LC_MESSAGES/core.po +++ b/modules/core/locales/zh/LC_MESSAGES/core.po @@ -27,9 +27,6 @@ msgstr "使用æµè§ˆå™¨ä¸çš„å‰è¿›åŽé€€æŒ‰é’®" msgid "{core:no_metadata:not_found_for}" msgstr "æˆ‘ä»¬æ— æ³•ä¸ºè¿™ä¸ªå®žä½“å®šä½å…ƒä¿¡æ¯" -msgid "{core:frontpage:link_shib13example}" -msgstr "Shibboleth 1.3SPæ ·ä¾‹-æµ‹è¯•ä»Žä½ çš„Shib idP登录" - msgid "{core:no_state:suggestions}" msgstr "关于解决该问题的建议" @@ -66,9 +63,6 @@ msgstr "å˜å‚¨çš„ Hosted SAML 2.0 Identity Provider Metadata(自动生æˆï¼‰" msgid "{core:frontpage:optional}" msgstr "å¯é€‰çš„" -msgid "{core:frontpage:link_meta_shib13sphosted}" -msgstr "å˜å‚¨çš„ Shibboleth 1.3 Service Provider Metadata(自动生æˆï¼‰" - msgid "{core:frontpage:doc_header}" msgstr "文档" @@ -147,9 +141,6 @@ msgstr "<strong>æå–œä½ ï¼</strong>,ä½ å·²æˆåŠŸå®‰è£…SimpleSAMLphp。这是 msgid "{core:no_metadata:header}" msgstr "没有找到元信æ¯" -msgid "{core:frontpage:link_meta_shib13idphosted}" -msgstr "å˜å‚¨çš„ Shibboleth 1.3 Identity Provider Metadata(自动生æˆï¼‰" - msgid "{core:frontpage:required}" msgstr "需求" diff --git a/modules/core/templates/frontpage_config.twig b/modules/core/templates/frontpage_config.twig index c0fb87b95d4002e18b6337e46aafaddd1ccc7126..74ac7c8a5002370ff74c89e1090d6009605d80d1 100644 --- a/modules/core/templates/frontpage_config.twig +++ b/modules/core/templates/frontpage_config.twig @@ -18,10 +18,6 @@ <td>SAML 2.0 IdP</td> <td>{%- if enablematrix.saml20idp %}{{ icon_enabled|raw }}{% else %}{{ icon_disabled|raw }}{% endif -%}</td> </tr> - <tr class="{%- if enablematrix.shib13idp %}enabled{% else %}disabled{% endif -%}"> - <td>Shib 1.3 IdP</td> - <td>{%- if enablematrix.shib13idp %}{{ icon_enabled|raw }}{% else %}{{ icon_disabled|raw }}{% endif -%}</td> - </tr> </table> </div> diff --git a/modules/core/www/authenticate.php b/modules/core/www/authenticate.php index 62ab03fc8c58977833c526d83da542f18aae66b9..680ece576c37f9989fc7f36ecb0198ca31c24c2f 100644 --- a/modules/core/www/authenticate.php +++ b/modules/core/www/authenticate.php @@ -8,7 +8,7 @@ if (!array_key_exists('as', $_REQUEST)) { $t = new \SimpleSAML\XHTML\Template($config, 'core:authsource_list.tpl.php'); $t->data['sources'] = \SimpleSAML\Auth\Source::getSources(); - $t->show(); + $t->send(); exit(); } @@ -50,4 +50,4 @@ $t->data['attributes'] = $attributes; $t->data['authData'] = $authData; $t->data['nameid'] = !is_null($as->getAuthData('saml:sp:NameID')) ? $as->getAuthData('saml:sp:NameID') : false; $t->data['logouturl'] = \SimpleSAML\Utils\HTTP::getSelfURLNoQuery() . '?as=' . urlencode($asId) . '&logout'; -$t->show(); +$t->send(); diff --git a/modules/core/www/cardinality_error.php b/modules/core/www/cardinality_error.php index cb76a072ef90ba7fb08b0fb01a3228c1b4b57e36..135493d50a30e22dd8f44fd6fe84103dd039de3a 100644 --- a/modules/core/www/cardinality_error.php +++ b/modules/core/www/cardinality_error.php @@ -27,4 +27,4 @@ if (isset($state['Source']['auth'])) { ) . "&logout"; } header('HTTP/1.0 403 Forbidden'); -$t->show(); +$t->send(); diff --git a/modules/core/www/frontpage_auth.php b/modules/core/www/frontpage_auth.php index a3bf112e150efee435323163208942432d79ee9c..cd6546f13124ead3c1b80eaa65bcf9a3d27f7601 100644 --- a/modules/core/www/frontpage_auth.php +++ b/modules/core/www/frontpage_auth.php @@ -45,4 +45,4 @@ $t->data['links_config'] = $links_config; $t->data['links_auth'] = $links_auth; $t->data['links_federation'] = $links_federation; -$t->show(); +$t->send(); diff --git a/modules/core/www/frontpage_config.php b/modules/core/www/frontpage_config.php index 1cfba39f5d7205320132f139faa4e976a0e12a5f..8243fae641bde77c9de318fea8e016d117a4672e 100644 --- a/modules/core/www/frontpage_config.php +++ b/modules/core/www/frontpage_config.php @@ -95,7 +95,6 @@ if ($config->getBoolean('admin.checkforupdates', true) && $current !== 'master') $enablematrix = [ 'saml20idp' => $config->getBoolean('enable.saml20-idp', false), - 'shib13idp' => $config->getBoolean('enable.shib13-idp', false), ]; @@ -200,4 +199,4 @@ $t->data['requiredmap'] = [ $t->data['version'] = $config->getVersion(); $t->data['directory'] = dirname(dirname(dirname(dirname(__FILE__)))); -$t->show(); +$t->send(); diff --git a/modules/core/www/frontpage_federation.php b/modules/core/www/frontpage_federation.php index c33528b2fdb76cb4cecb9f6472819dfd6d534c95..66e896841a2706ebcbd6290b938df93b8050f581 100644 --- a/modules/core/www/frontpage_federation.php +++ b/modules/core/www/frontpage_federation.php @@ -51,7 +51,6 @@ $metaentries = ['hosted' => $metadataHosted, 'remote' => []]; if ($isadmin) { $metaentries['remote']['saml20-idp-remote'] = $metadata->getList('saml20-idp-remote', true); - $metaentries['remote']['shib13-idp-remote'] = $metadata->getList('shib13-idp-remote', true); } if ($config->getBoolean('enable.saml20-idp', false) === true) { @@ -66,18 +65,6 @@ if ($config->getBoolean('enable.saml20-idp', false) === true) { \SimpleSAML\Logger::error('Federation: Error loading saml20-idp: ' . $e->getMessage()); } } -if ($config->getBoolean('enable.shib13-idp', false) === true) { - try { - $metaentries['hosted']['shib13-idp'] = $metadata->getMetaDataCurrent('shib13-idp-hosted'); - $metaentries['hosted']['shib13-idp']['metadata-url'] = - $config->getBasePath() . 'shib13/idp/metadata.php?output=xhtml'; - if ($isadmin) { - $metaentries['remote']['shib13-sp-remote'] = $metadata->getList('shib13-sp-remote', true); - } - } catch (Exception $e) { - \SimpleSAML\Logger::error('Federation: Error loading shib13-idp: ' . $e->getMessage()); - } -} if ($config->getBoolean('enable.adfs-idp', false) === true) { try { $metaentries['hosted']['adfs-idp'] = $metadata->getMetaDataCurrent('adfs-idp-hosted'); @@ -145,10 +132,6 @@ $mtype = [ 'saml20-sp-hosted' => $translator->noop('{admin:metadata_saml20-sp}'), 'saml20-idp-remote' => $translator->noop('{admin:metadata_saml20-idp}'), 'saml20-idp-hosted' => $translator->noop('{admin:metadata_saml20-idp}'), - 'shib13-sp-remote' => $translator->noop('{admin:metadata_shib13-sp}'), - 'shib13-sp-hosted' => $translator->noop('{admin:metadata_shib13-sp}'), - 'shib13-idp-remote' => $translator->noop('{admin:metadata_shib13-idp}'), - 'shib13-idp-hosted' => $translator->noop('{admin:metadata_shib13-idp}'), 'adfs-sp-remote' => $translator->noop('{admin:metadata_adfs-sp}'), 'adfs-sp-hosted' => $translator->noop('{admin:metadata_adfs-sp}'), 'adfs-idp-remote' => $translator->noop('{admin:metadata_adfs-idp}'), @@ -171,4 +154,4 @@ $t->data['metadata_url'] = \SimpleSAML\Module::getModuleURL('core/show_metadata. $t->data['metaentries'] = $metaentries; $t->data['mtype'] = $mtype; -$t->show(); +$t->send(); diff --git a/modules/core/www/frontpage_welcome.php b/modules/core/www/frontpage_welcome.php index 4dfb4fef195ac8fb0f803e6c2bb2e8e0e4229f81..22dc2d9f3438085c57c7d9b3fffbf7ff35f0445d 100644 --- a/modules/core/www/frontpage_welcome.php +++ b/modules/core/www/frontpage_welcome.php @@ -46,4 +46,4 @@ $t->data['links_auth'] = $links_auth; $t->data['links_federation'] = $links_federation; $t->data['header'] = $t->getTranslator()->t('{core:frontpage:page_title}'); -$t->show(); +$t->send(); diff --git a/modules/core/www/idp/logout-iframe.php b/modules/core/www/idp/logout-iframe.php index 80f94cca9e12aa2e5e6c5b02e0eb791f36a0e3d3..442b26bd0904cf0600dabf76042874ac3dade64f 100644 --- a/modules/core/www/idp/logout-iframe.php +++ b/modules/core/www/idp/logout-iframe.php @@ -150,4 +150,4 @@ if ($type !== 'nojs') { $t->data['jquery'] = ['core' => true, 'ui' => false, 'css' => false]; } -$t->show(); +$t->send(); diff --git a/modules/core/www/loginuserpass.php b/modules/core/www/loginuserpass.php index 5655b67cea9ae1b3171044cf8dfe4093a3fff3c3..27e4327167839bc7d84d3692052891fcfe9aef45 100644 --- a/modules/core/www/loginuserpass.php +++ b/modules/core/www/loginuserpass.php @@ -133,4 +133,4 @@ if (isset($state['SPMetadata'])) { $t->data['SPMetadata'] = null; } -$t->show(); +$t->send(); diff --git a/modules/core/www/loginuserpassorg.php b/modules/core/www/loginuserpassorg.php index fd65a15dbe1eb1643a4de571e33b4317c6a84cad..be63c72bb3e13436cd92f5d64101232c84ef18f6 100644 --- a/modules/core/www/loginuserpassorg.php +++ b/modules/core/www/loginuserpassorg.php @@ -163,5 +163,5 @@ if (isset($state['SPMetadata'])) { $t->data['SPMetadata'] = null; } -$t->show(); +$t->send(); exit(); diff --git a/modules/core/www/no_cookie.php b/modules/core/www/no_cookie.php index 7ae3889d6c613c5c7df9b2f896354529d0cdffda..c2ff054fa94049cad6b74bbde314699105945ae0 100644 --- a/modules/core/www/no_cookie.php +++ b/modules/core/www/no_cookie.php @@ -22,4 +22,4 @@ $t->data['header'] = htmlspecialchars($header); $t->data['description'] = htmlspecialchars($desc); $t->data['retry'] = htmlspecialchars($retry); $t->data['retryURL'] = $retryURL; -$t->show(); +$t->send(); diff --git a/modules/core/www/postredirect.php b/modules/core/www/postredirect.php index b5d08eeb0ffbfe7dd8237a17f3de14e9ebbaa19f..07bac08e8fe030280f630c9d2e13424fd40eea00 100644 --- a/modules/core/www/postredirect.php +++ b/modules/core/www/postredirect.php @@ -1,13 +1,13 @@ <?php -use Webmozart\Assert\Assert; - /** * This page provides a way to create a redirect to a POST request. * * @package SimpleSAMLphp */ +use Webmozart\Assert\Assert; + if (array_key_exists('RedirId', $_REQUEST)) { $postId = $_REQUEST['RedirId']; $session = \SimpleSAML\Session::getSessionFromRequest(); @@ -54,5 +54,5 @@ $config = \SimpleSAML\Configuration::getInstance(); $template = new \SimpleSAML\XHTML\Template($config, 'post.php'); $template->data['destination'] = $postData['url']; $template->data['post'] = $postData['post']; -$template->show(); +$template->send(); exit(0); diff --git a/modules/core/www/short_sso_interval.php b/modules/core/www/short_sso_interval.php index 919210f535aefdbfac9766ae22a1b1236c824f82..2659471c1ea3a8f2e18f94d68038a2430a3e1d0e 100644 --- a/modules/core/www/short_sso_interval.php +++ b/modules/core/www/short_sso_interval.php @@ -30,4 +30,4 @@ $t->data['params'] = ['StateId' => $id]; $t->data['trackId'] = $session->getTrackID(); $t->data['header'] = $translator->t('{core:short_sso_interval:warning_header}'); $t->data['autofocus'] = 'contbutton'; -$t->show(); +$t->send(); diff --git a/modules/core/www/show_metadata.php b/modules/core/www/show_metadata.php index ffad6572b2a3d9ed30e46d02420b276bfefc5649..d9dd9ffdc455aa556cfc559ac07292fce0e969a6 100644 --- a/modules/core/www/show_metadata.php +++ b/modules/core/www/show_metadata.php @@ -15,7 +15,7 @@ if (!array_key_exists('set', $_REQUEST)) { if ( !in_array( $_REQUEST['set'], - ['saml20-idp-remote', 'saml20-sp-remote', 'shib13-idp-remote', 'shib13-sp-remote'], + ['saml20-idp-remote', 'saml20-sp-remote'], true ) ) { @@ -36,4 +36,4 @@ $t->data['entityid'] = $m['metadata-index']; unset($m['metadata-index']); $t->data['metadata'] = var_export($m, true); -$t->show(); +$t->send(); diff --git a/modules/cron/www/croninfo.php b/modules/cron/www/croninfo.php index 289dfe2c85a13dfc4ad9b0567810ba53b6fe1ded..1c9ec0da2bd782c8cad5884a06dc2e09b204a919 100644 --- a/modules/cron/www/croninfo.php +++ b/modules/cron/www/croninfo.php @@ -15,4 +15,4 @@ $session = Session::getSessionFromRequest(); $controller = new Controller\Cron($config, $session); $response = $controller->info(); -$response->show(); +$response->send(); diff --git a/modules/exampleauth/templates/authenticate.tpl.php b/modules/exampleauth/templates/authenticate.tpl.php deleted file mode 100644 index fd112ff59f94169ac4257ca083cfeed98ed086bc..0000000000000000000000000000000000000000 --- a/modules/exampleauth/templates/authenticate.tpl.php +++ /dev/null @@ -1,29 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> - <title>exampleauth login page</title> - </head> - <body> - <h1>exampleauth login page</h1> - <p> - In this example you can log in with two accounts: <code>student</code> and <code>admin</code>. - In both cases, the password is the same as the username. - </p> - <form method="post" action="?"> - <p> - Username: - <input type="text" name="username"> - </p> - <p> - Password: - <input type="text" name="password"> - </p> - <input type="hidden" name="ReturnTo" value="<?= htmlspecialchars($this->data['returnTo']) ?>"> - <p><input type="submit" value="Log in"></p> - </form> -<?php if($this->data['badUserPass']): ?> - <p>!!! Bad username or password !!!</p> -<?php endif; ?> - </body> -</html> diff --git a/modules/exampleauth/www/authpage.php b/modules/exampleauth/www/authpage.php index 795a13cba8d2f4fc0aa9a6abc774368964b0dbbc..b4b4b4458ee6dcec6cd1c9edb187efe0f30a9ec6 100644 --- a/modules/exampleauth/www/authpage.php +++ b/modules/exampleauth/www/authpage.php @@ -83,4 +83,4 @@ $config = \SimpleSAML\Configuration::getInstance(); $t = new \SimpleSAML\XHTML\Template($config, 'exampleauth:authenticate.tpl.php'); $t->data['badUserPass'] = $badUserPass; $t->data['returnTo'] = $returnTo; -$t->show(); +$t->send(); diff --git a/modules/multiauth/www/selectsource.php b/modules/multiauth/www/selectsource.php index 2038e30874279a5092d08ec918baa8c5102703e5..6d7e5d97d3edafc713d9e6835ad638bd88b8c883 100644 --- a/modules/multiauth/www/selectsource.php +++ b/modules/multiauth/www/selectsource.php @@ -81,5 +81,5 @@ if ($as !== null) { } else { $t->data['preferred'] = null; } -$t->show(); +$t->send(); exit(); diff --git a/modules/saml/docs/keyrollover.md b/modules/saml/docs/keyrollover.md index 0fd99fc82dc7520674812acc8e041e43c4637a8c..7a23448be406320708a9eb5c5eaedb9c053abfa4 100644 --- a/modules/saml/docs/keyrollover.md +++ b/modules/saml/docs/keyrollover.md @@ -19,7 +19,7 @@ Add the new key to SimpleSAMLphp Where you add the new key depends on whether you are doing key rollover for a service provider or an identity provider. If you are doing key rollover for a service provider, the new key must be added to `config/authsources.php`. -To do key rollover for an identity provider, you must add the new key to `metadata/saml20-idp-hosted.php` and/or `metadata/shib13-idp-hosted.php`. +To do key rollover for an identity provider, you must add the new key to `metadata/saml20-idp-hosted.php`. If you are changing the keys for both an service provider and identity provider at the same time, you must update both locations. The new certificate and key is added to the configuration with the prefix `new_`: diff --git a/modules/saml/docs/sp.md b/modules/saml/docs/sp.md index 45da3fb1afd5b382ab3dda1fb015c18cabf3cf09..2579f27a3b6456a19fcbb11508c6b3ea401c21e6 100644 --- a/modules/saml/docs/sp.md +++ b/modules/saml/docs/sp.md @@ -1,7 +1,7 @@ `saml:SP` ========= -This authentication source is used to authenticate against SAML 1 and SAML 2 IdPs. +This authentication source is used to authenticate against SAML 2 IdPs. Metadata @@ -224,7 +224,7 @@ Options `discoURL` : Set which IdP discovery service this SP should use. - If this is unset, the IdP discovery service specified in the global option `idpdisco.url.{saml20|shib13}` in `config/config.php` will be used. + If this is unset, the IdP discovery service specified in the global option `idpdisco.url.saml20` in `config/config.php` will be used. If that one is also unset, the builtin default discovery service will be used. `encryption.blacklisted-algorithms` @@ -353,9 +353,6 @@ Options : The page the user should be redirected to after an IdP initiated SSO. : *Note*: SAML 2 specific. - For SAML 1.1 SPs, you must specify the `TARGET` parameter in the authentication response. - How to set that parameter is depends on the IdP. - For SimpleSAMLphp, see the documentation for [IdP-first flow](./simplesamlphp-idp-more#section_4_1). `saml.SOAPClient.certificate` : A file with a certificate _and_ private key that should be used when issuing SOAP requests from this SP. @@ -366,14 +363,6 @@ Options `saml.SOAPClient.privatekey_pass` : The passphrase of the privatekey in `saml.SOAPClient.certificate`. -`saml1.useartifact` -: Request that the IdP returns the result to the artifact binding. - The default is to use the POST binding, set this option to TRUE to use the artifact binding instead. - -: This option can also be set in the `shib13-idp-remote` metadata, in which case the setting in `shib13-idp-remote` takes precedence. - -: *Note*: SAML 1 specific. - `saml20.hok.assertion` : Enable support for the SAML 2.0 Holder-of-Key SSO profile. See the documentation for the [Holder-of-Key profile](./simplesamlphp-hok-sp). diff --git a/modules/saml/lib/Auth/Source/SP.php b/modules/saml/lib/Auth/Source/SP.php index e9ebaa259d02b1d081d89ee474fcd88d692549c9..91f2bd24b49830289ffb71f8c2777901014d8b25 100644 --- a/modules/saml/lib/Auth/Source/SP.php +++ b/modules/saml/lib/Auth/Source/SP.php @@ -18,7 +18,6 @@ use SimpleSAML\Module; use SimpleSAML\Session; use SimpleSAML\Store; use SimpleSAML\Utils; -use SimpleSAML\XML\Shib13; use Webmozart\Assert\Assert; class SP extends \SimpleSAML\Auth\Source @@ -306,14 +305,6 @@ class SP extends \SimpleSAML\Auth\Source Logger::debug('getIdpMetadata: ' . $e->getMessage()); } - // Not found in saml20-idp-remote, look in shib13-idp-remote - try { - return $metadataHandler->getMetaDataConfig($entityId, 'shib13-idp-remote'); - } catch (\Exception $e) { - // Metadata wasn't found - Logger::debug('getIdpMetadata: ' . $e->getMessage()); - } - // Not found throw new Error\Exception('Could not find the metadata of an IdP with entity ID ' . var_export($entityId, true)); @@ -457,45 +448,6 @@ class SP extends \SimpleSAML\Auth\Source } - /** - * Send a SAML1 SSO request to an IdP. - * - * @param \SimpleSAML\Configuration $idpMetadata The metadata of the IdP. - * @param array $state The state array for the current authentication. - * @return void - * @deprecated will be removed in a future version - */ - private function startSSO1(Configuration $idpMetadata, array $state) - { - $idpEntityId = $idpMetadata->getString('entityid'); - - $state['saml:idp'] = $idpEntityId; - - $ar = new Shib13\AuthnRequest(); - $ar->setIssuer($this->entityId); - - $id = Auth\State::saveState($state, 'saml:sp:sso'); - $ar->setRelayState($id); - - $useArtifact = $idpMetadata->getBoolean('saml1.useartifact', null); - if ($useArtifact === null) { - $useArtifact = $this->metadata->getBoolean('saml1.useartifact', false); - } - - if ($useArtifact) { - $shire = Module::getModuleURL('saml/sp/saml1-acs.php/' . $this->authId . '/artifact'); - } else { - $shire = Module::getModuleURL('saml/sp/saml1-acs.php/' . $this->authId); - } - - $url = $ar->createRedirect($idpEntityId, $shire); - - Logger::debug('Starting SAML 1 SSO to ' . var_export($idpEntityId, true) . - ' from ' . var_export($this->entityId, true) . '.'); - Utils\HTTP::redirectTrustedURL($url); - } - - /** * Send a SAML2 SSO request to an IdP * @@ -724,9 +676,6 @@ class SP extends \SimpleSAML\Auth\Source $type = $idpMetadata->getString('metadata-set'); switch ($type) { - case 'shib13-idp-remote': - $this->startSSO1($idpMetadata, $state); - Assert::true(false); // Should not return case 'saml20-idp-remote': $this->startSSO2($idpMetadata, $state); Assert::true(false); // Should not return @@ -926,7 +875,7 @@ class SP extends \SimpleSAML\Auth\Source * - 'SPMetadata': an array with the metadata of this local SP. * * @return void - * @throws \SimpleSAML\Error\NoPassive In case the authentication request was passive. + * @throws \SimpleSAML\Module\saml\Error\NoPassive In case the authentication request was passive. */ public static function askForIdPChange(array &$state) { diff --git a/modules/saml/lib/IdP/SAML1.php b/modules/saml/lib/IdP/SAML1.php deleted file mode 100644 index 5b2eeb226757ee6f9846b45394651603b84640b8..0000000000000000000000000000000000000000 --- a/modules/saml/lib/IdP/SAML1.php +++ /dev/null @@ -1,271 +0,0 @@ -<?php - -declare(strict_types=1); - -namespace SimpleSAML\Module\saml\IdP; - -use SimpleSAML\Auth; -use SimpleSAML\Bindings\Shib13\HTTPPost; -use SimpleSAML\Configuration; -use SimpleSAML\Error; -use SimpleSAML\IdP; -use SimpleSAML\Logger; -use SimpleSAML\Metadata\MetaDataStorageHandler; -use SimpleSAML\Stats; -use SimpleSAML\Utils; -use SimpleSAML\XML\Shib13\AuthnResponse; -use Webmozart\Assert\Assert; - -/** - * IdP implementation for SAML 1.1 protocol. - * - * @package SimpleSAMLphp - * @deprecated This class will be removed in a future release - */ -class SAML1 -{ - /** - * Retrieve the metadata of a hosted SAML 1.1 IdP. - * - * @param string $entityid The entity ID of the hosted SAML 1.1 IdP whose metadata we want. - * - * @return array - * @throws \SimpleSAML\Error\Exception - * @throws \SimpleSAML\Error\MetadataNotFound - * @throws \SimpleSAML\Error\Exception - */ - public static function getHostedMetadata($entityid) - { - $handler = MetaDataStorageHandler::getMetadataHandler(); - $config = $handler->getMetaDataConfig($entityid, 'shib13-idp-hosted'); - - $metadata = [ - 'metadata-set' => 'shib13-idp-hosted', - 'entityid' => $entityid, - 'SignleSignOnService' => $handler->getGenerated('SingleSignOnService', 'shib13-idp-hosted'), - 'NameIDFormat' => $config->getArrayizeString('NameIDFormat', 'urn:mace:shibboleth:1.0:nameIdentifier'), - 'contacts' => [], - ]; - - // add certificates - $keys = []; - $certInfo = Utils\Crypto::loadPublicKey($config, false, 'new_'); - $hasNewCert = false; - if ($certInfo !== null) { - $keys[] = [ - 'type' => 'X509Certificate', - 'signing' => true, - 'encryption' => true, - 'X509Certificate' => $certInfo['certData'], - 'prefix' => 'new_', - ]; - $hasNewCert = true; - } - - /** @var array $certInfo */ - $certInfo = Utils\Crypto::loadPublicKey($config, true); - $keys[] = [ - 'type' => 'X509Certificate', - 'signing' => true, - 'encryption' => $hasNewCert === false, - 'X509Certificate' => $certInfo['certData'], - 'prefix' => '', - ]; - $metadata['keys'] = $keys; - - // add organization information - if ($config->hasValue('OrganizationName')) { - $metadata['OrganizationName'] = $config->getLocalizedString('OrganizationName'); - $metadata['OrganizationDisplayName'] = $config->getLocalizedString( - 'OrganizationDisplayName', - $metadata['OrganizationName'] - ); - - if (!$config->hasValue('OrganizationURL')) { - throw new Error\Exception('If OrganizationName is set, OrganizationURL must also be set.'); - } - $metadata['OrganizationURL'] = $config->getLocalizedString('OrganizationURL'); - } - - // add scope - if ($config->hasValue('scope')) { - $metadata['scope'] = $config->getArray('scope'); - } - - // add extensions - if ($config->hasValue('EntityAttributes')) { - $metadata['EntityAttributes'] = $config->getArray('EntityAttributes'); - - // check for entity categories - if (Utils\Config\Metadata::isHiddenFromDiscovery($metadata)) { - $metadata['hide.from.discovery'] = true; - } - } - - if ($config->hasValue('UIInfo')) { - $metadata['UIInfo'] = $config->getArray('UIInfo'); - } - - if ($config->hasValue('DiscoHints')) { - $metadata['DiscoHints'] = $config->getArray('DiscoHints'); - } - - if ($config->hasValue('RegistrationInfo')) { - $metadata['RegistrationInfo'] = $config->getArray('RegistrationInfo'); - } - - // add contact information - $globalConfig = Configuration::getInstance(); - $email = $globalConfig->getString('technicalcontact_email', false); - if ($email && $email !== 'na@example.org') { - $contact = [ - 'emailAddress' => $email, - 'name' => $globalConfig->getString('technicalcontact_name', null), - 'contactType' => 'technical', - ]; - $metadata['contacts'][] = Utils\Config\Metadata::getContact($contact); - } - - return $metadata; - } - - - /** - * Send a response to the SP. - * - * @param array $state The authentication state. - * @return void - */ - public static function sendResponse(array $state) - { - Assert::keyExists($state, 'Attributes'); - Assert::keyExists($state, 'SPMetadata'); - Assert::keyExists($state, 'saml:shire'); - Assert::notNull($state['Attributes']); - Assert::notNull($state['SPMetadata']); - Assert::notNull($state['saml:shire']); - Assert::keyExists($state, 'saml:target'); // Can be NULL - - $spMetadata = $state["SPMetadata"]; - $spEntityId = $spMetadata['entityid']; - $spMetadata = Configuration::loadFromArray( - $spMetadata, - '$metadata['.var_export($spEntityId, true).']' - ); - - Logger::info('Sending SAML 1.1 Response to '.var_export($spEntityId, true)); - - $attributes = $state['Attributes']; - $shire = $state['saml:shire']; - $target = $state['saml:target']; - - $idp = IdP::getByState($state); - - $idpMetadata = $idp->getConfig(); - - $config = Configuration::getInstance(); - $metadata = MetaDataStorageHandler::getMetadataHandler(); - - $statsData = [ - 'spEntityID' => $spEntityId, - 'idpEntityID' => $idpMetadata->getString('entityid'), - 'protocol' => 'saml1', - ]; - if (isset($state['saml:AuthnRequestReceivedAt'])) { - $statsData['logintime'] = microtime(true) - $state['saml:AuthnRequestReceivedAt']; - } - Stats::log('saml:idp:Response', $statsData); - - // Generate and send response. - $ar = new AuthnResponse(); - $authnResponseXML = $ar->generate($idpMetadata, $spMetadata, $shire, $attributes); - - $httppost = new HTTPPost($config, $metadata); - $httppost->sendResponse($authnResponseXML, $idpMetadata, $spMetadata, $target, $shire); - } - - - /** - * Receive an authentication request. - * - * @param \SimpleSAML\IdP $idp The IdP we are receiving it for. - * @return void - */ - public static function receiveAuthnRequest(IdP $idp) - { - if (isset($_REQUEST['cookieTime'])) { - $cookieTime = (int) $_REQUEST['cookieTime']; - if ($cookieTime + 5 > time()) { - /* - * Less than five seconds has passed since we were - * here the last time. Cookies are probably disabled. - */ - Utils\HTTP::checkSessionCookie(Utils\HTTP::getSelfURL()); - } - } - - if (!isset($_REQUEST['providerId'])) { - throw new Error\BadRequest('Missing providerId parameter.'); - } - $spEntityId = (string) $_REQUEST['providerId']; - - if (!isset($_REQUEST['shire'])) { - throw new Error\BadRequest('Missing shire parameter.'); - } - $shire = (string) $_REQUEST['shire']; - - if (isset($_REQUEST['target'])) { - $target = $_REQUEST['target']; - } else { - $target = null; - } - - Logger::info( - 'Shib1.3 - IdP.SSOService: Got incoming Shib authnRequest from '.var_export($spEntityId, true).'.' - ); - - $metadata = MetaDataStorageHandler::getMetadataHandler(); - $spMetadata = $metadata->getMetaDataConfig($spEntityId, 'shib13-sp-remote'); - - $found = false; - foreach ($spMetadata->getEndpoints('AssertionConsumerService') as $ep) { - if ($ep['Binding'] !== 'urn:oasis:names:tc:SAML:1.0:profiles:browser-post') { - continue; - } - if ($ep['Location'] !== $shire) { - continue; - } - $found = true; - break; - } - if (!$found) { - throw new \Exception( - 'Invalid AssertionConsumerService for SP '.var_export($spEntityId, true).': '.var_export($shire, true) - ); - } - - Stats::log( - 'saml:idp:AuthnRequest', - [ - 'spEntityID' => $spEntityId, - 'protocol' => 'saml1', - ] - ); - - $sessionLostURL = Utils\HTTP::addURLParameters( - Utils\HTTP::getSelfURL(), - ['cookieTime' => time()] - ); - - $state = [ - 'Responder' => ['\SimpleSAML\Module\saml\IdP\SAML1', 'sendResponse'], - 'SPMetadata' => $spMetadata->toArray(), - Auth\State::RESTART => $sessionLostURL, - 'saml:shire' => $shire, - 'saml:target' => $target, - 'saml:AuthnRequestReceivedAt' => microtime(true), - ]; - - $idp->handleAuthenticationRequest($state); - } -} diff --git a/modules/saml/lib/IdP/SAML2.php b/modules/saml/lib/IdP/SAML2.php index 664bcf6f5ca337fb640e4f2d72fd91d5b94682e3..48403c62bca14966380e82daa02db7483fe24441 100644 --- a/modules/saml/lib/IdP/SAML2.php +++ b/modules/saml/lib/IdP/SAML2.php @@ -363,7 +363,6 @@ class SAML2 ); } - /** @psalm-var null|string|\SAML2\XML\saml\Issuer $issuer Remove in SSP 2.0 */ $issuer = $request->getIssuer(); if ($issuer === null) { throw new Error\BadRequest( @@ -598,7 +597,6 @@ class SAML2 $binding = Binding::getCurrentBinding(); $message = $binding->receive(); - /** @psalm-var null|string|\SAML2\XML\saml\Issuer Remove in SSP 2.0 */ $issuer = $message->getIssuer(); if ($issuer === null) { /* Without an issuer we have no way to respond to the message. */ diff --git a/modules/saml/lib/Message.php b/modules/saml/lib/Message.php index fe047d955ef7585298a1dbd8634d0113c7a2842b..7027e4f7e18fe342d1b49807cfd309f6aa911cfd 100644 --- a/modules/saml/lib/Message.php +++ b/modules/saml/lib/Message.php @@ -188,30 +188,6 @@ class Message Logger::debug('Skipping unknown key type: ' . $key['type']); } } - } elseif ($srcMetadata->hasValue('certFingerprint')) { - Logger::notice( - "Validating certificates by fingerprint is deprecated. Please use " . - "certData or certificate options in your remote metadata configuration." - ); - - $certFingerprint = $srcMetadata->getArrayizeString('certFingerprint'); - foreach ($certFingerprint as &$fp) { - $fp = strtolower(str_replace(':', '', $fp)); - } - - $certificates = $element->getCertificates(); - - // we don't have the full certificate stored. Try to find it in the message or the assertion instead - if (count($certificates) === 0) { - /* We need the full certificate in order to match it against the fingerprint. */ - Logger::debug('No certificate in message when validating against fingerprint.'); - return false; - } else { - Logger::debug('Found ' . count($certificates) . ' certificates in ' . get_class($element)); - } - - $pemCert = self::findCertificate($certFingerprint, $certificates); - $pemKeys = [$pemCert]; } else { throw new SSP_Error\Exception( 'Missing certificate in metadata for ' . diff --git a/modules/saml/lib/SP/LogoutStore.php b/modules/saml/lib/SP/LogoutStore.php index 9123eadd0368d97b90992b3e1988afa3054b0c6d..8b941acd9611a1bcd092465f2349646ae475755a 100644 --- a/modules/saml/lib/SP/LogoutStore.php +++ b/modules/saml/lib/SP/LogoutStore.php @@ -417,7 +417,6 @@ class LogoutStore // We cannot fetch all sessions without a SQL store return false; } - /** @var array $sessions At this point the store cannot be false */ $sessions = self::getSessionsStore($store, $authId, $strNameId, $sessionIndexes); } diff --git a/modules/saml/www/disco.php b/modules/saml/www/disco.php index b7d06c454550a1dab8eab8edb181c4a6a750e379..93d8f68bbee3ee3f09f0268e36d541986d497e90 100644 --- a/modules/saml/www/disco.php +++ b/modules/saml/www/disco.php @@ -4,5 +4,5 @@ * Built-in IdP discovery service. */ -$discoHandler = new \SimpleSAML\XHTML\IdPDisco(['saml20-idp-remote', 'shib13-idp-remote'], 'saml'); +$discoHandler = new \SimpleSAML\XHTML\IdPDisco(['saml20-idp-remote'], 'saml'); $discoHandler->handleRequest(); diff --git a/modules/saml/www/proxy/invalid_session.php b/modules/saml/www/proxy/invalid_session.php index 3b9c09610414b1712b7aed1c205a947d22fdcefa..3a3d3b88657bc8f973ee06edf4328466249f8dc9 100644 --- a/modules/saml/www/proxy/invalid_session.php +++ b/modules/saml/www/proxy/invalid_session.php @@ -74,4 +74,4 @@ if (array_key_exists('name', $spmd)) { $template->data['sp_name'] = $spmd['entityid']; } -$template->show(); +$template->send(); diff --git a/modules/saml/www/sp/metadata.php b/modules/saml/www/sp/metadata.php index b13d86fed33df9cadcc69736232f554d5e5b9adb..e32b1d34b2885f1ec94e8a8a574ed6800382ae4e 100644 --- a/modules/saml/www/sp/metadata.php +++ b/modules/saml/www/sp/metadata.php @@ -281,7 +281,7 @@ if (array_key_exists('output', $_REQUEST) && $_REQUEST['output'] == 'xhtml') { $t->data['metadataflat'] = '$metadata[' . var_export($entityId, true) . '] = ' . var_export($metaArray20, true) . ';'; $t->data['metaurl'] = $source->getMetadataURL(); - $t->show(); + $t->send(); } else { header('Content-Type: application/samlmetadata+xml'); echo($xml); diff --git a/modules/saml/www/sp/saml1-acs.php b/modules/saml/www/sp/saml1-acs.php deleted file mode 100644 index 34ca9ece6428edc6edcd48e11ff7b6d469d2099e..0000000000000000000000000000000000000000 --- a/modules/saml/www/sp/saml1-acs.php +++ /dev/null @@ -1,96 +0,0 @@ -<?php - -use SimpleSAML\Bindings\Shib13\Artifact; -use Webmozart\Assert\Assert; - -if (!array_key_exists('SAMLResponse', $_REQUEST) && !array_key_exists('SAMLart', $_REQUEST)) { - throw new \SimpleSAML\Error\BadRequest('Missing SAMLResponse or SAMLart parameter.'); -} - -if (!array_key_exists('TARGET', $_REQUEST)) { - throw new \SimpleSAML\Error\BadRequest('Missing TARGET parameter.'); -} - -if (!array_key_exists('PATH_INFO', $_SERVER)) { - throw new \SimpleSAML\Error\BadRequest('Missing authentication source ID in assertion consumer service URL'); -} - -$sourceId = $_SERVER['PATH_INFO']; -$end = strpos($sourceId, '/', 1); -if ($end === false) { - $end = strlen($sourceId); -} -$sourceId = substr($sourceId, 1, $end - 1); - -/** @var \SimpleSAML\Module\saml\Auth\Source\SP $source */ -$source = \SimpleSAML\Auth\Source::getById($sourceId, '\SimpleSAML\Module\saml\Auth\Source\SP'); - -SimpleSAML\Logger::debug('Received SAML1 response'); - -$target = (string) $_REQUEST['TARGET']; - -if (preg_match('@^https?://@i', $target)) { - // Unsolicited response - $state = [ - 'saml:sp:isUnsolicited' => true, - 'saml:sp:AuthId' => $sourceId, - 'saml:sp:RelayState' => \SimpleSAML\Utils\HTTP::checkURLAllowed($target), - ]; -} else { - /** @var array $state State can never be null without a third argument */ - $state = \SimpleSAML\Auth\State::loadState($_REQUEST['TARGET'], 'saml:sp:sso'); - - // Check that the authentication source is correct - Assert::keyExists($state, 'saml:sp:AuthId'); - if ($state['saml:sp:AuthId'] !== $sourceId) { - throw new \SimpleSAML\Error\Exception( - 'The authentication source id in the URL does not match the authentication source which sent the request.' - ); - } - - Assert::notNull($state['saml:idp']); -} - -$spMetadata = $source->getMetadata(); - -if (array_key_exists('SAMLart', $_REQUEST)) { - if (!isset($state['saml:idp'])) { - // Unsolicited response - throw new \SimpleSAML\Error\Exception( - 'IdP initiated authentication not supported with the SAML 1.1 SAMLart protocol.' - ); - } - $idpMetadata = $source->getIdPMetadata($state['saml:idp']); - - $responseXML = Artifact::receive($spMetadata, $idpMetadata); - $isValidated = true; /* Artifact binding validated with ssl certificate. */ -} elseif (array_key_exists('SAMLResponse', $_REQUEST)) { - $responseXML = $_REQUEST['SAMLResponse']; - $responseXML = base64_decode($responseXML); - $isValidated = false; /* Must check signature on response. */ -} else { - throw new \SimpleSAML\Error\BadRequest('Missing SAMLResponse or SAMLart parameter.'); -} - -$response = new \SimpleSAML\XML\Shib13\AuthnResponse(); -$response->setXML($responseXML); - -$response->setMessageValidated($isValidated); -$response->validate(); - -$responseIssuer = $response->getIssuer(); -$attributes = $response->getAttributes(); - -if (isset($state['saml:idp']) && $responseIssuer !== $state['saml:idp']) { - throw new \SimpleSAML\Error\Exception('The issuer of the response wasn\'t the destination of the request.'); -} - -$logoutState = [ - 'saml:logout:Type' => 'saml1' -]; -$state['LogoutState'] = $logoutState; - -$state['saml:sp:NameID'] = $response->getNameID(); - -$source->handleResponse($state, $responseIssuer, $attributes); -Assert::true(false); diff --git a/modules/saml/www/sp/saml2-acs.php b/modules/saml/www/sp/saml2-acs.php index 11a17bf4d64028e58348754317eba629ef242b53..1f7e60313d6887d0e79a3d82bc32018be0917b3e 100644 --- a/modules/saml/www/sp/saml2-acs.php +++ b/modules/saml/www/sp/saml2-acs.php @@ -39,7 +39,6 @@ if (!($response instanceof \SAML2\Response)) { throw new \SimpleSAML\Error\BadRequest('Invalid message received to AssertionConsumerService endpoint.'); } -/** @psalm-var null|string|\SAML2\XML\saml\Issuer $issuer Remove in SSP 2.0 */ $issuer = $response->getIssuer(); if ($issuer === null) { // no Issuer in the response. Look for an unencrypted assertion with an issuer @@ -50,7 +49,6 @@ if ($issuer === null) { break; } } - /** @psalm-var string|null $issuer Remove in SSP 2.0 */ if ($issuer === null) { // no issuer found in the assertions throw new Exception('Missing <saml:Issuer> in message delivered to AssertionConsumerService.'); diff --git a/modules/saml/www/sp/saml2-logout.php b/modules/saml/www/sp/saml2-logout.php index 9b756d8d61e5fdffa09c6eee42a6880d008d2cc6..76661b3eb4ac35f3d54bcf2d4d14289ef9887d78 100644 --- a/modules/saml/www/sp/saml2-logout.php +++ b/modules/saml/www/sp/saml2-logout.php @@ -46,7 +46,6 @@ if ($idpEntityId === null) { throw new \SimpleSAML\Error\BadRequest('Received message on logout endpoint without issuer.'); } -/** @var \SimpleSAML\Module\saml\Auth\Source\SP $source */ $spEntityId = $source->getEntityId(); $metadata = \SimpleSAML\Metadata\MetaDataStorageHandler::getMetadataHandler(); diff --git a/modules/saml/www/sp/wrong_authncontextclassref.php b/modules/saml/www/sp/wrong_authncontextclassref.php index 9cb93bf70dbfeffbe30c113b323f9c834c9d6cce..5c81d73e5cdc29b732d1f2ba2831aa585219edd3 100644 --- a/modules/saml/www/sp/wrong_authncontextclassref.php +++ b/modules/saml/www/sp/wrong_authncontextclassref.php @@ -2,4 +2,4 @@ $globalConfig = \SimpleSAML\Configuration::getInstance(); $t = new \SimpleSAML\XHTML\Template($globalConfig, 'saml:sp/wrong_authncontextclassref.tpl.php'); -$t->show(); +$t->send(); diff --git a/phpunit.xml b/phpunit.xml index 878768a43398e4abb9c03f6b07834182d45c7522..84dc59b007cf80facf83b2e8adb0688ff974ac1f 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -29,7 +29,7 @@ </filter> <logging> <log type="coverage-text" target="php://stdout" showUncoveredFiles="true"/> - <log type="coverage-html" target="build/coverage" title="PHP Coveralls" charset="UTF-8" yui="true" highlight="true" lowUpperBound="35" highLowerBound="70"/> + <log type="coverage-html" target="build/coverage" lowUpperBound="35" highLowerBound="70"/> <log type="coverage-clover" target="build/logs/clover.xml"/> </logging> </phpunit> diff --git a/psalm.xml b/psalm.xml index 1cdd446a50fd28975dc53ae6ef2d4a659e5d9f57..065e7d06badc624dbd4e8202e923bf7d8a9bdf55 100644 --- a/psalm.xml +++ b/psalm.xml @@ -4,7 +4,6 @@ useDocblockTypes="true" totallyTyped="false" hideExternalErrors="true" - allowCoercionFromStringToClassConst="true" allowStringToStandInForClass="true" > <projectFiles> @@ -23,9 +22,8 @@ <directory name="tests" /> - <!-- Ignore deprecated classes --> + <!-- Ignore certain directories --> <ignoreFiles> - <directory name="tests/Utils/Stubs" /> <directory name="vendor" /> </ignoreFiles> </projectFiles> diff --git a/tests/SigningTestCase.php b/tests/SigningTestCase.php index 75ff8c43df1f441c34f339e0276f3896a58f0cb4..e6b279f5cd862d15874f541193620b534facb7fa 100644 --- a/tests/SigningTestCase.php +++ b/tests/SigningTestCase.php @@ -191,7 +191,7 @@ NOWDOC; /** * @return void */ - public function setUp() + public function setUp(): void { $this->root = vfsStream::setup( self::ROOTDIRNAME, @@ -217,7 +217,7 @@ NOWDOC; /** * @return void */ - public function tearDown() + public function tearDown(): void { $this->clearInstance($this->config, Configuration::class, []); } diff --git a/tests/Utils/ClearStateTestCase.php b/tests/Utils/ClearStateTestCase.php index aeed53ab74a7aca6d5c7c122620de3f94b8db6a7..0abe90fa4f0581af0dcc2f6f98cf75c4b87cdf4e 100644 --- a/tests/Utils/ClearStateTestCase.php +++ b/tests/Utils/ClearStateTestCase.php @@ -21,7 +21,7 @@ class ClearStateTestCase extends TestCase /** * @return void */ - public static function setUpBeforeClass() + public static function setUpBeforeClass(): void { if (!self::$stateClearer) { self::$stateClearer = new StateClearer(); @@ -33,7 +33,7 @@ class ClearStateTestCase extends TestCase /** * @return void */ - protected function setUp() + protected function setUp(): void { self::clearState(); } @@ -42,7 +42,7 @@ class ClearStateTestCase extends TestCase /** * @return void */ - public static function tearDownAfterClass() + public static function tearDownAfterClass(): void { self::clearState(); } diff --git a/tests/lib/AutoloadModulesTest.php b/tests/lib/AutoloadModulesTest.php deleted file mode 100644 index 57f26304ff1ee1131033cec7646fea8adc35578f..0000000000000000000000000000000000000000 --- a/tests/lib/AutoloadModulesTest.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php - -declare(strict_types=1); - -namespace SimpleSAML\Test; - -use PHPUnit\Framework\TestCase; -use SimpleSAML\Configuration; - -class AutoloadModulesTest extends TestCase -{ - /** - * Set up for each test. - * @return void - */ - protected function setUp() - { - parent::setUp(); - $config = Configuration::loadFromArray([], '[ARRAY]', 'simplesaml'); - } - - /** - * @test - * @runInSeparateProcess - * @return void - */ - public function autoloaderDoesNotRecurseInfinitely() - { - $this->assertFalse(class_exists('NonExisting\\ClassThatHasNothing\\ToDoWithXMLSec\\Library', true)); - } - - /** - * @test - * @return void - */ - public function autoloaderSubstitutesNamespacedXmlSecClassesWhereNonNamespacedClassWasUsed() - { - $this->assertTrue(class_exists('XMLSecEnc', true)); - } -} diff --git a/tests/lib/SimpleSAML/Auth/TimeLimitedTokenTest.php b/tests/lib/SimpleSAML/Auth/TimeLimitedTokenTest.php deleted file mode 100644 index d955c552fa4d9c56143417b9f3834064452edc0c..0000000000000000000000000000000000000000 --- a/tests/lib/SimpleSAML/Auth/TimeLimitedTokenTest.php +++ /dev/null @@ -1,85 +0,0 @@ -<?php - -declare(strict_types=1); - -namespace SimpleSAML\Test\Auth; - -use SimpleSAML\Auth\TimeLimitedToken; - -class TimeLimitedTokenTest extends \SimpleSAML\Test\Utils\ClearStateTestCase -{ - /** - * Test for malformed tokens. - * @return void - */ - public function testMalformedToken() - { - \SimpleSAML\Configuration::loadFromArray(['secretsalt' => 'random'], '[ARRAY]', 'simplesaml'); - - $token = new TimeLimitedToken(); - $this->assertFalse($token->validate('malformed')); - $this->assertFalse($token->validate('mal-for-med')); - $this->assertFalse($token->validate('mal-formed')); - } - - - /** - * Basic test to see if validation works for valid tokens. - * @return void - */ - public function testValidToken() - { - \SimpleSAML\Configuration::loadFromArray(['secretsalt' => 'random'], '[ARRAY]', 'simplesaml'); - - $token = new TimeLimitedToken(); - $t = $token->generate(); - $this->assertTrue($token->validate($t)); - } - - - /** - * Test that token validation takes the verification data into account. - * @return void - */ - public function testValidTokenWithData() - { - \SimpleSAML\Configuration::loadFromArray(['secretsalt' => 'random'], '[ARRAY]', 'simplesaml'); - - $tokenWithData = new TimeLimitedToken(); - $tokenWithData->addVerificationData('some more random data'); - $t = $tokenWithData->generate(); - $this->assertTrue($tokenWithData->validate($t)); - - $tokenWithoutData = new TimeLimitedToken(); - $this->assertFalse($tokenWithoutData->validate($t)); - } - - - /** - * Test that expired tokens are rejected. - * @return void - */ - public function testExpiredToken() - { - \SimpleSAML\Configuration::loadFromArray(['secretsalt' => 'random'], '[ARRAY]', 'simplesaml'); - - $token = new TimeLimitedToken(); - $this->assertFalse($token->validate('7-c0803e76fff1df0ceb222dee80aa1d73f35d84dd')); - } - - - /** - * Test that a token that has been manipulated to extend its validity is rejected. - * @return void - */ - public function testManipulatedToken() - { - \SimpleSAML\Configuration::loadFromArray(['secretsalt' => 'random'], '[ARRAY]', 'simplesaml'); - - $token = new TimeLimitedToken(1); - $t = $token->generate(); - list($offset, $hash) = explode('-', $t); - sleep(1); - $this->assertFalse($token->validate(dechex(hexdec($offset) + 1).'-'.$hash)); - } -} diff --git a/tests/lib/SimpleSAML/ConfigurationTest.php b/tests/lib/SimpleSAML/ConfigurationTest.php index 528709ccb9219fcea9db978dbee7a7d160ff0d0d..63f59f9d37111980ddc98d25909e0ddc908a551d 100644 --- a/tests/lib/SimpleSAML/ConfigurationTest.php +++ b/tests/lib/SimpleSAML/ConfigurationTest.php @@ -548,60 +548,6 @@ class ConfigurationTest extends \SimpleSAML\Test\Utils\ClearStateTestCase } - /** - * Test \SimpleSAML\Configuration::getConfigList() - * @return void - */ - public function testGetConfigList() - { - $c = Configuration::loadFromArray([ - 'opts' => [ - 'a' => ['opt1' => 'value1'], - 'b' => ['opt2' => 'value2'], - ], - ]); - $this->assertEquals($c->getConfigList('missing_opt'), []); - $opts = $c->getConfigList('opts'); - $this->assertInternalType('array', $opts); - $this->assertEquals(array_keys($opts), ['a', 'b']); - $this->assertInstanceOf(Configuration::class, $opts['a']); - $this->assertEquals($opts['a']->getValue('opt1'), 'value1'); - $this->assertInstanceOf(Configuration::class, $opts['b']); - $this->assertEquals($opts['b']->getValue('opt2'), 'value2'); - } - - - /** - * Test \SimpleSAML\Configuration::getConfigList() wrong option - * @return void - */ - public function testGetConfigListWrong() - { - $this->expectException(\Exception::class); - $c = Configuration::loadFromArray([ - 'opt' => 'not_an_array', - ]); - $c->getConfigList('opt'); - } - - - /** - * Test \SimpleSAML\Configuration::getConfigList() with an array of wrong options. - * @return void - */ - public function testGetConfigListWrongArrayValues() - { - $this->expectException(\Exception::class); - $c = Configuration::loadFromArray([ - 'opts' => [ - 'a', - 'b', - ], - ]); - $c->getConfigList('opts'); - } - - /** * Test \SimpleSAML\Configuration::getOptions() * @return void @@ -780,16 +726,6 @@ class ConfigurationTest extends \SimpleSAML\Test\Utils\ClearStateTestCase )); } - // now make sure SingleSignOnService, SingleLogoutService and ArtifactResolutionService works fine - $a['metadata-set'] = 'shib13-idp-remote'; - $c = Configuration::loadFromArray($a); - $this->assertEquals( - [ - 'Location' => 'https://example.com/sso', - 'Binding' => 'urn:mace:shibboleth:1.0:profiles:AuthnRequest', - ], - $c->getDefaultEndpoint('SingleSignOnService') - ); $a['metadata-set'] = 'saml20-idp-remote'; $c = Configuration::loadFromArray($a); $this->assertEquals( @@ -807,18 +743,6 @@ class ConfigurationTest extends \SimpleSAML\Test\Utils\ClearStateTestCase $c->getDefaultEndpoint('SingleLogoutService') ); - // test for old shib1.3 AssertionConsumerService - $a['metadata-set'] = 'shib13-sp-remote'; - $a['AssertionConsumerService'] = 'https://example.com/endpoint.php'; - $c = Configuration::loadFromArray($a); - $this->assertEquals( - [ - 'Location' => 'https://example.com/endpoint.php', - 'Binding' => 'urn:oasis:names:tc:SAML:1.0:profiles:browser-post', - ], - $c->getDefaultEndpoint('AssertionConsumerService') - ); - // test for no valid endpoints specified $a['SingleLogoutService'] = [ [ diff --git a/tests/lib/SimpleSAML/DatabaseTest.php b/tests/lib/SimpleSAML/DatabaseTest.php index 47c253b60eb0d3ca3930d04f07e66ecdeb71aef0..eea953043b25098d6a3eda157fcd0bbe419a78a7 100644 --- a/tests/lib/SimpleSAML/DatabaseTest.php +++ b/tests/lib/SimpleSAML/DatabaseTest.php @@ -5,6 +5,9 @@ declare(strict_types=1); namespace SimpleSAML\Test; use PHPUnit\Framework\TestCase; +use ReflectionClass; +use ReflectionMethod; +use ReflectionProperty; use SimpleSAML\Configuration; use SimpleSAML\Database; @@ -55,7 +58,7 @@ class DatabaseTest extends TestCase * @covers SimpleSAML\Database::connect * @return void */ - public function setUp() + public function setUp(): void { $config = [ 'database.dsn' => 'sqlite::memory:', @@ -73,9 +76,6 @@ class DatabaseTest extends TestCase $this->assertEquals($config['database.dsn'], $this->config->getString('database.dsn')); $this->db = Database::getInstance($this->config); - - // Ensure that we have a functional database class. - $this->assertInstanceOf(Database::class, $this->db); } @@ -184,9 +184,13 @@ class DatabaseTest extends TestCase */ public function slaves() { - $getSlave = self::getMethod('getSlave'); + $ref = new ReflectionClass($this->db); + $dbMaster = $ref->getProperty('dbMaster'); + $dbMaster->setAccessible(true); + $master = spl_object_hash($dbMaster->getValue($this->db)); - $master = spl_object_hash(\PHPUnit\Framework\Assert::readAttribute($this->db, 'dbMaster')); + $getSlave = $ref->getMethod('getSlave'); + $getSlave->setAccessible(true); $slave = spl_object_hash($getSlave->invokeArgs($this->db, [])); $this->assertTrue(($master == $slave), "getSlave should have returned the master database object"); @@ -209,7 +213,13 @@ class DatabaseTest extends TestCase $sspConfiguration = new Configuration($config, "test/SimpleSAML/DatabaseTest.php"); $msdb = Database::getInstance($sspConfiguration); - $slaves = \PHPUnit\Framework\Assert::readAttribute($msdb, 'dbSlaves'); + $ref = new ReflectionClass($msdb); + $dbSlaves = $ref->getProperty('dbSlaves'); + $dbSlaves->setAccessible(true); + $slaves = $dbSlaves->getValue($msdb); + + $getSlave = $ref->getMethod('getSlave'); + $getSlave->setAccessible(true); $gotSlave = spl_object_hash($getSlave->invokeArgs($msdb, [])); $this->assertEquals( @@ -252,7 +262,6 @@ class DatabaseTest extends TestCase "CREATE TABLE IF NOT EXISTS $table (ssp_key INT(16) NOT NULL, ssp_value TEXT NOT NULL)" ); - /** @var \PDOStatement $query1 */ $query1 = $this->db->read("SELECT * FROM $table"); $this->assertEquals(0, $query1->fetch(), "Table $table is not empty when it should be."); @@ -264,7 +273,6 @@ class DatabaseTest extends TestCase ); $this->assertEquals(1, $stmt, "Could not insert data into $table."); - /** @var \PDOStatement $query2 */ $query2 = $this->db->read("SELECT * FROM $table WHERE ssp_key = :ssp_key", ['ssp_key' => $ssp_key]); $data = $query2->fetch(); $this->assertEquals($data['ssp_value'], $ssp_value, "Inserted data doesn't match what is in the database"); @@ -303,7 +311,7 @@ class DatabaseTest extends TestCase /** * @return void */ - public function tearDown() + public function tearDown(): void { $table = $this->db->applyPrefix("sspdbt"); $this->db->write("DROP TABLE IF EXISTS $table"); diff --git a/tests/lib/SimpleSAML/Locale/LocalizationTest.php b/tests/lib/SimpleSAML/Locale/LocalizationTest.php index 12b036eaeaf5b9ed29dbcde9ce03f8b57d6754d4..914dbc248b22a0f11c6bd4ab57c7498becd871f4 100644 --- a/tests/lib/SimpleSAML/Locale/LocalizationTest.php +++ b/tests/lib/SimpleSAML/Locale/LocalizationTest.php @@ -13,7 +13,7 @@ class LocalizationTest extends TestCase /** * @return void */ - protected function setUp() + protected function setUp(): void { // Localization/Language code attempts to load a cookie, and looks in the config for a name of the cookie Configuration::loadFromArray([], '[ARRAY]', 'simplesaml'); diff --git a/tests/lib/SimpleSAML/Locale/TranslateTest.php b/tests/lib/SimpleSAML/Locale/TranslateTest.php index 1e6cef3c3a5246fb2992bbe0a6e3d07d62ddd108..3ff26ff0c2bd774f11a6aff790e318f90fbae074 100644 --- a/tests/lib/SimpleSAML/Locale/TranslateTest.php +++ b/tests/lib/SimpleSAML/Locale/TranslateTest.php @@ -21,23 +21,4 @@ class TranslateTest extends TestCase $testString = 'Blablabla'; $this->assertEquals($testString, $t->noop($testString)); } - - - /** - * Test SimpleSAML\Locale\Translate::t(). - * @return void - */ - public function testTFallback() - { - $c = \SimpleSAML\Configuration::loadFromArray([]); - $t = new Translate($c); - $testString = 'Blablabla'; - - // $fallbackdefault = true - $result = 'not translated (' . $testString . ')'; - $this->assertEquals($result, $t->t($testString)); - - // $fallbackdefault = false, should be a noop - $this->assertEquals($testString, $t->t($testString, [], false)); - } } diff --git a/tests/lib/SimpleSAML/Metadata/SAMLBuilderTest.php b/tests/lib/SimpleSAML/Metadata/SAMLBuilderTest.php index fe5e3fcb39f47f191119030055f5128ae9e47171..2c9b74d9890e2bc85a957e33bc9e0a97bc0f103e 100644 --- a/tests/lib/SimpleSAML/Metadata/SAMLBuilderTest.php +++ b/tests/lib/SimpleSAML/Metadata/SAMLBuilderTest.php @@ -90,76 +90,6 @@ class SAMLBuilderTest extends TestCase $this->assertEquals($metadata['attributes'][$keys[$c]], $curAttribute->getAttribute("Name")); $this->assertEquals($keys[$c], $curAttribute->getAttribute("FriendlyName")); } - - // test SP13 array parsing, no friendly name - $set = 'shib13-sp-remote'; - $metadata = [ - 'entityid' => $entityId, - 'name' => ['en' => 'Test SP'], - 'metadata-set' => $set, - 'attributes' => [ - 'urn:oid:1.3.6.1.4.1.5923.1.1.1.10', - 'urn:oid:1.3.6.1.4.1.5923.1.1.1.6', - 'urn:oid:0.9.2342.19200300.100.1.3', - 'urn:oid:2.5.4.3', - ], - ]; - - $samlBuilder = new SAMLBuilder($entityId); - $samlBuilder->addMetadata($set, $metadata); - - $spDesc = $samlBuilder->getEntityDescriptor(); - /** @var \DOMNodeList $acs */ - $acs = $spDesc->getElementsByTagName("AttributeConsumingService"); - $this->assertEquals(1, $acs->length); - - /** @psalm-var \DOMElement $first */ - $first = $acs->item(0); - $attributes = $first->getElementsByTagName("RequestedAttribute"); - $this->assertEquals(4, $attributes->length); - for ($c = 0; $c < $attributes->length; $c++) { - /** @psalm-var \DOMElement $curAttribute */ - $curAttribute = $attributes->item($c); - $this->assertTrue($curAttribute->hasAttribute("Name")); - $this->assertFalse($curAttribute->hasAttribute("FriendlyName")); - $this->assertEquals($metadata['attributes'][$c], $curAttribute->getAttribute("Name")); - } - - // test SP20 array parsing, no friendly name - $set = 'shib13-sp-remote'; - $metadata = [ - 'entityid' => $entityId, - 'name' => ['en' => 'Test SP'], - 'metadata-set' => $set, - 'attributes' => [ - 'eduPersonTargetedID' => 'urn:oid:1.3.6.1.4.1.5923.1.1.1.10', - 'eduPersonPrincipalName' => 'urn:oid:1.3.6.1.4.1.5923.1.1.1.6', - 'eduPersonOrgDN' => 'urn:oid:0.9.2342.19200300.100.1.3', - 'cn' => 'urn:oid:2.5.4.3', - ], - ]; - - $samlBuilder = new SAMLBuilder($entityId); - $samlBuilder->addMetadata($set, $metadata); - - $spDesc = $samlBuilder->getEntityDescriptor(); - /** @var \DOMNodeList $acs */ - $acs = $spDesc->getElementsByTagName("AttributeConsumingService"); - $this->assertEquals(1, $acs->length); - - /** @psalm-var \DOMElement $first */ - $first = $acs->item(0); - $attributes = $first->getElementsByTagName("RequestedAttribute"); - $this->assertEquals(4, $attributes->length); - $keys = array_keys($metadata['attributes']); - for ($c = 0; $c < $attributes->length; $c++) { - /** @psalm-var \DOMElement $curAttribute */ - $curAttribute = $attributes->item($c); - $this->assertTrue($curAttribute->hasAttribute("Name")); - $this->assertTrue($curAttribute->hasAttribute("FriendlyName")); - $this->assertEquals($metadata['attributes'][$keys[$c]], $curAttribute->getAttribute("Name")); - $this->assertEquals($keys[$c], $curAttribute->getAttribute("FriendlyName")); - } } diff --git a/tests/lib/SimpleSAML/Metadata/SAMLParserTest.php b/tests/lib/SimpleSAML/Metadata/SAMLParserTest.php index b538cafde63581e50f86d1ae8bfc1375539c794f..279990d53c4fb4f114b890d480964a6e4e432f44 100644 --- a/tests/lib/SimpleSAML/Metadata/SAMLParserTest.php +++ b/tests/lib/SimpleSAML/Metadata/SAMLParserTest.php @@ -178,100 +178,6 @@ XML } - /** - * @param string $algo - * @param string $expected_fingerprint - * @return void - */ - private function validateFingerprint(string $algo, string $expected_fingerprint) - { - $doc = $this->makeTestDocument(); - $entities = \SimpleSAML\Metadata\SAMLParser::parseDescriptorsElement($doc->documentElement); - foreach ($entities as $entity) { - $this->assertTrue( - $entity->validateFingerprint($expected_fingerprint, $algo) - ); - } - } - - - /** - * @return void - */ - public function testValidateFingerprintSHA1() - { - $this->validateFingerprint( - XMLSecurityDSig::SHA1, - 'A7:FB:75:22:57:88:A1:B0:D0:29:0A:4B:D1:EA:0C:01:F8:98:44:A0' - ); - } - - - /** - * @return void - */ - public function testValidateFingerprintSHA256() - { - $this->validateFingerprint( - XMLSecurityDSig::SHA256, - '3E:04:6B:2C:13:B5:02:FB:FC:93:66:EE:6C:A3:D1:BB:B8:9E:D8:38:03' . - ':96:C5:C0:EC:95:D5:C9:F6:C1:D5:FC' - ); - } - - - /** - * @return void - */ - public function testValidateFingerprintSHA384() - { - $this->validateFingerprint( - XMLSecurityDSig::SHA384, - '38:87:CC:59:54:CF:ED:FC:71:B6:21:F3:8A:52:76:EF:30:C8:8C:A0:38' . - ':48:77:87:58:14:A0:B3:55:EF:48:9C:B4:B3:44:1F:B7:BB:FC:28:65' . - ':6E:93:83:52:C2:8E:A6' - ); - } - - - /** - * @return void - */ - public function testValidateFingerprintSHA512() - { - $this->validateFingerprint( - XMLSecurityDSig::SHA512, - '72:6C:51:01:A1:E9:76:D8:61:C4:B2:4F:AC:0B:64:7D:0D:4E:B7:DC:B3' . - ':4A:92:23:51:A6:DC:A5:A1:9A:A5:DD:43:F5:05:6A:B7:7D:83:1F:B6:' . - 'CC:68:54:54:54:37:1B:EC:E1:22:5A:48:C6:BC:67:4B:A6:78:EE:E0:C6:8C:59' - ); - } - - - /** - * @return void - */ - public function testValidateFingerprintUnknownAlgorithmThrows() - { - $doc = $this->makeTestDocument(); - $entities = \SimpleSAML\Metadata\SAMLParser::parseDescriptorsElement($doc->documentElement); - foreach ($entities as $entity) { - try { - $entity->validateFingerprint('unused', 'invalid_algorithm'); - } catch (\UnexpectedValueException $e) { - $this->assertEquals( - 'Unsupported hashing function invalid_algorithm. Known options: [' . - 'http://www.w3.org/2000/09/xmldsig#sha1, ' . - 'http://www.w3.org/2001/04/xmlenc#sha256, ' . - 'http://www.w3.org/2001/04/xmldsig-more#sha384, ' . - 'http://www.w3.org/2001/04/xmlenc#sha512]', - $e->getMessage() - ); - } - } - } - - /** * Test RoleDescriptor/Extensions is parsed * @return void diff --git a/tests/lib/SimpleSAML/SessionHandlerPHPTest.php b/tests/lib/SimpleSAML/SessionHandlerPHPTest.php index c0b71a489ee7923d407736bf781fd20369837bfe..ff47cd55a7b8a8c3c183c0af9c491bd072fe22a9 100644 --- a/tests/lib/SimpleSAML/SessionHandlerPHPTest.php +++ b/tests/lib/SimpleSAML/SessionHandlerPHPTest.php @@ -28,7 +28,7 @@ class SessionHandlerPHPTest extends ClearStateTestCase /** * @return void */ - protected function setUp() + protected function setUp(): void { $this->original = $_SERVER; $_SERVER['HTTP_HOST'] = 'example.com'; @@ -42,7 +42,7 @@ class SessionHandlerPHPTest extends ClearStateTestCase /** * @return void */ - protected function tearDown() + protected function tearDown(): void { $_SERVER = $this->original; } @@ -75,7 +75,7 @@ class SessionHandlerPHPTest extends ClearStateTestCase $sh->setCookie('SimpleSAMLSessionID', '1'); $headers = xdebug_get_headers(); - $this->assertContains('SimpleSAML=1;', $headers[0]); + $this->assertStringContainsString('SimpleSAML=1;', $headers[0]); $this->assertRegExp('/\b[Ee]xpires=([Mm]on|[Tt]ue|[Ww]ed|[Tt]hu|[Ff]ri|[Ss]at|[Ss]un)/', $headers[0]); $this->assertRegExp('/\b[Pp]ath=\/ourPath(;|$)/', $headers[0]); $this->assertRegExp('/\b[Dd]omain=example.com(;|$)/', $headers[0]); @@ -101,7 +101,7 @@ class SessionHandlerPHPTest extends ClearStateTestCase $sh->setCookie('SimpleSAMLSessionID', 'None'); $headers = xdebug_get_headers(); - $this->assertContains('SimpleSAML=None;', $headers[0]); + $this->assertStringContainsString('SimpleSAML=None;', $headers[0]); $this->assertRegExp('/\b[Ss]ame[Ss]ite=None(;|$)/', $headers[0]); } @@ -123,7 +123,7 @@ class SessionHandlerPHPTest extends ClearStateTestCase $sh->setCookie('SimpleSAMLSessionID', 'Lax'); $headers = xdebug_get_headers(); - $this->assertContains('SimpleSAML=Lax;', $headers[0]); + $this->assertStringContainsString('SimpleSAML=Lax;', $headers[0]); $this->assertRegExp('/\b[Ss]ame[Ss]ite=Lax(;|$)/', $headers[0]); } @@ -145,7 +145,7 @@ class SessionHandlerPHPTest extends ClearStateTestCase $sh->setCookie('SimpleSAMLSessionID', 'Strict'); $headers = xdebug_get_headers(); - $this->assertContains('SimpleSAML=Strict;', $headers[0]); + $this->assertStringContainsString('SimpleSAML=Strict;', $headers[0]); $this->assertRegExp('/\b[Ss]ame[Ss]ite=Strict(;|$)/', $headers[0]); } @@ -169,9 +169,9 @@ class SessionHandlerPHPTest extends ClearStateTestCase $sh->restorePrevious(); $headers = xdebug_get_headers(); - $this->assertContains('PHPSESSID=' . $sid, $headers[0]); - $this->assertContains('SimpleSAML=Restore;', $headers[1]); - $this->assertContains('PHPSESSID=' . $sid, $headers[2]); + $this->assertStringContainsString('PHPSESSID=' . $sid, $headers[0]); + $this->assertStringContainsString('SimpleSAML=Restore;', $headers[1]); + $this->assertStringContainsString('PHPSESSID=' . $sid, $headers[2]); $this->assertEquals($headers[0], $headers[2]); } diff --git a/tests/lib/SimpleSAML/Store/RedisTest.php b/tests/lib/SimpleSAML/Store/RedisTest.php index 44ab5215e6d58c1c63c97c3fa47ee08537c3e530..915934493c82414d82317a3163b45b4c1497eb49 100644 --- a/tests/lib/SimpleSAML/Store/RedisTest.php +++ b/tests/lib/SimpleSAML/Store/RedisTest.php @@ -20,7 +20,7 @@ use SimpleSAML\Store; */ class RedisTest extends TestCase { - /** @var \PHPUnit_Framework_MockObject_MockObject */ + /** @var \PHPUnit\Framework\MockObject\MockObject */ protected $mocked_redis; /** @var \SimpleSAML\Store\Redis */ @@ -33,7 +33,7 @@ class RedisTest extends TestCase /** * @return void */ - protected function setUp() + protected function setUp(): void { $this->config = []; @@ -42,19 +42,15 @@ class RedisTest extends TestCase ->disableOriginalConstructor() ->getMock(); - /** @psalm-suppress UndefinedMethod Remove when Psalm 3.x is in place */ $this->mocked_redis->method('get') ->will($this->returnCallback([$this, 'getMocked'])); - /** @psalm-suppress UndefinedMethod Remove when Psalm 3.x is in place */ $this->mocked_redis->method('set') ->will($this->returnCallback([$this, 'setMocked'])); - /** @psalm-suppress UndefinedMethod Remove when Psalm 3.x is in place */ $this->mocked_redis->method('setex') ->will($this->returnCallback([$this, 'setexMocked'])); - /** @psalm-suppress UndefinedMethod Remove when Psalm 3.x is in place */ $this->mocked_redis->method('del') ->will($this->returnCallback([$this, 'delMocked'])); @@ -62,7 +58,6 @@ class RedisTest extends TestCase return; }; - /** @psalm-suppress UndefinedMethod Remove when Psalm 3.x is in place */ $this->mocked_redis->method('disconnect') ->will($this->returnCallback($nop)); diff --git a/tests/lib/SimpleSAML/Store/SQLTest.php b/tests/lib/SimpleSAML/Store/SQLTest.php index a2ebb848e540f7136132e59d28ca0f4ebadfa4dc..485cd272986dd67442266dea1ed64fa277c5d1e7 100644 --- a/tests/lib/SimpleSAML/Store/SQLTest.php +++ b/tests/lib/SimpleSAML/Store/SQLTest.php @@ -23,7 +23,7 @@ class SQLTest extends TestCase /** * @return void */ - protected function setUp() + protected function setUp(): void { Configuration::loadFromArray([ 'store.type' => 'sql', @@ -43,7 +43,7 @@ class SQLTest extends TestCase { $store = Store::getInstance(); - $this->assertInstanceOf('SimpleSAML\Store\SQL', $store); + $this->assertInstanceOf(Store\SQL::class, $store); } @@ -199,7 +199,7 @@ class SQLTest extends TestCase /** * @return void */ - protected function tearDown() + protected function tearDown(): void { $config = Configuration::getInstance(); diff --git a/tests/lib/SimpleSAML/StoreTest.php b/tests/lib/SimpleSAML/StoreTest.php index 672b4b20536583490cc6f51af65661dc663b0ad5..1b4cfd1e6d58185aa4f06fe082d961f63a7d0d77 100644 --- a/tests/lib/SimpleSAML/StoreTest.php +++ b/tests/lib/SimpleSAML/StoreTest.php @@ -129,7 +129,7 @@ class StoreTest extends TestCase /** * @return void */ - protected function tearDown() + protected function tearDown(): void { $config = Configuration::getInstance(); /** @var \SimpleSAML\Store $store */ diff --git a/tests/lib/SimpleSAML/Utils/AttributesTest.php b/tests/lib/SimpleSAML/Utils/AttributesTest.php index 42ae15c35789ab3c12a12e7e15b881b86c5e9c22..c8221982974a3ad39400e81296009218f52e2d70 100644 --- a/tests/lib/SimpleSAML/Utils/AttributesTest.php +++ b/tests/lib/SimpleSAML/Utils/AttributesTest.php @@ -15,44 +15,6 @@ use SimpleSAML\Utils\Attributes; */ class AttributesTest extends TestCase { - /** - * Test the getExpectedAttribute() method with invalid attributes array. - * @return void - * @psalm-suppress InvalidArgument - * @deprecated Can be removed as soon as the codebase is fully typehinted - */ - public function testGetExpectedAttributeInvalidAttributesArray() - { - // check with empty array as input - $attributes = 'string'; - $expected = 'string'; - $this->expectException(InvalidArgumentException::class); - $this->expectExceptionMessage( - 'The attributes array is not an array, it is: ' . print_r($attributes, true) . '.' - ); - Attributes::getExpectedAttribute($attributes, $expected); - } - - - /** - * Test the getExpectedAttributeMethod() method with invalid expected attribute parameter. - * @deprecated Remove this test as soon as the codebase is fully typehinted - * @psalm-suppress PossiblyFalseArgument - * @return void - */ - public function testGetExpectedAttributeInvalidAttributeName() - { - // check with invalid attribute name - $attributes = []; - $expected = false; - $this->expectException(InvalidArgumentException::class); - $this->expectExceptionMessage( - 'The expected attribute is not a string, it is: ' . print_r($expected, true) . '.' - ); - Attributes::getExpectedAttribute($attributes, $expected); - } - - /** * Test the getExpectedAttributeMethod() method with a non-normalized attributes array. * @return void @@ -152,19 +114,6 @@ class AttributesTest extends TestCase } - /** - * Test the normalizeAttributesArray() function with input not being an array - * @return void - * @psalm-suppress InvalidArgument - * @deprecated Can be removed as soon as the codebase is fully typehinted - */ - public function testNormalizeAttributesArrayBadInput() - { - $this->expectException(InvalidArgumentException::class); - Attributes::normalizeAttributesArray('string'); - } - - /** * Test the normalizeAttributesArray() function with an array with non-string attribute names. * @return void diff --git a/tests/lib/SimpleSAML/Utils/CryptoTest.php b/tests/lib/SimpleSAML/Utils/CryptoTest.php index f0d28123b5606caa2cb588834c21cfd29ba869ee..122728ce77bb466b822146f7593b5595d9b5c356 100644 --- a/tests/lib/SimpleSAML/Utils/CryptoTest.php +++ b/tests/lib/SimpleSAML/Utils/CryptoTest.php @@ -31,7 +31,7 @@ class CryptoTest extends TestCase /** * @return void */ - public function setUp() + public function setUp(): void { $this->root = vfsStream::setup( self::ROOTDIRNAME, @@ -144,67 +144,6 @@ PHP; } - /** - * @covers \SimpleSAML\Utils\Crypto::pwHash - * @deprecated To be removed for 2.0 - * @return void - */ - public function testGoodPwHash() - { - $pw = "password"; - $algorithm = "SHA1"; - - $res = Crypto::pwHash($pw, $algorithm); - - /* - * echo -n "password" | sha1sum | awk -F " " '{print $1}' | xxd -r -p | base64 - * W6ph5Mm5Pz8GgiULbPgzG37mj9g= - */ - $expected = "{SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g="; - - $this->assertEquals($expected, $res); - } - - - /** - * @covers \SimpleSAML\Utils\Crypto::pwHash - * @deprecated To be removed for 2.0 - * @return void - */ - public function testGoodSaltedPwHash() - { - $pw = "password"; - $algorithm = "SSHA1"; - $salt = "salt"; - - $res = Crypto::pwHash($pw, $algorithm, $salt); - - /* - * echo -n "password""salt" | sha1sum | awk -v salt=$(echo -n "salt" | xxd -u -p) - * -F " " '{print $1 salt}' | xxd -r -p | base64 yI6cZwQadOA1e+/f+T+H3eCQQhRzYWx0 - */ - $expected = "{SSHA}yI6cZwQadOA1e+/f+T+H3eCQQhRzYWx0"; - - $this->assertEquals($expected, $res); - } - - - /** - * @deprecated To be removed for 2.0 - * - * @covers \SimpleSAML\Utils\Crypto::pwHash - * @return void - */ - public function testBadHashAlgorithm() - { - $this->expectException(\SimpleSAML\Error\Exception::class); - $pw = "password"; - $algorithm = "wtf"; - - Crypto::pwHash($pw, $algorithm); - } - - /** * @covers \SimpleSAML\Utils\Crypto::pwValid * @return void @@ -236,57 +175,6 @@ PHP; } - /** - * @covers \SimpleSAML\Utils\Crypto::pwValid - * @deprecated To be removed for 2.0 - * @return void - */ - public function testGoodPwValidOld() - { - $pw = "password"; - $algorithm = "SHA1"; - - $hash = Crypto::pwHash($pw, $algorithm); - $res = Crypto::pwValid($hash, $pw); - - $this->assertTrue($res); - } - - - /** - * @covers \SimpleSAML\Utils\Crypto::pwValid - * @deprecated To be removed for 2.0 - * @return void - */ - public function testGoodSaltedPwValid() - { - $pw = "password"; - $algorithm = "SSHA1"; - $salt = "salt"; - - $hash = Crypto::pwHash($pw, $algorithm, $salt); - $res = Crypto::pwValid($hash, $pw); - - $this->assertTrue($res); - } - - - /** - * @deprecated To be removed for 2.0 - * - * @covers \SimpleSAML\Utils\Crypto::pwValid - * @return void - */ - public function testBadHashAlgorithmValid() - { - $this->expectException(\SimpleSAML\Error\Exception::class); - $algorithm = "wtf"; - $hash = "{" . $algorithm . "}B64STRING"; - - Crypto::pwValid($hash, $algorithm); - } - - /** * @covers \SimpleSAML\Utils\Crypto::secureCompare * @return void @@ -457,79 +345,6 @@ PHP; } - /** - * @covers \SimpleSAML\Utils\Crypto::loadPublicKey - * @return void - */ - public function testLoadPublicKeyFingerprintBasicString() - { - $fingerprint = 'fingerprint'; - $config = new Configuration(['certFingerprint' => $fingerprint], 'test'); - - $res = Crypto::loadPublicKey($config); - $expected = ['certFingerprint' => [$fingerprint]]; - - $this->assertEquals($expected, $res); - } - - - /** - * @covers \SimpleSAML\Utils\Crypto::loadPublicKey - * @return void - */ - public function testLoadPublicKeyFingerprintBasicArray() - { - $fingerprint1 = 'fingerprint1'; - $fingerprint2 = 'fingerprint2'; - $config = new Configuration( - [ - 'certFingerprint' => [ - $fingerprint1, - $fingerprint2 - ], - ], - 'test' - ); - - $res = Crypto::loadPublicKey($config); - $expected = ['certFingerprint' => [$fingerprint1, $fingerprint2]]; - - $this->assertEquals($expected, $res); - } - - - /** - * @covers \SimpleSAML\Utils\Crypto::loadPublicKey - * @return void - */ - public function testLoadPublicKeyFingerprintLowercase() - { - $fingerprint = 'FINGERPRINT'; - $config = new Configuration(['certFingerprint' => $fingerprint], 'test'); - - $res = Crypto::loadPublicKey($config); - $expected = ['certFingerprint' => [strtolower($fingerprint)]]; - - $this->assertEquals($expected, $res); - } - - - /** - * @covers \SimpleSAML\Utils\Crypto::loadPublicKey - * @return void - */ - public function testLoadPublicKeyFingerprintRemoveColons() - { - $fingerprint = 'f:i:n:g:e:r:p:r:i:n:t'; - $config = new Configuration(['certFingerprint' => $fingerprint], 'test'); - - $res = Crypto::loadPublicKey($config); - $expected = ['certFingerprint' => [str_replace(':', '', $fingerprint)]]; - - $this->assertEquals($expected, $res); - } - - /** * @covers \SimpleSAML\Utils\Crypto::loadPublicKey * @return void diff --git a/tests/lib/SimpleSAML/Utils/EMailTest.php b/tests/lib/SimpleSAML/Utils/EMailTest.php index a7762655a7ab828a831401785c789074133b17d1..8dc6598b242bf1258487afac64a56d1353cbb42e 100644 --- a/tests/lib/SimpleSAML/Utils/EMailTest.php +++ b/tests/lib/SimpleSAML/Utils/EMailTest.php @@ -16,7 +16,7 @@ class EMailTest extends ClearStateTestCase /** * @return void */ - public function setUp() + public function setUp(): void { parent::setUp(); diff --git a/tests/lib/SimpleSAML/Utils/HTTPTest.php b/tests/lib/SimpleSAML/Utils/HTTPTest.php index 977fde1caf867ffa247a70f86da54801e14ac75d..4ee68e5f9f67b04d3a893583e9705ca96415ea63 100644 --- a/tests/lib/SimpleSAML/Utils/HTTPTest.php +++ b/tests/lib/SimpleSAML/Utils/HTTPTest.php @@ -37,32 +37,6 @@ class HTTPTest extends ClearStateTestCase } - /** - * Test SimpleSAML\Utils\HTTP::addURLParameters(). - * @return void - * @psalm-suppress InvalidArgument - * @deprecated Can be removed in 2.0 when codebase if fully typehinted - */ - public function testAddURLParametersInvalidURL() - { - $this->expectException(\InvalidArgumentException::class); - HTTP::addURLParameters([], []); - } - - - /** - * Test SimpleSAML\Utils\HTTP::addURLParameters(). - * @return void - * @psalm-suppress InvalidArgument - * @deprecated Can be removed in 2.0 when codebase if fully typehinted - */ - public function testAddURLParametersInvalidParameters() - { - $this->expectException(\InvalidArgumentException::class); - HTTP::addURLParameters('string', 'string'); - } - - /** * Test SimpleSAML\Utils\HTTP::addURLParameters(). * @return void @@ -499,14 +473,14 @@ class HTTPTest extends ClearStateTestCase ); $headers = xdebug_get_headers(); - $this->assertContains('TestCookie=value%2520;', $headers[0]); + $this->assertStringContainsString('TestCookie=value%2520;', $headers[0]); $this->assertRegExp('/\b[Ee]xpires=[Tt]ue/', $headers[0]); $this->assertRegExp('/\b[Pp]ath=\/ourPath(;|$)/', $headers[0]); $this->assertRegExp('/\b[Dd]omain=example.com(;|$)/', $headers[0]); $this->assertRegExp('/\b[Ss]ecure(;|$)/', $headers[0]); $this->assertRegExp('/\b[Hh]ttp[Oo]nly(;|$)/', $headers[0]); - $this->assertContains('RawCookie=value%20;', $headers[1]); + $this->assertStringContainsString('RawCookie=value%20;', $headers[1]); $this->assertRegExp('/\b[Ee]xpires=([Mm]on|[Tt]ue|[Ww]ed|[Tt]hu|[Ff]ri|[Ss]at|[Ss]un)/', $headers[1]); $this->assertRegExp('/\b[Pp]ath=\/ourPath(;|$)/', $headers[1]); $this->assertRegExp('/\b[Dd]omain=example.com(;|$)/', $headers[1]); diff --git a/tests/lib/SimpleSAML/Utils/SystemTest.php b/tests/lib/SimpleSAML/Utils/SystemTest.php index de126d6b9106299c30c71590e90f32eb77dbf635..5e60aa29294400d7ac9ee61f3a24289e8eb3e678 100644 --- a/tests/lib/SimpleSAML/Utils/SystemTest.php +++ b/tests/lib/SimpleSAML/Utils/SystemTest.php @@ -30,7 +30,7 @@ class SystemTest extends TestCase /** * @return void */ - public function setUp() + public function setUp(): void { $this->root = vfsStream::setup( self::ROOTDIRNAME, @@ -52,7 +52,7 @@ class SystemTest extends TestCase { $res = System::getOS(); - $this->assertInternalType("int", $res); + $this->assertIsInt($res); } @@ -158,21 +158,6 @@ class SystemTest extends TestCase } - /** - * @covers \SimpleSAML\Utils\System::writeFile - * @test - * @deprecated Test becomes obsolete as soon as the codebase is fully type hinted - * @return void - */ - public function testWriteFileInvalidArguments() - { - $this->expectException(InvalidArgumentException::class); - - /** @psalm-suppress NullArgument */ - System::writeFile(null, null, null); - } - - /** * @covers \SimpleSAML\Utils\System::writeFile * @test diff --git a/tests/lib/SimpleSAML/Utils/TimeTest.php b/tests/lib/SimpleSAML/Utils/TimeTest.php index 03f4e72a5793cb1d949b4ae3a1e1dd09d615b9d9..13817d424d84c5f23c13b882de53e48e9685c897 100644 --- a/tests/lib/SimpleSAML/Utils/TimeTest.php +++ b/tests/lib/SimpleSAML/Utils/TimeTest.php @@ -138,30 +138,6 @@ class TimeTest extends TestCase "Failure testing for 1 minute over current time." ); - // test invalid input parameters - try { - // invalid duration - /** - * @deprecated This test becomes useless as soon as the codebase is fully typehinted - * @psalm-suppress InvalidScalarArgument - */ - Time::parseDuration(0); - $this->fail("Did not fail with invalid duration parameter."); - } catch (\InvalidArgumentException $e) { - $this->assertEquals('Invalid input parameters', $e->getMessage()); - } - try { - // invalid timestamp - /** - * @deprecated This test becomes useless as soon as the codebase is fully typehinted - * @psalm-suppress InvalidArgument - */ - Time::parseDuration('', []); - $this->fail("Did not fail with invalid timestamp parameter."); - } catch (\InvalidArgumentException $e) { - $this->assertEquals('Invalid input parameters', $e->getMessage()); - } - // test invalid durations try { // invalid string diff --git a/tests/lib/SimpleSAML/Utils/XMLTest.php b/tests/lib/SimpleSAML/Utils/XMLTest.php index 7eb3a7919c13b895ca62da9dfda4ce4d8e88a3e6..7a552424faefd7b0af19124d58380fbdbc3f0b85 100644 --- a/tests/lib/SimpleSAML/Utils/XMLTest.php +++ b/tests/lib/SimpleSAML/Utils/XMLTest.php @@ -388,7 +388,7 @@ NOWDOC; $res = XML::isValid($xml, 'unused'); $expected = 'Failed to parse XML string for schema validation'; - $this->assertContains($expected, $res); + $this->assertStringContainsString($expected, $res); } diff --git a/tests/lib/SimpleSAML/XML/ParserTest.php b/tests/lib/SimpleSAML/XML/ParserTest.php index ae5a978aef52dd170ac2600852fa395b284afe72..aa709273f1bc8e9737f6468d087b81f260d6a105 100644 --- a/tests/lib/SimpleSAML/XML/ParserTest.php +++ b/tests/lib/SimpleSAML/XML/ParserTest.php @@ -31,7 +31,7 @@ XML; /** * @return void */ - protected function setUp() + protected function setUp(): void { $this->xml = new Parser(static::XMLDOC); } diff --git a/tests/lib/SimpleSAML/XML/Shib13/AuthnResponseTest.php b/tests/lib/SimpleSAML/XML/Shib13/AuthnResponseTest.php deleted file mode 100644 index a387c9e93e25f7b7199287c6d8c551e0b7883cea..0000000000000000000000000000000000000000 --- a/tests/lib/SimpleSAML/XML/Shib13/AuthnResponseTest.php +++ /dev/null @@ -1,124 +0,0 @@ -<?php - -declare(strict_types=1); - -/* - * This file is part of the sgomezsimpleshibphp. - * - * (c) Sergio Gómez <sergio@uco.es> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * @deprecated This class will be removed in a future release - */ - - -namespace SimpleSAML\Test\XML\Shib13; - -use PHPUnit\Framework\TestCase; -use SimpleSAML\XML\Shib13\AuthnResponse; - -class AuthnResponseTest extends TestCase -{ - const XMLDOC = <<< XML -<Response xmlns="urn:oasis:names:tc:SAML:1.0:protocol" - MajorVersion="1" MinorVersion="1" - ResponseID="" IssueInstant=""> - <Assertion xmlns="urn:oasis:names:tc:SAML:1.0:assertion" - AssertionID="" IssueInstant="" - MajorVersion="1" MinorVersion="1" - Issuer="Issuer" - > - <AuthenticationStatement AuthenticationInstant="" AuthenticationMethod=""> - <Subject> - <NameIdentifier Format="urn:mace:shibboleth:1.0:nameIdentifier">NameIdentifier</NameIdentifier> - </Subject> - </AuthenticationStatement> - </Assertion> -</Response> -XML; - - const BADXMLDOC = <<< XML -<Response xmlns="urn:oasis:names:tc:SAML:1.0:protocol" - MajorVersion="1" MinorVersion="1" - ResponseID="" IssueInstant=""> - <Assertion xmlns="urn:oasis:names:tc:SAML:1.0:assertion" - AssertionID="" IssueInstant="" - MajorVersion="1" MinorVersion="1" - > - <AuthenticationStatement AuthenticationInstant="" AuthenticationMethod=""> - <Subject> - <NameIdentifier Format="urn:mace:shibboleth:1.0:nameIdentifier">NameIdentifier</NameIdentifier> - </Subject> - </AuthenticationStatement> - </Assertion> -</Response> -XML; - - /** @var AuthnResponse */ - private $xml; - - - /** - * @return void - */ - protected function setUp() - { - $this->xml = new AuthnResponse(); - $this->xml->setXML(static::XMLDOC); - } - - - /** - * @covers \SimpleSAML\XML\Shib13\AuthnResponse::doXPathQuery - * @covers \SimpleSAML\XML\Shib13\AuthnResponse::getIssuer - * @covers \SimpleSAML\XML\Shib13\AuthnResponse::setXML - * @test - * @return void - */ - public function getIssuer() - { - $result = $this->xml->getIssuer(); - - $this->assertEquals( - 'Issuer', - $result - ); - } - - - /** - * @covers \SimpleSAML\XML\Shib13\AuthnResponse::getIssuer - * @covers \SimpleSAML\XML\Shib13\AuthnResponse::setXML - * @test - * @return void - */ - public function getIssuerException() - { - $this->expectException(\Exception::class); - $xml = new AuthnResponse(); - $xml->setXML(static::BADXMLDOC); - - $xml->getIssuer(); - } - - - /** - * @covers \SimpleSAML\XML\Shib13\AuthnResponse::getNameID - * @covers \SimpleSAML\XML\Shib13\AuthnResponse::setXML - * @test - * @return void - */ - public function getNameID() - { - $result = $this->xml->getNameID(); - - $this->assertEquals( - [ - 'Value' => 'NameIdentifier', - 'Format' => 'urn:mace:shibboleth:1.0:nameIdentifier', - ], - $result - ); - } -} diff --git a/tests/lib/SimpleSAML/XML/SignerTest.php b/tests/lib/SimpleSAML/XML/SignerTest.php index a2d157659a8f7ced60645b1f3961308cbcb8d787..b3383701405aa9ddf9f02d57f517188c9a319412 100644 --- a/tests/lib/SimpleSAML/XML/SignerTest.php +++ b/tests/lib/SimpleSAML/XML/SignerTest.php @@ -75,7 +75,7 @@ NOWDOC; { $res = new Signer([]); - $this->assertNotNull($res); + $this->addToAssertionCount(1); } @@ -99,8 +99,8 @@ NOWDOC; $res = $doc->saveXML(); - $this->assertContains('DigestValue', $res); - $this->assertContains('SignatureValue', $res); + $this->assertStringContainsString('DigestValue', $res); + $this->assertStringContainsString('SignatureValue', $res); } @@ -143,8 +143,8 @@ NOWDOC; $expected = self::getCertificateValue($this->good_certificate); - $this->assertContains('X509Certificate', $res); - $this->assertContains($expected, $res); + $this->assertStringContainsString('X509Certificate', $res); + $this->assertStringContainsString($expected, $res); } @@ -175,9 +175,9 @@ NOWDOC; $expected1 = self::getCertificateValue($this->good_certificate); $expected2 = self::getCertificateValue($this->other_certificate); - $this->assertContains('X509Certificate', $res); - $this->assertContains($expected1, $res); - $this->assertContains($expected2, $res); + $this->assertStringContainsString('X509Certificate', $res); + $this->assertStringContainsString($expected1, $res); + $this->assertStringContainsString($expected2, $res); } diff --git a/tests/lib/SimpleSAML/XML/ValidatorTest.php b/tests/lib/SimpleSAML/XML/ValidatorTest.php index 67a71d2374508349b219aba3024738cec38db742..c182cd88982e2632bf5329a48d76c2ee099fa725 100644 --- a/tests/lib/SimpleSAML/XML/ValidatorTest.php +++ b/tests/lib/SimpleSAML/XML/ValidatorTest.php @@ -59,113 +59,6 @@ class ValidatorTest extends SigningTestCase } - /** - * @return void - */ - public function testCertFingerprintSuccess() - { - $doc = new DOMDocument(); - $doc->loadXML('<?xml version="1.0"?><node>value</node>'); - - /** @psalm-var DOMElement $node */ - $node = $doc->getElementsByTagName('node')->item(0); - - $signature_parent = $doc->appendChild(new \DOMElement('signature_parent')); - - $signer = new Signer([]); - $signer->loadPrivateKey($this->good_private_key_file, null, true); - $signer->loadCertificate($this->good_certificate_file, true); - $signer->sign($node, $signature_parent); - - $fingerprint = openssl_x509_fingerprint($this->good_certificate); - - $validator = new Validator( - $doc, - 'node', - ['certFingerprint' => [$fingerprint]] - ); - - $this->assertInstanceOf(Validator::class, $validator); - } - - - /** - * @return void - */ - public function testCertFingerprintFailure() - { - $doc = new DOMDocument(); - $doc->loadXML('<?xml version="1.0"?><node>value</node>'); - - /** @psalm-var DOMElement $node */ - $node = $doc->getElementsByTagName('node')->item(0); - - $signature_parent = $doc->appendChild(new \DOMElement('signature_parent')); - - $signer = new Signer([]); - $signer->loadPrivateKey($this->good_private_key_file, null, true); - $signer->loadCertificate($this->good_certificate_file, true); - $signer->sign($node, $signature_parent); - - $this->expectException(\Exception::class); - new Validator($doc, 'node', ['certFingerprint' => []]); - } - - - /** - * @return void - */ - public function testValidateFingerprintSuccess() - { - $doc = new DOMDocument(); - $doc->loadXML('<?xml version="1.0"?><node>value</node>'); - - /** @psalm-var DOMElement $node */ - $node = $doc->getElementsByTagName('node')->item(0); - - $signature_parent = $doc->appendChild(new \DOMElement('signature_parent')); - - $signer = new Signer([]); - $signer->loadPrivateKey($this->good_private_key_file, null, true); - $signer->loadCertificate($this->good_certificate_file, true); - $signer->sign($node, $signature_parent); - - $fingerprint = openssl_x509_fingerprint($this->good_certificate); - - $validator = new Validator($doc, 'node'); - $validator->validateFingerprint($fingerprint); - - $this->assertInstanceOf(Validator::class, $validator); - } - - - /** - * @return void - */ - public function testValidateFingerprintFailure() - { - $doc = new DOMDocument(); - $doc->loadXML('<?xml version="1.0"?><node>value</node>'); - - /** @psalm-var DOMElement $node */ - $node = $doc->getElementsByTagName('node')->item(0); - - $signature_parent = $doc->appendChild(new \DOMElement('signature_parent')); - - $signer = new Signer([]); - $signer->loadPrivateKey($this->good_private_key_file, null, true); - $signer->loadCertificate($this->good_certificate_file, true); - $signer->sign($node, $signature_parent); - - $fingerprint = 'BAD FINGERPRINT'; - - $validator = new Validator($doc, 'node'); - - $this->expectException(\Exception::class); - $validator->validateFingerprint($fingerprint); - } - - /** * @return void */ @@ -225,16 +118,4 @@ class ValidatorTest extends SigningTestCase $this->assertFalse($result); } - - - /** - * @return void - */ - public function testValidateCertificateMissingCAFile() - { - $ca_file = $this->ca_certificate_file . 'NOT'; - - $this->expectException(\Exception::class); - Validator::validateCertificate($this->good_certificate, $ca_file); - } } diff --git a/tests/modules/core/lib/Auth/Process/AttributeLimitTest.php b/tests/modules/core/lib/Auth/Process/AttributeLimitTest.php index b79b7131a69a9f4e6f5f81d9e590815a474b0cde..5b43c57359cfb987e3a254da91d549a1a0196b69 100644 --- a/tests/modules/core/lib/Auth/Process/AttributeLimitTest.php +++ b/tests/modules/core/lib/Auth/Process/AttributeLimitTest.php @@ -140,7 +140,7 @@ class AttributeLimitTest extends TestCase /** * @return void */ - public static function setUpBeforeClass() + public static function setUpBeforeClass(): void { self::$request = [ 'Attributes' => [ diff --git a/tests/modules/core/lib/Auth/Process/CardinalitySingleTest.php b/tests/modules/core/lib/Auth/Process/CardinalitySingleTest.php index 62de2e872976cc7006d4031d09f32c31b08f2105..8c56658eb3863f2bbba1af337857ebf20c012d44 100644 --- a/tests/modules/core/lib/Auth/Process/CardinalitySingleTest.php +++ b/tests/modules/core/lib/Auth/Process/CardinalitySingleTest.php @@ -11,7 +11,7 @@ use SimpleSAML\Utils\HttpAdapter; */ class CardinalitySingleTest extends \PHPUnit\Framework\TestCase { - /** @var \SimpleSAML\Utils\HttpAdapter|\PHPUnit_Framework_MockObject_MockObject */ + /** @var \SimpleSAML\Utils\HttpAdapter|\PHPUnit\Framework\MockObject\MockObject */ private $http; @@ -39,7 +39,7 @@ class CardinalitySingleTest extends \PHPUnit\Framework\TestCase /** * @return void */ - protected function setUp() + protected function setUp(): void { \SimpleSAML\Configuration::loadFromArray([], '[ARRAY]', 'simplesaml'); $this->http = $this->getMockBuilder(HttpAdapter::class) diff --git a/tests/modules/core/lib/Auth/Process/CardinalityTest.php b/tests/modules/core/lib/Auth/Process/CardinalityTest.php index 03cb6aab3688b595c6358689dd59f3941c5fa936..7716ef151f784a62f7ac4f85b2f059618420d687 100644 --- a/tests/modules/core/lib/Auth/Process/CardinalityTest.php +++ b/tests/modules/core/lib/Auth/Process/CardinalityTest.php @@ -12,7 +12,7 @@ use SimpleSAML\Utils\HttpAdapter; */ class CardinalityTest extends \PHPUnit\Framework\TestCase { - /** @var \SimpleSAML\Utils\HttpAdapter|\PHPUnit_Framework_MockObject_MockObject */ + /** @var \SimpleSAML\Utils\HttpAdapter|\PHPUnit\Framework\MockObject\MockObject */ private $http; @@ -40,7 +40,7 @@ class CardinalityTest extends \PHPUnit\Framework\TestCase /** * @return void */ - protected function setUp() + protected function setUp(): void { \SimpleSAML\Configuration::loadFromArray([], '[ARRAY]', 'simplesaml'); $this->http = $this->getMockBuilder(HttpAdapter::class) @@ -191,7 +191,7 @@ class CardinalityTest extends \PHPUnit\Framework\TestCase public function testMinInvalid() { $this->expectException(SspException::class); - $this->expectExceptionMessageRegExp('/Minimum/'); + $this->expectExceptionMessageMatches('/Minimum/'); $config = [ 'mail' => ['min' => false], ]; @@ -211,7 +211,7 @@ class CardinalityTest extends \PHPUnit\Framework\TestCase public function testMinNegative() { $this->expectException(SspException::class); - $this->expectExceptionMessageRegExp('/Minimum/'); + $this->expectExceptionMessageMatches('/Minimum/'); $config = [ 'mail' => ['min' => -1], ]; @@ -231,7 +231,7 @@ class CardinalityTest extends \PHPUnit\Framework\TestCase public function testMaxInvalid() { $this->expectException(SspException::class); - $this->expectExceptionMessageRegExp('/Maximum/'); + $this->expectExceptionMessageMatches('/Maximum/'); $config = [ 'mail' => ['max' => false], ]; @@ -251,7 +251,7 @@ class CardinalityTest extends \PHPUnit\Framework\TestCase public function testMinGreaterThanMax() { $this->expectException(SspException::class); - $this->expectExceptionMessageRegExp('/less than/'); + $this->expectExceptionMessageMatches('/less than/'); $config = [ 'mail' => ['min' => 2, 'max' => 1], ]; @@ -271,7 +271,7 @@ class CardinalityTest extends \PHPUnit\Framework\TestCase public function testInvalidAttributeName() { $this->expectException(SspException::class); - $this->expectExceptionMessageRegExp('/Invalid attribute/'); + $this->expectExceptionMessageMatches('/Invalid attribute/'); $config = [ ['min' => 2, 'max' => 1], ]; diff --git a/tests/modules/core/lib/Auth/UserPassBaseTest.php b/tests/modules/core/lib/Auth/UserPassBaseTest.php index 62755411ae3ffa84dee62cc4d697f858b662c5d9..79b1ce777262a169018a1ffb42f49bd1d56e68a4 100644 --- a/tests/modules/core/lib/Auth/UserPassBaseTest.php +++ b/tests/modules/core/lib/Auth/UserPassBaseTest.php @@ -29,10 +29,6 @@ class UserPassBaseTest extends \PHPUnit\Framework\TestCase ->setMethods(['login']) ->getMockForAbstractClass(); - /** - * @psalm-suppress InvalidArgument Remove when PHPunit 8 is in place - * @psalm-suppress UndefinedMethod - */ $stub->expects($this->once()) ->method('login') ->with($username, $password) @@ -87,7 +83,6 @@ class UserPassBaseTest extends \PHPUnit\Framework\TestCase ->disableOriginalConstructor() ->getMockForAbstractClass(); - /** @psalm-suppress UndefinedMethod Remove when Psalm 3.x is in place */ $stub->authenticate($state); } @@ -113,10 +108,6 @@ class UserPassBaseTest extends \PHPUnit\Framework\TestCase ->setMethods(['login']) ->getMockForAbstractClass(); - /** - * @psalm-suppress InvalidArgument Remove when PHPunit 8 is in place - * @psalm-suppress UndefinedMethod - */ $stub->expects($this->once()) ->method('login') ->with($forcedUsername, $password) diff --git a/tests/modules/core/lib/Controller/LoginTest.php b/tests/modules/core/lib/Controller/LoginTest.php index 2b003b363286676be00168b900bb82591b829c4b..9cfafbc0bf40687b1467ed06dce50e8811d67fbb 100644 --- a/tests/modules/core/lib/Controller/LoginTest.php +++ b/tests/modules/core/lib/Controller/LoginTest.php @@ -40,7 +40,7 @@ class LoginTest extends ClearStateTestCase * Set up for each test. * @return void */ - protected function setUp() + protected function setUp(): void { parent::setUp(); $this->authSources = [ diff --git a/tests/modules/core/lib/Storage/SQLPermanentStorageTest.php b/tests/modules/core/lib/Storage/SQLPermanentStorageTest.php index 1f19058f8f21d9407bf2ee09848b601358968345..892c5b0397290a7eb4ecbc5406598a7a152ad154 100644 --- a/tests/modules/core/lib/Storage/SQLPermanentStorageTest.php +++ b/tests/modules/core/lib/Storage/SQLPermanentStorageTest.php @@ -18,7 +18,7 @@ class SQLPermanentStorageTest extends TestCase /** * @return void */ - public static function setUpBeforeClass() + public static function setUpBeforeClass(): void { // Create instance $config = \SimpleSAML\Configuration::loadFromArray([ @@ -31,7 +31,7 @@ class SQLPermanentStorageTest extends TestCase /** * @return void */ - public static function tearDownAfterClass() + public static function tearDownAfterClass(): void { self::$sql = null; unlink(sys_get_temp_dir() . '/sqllite/test.sqlite'); diff --git a/tests/modules/multiauth/lib/Auth/Source/MultiAuthTest.php b/tests/modules/multiauth/lib/Auth/Source/MultiAuthTest.php index 635633037c1d86b6979d2cead36a2eb2ca37d0c1..bbed662671adfebe93863c3d2a82ebe4776b912d 100644 --- a/tests/modules/multiauth/lib/Auth/Source/MultiAuthTest.php +++ b/tests/modules/multiauth/lib/Auth/Source/MultiAuthTest.php @@ -20,7 +20,7 @@ class MultiAuthTest extends \SimpleSAML\Test\Utils\ClearStateTestCase /** * @return void */ - public function setUp() + public function setUp(): void { $this->config = Configuration::loadFromArray( ['module.enable' => ['multiauth' => true]], diff --git a/tests/modules/saml/lib/Auth/Source/Auth_Source_SP_Test.php b/tests/modules/saml/lib/Auth/Source/Auth_Source_SP_Test.php index f9604be608b901843a991d6402ccbdd13e090caf..2e8838611c3087687f3ec99f7cd01aa6057f18de 100644 --- a/tests/modules/saml/lib/Auth/Source/Auth_Source_SP_Test.php +++ b/tests/modules/saml/lib/Auth/Source/Auth_Source_SP_Test.php @@ -49,7 +49,7 @@ class SPTest extends ClearStateTestCase /** * @return void */ - protected function setUp() + protected function setUp(): void { parent::setUp(); $this->idpConfigArray = [ @@ -124,11 +124,8 @@ class SPTest extends ClearStateTestCase */ public function testAuthnRequest() { - /** @var \SAML2\AuthnRequest $ar */ $ar = $this->createAuthnRequest(); - // Assert values in the generated AuthnRequest - /** @var \DOMElement $xml */ $xml = $ar->toSignedXML(); /** @var \DOMAttr[] $q */ @@ -157,7 +154,6 @@ class SPTest extends ClearStateTestCase 'saml:NameID' => ['Value' => 'user@example.org', 'Format' => \SAML2\Constants::NAMEID_UNSPECIFIED] ]; - /** @var \SAML2\AuthnRequest $ar */ $ar = $this->createAuthnRequest($state); /** @var \SAML2\XML\saml\NameID $nameID */ @@ -165,7 +161,6 @@ class SPTest extends ClearStateTestCase $this->assertEquals($state['saml:NameID']['Value'], $nameID->getValue()); $this->assertEquals($state['saml:NameID']['Format'], $nameID->getFormat()); - /** @var \DOMElement $xml */ $xml = $ar->toSignedXML(); /** @var \DOMAttr[] $q */ @@ -194,7 +189,6 @@ class SPTest extends ClearStateTestCase 'saml:AuthnContextClassRef' => 'http://example.com/myAuthnContextClassRef' ]; - /** @var \SAML2\AuthnRequest $ar */ $ar = $this->createAuthnRequest($state); /** @var array $a */ @@ -204,7 +198,6 @@ class SPTest extends ClearStateTestCase $a['AuthnContextClassRef'][0] ); - /** @var \DOMElement $xml */ $xml = $ar->toSignedXML(); $q = \SAML2\Utils::xpQuery($xml, '/samlp:AuthnRequest/samlp:RequestedAuthnContext/saml:AuthnContextClassRef'); @@ -227,7 +220,6 @@ class SPTest extends ClearStateTestCase 'ForceAuthn' => true ]; - /** @var \SAML2\AuthnRequest $ar */ $ar = $this->createAuthnRequest($state); $this->assertEquals( @@ -235,7 +227,6 @@ class SPTest extends ClearStateTestCase $ar->getForceAuthn() ); - /** @var \DOMElement $xml */ $xml = $ar->toSignedXML(); /** @var \DOMAttr[] $q */ diff --git a/tests/modules/saml/lib/IdP/SAML2Test.php b/tests/modules/saml/lib/IdP/SAML2Test.php index b2bcd5ab558feb2d3104c3be657450d841ebc929..664373b9c94b6eb2ca5a892210713b8ec9bffb85 100644 --- a/tests/modules/saml/lib/IdP/SAML2Test.php +++ b/tests/modules/saml/lib/IdP/SAML2Test.php @@ -162,7 +162,6 @@ class SAML2Test extends ClearStateTestCase */ private function idpInitiatedHelper(array $queryParams): array { - /** @var \PHPUnit_Framework_MockObject_MockObject $idpStub */ $idpStub = $this->getMockBuilder(IdP::class) ->disableOriginalConstructor() ->getMock(); @@ -171,7 +170,6 @@ class SAML2Test extends ClearStateTestCase 'saml20.ecp' => true, //enable additional bindings so we can test selection logic ]); - /** @psalm-suppress UndefinedMethod Remove when Psalm 3.x is in place */ $idpStub->method("getConfig") ->willReturn($idpMetadata); @@ -202,7 +200,6 @@ EOT; $state = []; - /** @psalm-suppress InvalidArgument Remove when PHPunit 8 is in place */ $idpStub->expects($this->once()) ->method('handleAuthenticationRequest') ->with($this->callback( diff --git a/tests/www/IndexTest.php b/tests/www/IndexTest.php index 3fe984c2080f8b65a3296bcb83bc3a53bd9e88d5..09b92554cbcd5f689c5449cc058c19eddcc49104 100644 --- a/tests/www/IndexTest.php +++ b/tests/www/IndexTest.php @@ -42,7 +42,7 @@ class IndexTest extends TestCase * The setup method that is run before any tests in this class. * @return void */ - protected function setup() + protected function setup(): void { $this->server = new BuiltInServer('configLoader'); $this->server_addr = $this->server->start(); @@ -116,7 +116,7 @@ class IndexTest extends TestCase * The tear down method that is executed after all tests in this class. * @return void */ - protected function tearDown() + protected function tearDown(): void { unlink($this->shared_file); $this->server->stop(); diff --git a/tests/www/RouterTest.php b/tests/www/RouterTest.php index 0d60eed6db5b50a9c84cec101d6fa033cf71c817..50f8a4dad18ea5b9012dde7e47348f2e6b54d556 100644 --- a/tests/www/RouterTest.php +++ b/tests/www/RouterTest.php @@ -32,7 +32,7 @@ class RouterTest extends TestCase foreach ($files as $file) { if (preg_match('/.(yml|yaml)$/', $file)) { try { - $value = $yaml->parse(file_get_contents('modules/' . $module . '/' . $file)); + $yaml->parse(file_get_contents('modules/' . $module . '/' . $file)); $this->addToAssertionCount(1); } catch (ParseException $e) { $this->fail($e->getMessage() . ' in ' . $e->getFile() . ':' . $e->getLine()); diff --git a/www/admin/metadata-converter.php b/www/admin/metadata-converter.php index 83837409de1e921376f45cc036fa3a9d68adab9c..f9d0ffd914ceb28971ab5560440f8090064bd872 100644 --- a/www/admin/metadata-converter.php +++ b/www/admin/metadata-converter.php @@ -20,8 +20,6 @@ if (!empty($xmldata)) { // get all metadata for the entities foreach ($entities as &$entity) { $entity = [ - 'shib13-sp-remote' => $entity->getMetadata1xSP(), - 'shib13-idp-remote' => $entity->getMetadata1xIdP(), 'saml20-sp-remote' => $entity->getMetadata20SP(), 'saml20-idp-remote' => $entity->getMetadata20IdP(), ]; diff --git a/www/errorreport.php b/www/errorreport.php index 1c80713058474b613f35fa9a80b877493c7570b8..acfc317effe1f8e1d4aa95e786e4803767318b1b 100644 --- a/www/errorreport.php +++ b/www/errorreport.php @@ -9,7 +9,7 @@ if ($_SERVER['REQUEST_METHOD'] !== 'POST') { // the message has been sent. Show error report page $t = new \SimpleSAML\XHTML\Template($config, 'errorreport.php', 'errors'); - $t->show(); + $t->send(); exit; } diff --git a/www/logout.php b/www/logout.php index 97c7d2b41b2c768512fc4703fb4837e70eb50969..78f0e33a13aaf820f28db42c484deef3c4580ea5 100644 --- a/www/logout.php +++ b/www/logout.php @@ -19,5 +19,5 @@ if (array_key_exists('link_text', $_REQUEST)) { $t = new \SimpleSAML\XHTML\Template($config, 'logout.php'); $t->data['link'] = $link; $t->data['text'] = $text; -$t->show(); +$t->send(); exit(); diff --git a/www/saml2/idp/metadata.php b/www/saml2/idp/metadata.php index 4ba2fa1d82b92e9ab30b0e5556955c4bd668b142..1c7983a6371bbf6f56d8e598e81309b79d6aa6c6 100644 --- a/www/saml2/idp/metadata.php +++ b/www/saml2/idp/metadata.php @@ -236,7 +236,7 @@ try { $t->data['metaurl'] = HTTP::getSelfURLNoQuery(); $t->data['metadata'] = htmlspecialchars($metaxml); $t->data['metadataflat'] = htmlspecialchars($metaflat); - $t->show(); + $t->send(); } else { header('Content-Type: application/xml'); diff --git a/www/shib13/idp/SSOService.php b/www/shib13/idp/SSOService.php deleted file mode 100644 index d99365867b8322486f15e7ac192c50ee8f548473..0000000000000000000000000000000000000000 --- a/www/shib13/idp/SSOService.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php - -/** - * The SSOService is part of the Shibboleth 1.3 IdP code, and it receives incoming Authentication Requests - * from a Shibboleth 1.3 SP, parses, and process it, and then authenticates the user and sends the user back - * to the SP with an Authentication Response. - * - * @author Andreas Ã…kre Solberg, UNINETT AS. <andreas.solberg@uninett.no> - * @package SimpleSAMLphp - */ - -require_once '../../_include.php'; - -use Webmozart\Assert\Assert; - -\SimpleSAML\Logger::info('Shib1.3 - IdP.SSOService: Accessing Shibboleth 1.3 IdP endpoint SSOService'); - -$metadata = \SimpleSAML\Metadata\MetaDataStorageHandler::getMetadataHandler(); -$idpEntityId = $metadata->getMetaDataCurrentEntityID('shib13-idp-hosted'); -$idp = \SimpleSAML\IdP::getById('saml1:'.$idpEntityId); -\SimpleSAML\Module\saml\IdP\SAML1::receiveAuthnRequest($idp); - -Assert::true(false); diff --git a/www/shib13/idp/metadata.php b/www/shib13/idp/metadata.php deleted file mode 100644 index d8063b444750ae43935e6137913b28efa353cdbf..0000000000000000000000000000000000000000 --- a/www/shib13/idp/metadata.php +++ /dev/null @@ -1,109 +0,0 @@ -<?php - -require_once('../../_include.php'); - -// load configuration and metadata -$config = \SimpleSAML\Configuration::getInstance(); -$metadata = \SimpleSAML\Metadata\MetaDataStorageHandler::getMetadataHandler(); - -if (!$config->getBoolean('enable.shib13-idp', false)) { - throw new \SimpleSAML\Error\Error('NOACCESS'); -} - -// check if valid local session exists -if ($config->getBoolean('admin.protectmetadata', false)) { - \SimpleSAML\Utils\Auth::requireAdmin(); -} - -try { - $idpentityid = isset($_GET['idpentityid']) ? - $_GET['idpentityid'] : $metadata->getMetaDataCurrentEntityID('shib13-idp-hosted'); - $idpmeta = $metadata->getMetaDataConfig($idpentityid, 'shib13-idp-hosted'); - - $keys = []; - $certInfo = \SimpleSAML\Utils\Crypto::loadPublicKey($idpmeta, false, 'new_'); - if ($certInfo !== null) { - $keys[] = [ - 'type' => 'X509Certificate', - 'signing' => true, - 'encryption' => false, - 'X509Certificate' => $certInfo['certData'], - ]; - } - - $certInfo = \SimpleSAML\Utils\Crypto::loadPublicKey($idpmeta, true); - $keys[] = [ - 'type' => 'X509Certificate', - 'signing' => true, - 'encryption' => false, - 'X509Certificate' => $certInfo['certData'], - ]; - - $metaArray = [ - 'metadata-set' => 'shib13-idp-remote', - 'entityid' => $idpentityid, - 'SingleSignOnService' => $metadata->getGenerated('SingleSignOnService', 'shib13-idp-hosted'), - ]; - - if (count($keys) === 1) { - $metaArray['certData'] = $keys[0]['X509Certificate']; - } else { - $metaArray['keys'] = $keys; - } - - $metaArray['NameIDFormat'] = $idpmeta->getArrayizeString('NameIDFormat', 'urn:mace:shibboleth:1.0:nameIdentifier'); - - if ($idpmeta->hasValue('OrganizationName')) { - $metaArray['OrganizationName'] = $idpmeta->getLocalizedString('OrganizationName'); - $metaArray['OrganizationDisplayName'] = $idpmeta->getLocalizedString( - 'OrganizationDisplayName', - $metaArray['OrganizationName'] - ); - - if (!$idpmeta->hasValue('OrganizationURL')) { - throw new \SimpleSAML\Error\Exception('If OrganizationName is set, OrganizationURL must also be set.'); - } - $metaArray['OrganizationURL'] = $idpmeta->getLocalizedString('OrganizationURL'); - } - - $metaflat = '$metadata['.var_export($idpentityid, true).'] = '.var_export($metaArray, true).';'; - - $metaBuilder = new \SimpleSAML\Metadata\SAMLBuilder($idpentityid); - $metaBuilder->addMetadataIdP11($metaArray); - $metaBuilder->addOrganizationInfo($metaArray); - $metaBuilder->addContact('technical', \SimpleSAML\Utils\Config\Metadata::getContact([ - 'emailAddress' => $config->getString('technicalcontact_email', null), - 'name' => $config->getString('technicalcontact_name', null), - 'contactType' => 'technical', - ])); - $metaxml = $metaBuilder->getEntityDescriptorText(); - - // sign the metadata if enabled - $metaxml = \SimpleSAML\Metadata\Signer::sign($metaxml, $idpmeta->toArray(), 'Shib 1.3 IdP'); - - if (array_key_exists('output', $_GET) && $_GET['output'] == 'xhtml') { - $defaultidp = $config->getString('default-shib13-idp', null); - - $t = new \SimpleSAML\XHTML\Template($config, 'metadata.tpl.php', 'admin'); - - $t->data['clipboard.js'] = true; - $t->data['header'] = 'shib13-idp'; // TODO: Replace with headerString in 2.0 - $t->data['headerString'] = \SimpleSAML\Locale\Translate::noop('metadata_shib13-idp'); - $t->data['metaurl'] = \SimpleSAML\Utils\HTTP::addURLParameters( - \SimpleSAML\Utils\HTTP::getSelfURLNoQuery(), - ['output' => 'xml'] - ); - $t->data['metadata'] = htmlspecialchars($metaxml); - $t->data['metadataflat'] = htmlspecialchars($metaflat); - - $t->data['defaultidp'] = $defaultidp; - - $t->show(); - } else { - header('Content-Type: application/xml'); - echo $metaxml; - exit(0); - } -} catch (\Exception $exception) { - throw new \SimpleSAML\Error\Error('METADATA', $exception); -}