From 2c8aa8a6575b67fdeb936fb66aa3e65b44e3b977 Mon Sep 17 00:00:00 2001 From: Tim van Dijen <tim.dijen@minbzk.nl> Date: Sat, 15 Feb 2020 15:06:13 +0100 Subject: [PATCH] Remove 2.0 deprecations (#1281) * Remove deprecated classes * Remove support for certificate fingerprints * Remove many deprecated methods and pieces of code * Remove SAML1.1/Shib1.3 support * Remove many superfluous annotations * Update unit test to work with new PHPunit Closes #1268 Closes #1020 Closes #431 Closes #167 Closes #151 --- .appveyor.yml | 1 + .gitignore | 1 + .travis.yml | 9 +- composer.json | 28 +- composer.lock | 2176 +++++++++-------- config-templates/config.php | 13 - docs/simplesamlphp-authproc.md | 6 +- docs/simplesamlphp-errorhandling.md | 2 +- docs/simplesamlphp-googleapps.md | 1 - docs/simplesamlphp-idp-more.md | 25 - docs/simplesamlphp-reference-idp-hosted.md | 27 +- docs/simplesamlphp-reference-idp-remote.md | 2 +- docs/simplesamlphp-reference-sp-remote.md | 53 +- docs/simplesamlphp-sp.md | 2 +- extra/simplesamlphp.spec | 4 - lib/SimpleSAML/Auth/DefaultAuth.php | 168 -- lib/SimpleSAML/Auth/LDAP.php | 16 - lib/SimpleSAML/Auth/ProcessingChain.php | 61 - lib/SimpleSAML/Auth/ProcessingFilter.php | 1 + lib/SimpleSAML/Auth/TimeLimitedToken.php | 155 -- lib/SimpleSAML/Bindings/Shib13/Artifact.php | 192 -- lib/SimpleSAML/Bindings/Shib13/HTTPPost.php | 157 -- lib/SimpleSAML/Configuration.php | 143 -- lib/SimpleSAML/Error/Error.php | 2 +- lib/SimpleSAML/Error/NoPassive.php | 18 - lib/SimpleSAML/Error/ProxyCountExceeded.php | 18 - lib/SimpleSAML/IdP.php | 11 +- lib/SimpleSAML/IdP/IFrameLogoutHandler.php | 2 +- lib/SimpleSAML/Locale/Translate.php | 70 - lib/SimpleSAML/Memcache.php | 37 +- .../Metadata/MetaDataStorageHandler.php | 4 - .../MetaDataStorageHandlerFlatFile.php | 1 - .../Metadata/MetaDataStorageHandlerPdo.php | 5 - .../Metadata/MetaDataStorageHandlerXML.php | 12 - .../Metadata/MetaDataStorageSource.php | 5 +- lib/SimpleSAML/Metadata/SAMLBuilder.php | 6 - lib/SimpleSAML/Metadata/SAMLParser.php | 214 +- lib/SimpleSAML/Metadata/Sources/MDQ.php | 42 +- lib/SimpleSAML/SessionHandler.php | 1 - lib/SimpleSAML/SessionHandlerPHP.php | 6 - lib/SimpleSAML/Stats.php | 10 +- lib/SimpleSAML/Stats/Output.php | 1 + lib/SimpleSAML/Utilities.php | 870 ------- lib/SimpleSAML/Utils/ClearableState.php | 1 + lib/SimpleSAML/Utils/Config.php | 1 - lib/SimpleSAML/Utils/Crypto.php | 93 +- lib/SimpleSAML/Utils/HTTP.php | 12 +- lib/SimpleSAML/XHTML/IdPDisco.php | 2 +- lib/SimpleSAML/XHTML/Template.php | 222 -- lib/SimpleSAML/XML/Shib13/AuthnRequest.php | 91 - lib/SimpleSAML/XML/Shib13/AuthnResponse.php | 528 ---- lib/SimpleSAML/XML/Validator.php | 277 --- lib/_autoload_modules.php | 130 - locales/ar/LC_MESSAGES/messages.po | 22 +- locales/cs/LC_MESSAGES/messages.po | 22 +- locales/da/LC_MESSAGES/messages.po | 19 +- locales/de/LC_MESSAGES/messages.po | 22 +- locales/el/LC_MESSAGES/messages.po | 19 +- locales/en/LC_MESSAGES/messages.po | 22 +- locales/es/LC_MESSAGES/messages.po | 19 +- locales/et/LC_MESSAGES/messages.po | 22 +- locales/eu/LC_MESSAGES/messages.po | 22 +- locales/fr/LC_MESSAGES/messages.po | 22 +- locales/he/LC_MESSAGES/messages.po | 22 +- locales/hr/LC_MESSAGES/messages.po | 22 +- locales/hu/LC_MESSAGES/messages.po | 22 +- locales/id/LC_MESSAGES/messages.po | 22 +- locales/it/LC_MESSAGES/messages.po | 22 +- locales/ja/LC_MESSAGES/messages.po | 19 +- locales/lt/LC_MESSAGES/messages.po | 22 +- locales/lv/LC_MESSAGES/messages.po | 22 +- locales/nb/LC_MESSAGES/messages.po | 22 +- locales/nl/LC_MESSAGES/messages.po | 19 +- locales/nn/LC_MESSAGES/messages.po | 22 +- locales/pl/LC_MESSAGES/messages.po | 15 - locales/pt-br/LC_MESSAGES/messages.po | 22 +- locales/pt/LC_MESSAGES/messages.po | 22 +- locales/ro/LC_MESSAGES/messages.po | 22 +- locales/ru/LC_MESSAGES/messages.po | 19 +- locales/sl/LC_MESSAGES/messages.po | 22 +- locales/sr/LC_MESSAGES/messages.po | 22 +- locales/sv/LC_MESSAGES/messages.po | 22 +- locales/tr/LC_MESSAGES/messages.po | 22 +- locales/zh-tw/LC_MESSAGES/messages.po | 19 +- locales/zh/LC_MESSAGES/messages.po | 22 +- metadata-templates/shib13-idp-hosted.php | 26 - metadata-templates/shib13-idp-remote.php | 16 - metadata-templates/shib13-sp-hosted.php | 14 - metadata-templates/shib13-sp-remote.php | 16 - modules/admin/lib/Controller/Config.php | 1 - modules/admin/lib/Controller/Federation.php | 50 - modules/admin/templates/config.twig | 4 - modules/core/locales/ar/LC_MESSAGES/core.po | 13 - modules/core/locales/cs/LC_MESSAGES/core.po | 13 - modules/core/locales/da/LC_MESSAGES/core.po | 11 - modules/core/locales/de/LC_MESSAGES/core.po | 9 - modules/core/locales/el/LC_MESSAGES/core.po | 15 - modules/core/locales/en/LC_MESSAGES/core.po | 9 - modules/core/locales/es/LC_MESSAGES/core.po | 11 - modules/core/locales/et/LC_MESSAGES/core.po | 13 - modules/core/locales/eu/LC_MESSAGES/core.po | 11 - modules/core/locales/fi/LC_MESSAGES/core.po | 13 - modules/core/locales/fr/LC_MESSAGES/core.po | 13 - modules/core/locales/he/LC_MESSAGES/core.po | 11 - modules/core/locales/hr/LC_MESSAGES/core.po | 9 - modules/core/locales/hu/LC_MESSAGES/core.po | 15 - modules/core/locales/id/LC_MESSAGES/core.po | 13 - modules/core/locales/it/LC_MESSAGES/core.po | 15 - modules/core/locales/ja/LC_MESSAGES/core.po | 9 - modules/core/locales/lb/LC_MESSAGES/core.po | 11 - modules/core/locales/lt/LC_MESSAGES/core.po | 15 - modules/core/locales/lv/LC_MESSAGES/core.po | 11 - modules/core/locales/nb/LC_MESSAGES/core.po | 11 - modules/core/locales/nl/LC_MESSAGES/core.po | 9 - modules/core/locales/nn/LC_MESSAGES/core.po | 9 - modules/core/locales/pl/LC_MESSAGES/core.po | 13 - .../core/locales/pt-br/LC_MESSAGES/core.po | 13 - modules/core/locales/pt/LC_MESSAGES/core.po | 13 - modules/core/locales/ro/LC_MESSAGES/core.po | 15 - modules/core/locales/ru/LC_MESSAGES/core.po | 13 - modules/core/locales/sl/LC_MESSAGES/core.po | 9 - modules/core/locales/sr/LC_MESSAGES/core.po | 15 - modules/core/locales/sv/LC_MESSAGES/core.po | 9 - modules/core/locales/tr/LC_MESSAGES/core.po | 13 - .../core/locales/zh-tw/LC_MESSAGES/core.po | 9 - modules/core/locales/zh/LC_MESSAGES/core.po | 9 - modules/core/templates/frontpage_config.twig | 4 - modules/core/www/authenticate.php | 4 +- modules/core/www/cardinality_error.php | 2 +- modules/core/www/frontpage_auth.php | 2 +- modules/core/www/frontpage_config.php | 3 +- modules/core/www/frontpage_federation.php | 19 +- modules/core/www/frontpage_welcome.php | 2 +- modules/core/www/idp/logout-iframe.php | 2 +- modules/core/www/loginuserpass.php | 2 +- modules/core/www/loginuserpassorg.php | 2 +- modules/core/www/no_cookie.php | 2 +- modules/core/www/postredirect.php | 6 +- modules/core/www/short_sso_interval.php | 2 +- modules/core/www/show_metadata.php | 4 +- modules/cron/www/croninfo.php | 2 +- .../templates/authenticate.tpl.php | 29 - modules/exampleauth/www/authpage.php | 2 +- modules/multiauth/www/selectsource.php | 2 +- modules/saml/docs/keyrollover.md | 2 +- modules/saml/docs/sp.md | 15 +- modules/saml/lib/Auth/Source/SP.php | 53 +- modules/saml/lib/IdP/SAML1.php | 271 -- modules/saml/lib/IdP/SAML2.php | 2 - modules/saml/lib/Message.php | 24 - modules/saml/lib/SP/LogoutStore.php | 1 - modules/saml/www/disco.php | 2 +- modules/saml/www/proxy/invalid_session.php | 2 +- modules/saml/www/sp/metadata.php | 2 +- modules/saml/www/sp/saml1-acs.php | 96 - modules/saml/www/sp/saml2-acs.php | 2 - modules/saml/www/sp/saml2-logout.php | 1 - .../www/sp/wrong_authncontextclassref.php | 2 +- phpunit.xml | 2 +- psalm.xml | 4 +- tests/SigningTestCase.php | 4 +- tests/Utils/ClearStateTestCase.php | 6 +- tests/lib/AutoloadModulesTest.php | 40 - .../SimpleSAML/Auth/TimeLimitedTokenTest.php | 85 - tests/lib/SimpleSAML/ConfigurationTest.php | 76 - tests/lib/SimpleSAML/DatabaseTest.php | 28 +- .../SimpleSAML/Locale/LocalizationTest.php | 2 +- tests/lib/SimpleSAML/Locale/TranslateTest.php | 19 - .../SimpleSAML/Metadata/SAMLBuilderTest.php | 70 - .../SimpleSAML/Metadata/SAMLParserTest.php | 94 - .../lib/SimpleSAML/SessionHandlerPHPTest.php | 18 +- tests/lib/SimpleSAML/Store/RedisTest.php | 9 +- tests/lib/SimpleSAML/Store/SQLTest.php | 6 +- tests/lib/SimpleSAML/StoreTest.php | 2 +- tests/lib/SimpleSAML/Utils/AttributesTest.php | 51 - tests/lib/SimpleSAML/Utils/CryptoTest.php | 187 +- tests/lib/SimpleSAML/Utils/EMailTest.php | 2 +- tests/lib/SimpleSAML/Utils/HTTPTest.php | 30 +- tests/lib/SimpleSAML/Utils/SystemTest.php | 19 +- tests/lib/SimpleSAML/Utils/TimeTest.php | 24 - tests/lib/SimpleSAML/Utils/XMLTest.php | 2 +- tests/lib/SimpleSAML/XML/ParserTest.php | 2 +- .../XML/Shib13/AuthnResponseTest.php | 124 - tests/lib/SimpleSAML/XML/SignerTest.php | 16 +- tests/lib/SimpleSAML/XML/ValidatorTest.php | 119 - .../lib/Auth/Process/AttributeLimitTest.php | 2 +- .../Auth/Process/CardinalitySingleTest.php | 4 +- .../core/lib/Auth/Process/CardinalityTest.php | 14 +- .../core/lib/Auth/UserPassBaseTest.php | 9 - .../modules/core/lib/Controller/LoginTest.php | 2 +- .../lib/Storage/SQLPermanentStorageTest.php | 4 +- .../lib/Auth/Source/MultiAuthTest.php | 2 +- .../lib/Auth/Source/Auth_Source_SP_Test.php | 11 +- tests/modules/saml/lib/IdP/SAML2Test.php | 3 - tests/www/IndexTest.php | 4 +- tests/www/RouterTest.php | 2 +- www/admin/metadata-converter.php | 2 - www/errorreport.php | 2 +- www/logout.php | 2 +- www/saml2/idp/metadata.php | 2 +- www/shib13/idp/SSOService.php | 23 - www/shib13/idp/metadata.php | 109 - 202 files changed, 1506 insertions(+), 7436 deletions(-) delete mode 100644 lib/SimpleSAML/Auth/DefaultAuth.php delete mode 100644 lib/SimpleSAML/Auth/LDAP.php delete mode 100644 lib/SimpleSAML/Auth/TimeLimitedToken.php delete mode 100644 lib/SimpleSAML/Bindings/Shib13/Artifact.php delete mode 100644 lib/SimpleSAML/Bindings/Shib13/HTTPPost.php delete mode 100644 lib/SimpleSAML/Error/NoPassive.php delete mode 100644 lib/SimpleSAML/Error/ProxyCountExceeded.php delete mode 100644 lib/SimpleSAML/Utilities.php delete mode 100644 lib/SimpleSAML/XML/Shib13/AuthnRequest.php delete mode 100644 lib/SimpleSAML/XML/Shib13/AuthnResponse.php delete mode 100644 metadata-templates/shib13-idp-hosted.php delete mode 100644 metadata-templates/shib13-idp-remote.php delete mode 100644 metadata-templates/shib13-sp-hosted.php delete mode 100644 metadata-templates/shib13-sp-remote.php delete mode 100644 modules/exampleauth/templates/authenticate.tpl.php delete mode 100644 modules/saml/lib/IdP/SAML1.php delete mode 100644 modules/saml/www/sp/saml1-acs.php delete mode 100644 tests/lib/AutoloadModulesTest.php delete mode 100644 tests/lib/SimpleSAML/Auth/TimeLimitedTokenTest.php delete mode 100644 tests/lib/SimpleSAML/XML/Shib13/AuthnResponseTest.php delete mode 100644 www/shib13/idp/SSOService.php delete mode 100644 www/shib13/idp/metadata.php diff --git a/.appveyor.yml b/.appveyor.yml index f61289ad6..492a83666 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 6bde92f3c..d5e68ae74 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 19c197da2..20266611c 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 9512ba875..2b9c14518 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 4d5e361b8..e54e4a73e 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 dc4280072..56c06aa93 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 4e42b7fe7..cf249bc2d 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 ddefac164..5dc6fa8ea 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 30cab4794..d74a04dbf 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 bb5ead1ac..a89c2c8af 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 3a6b47934..8291a610b 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 95b4eda3e..30059f2c8 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 423df7b37..fb71d24c0 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 1572e7975..45ddf79f6 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 b06ae0ef9..6a744a6e4 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 192868f31..000000000 --- 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 3977274e9..000000000 --- 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 468940c71..5ae89b31a 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 8622b987b..f3bf7cfeb 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 12b2096c7..000000000 --- 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 f1b6741c6..000000000 --- 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 82e491ad4..000000000 --- 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 7a58db7c3..c9c9f9082 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 ffa004f4e..1f0e87d97 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 5687adffd..000000000 --- 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 a92844f2e..000000000 --- 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 5590304f0..d91231183 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 b95fc62fe..6c7b2e7d5 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 4d441c21b..d8a77a749 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 84b5b83f4..196608bc7 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 c284deec7..292cdee7c 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 fb123fcb4..b1921c9a3 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 d6c08b0e9..27d185d7b 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 d1ae78c84..523b52e34 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 481572288..9a32daa8e 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 b066db742..392024ebf 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 458807880..7cb5b20d8 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 889b429e0..dea938b49 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 50498dcf4..df9fd6738 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 1952946d3..27fba38a8 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 281e35bb6..7bb0aa33d 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 7ac5a71ec..0fa1dbbda 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 ca5536a44..000000000 --- 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 5c90ccfc5..60550261e 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 6059ff35e..56fe3e044 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 c12519adb..425eb56a4 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 793718930..18a78cd67 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 8e9418798..b81df6870 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 4ceed77ea..b2404b826 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 ee16db4c3..000000000 --- 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 0d666a97f..000000000 --- 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 33c17bf23..f2f0ac1ab 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 3d7ca9184..621edabf0 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 45600f9e7..0017cd139 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 ca82ad8b3..eb77773b9 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 fa8cbc6b1..d6cf3cd58 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 a7dbdbf51..167f6fe9e 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 c0bc349fc..6c1e4cef5 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 eac57388e..f6edd046e 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 c6eb2c1f3..a9b3f9454 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 c4eb2f2a5..22e031c0e 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 83dc59ede..d37408c44 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 7e004a7c4..3e88b72bf 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 4983a25aa..4c65f1b09 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 0903bbbf6..29307a5e1 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 12c1bee66..3f6531b63 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 35c3a2a36..493e2f20b 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 3a5201192..4accd61b4 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 cc6d3fd36..782a677f5 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 05ce6bef7..ba00bcc3b 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 1ef6079ae..ba2133a36 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 26479a688..09858e939 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 9eed3f830..692a0d815 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 c22f8b668..9aac32e52 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 2a4dbb867..2c766cbbe 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 351ea0525..2a26fedb0 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 48cdd4f95..2add121d3 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 864bffb1d..af699cecc 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 f71ee414f..6dc35b848 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 130a27562..2d320d422 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 eec871b97..3b63b99ff 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 c090e00df..a5e374ca0 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 b882653da..dfb51e191 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 00b2748d0..ad3f1b19b 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 93b138bca..f78ef546a 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 dc6c9e0a9..000000000 --- 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 9aa6f0e64..000000000 --- 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 15a275a38..000000000 --- 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 b2fb1d8e0..000000000 --- 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 445ff8c23..ad94e0df7 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 93f0eeab3..6b6e0ca37 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 017b653ee..0fddf8fdb 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 84c0fc10c..6aab0ba6e 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 0c5a0b5c6..1d27e4a80 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 ed0dbe54c..7b48446e5 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 c6648ced4..4a53b4779 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 a2f7c1563..36d11b41c 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 b7c59dcf4..6abe03ef7 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 44ad5e2ef..4950c2496 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 0e39b15ba..699b09bf9 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 d979950a1..7337f6243 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 729b867ca..7c7b1d618 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 188d437f3..2178bffee 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 ea53dbbe1..af76673a8 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 4e0311f3d..c6b0ff417 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 2304e086d..e4363a422 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 75646d0a5..3dc63134e 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 555f86a8e..207a29513 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 95736ce65..d9f42d940 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 da87760a7..55cdbde96 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 aa83f7aaa..53bc9acb3 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 61743892b..36c334aeb 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 c10d9d2e5..c72b207ab 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 425e4712d..be8f20c20 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 368dd7e76..54942f81d 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 fadeeb468..1a461afe2 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 271528eb1..2d1b13141 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 599cf95aa..4ead99e9b 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 ead982bb2..9ebf3a698 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 699936c8d..328dbe2de 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 802a6f38c..389cc14db 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 9f7a9ea20..d064999dd 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 6adaceec5..20bc0f764 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 fd7f6435d..4aef1be2d 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 24d8ebbbf..3e27847d1 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 f883464c2..e74b5a0f3 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 c0fb87b95..74ac7c8a5 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 62ab03fc8..680ece576 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 cb76a072e..135493d50 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 a3bf112e1..cd6546f13 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 1cfba39f5..8243fae64 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 c33528b2f..66e896841 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 4dfb4fef1..22dc2d9f3 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 80f94cca9..442b26bd0 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 5655b67ce..27e432716 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 fd65a15db..be63c72bb 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 7ae3889d6..c2ff054fa 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 b5d08eeb0..07bac08e8 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 919210f53..2659471c1 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 ffad6572b..d9dd9ffdc 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 289dfe2c8..1c9ec0da2 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 fd112ff59..000000000 --- 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 795a13cba..b4b4b4458 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 2038e3087..6d7e5d97d 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 0fd99fc82..7a23448be 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 45da3fb1a..2579f27a3 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 e9ebaa259..91f2bd24b 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 5b2eeb226..000000000 --- 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 664bcf6f5..48403c62b 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 fe047d955..7027e4f7e 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 9123eadd0..8b941acd9 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 b7d06c454..93d8f68bb 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 3b9c09610..3a3d3b886 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 b13d86fed..e32b1d34b 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 34ca9ece6..000000000 --- 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 11a17bf4d..1f7e60313 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 9b756d8d6..76661b3eb 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 9cb93bf70..5c81d73e5 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 878768a43..84dc59b00 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 1cdd446a5..065e7d06b 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 75ff8c43d..e6b279f5c 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 aeed53ab7..0abe90fa4 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 57f26304f..000000000 --- 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 d955c552f..000000000 --- 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 528709ccb..63f59f9d3 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 47c253b60..eea953043 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 12b036eae..914dbc248 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 1e6cef3c3..3ff26ff0c 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 fe5e3fcb3..2c9b74d98 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 b538cafde..279990d53 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 c0b71a489..ff47cd55a 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 44ab5215e..915934493 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 a2ebb848e..485cd2729 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 672b4b205..1b4cfd1e6 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 42ae15c35..c82219829 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 f0d28123b..122728ce7 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 a7762655a..8dc6598b2 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 977fde1ca..4ee68e5f9 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 de126d6b9..5e60aa292 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 03f4e72a5..13817d424 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 7eb3a7919..7a552424f 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 ae5a978ae..aa709273f 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 a387c9e93..000000000 --- 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 a2d157659..b33837014 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 67a71d237..c182cd889 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 b79b7131a..5b43c5735 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 62de2e872..8c56658eb 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 03cb6aab3..7716ef151 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 62755411a..79b1ce777 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 2b003b363..9cfafbc0b 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 1f19058f8..892c5b039 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 635633037..bbed66267 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 f9604be60..2e8838611 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 b2bcd5ab5..664373b9c 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 3fe984c20..09b92554c 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 0d60eed6d..50f8a4dad 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 83837409d..f9d0ffd91 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 1c8071305..acfc317ef 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 97c7d2b41..78f0e33a1 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 4ba2fa1d8..1c7983a63 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 d99365867..000000000 --- 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 d8063b444..000000000 --- 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); -} -- GitLab