From cabcbe4b1c5bca3c6e43b53d3097202e7a047772 Mon Sep 17 00:00:00 2001
From: Tim van Dijen <tvdijen@gmail.com>
Date: Fri, 21 Aug 2020 01:37:45 +0200
Subject: [PATCH] Add typehints

---
 .phpunit.result.cache                         |  1 +
 lib/SimpleSAML/Auth/DefaultAuth.php           |  5 +++--
 lib/SimpleSAML/Auth/ProcessingChain.php       |  4 ++--
 lib/SimpleSAML/Configuration.php              |  4 +---
 lib/SimpleSAML/IdP.php                        |  4 ++--
 .../IdP/TraditionalLogoutHandler.php          |  2 +-
 lib/SimpleSAML/Kernel.php                     |  8 +++----
 lib/SimpleSAML/Locale/Language.php            |  2 +-
 lib/SimpleSAML/Locale/Localization.php        |  6 ++---
 lib/SimpleSAML/Locale/Translate.php           |  2 +-
 lib/SimpleSAML/Logger.php                     |  6 ++---
 lib/SimpleSAML/Memcache.php                   |  4 ++--
 .../MetaDataStorageHandlerFlatFile.php        |  2 +-
 .../Metadata/MetaDataStorageHandlerPdo.php    | 20 ++++++++---------
 .../MetaDataStorageHandlerSerialize.php       | 10 ++++-----
 .../Metadata/MetaDataStorageSource.php        |  2 +-
 lib/SimpleSAML/Metadata/SAMLBuilder.php       | 10 ++++-----
 lib/SimpleSAML/Metadata/SAMLParser.php        | 22 +++++++++----------
 lib/SimpleSAML/Metadata/Sources/MDQ.php       | 22 +++++++++----------
 lib/SimpleSAML/Session.php                    |  4 ++--
 lib/SimpleSAML/SessionHandler.php             |  2 +-
 lib/SimpleSAML/Stats.php                      |  2 +-
 lib/SimpleSAML/Store/SQL.php                  |  6 ++---
 lib/SimpleSAML/Utilities.php                  |  6 ++---
 lib/SimpleSAML/Utils/Config.php               |  4 ++--
 lib/SimpleSAML/Utils/EMail.php                |  4 +---
 lib/SimpleSAML/Utils/HTTP.php                 |  2 +-
 lib/SimpleSAML/XHTML/IdPDisco.php             |  2 +-
 lib/SimpleSAML/XHTML/Template.php             | 10 ++++-----
 lib/SimpleSAML/XML/Errors.php                 |  2 +-
 lib/SimpleSAML/XML/Parser.php                 | 10 ++++-----
 lib/SimpleSAML/XML/Shib13/AuthnRequest.php    |  4 ++--
 lib/SimpleSAML/XML/Shib13/AuthnResponse.php   | 13 +++++------
 lib/SimpleSAML/XML/Validator.php              |  4 ++--
 modules/admin/lib/Controller/Federation.php   |  3 ++-
 .../core/lib/Auth/Process/AttributeLimit.php  |  2 +-
 .../core/lib/Auth/Process/AttributeMap.php    |  2 +-
 .../core/lib/Auth/Process/GenerateGroups.php  |  2 +-
 modules/core/lib/Stats/Output/File.php        |  2 +-
 .../exampleauth/lib/Auth/Source/External.php  |  2 +-
 modules/saml/lib/Auth/Source/SP.php           |  8 +++----
 modules/saml/lib/IdP/SAML2.php                |  4 ++--
 modules/saml/lib/IdP/SQLNameID.php            | 18 +++++++--------
 modules/saml/lib/Message.php                  |  6 ++---
 modules/saml/lib/SP/LogoutStore.php           |  6 ++---
 psalm.xml                                     |  1 -
 46 files changed, 130 insertions(+), 137 deletions(-)
 create mode 100644 .phpunit.result.cache

diff --git a/.phpunit.result.cache b/.phpunit.result.cache
new file mode 100644
index 000000000..30c2ac389
--- /dev/null
+++ b/.phpunit.result.cache
@@ -0,0 +1 @@
+C:37:"PHPUnit\Runner\DefaultTestResultCache":33916:{a:2:{s:7:"defects";a:22:{s:58:"SimpleSAML\Test\Utils\SessionHandlerPHPTest::testSetCookie";i:1;s:70:"SimpleSAML\Test\Utils\SessionHandlerPHPTest::testSetCookieSameSiteNone";i:1;s:69:"SimpleSAML\Test\Utils\SessionHandlerPHPTest::testSetCookieSameSiteLax";i:1;s:72:"SimpleSAML\Test\Utils\SessionHandlerPHPTest::testSetCookieSameSiteStrict";i:1;s:64:"SimpleSAML\Test\Utils\SessionHandlerPHPTest::testRestorePrevious";i:1;s:45:"SimpleSAML\Test\Utils\HTTPTest::testSetCookie";i:1;s:53:"SimpleSAML\Test\Utils\HTTPTest::testSetCookieSameSite";i:1;s:64:"SimpleSAML\Test\Module\admin\Controller\FederationTest::testMain";i:4;s:72:"SimpleSAML\Test\Metadata\SAMLBuilderTest::testProtocolSupportEnumeration";i:6;s:66:"SimpleSAML\Test\Utils\EMailTest::testMailContents with data set #0";i:6;s:66:"SimpleSAML\Test\Utils\EMailTest::testMailContents with data set #1";i:6;s:53:"SimpleSAML\Test\Utils\TimeTest::testGenerateTimestamp";i:6;s:46:"SimpleSAML\Test\Web\IndexTest::testRedirection";i:4;s:66:"SimpleSAML\Test\Module\core\Auth\Process\TargetedIDTest::testBasic";i:4;s:71:"SimpleSAML\Test\Module\core\Auth\Process\TargetedIDTest::testWithSrcDst";i:4;s:77:"SimpleSAML\Test\Module\core\Auth\Process\TargetedIDTest::testNameIdGeneration";i:3;s:75:"SimpleSAML\Test\Module\core\Auth\Process\TargetedIDTest::testIdIsPersistent";i:4;s:71:"SimpleSAML\Test\Module\core\Auth\Process\TargetedIDTest::testIdIsUnique";i:3;s:69:"SimpleSAML\Test\Module\core\Auth\Process\TargetedIDTest::testNoUserID";i:3;s:79:"SimpleSAML\Test\Module\core\Auth\Process\TargetedIDTest::testAttributeNotExists";i:3;s:87:"SimpleSAML\Test\Module\core\Auth\Process\TargetedIDTest::testConfigInvalidAttributeName";i:3;s:80:"SimpleSAML\Test\Module\core\Auth\Process\TargetedIDTest::testConfigInvalidNameId";i:3;}s:5:"times";a:409:{s:45:"SimpleSAML\TestUtils\TemplateTest::testSyntax";d:0.124;s:55:"SimpleSAML\Test\Utils\ReduceSpillOverTest::testSetState";d:0.001;s:59:"SimpleSAML\Test\Utils\ReduceSpillOverTest::testStateRemoved";d:0.001;s:52:"SimpleSAML\Test\Auth\SimpleTest::testGetProcessedURL";d:0.001;s:52:"SimpleSAML\Test\Auth\SourceTest::testParseAuthSource";d:0.001;s:57:"SimpleSAML\Test\Auth\StateTest::testGetPersistentAuthData";d:0;s:49:"SimpleSAML\Test\ConfigurationTest::testGetVersion";d:0;s:58:"SimpleSAML\Test\ConfigurationTest::testLoadDefaultInstance";d:0;s:65:"SimpleSAML\Test\ConfigurationTest::testCriticalConfigurationError";d:0;s:47:"SimpleSAML\Test\ConfigurationTest::testGetValue";d:0;s:55:"SimpleSAML\Test\ConfigurationTest::testGetValueRequired";d:0;s:47:"SimpleSAML\Test\ConfigurationTest::testHasValue";d:0;s:52:"SimpleSAML\Test\ConfigurationTest::testHasValueOneOf";d:0;s:50:"SimpleSAML\Test\ConfigurationTest::testGetBasePath";d:0;s:50:"SimpleSAML\Test\ConfigurationTest::testResolvePath";d:0;s:51:"SimpleSAML\Test\ConfigurationTest::testGetPathValue";d:0;s:49:"SimpleSAML\Test\ConfigurationTest::testGetBaseDir";d:0;s:49:"SimpleSAML\Test\ConfigurationTest::testGetBoolean";d:0;s:56:"SimpleSAML\Test\ConfigurationTest::testGetBooleanMissing";d:0;s:54:"SimpleSAML\Test\ConfigurationTest::testGetBooleanWrong";d:0;s:48:"SimpleSAML\Test\ConfigurationTest::testGetString";d:0;s:55:"SimpleSAML\Test\ConfigurationTest::testGetStringMissing";d:0;s:53:"SimpleSAML\Test\ConfigurationTest::testGetStringWrong";d:0;s:49:"SimpleSAML\Test\ConfigurationTest::testGetInteger";d:0;s:56:"SimpleSAML\Test\ConfigurationTest::testGetIntegerMissing";d:0;s:54:"SimpleSAML\Test\ConfigurationTest::testGetIntegerWrong";d:0;s:54:"SimpleSAML\Test\ConfigurationTest::testGetIntegerRange";d:0;s:59:"SimpleSAML\Test\ConfigurationTest::testGetIntegerRangeBelow";d:0;s:59:"SimpleSAML\Test\ConfigurationTest::testGetIntegerRangeAbove";d:0;s:55:"SimpleSAML\Test\ConfigurationTest::testGetValueValidate";d:0;s:60:"SimpleSAML\Test\ConfigurationTest::testGetValueValidateWrong";d:0;s:47:"SimpleSAML\Test\ConfigurationTest::testGetArray";d:0;s:52:"SimpleSAML\Test\ConfigurationTest::testGetArrayWrong";d:0;s:50:"SimpleSAML\Test\ConfigurationTest::testGetArrayize";d:0;s:56:"SimpleSAML\Test\ConfigurationTest::testGetArrayizeString";d:0;s:66:"SimpleSAML\Test\ConfigurationTest::testGetArrayizeStringWrongValue";d:0;s:52:"SimpleSAML\Test\ConfigurationTest::testGetConfigItem";d:0;s:57:"SimpleSAML\Test\ConfigurationTest::testGetConfigItemWrong";d:0;s:49:"SimpleSAML\Test\ConfigurationTest::testGetOptions";d:0;s:46:"SimpleSAML\Test\ConfigurationTest::testToArray";d:0;s:57:"SimpleSAML\Test\ConfigurationTest::testGetDefaultEndpoint";d:0.001;s:51:"SimpleSAML\Test\ConfigurationTest::testGetEndpoints";d:0;s:57:"SimpleSAML\Test\ConfigurationTest::testGetLocalizedString";d:0;s:65:"SimpleSAML\Test\ConfigurationTest::testGetLocalizedStringNotArray";d:0;s:69:"SimpleSAML\Test\ConfigurationTest::testGetLocalizedStringNotStringKey";d:0;s:71:"SimpleSAML\Test\ConfigurationTest::testGetLocalizedStringNotStringValue";d:0;s:63:"SimpleSAML\Test\ConfigurationTest::testGetConfigNonexistentFile";d:0;s:70:"SimpleSAML\Test\ConfigurationTest::testGetConfigNonexistentFilePreload";d:0;s:60:"SimpleSAML\Test\ConfigurationTest::testLoadInstanceFromArray";d:0;s:47:"SimpleSAML\Test\DatabaseTest::connectionFailure";d:0.001;s:39:"SimpleSAML\Test\DatabaseTest::instances";d:0;s:41:"SimpleSAML\Test\DatabaseTest::secondaries";d:0;s:36:"SimpleSAML\Test\DatabaseTest::prefix";d:0;s:38:"SimpleSAML\Test\DatabaseTest::querying";d:0;s:41:"SimpleSAML\Test\DatabaseTest::readFailure";d:0;s:41:"SimpleSAML\Test\DatabaseTest::noSuchTable";d:0;s:59:"SimpleSAML\Test\Locale\LanguageTest::testGetDefaultLanguage";d:0;s:58:"SimpleSAML\Test\Locale\LanguageTest::testGetLanguageCookie";d:0;s:64:"SimpleSAML\Test\Locale\LanguageTest::testGetLanguageListNoConfig";d:0;s:69:"SimpleSAML\Test\Locale\LanguageTest::testGetLanguageListCorrectConfig";d:0;s:71:"SimpleSAML\Test\Locale\LanguageTest::testGetLanguageListIncorrectConfig";d:0;s:65:"SimpleSAML\Test\Locale\LanguageTest::testGetLanguageParameterName";d:0;s:54:"SimpleSAML\Test\Locale\LanguageTest::testIsLanguageRTL";d:0;s:52:"SimpleSAML\Test\Locale\LanguageTest::testSetLanguage";d:0;s:57:"SimpleSAML\Test\Locale\LocalizationTest::testLocalization";d:0.002;s:54:"SimpleSAML\Test\Locale\LocalizationTest::testAddDomain";d:0.002;s:46:"SimpleSAML\Test\Locale\TranslateTest::testNoop";d:0;s:69:"SimpleSAML\Test\Metadata\MetaDataStorageHandlerTest::testLoadEntities";d:0.001;s:68:"SimpleSAML\Test\Metadata\MetaDataStorageSourceTest::testBadXMLSource";d:0;s:78:"SimpleSAML\Test\Metadata\MetaDataStorageSourceTest::testInvalidStaticXMLSource";d:0.004;s:71:"SimpleSAML\Test\Metadata\MetaDataStorageSourceTest::testStaticXMLSource";d:0.001;s:83:"SimpleSAML\Test\Metadata\MetaDataStorageSourceTest::testLoadEntitiesStaticXMLSource";d:0.001;s:56:"SimpleSAML\Test\Metadata\SAMLBuilderTest::testAttributes";d:0.001;s:78:"SimpleSAML\Test\Metadata\SAMLBuilderTest::testAttributeConsumingServiceDefault";d:0;s:76:"SimpleSAML\Test\Metadata\SAMLBuilderTest::testAttributeConsumingServiceIndex";d:0;s:72:"SimpleSAML\Test\Metadata\SAMLBuilderTest::testProtocolSupportEnumeration";d:0;s:61:"SimpleSAML\Test\Metadata\SAMLParserTest::testRegistrationInfo";d:0.002;s:72:"SimpleSAML\Test\Metadata\SAMLParserTest::testRegistrationInfoInheritance";d:0;s:77:"SimpleSAML\Test\Metadata\SAMLParserTest::testAttributeConsumingServiceParsing";d:0;s:69:"SimpleSAML\Test\Metadata\SAMLParserTest::testRoleDescriptorExtensions";d:0.001;s:64:"SimpleSAML\Test\Metadata\SAMLParserTest::testHiddenFromDiscovery";d:0.001;s:73:"SimpleSAML\Test\Metadata\SAMLParserTest::testHiddenFromDiscoveryNotHidden";d:0;s:84:"SimpleSAML\Test\Metadata\SAMLParserTest::testHiddenFromDiscoveryNotHiddenNoMaceDirEC";d:0;s:47:"SimpleSAML\Test\ModuleTest::testIsModuleEnabled";d:0;s:44:"SimpleSAML\Test\ModuleTest::testGetModuleDir";d:0;s:44:"SimpleSAML\Test\ModuleTest::testGetModuleURL";d:0;s:42:"SimpleSAML\Test\ModuleTest::testGetModules";d:0;s:52:"SimpleSAML\Test\ModuleTest::testResolveClassNoModule";d:0;s:55:"SimpleSAML\Test\ModuleTest::testResolveClassNotSubclass";d:0;s:44:"SimpleSAML\Test\ModuleTest::testResolveClass";d:0;s:66:"SimpleSAML\Test\Utils\SessionHandlerPHPTest::testGetSessionHandler";d:0;s:58:"SimpleSAML\Test\Utils\SessionHandlerPHPTest::testSetCookie";d:0.001;s:70:"SimpleSAML\Test\Utils\SessionHandlerPHPTest::testSetCookieSameSiteNone";d:0.002;s:69:"SimpleSAML\Test\Utils\SessionHandlerPHPTest::testSetCookieSameSiteLax";d:0.002;s:72:"SimpleSAML\Test\Utils\SessionHandlerPHPTest::testSetCookieSameSiteStrict";d:0.003;s:64:"SimpleSAML\Test\Utils\SessionHandlerPHPTest::testRestorePrevious";d:0.002;s:61:"SimpleSAML\Test\Utils\SessionHandlerPHPTest::testNewSessionId";d:0;s:50:"SimpleSAML\Test\Store\RedisTest::testRedisInstance";d:0.005;s:62:"SimpleSAML\Test\Store\RedisTest::testRedisInstanceWithPassword";d:0;s:47:"SimpleSAML\Test\Store\RedisTest::testInsertData";d:0.001;s:55:"SimpleSAML\Test\Store\RedisTest::testInsertExpiringData";d:0;s:49:"SimpleSAML\Test\Store\RedisTest::testGetEmptyData";d:0;s:50:"SimpleSAML\Test\Store\RedisTest::testOverwriteData";d:0;s:47:"SimpleSAML\Test\Store\RedisTest::testDeleteData";d:0;s:42:"SimpleSAML\Test\Store\SQLTest::SQLInstance";d:0.003;s:50:"SimpleSAML\Test\Store\SQLTest::kvstoreTableVersion";d:0.001;s:46:"SimpleSAML\Test\Store\SQLTest::newTableVersion";d:0.001;s:50:"SimpleSAML\Test\Store\SQLTest::testSetTableVersion";d:0.001;s:47:"SimpleSAML\Test\Store\SQLTest::testGetEmptyData";d:0.001;s:45:"SimpleSAML\Test\Store\SQLTest::testInsertData";d:0.001;s:48:"SimpleSAML\Test\Store\SQLTest::testOverwriteData";d:0.001;s:45:"SimpleSAML\Test\Store\SQLTest::testDeleteData";d:0.001;s:46:"SimpleSAML\Test\Store\SQLTest::testVeryLongKey";d:0.001;s:39:"SimpleSAML\Test\StoreTest::defaultStore";d:0;s:42:"SimpleSAML\Test\StoreTest::phpSessionStore";d:0;s:40:"SimpleSAML\Test\StoreTest::memcacheStore";d:0;s:35:"SimpleSAML\Test\StoreTest::sqlStore";d:0.001;s:36:"SimpleSAML\Test\StoreTest::pathStore";d:0.001;s:49:"SimpleSAML\Test\StoreTest::notFoundStoreException";d:0;s:46:"SimpleSAML\Test\Utils\ArraysTest::testArrayize";d:0;s:47:"SimpleSAML\Test\Utils\ArraysTest::testTranspose";d:0;s:80:"SimpleSAML\Test\Utils\AttributesTest::testGetExpectedAttributeNonNormalizedArray";d:0;s:78:"SimpleSAML\Test\Utils\AttributesTest::testGetExpectedAttributeMissingAttribute";d:0;s:76:"SimpleSAML\Test\Utils\AttributesTest::testGetExpectedAttributeEmptyAttribute";d:0;s:76:"SimpleSAML\Test\Utils\AttributesTest::testGetExpectedAttributeMultipleValues";d:0;s:62:"SimpleSAML\Test\Utils\AttributesTest::testGetExpectedAttribute";d:0;s:73:"SimpleSAML\Test\Utils\AttributesTest::testNormalizeAttributesArrayBadKeys";d:0;s:75:"SimpleSAML\Test\Utils\AttributesTest::testNormalizeAttributesArrayBadValues";d:0;s:66:"SimpleSAML\Test\Utils\AttributesTest::testNormalizeAttributesArray";d:0;s:62:"SimpleSAML\Test\Utils\AttributesTest::testNamespacedAttributes";d:0;s:57:"SimpleSAML\Test\Utils\Config\MetadataTest::testGetContact";d:0;s:68:"SimpleSAML\Test\Utils\Config\MetadataTest::testIsHiddenFromDiscovery";d:0;s:64:"SimpleSAML\Test\Utils\Config\MetadataTest::testParseNameIdPolicy";d:0;s:54:"SimpleSAML\Test\Utils\ConfigTest::testDefaultConfigDir";d:0;s:58:"SimpleSAML\Test\Utils\ConfigTest::testEnvVariableConfigDir";d:0;s:66:"SimpleSAML\Test\Utils\ConfigTest::testEnvRedirectVariableConfigDir";d:0;s:74:"SimpleSAML\Test\Utils\ConfigTest::testEnvRedirectPriorityVariableConfigDir";d:0;s:80:"SimpleSAML\Test\Utils\ConfigTest::testInvalidEnvVariableConfigDirThrowsException";d:0;s:48:"SimpleSAML\Test\Utils\CryptoTest::testAesDecrypt";d:0.001;s:48:"SimpleSAML\Test\Utils\CryptoTest::testAesEncrypt";d:0;s:54:"SimpleSAML\Test\Utils\CryptoTest::testFormatConversion";d:0;s:49:"SimpleSAML\Test\Utils\CryptoTest::testGoodPwValid";d:0.2;s:50:"SimpleSAML\Test\Utils\CryptoTest::testBadPwInvalid";d:0.203;s:56:"SimpleSAML\Test\Utils\CryptoTest::testSecureCompareEqual";d:0;s:59:"SimpleSAML\Test\Utils\CryptoTest::testSecureCompareNotEqual";d:0;s:75:"SimpleSAML\Test\Utils\CryptoTest::testLoadPrivateKeyRequiredMetadataMissing";d:0;s:78:"SimpleSAML\Test\Utils\CryptoTest::testLoadPrivateKeyNotRequiredMetadataMissing";d:0;s:63:"SimpleSAML\Test\Utils\CryptoTest::testLoadPrivateKeyMissingFile";d:0;s:57:"SimpleSAML\Test\Utils\CryptoTest::testLoadPrivateKeyBasic";d:0;s:60:"SimpleSAML\Test\Utils\CryptoTest::testLoadPrivateKeyPassword";d:0;s:58:"SimpleSAML\Test\Utils\CryptoTest::testLoadPrivateKeyPrefix";d:0;s:74:"SimpleSAML\Test\Utils\CryptoTest::testLoadPublicKeyRequiredMetadataMissing";d:0;s:77:"SimpleSAML\Test\Utils\CryptoTest::testLoadPublicKeyNotRequiredMetadataMissing";d:0;s:69:"SimpleSAML\Test\Utils\CryptoTest::testLoadPublicKeyNotX509Certificate";d:0;s:61:"SimpleSAML\Test\Utils\CryptoTest::testLoadPublicKeyNotSigning";d:0;s:56:"SimpleSAML\Test\Utils\CryptoTest::testLoadPublicKeyBasic";d:0;s:74:"SimpleSAML\Test\Utils\EMailTest::testMailFromDefaultConfigurationException";d:0.005;s:64:"SimpleSAML\Test\Utils\EMailTest::testInvalidFromAddressException";d:0;s:62:"SimpleSAML\Test\Utils\EMailTest::testInvalidToAddressException";d:0;s:66:"SimpleSAML\Test\Utils\EMailTest::testMailContents with data set #0";d:0.008;s:66:"SimpleSAML\Test\Utils\EMailTest::testMailContents with data set #1";d:0.006;s:66:"SimpleSAML\Test\Utils\EMailTest::testInvalidTransportConfiguration";d:0;s:61:"SimpleSAML\Test\Utils\EMailTest::testInvalidSMTPConfiguration";d:0;s:58:"SimpleSAML\Test\Utils\EMailTest::testGetDefaultMailAddress";d:0;s:52:"SimpleSAML\Test\Utils\HTTPTest::testAddURLParameters";d:0;s:49:"SimpleSAML\Test\Utils\HTTPTest::testGuessBasePath";d:0;s:47:"SimpleSAML\Test\Utils\HTTPTest::testGetSelfHost";d:0;s:55:"SimpleSAML\Test\Utils\HTTPTest::testGetSelfHostWithPort";d:0;s:53:"SimpleSAML\Test\Utils\HTTPTest::testGetSelfURLMethods";d:0.001;s:63:"SimpleSAML\Test\Utils\HTTPTest::testCheckURLAllowedWithoutRegex";d:0;s:60:"SimpleSAML\Test\Utils\HTTPTest::testCheckURLAllowedWithRegex";d:0;s:49:"SimpleSAML\Test\Utils\HTTPTest::testGetServerPort";d:0;s:77:"SimpleSAML\Test\Utils\HTTPTest::testCheckURLAllowedWithRegexWithoutDelimiters";d:0;s:55:"SimpleSAML\Test\Utils\HTTPTest::testGetFirstPathElement";d:0;s:45:"SimpleSAML\Test\Utils\HTTPTest::testSetCookie";d:0.001;s:53:"SimpleSAML\Test\Utils\HTTPTest::testSetCookieInsecure";d:0;s:53:"SimpleSAML\Test\Utils\HTTPTest::testSetCookieSameSite";d:0.002;s:46:"SimpleSAML\Test\Utils\NetTest::testIpCIDRcheck";d:0;s:48:"SimpleSAML\Test\Utils\NetTest::testIpv6CIDRcheck";d:0;s:48:"SimpleSAML\Test\Utils\RandomTest::testGenerateID";d:0;s:48:"SimpleSAML\Test\Utils\SystemTest::testGetOSBasic";d:0;s:70:"SimpleSAML\Test\Utils\SystemTest::testResolvePathRemoveTrailingSlashes";d:0;s:73:"SimpleSAML\Test\Utils\SystemTest::testResolvePathPreferAbsolutePathToBase";d:0;s:59:"SimpleSAML\Test\Utils\SystemTest::testResolvePathCurDirPath";d:0;s:59:"SimpleSAML\Test\Utils\SystemTest::testResolvePathParentPath";d:0;s:69:"SimpleSAML\Test\Utils\SystemTest::testResolvePathAllowsStreamWrappers";d:0;s:74:"SimpleSAML\Test\Utils\SystemTest::testResolvePathAllowsAwsS3StreamWrappers";d:0;s:52:"SimpleSAML\Test\Utils\SystemTest::testWriteFileBasic";d:0;s:55:"SimpleSAML\Test\Utils\SystemTest::testWriteFileContents";d:0;s:51:"SimpleSAML\Test\Utils\SystemTest::testWriteFileMode";d:0;s:53:"SimpleSAML\Test\Utils\SystemTest::testGetTempDirBasic";d:0;s:59:"SimpleSAML\Test\Utils\SystemTest::testGetTempDirNonExistant";d:0;s:62:"SimpleSAML\Test\Utils\SystemTest::testGetTempDirBadPermissions";d:0;s:53:"SimpleSAML\Test\Utils\TimeTest::testGenerateTimestamp";d:0;s:48:"SimpleSAML\Test\Utils\TimeTest::testInitTimezone";d:0;s:49:"SimpleSAML\Test\Utils\TimeTest::testParseDuration";d:0;s:55:"SimpleSAML\Test\Utils\XMLTest::testIsDomNodeOfTypeBasic";d:0;s:66:"SimpleSAML\Test\Utils\XMLTest::testIsDomNodeOfTypeMissingNamespace";d:0;s:55:"SimpleSAML\Test\Utils\XMLTest::testIsDomNodeOfTypeEmpty";d:0;s:58:"SimpleSAML\Test\Utils\XMLTest::testIsDomNodeOfTypeShortcut";d:0;s:63:"SimpleSAML\Test\Utils\XMLTest::testIsDomNodeOfTypeIncorrectName";d:0;s:68:"SimpleSAML\Test\Utils\XMLTest::testIsDomNodeOfTypeIncorrectNamespace";d:0;s:50:"SimpleSAML\Test\Utils\XMLTest::testGetDomTextBasic";d:0;s:50:"SimpleSAML\Test\Utils\XMLTest::testGetDomTextMulti";d:0;s:58:"SimpleSAML\Test\Utils\XMLTest::testGetDomTextIncorrectType";d:0;s:54:"SimpleSAML\Test\Utils\XMLTest::testGetDomChildrenBasic";d:0;s:62:"SimpleSAML\Test\Utils\XMLTest::testGetDomChildrenIncorrectType";d:0;s:62:"SimpleSAML\Test\Utils\XMLTest::testGetDomChildrenIncorrectName";d:0;s:56:"SimpleSAML\Test\Utils\XMLTest::testFormatDomElementBasic";d:0;s:57:"SimpleSAML\Test\Utils\XMLTest::testFormatDomElementNested";d:0;s:61:"SimpleSAML\Test\Utils\XMLTest::testFormatDomElementIndentBase";d:0;s:63:"SimpleSAML\Test\Utils\XMLTest::testFormatDomElementTextAndChild";d:0;s:55:"SimpleSAML\Test\Utils\XMLTest::testFormatXmlStringBasic";d:0;s:62:"SimpleSAML\Test\Utils\XMLTest::testFormatXmlStringMalformedXml";d:0;s:54:"SimpleSAML\Test\Utils\XMLTest::testIsValidMalformedXml";d:0;s:50:"SimpleSAML\Test\Utils\XMLTest::testIsValidMetadata";d:0.003;s:62:"SimpleSAML\Test\Utils\XMLTest::testCheckSAMLMessageInvalidType";d:0;s:45:"SimpleSAML\Test\XML\ErrorsTest::loggingErrors";d:0;s:44:"SimpleSAML\Test\XML\ErrorsTest::formatErrors";d:0;s:40:"SimpleSAML\Test\XML\ParserTest::getValue";d:0;s:45:"SimpleSAML\Test\XML\ParserTest::getEmptyValue";d:0;s:49:"SimpleSAML\Test\XML\ParserTest::getValueException";d:0;s:47:"SimpleSAML\Test\XML\ParserTest::getDefaultValue";d:0;s:52:"SimpleSAML\Test\XML\ParserTest::getValueAlternatives";d:0;s:57:"SimpleSAML\Test\XML\ParserTest::getEmptyValueAlternatives";d:0;s:61:"SimpleSAML\Test\XML\ParserTest::getValueAlternativesException";d:0;s:47:"SimpleSAML\Test\XML\SignerTest::testSignerBasic";d:0;s:45:"SimpleSAML\Test\XML\SignerTest::testSignBasic";d:0.002;s:55:"SimpleSAML\Test\XML\SignerTest::testSignWithCertificate";d:0.002;s:60:"SimpleSAML\Test\XML\SignerTest::testSignWithMultiCertificate";d:0.002;s:57:"SimpleSAML\Test\XML\SignerTest::testSignMissingPrivateKey";d:0;s:64:"SimpleSAML\Test\XML\ValidatorTest::testValidatorMissingSignature";d:0;s:57:"SimpleSAML\Test\XML\ValidatorTest::testGetX509Certificate";d:0.002;s:61:"SimpleSAML\Test\XML\ValidatorTest::testIsNodeValidatedSuccess";d:0.002;s:61:"SimpleSAML\Test\XML\ValidatorTest::testIsNodeValidatedFailure";d:0.002;s:67:"SimpleSAML\Test\Module\admin\Controller\ConfigTest::testDiagnostics";d:0.006;s:60:"SimpleSAML\Test\Module\admin\Controller\ConfigTest::testMain";d:0.003;s:63:"SimpleSAML\Test\Module\admin\Controller\ConfigTest::testPhpinfo";d:0;s:64:"SimpleSAML\Test\Module\admin\Controller\FederationTest::testMain";d:0.007;s:87:"SimpleSAML\Test\Module\admin\Controller\FederationTest::testMetadataConverterFileUpload";d:0.004;s:81:"SimpleSAML\Test\Module\admin\Controller\FederationTest::testMetadataConverterData";d:0.004;s:89:"SimpleSAML\Test\Module\admin\Controller\FederationTest::testMetadataConverterSkipsExpires";d:0.003;s:102:"SimpleSAML\Test\Module\admin\Controller\FederationTest::testMetadataConverterInvalidMetadataShowsError";d:0.003;s:87:"SimpleSAML\Test\Module\admin\Controller\FederationTest::testMetadataConverterEmptyInput";d:0.002;s:74:"SimpleSAML\Test\Module\admin\Controller\FederationTest::testDownloadCertSP";d:0;s:76:"SimpleSAML\Test\Module\admin\Controller\FederationTest::testDownloadCertFile";d:0;s:76:"SimpleSAML\Test\Module\admin\Controller\FederationTest::testShowRemoteEntity";d:0.003;s:75:"SimpleSAML\Test\Module\admin\Controller\TestTest::testMainWithoutAuthSource";d:0.003;s:81:"SimpleSAML\Test\Module\admin\Controller\TestTest::testMainWithAuthSourceAndLogout";d:0;s:84:"SimpleSAML\Test\Module\admin\Controller\TestTest::testMainWithAuthSourceAndException";d:0;s:88:"SimpleSAML\Test\Module\admin\Controller\TestTest::testMainWithAuthSourceNotAuthenticated";d:0;s:85:"SimpleSAML\Test\Module\admin\Controller\TestTest::testMainWithAuthSourceAuthenticated";d:0.003;s:68:"SimpleSAML\Test\Module\core\Auth\Process\AttributeAddTest::testBasic";d:0;s:82:"SimpleSAML\Test\Module\core\Auth\Process\AttributeAddTest::testExistingNotModified";d:0;s:74:"SimpleSAML\Test\Module\core\Auth\Process\AttributeAddTest::testStringValue";d:0;s:74:"SimpleSAML\Test\Module\core\Auth\Process\AttributeAddTest::testAddMultiple";d:0;s:69:"SimpleSAML\Test\Module\core\Auth\Process\AttributeAddTest::testAppend";d:0;s:70:"SimpleSAML\Test\Module\core\Auth\Process\AttributeAddTest::testReplace";d:0;s:72:"SimpleSAML\Test\Module\core\Auth\Process\AttributeAddTest::testWrongFlag";d:0;s:82:"SimpleSAML\Test\Module\core\Auth\Process\AttributeAddTest::testWrongAttributeValue";d:0;s:70:"SimpleSAML\Test\Module\core\Auth\Process\AttributeAlterTest::testBasic";d:0;s:75:"SimpleSAML\Test\Module\core\Auth\Process\AttributeAlterTest::testWithTarget";d:0;s:72:"SimpleSAML\Test\Module\core\Auth\Process\AttributeAlterTest::testNomatch";d:0;s:77:"SimpleSAML\Test\Module\core\Auth\Process\AttributeAlterTest::testReplaceMatch";d:0;s:87:"SimpleSAML\Test\Module\core\Auth\Process\AttributeAlterTest::testReplaceMatchWithTarget";d:0;s:79:"SimpleSAML\Test\Module\core\Auth\Process\AttributeAlterTest::testReplaceNoMatch";d:0;s:76:"SimpleSAML\Test\Module\core\Auth\Process\AttributeAlterTest::testRemoveMatch";d:0;s:79:"SimpleSAML\Test\Module\core\Auth\Process\AttributeAlterTest::testRemoveMatchAll";d:0;s:76:"SimpleSAML\Test\Module\core\Auth\Process\AttributeAlterTest::testWrongConfig";d:0;s:81:"SimpleSAML\Test\Module\core\Auth\Process\AttributeAlterTest::testIncompleteConfig";d:0;s:82:"SimpleSAML\Test\Module\core\Auth\Process\AttributeAlterTest::testIncompleteConfig2";d:0;s:82:"SimpleSAML\Test\Module\core\Auth\Process\AttributeAlterTest::testIncompleteConfig3";d:0;s:82:"SimpleSAML\Test\Module\core\Auth\Process\AttributeAlterTest::testIncompleteConfig4";d:0;s:82:"SimpleSAML\Test\Module\core\Auth\Process\AttributeAlterTest::testIncompleteConfig5";d:0;s:69:"SimpleSAML\Test\Module\core\Auth\Process\AttributeCopyTest::testBasic";d:0;s:69:"SimpleSAML\Test\Module\core\Auth\Process\AttributeCopyTest::testArray";d:0;s:83:"SimpleSAML\Test\Module\core\Auth\Process\AttributeCopyTest::testExistingNotModified";d:0;s:76:"SimpleSAML\Test\Module\core\Auth\Process\AttributeCopyTest::testCopyMultiple";d:0;s:73:"SimpleSAML\Test\Module\core\Auth\Process\AttributeCopyTest::testCopyClash";d:0;s:82:"SimpleSAML\Test\Module\core\Auth\Process\AttributeCopyTest::testWrongAttributeName";d:0;s:83:"SimpleSAML\Test\Module\core\Auth\Process\AttributeCopyTest::testWrongAttributeValue";d:0;s:73:"SimpleSAML\Test\Module\core\Auth\Process\AttributeLimitTest::testIdPAttrs";d:0;s:82:"SimpleSAML\Test\Module\core\Auth\Process\AttributeLimitTest::testNULLMetadataAttrs";d:0;s:70:"SimpleSAML\Test\Module\core\Auth\Process\AttributeLimitTest::testBasic";d:0;s:84:"SimpleSAML\Test\Module\core\Auth\Process\AttributeLimitTest::testDefaultWithMetadata";d:0;s:81:"SimpleSAML\Test\Module\core\Auth\Process\AttributeLimitTest::testDefaultWithAttrs";d:0;s:78:"SimpleSAML\Test\Module\core\Auth\Process\AttributeLimitTest::testInvalidConfig";d:0;s:85:"SimpleSAML\Test\Module\core\Auth\Process\AttributeLimitTest::testInvalidAttributeName";d:0;s:85:"SimpleSAML\Test\Module\core\Auth\Process\AttributeLimitTest::testMatchAttributeValues";d:0;s:98:"SimpleSAML\Test\Module\core\Auth\Process\AttributeLimitTest::testBadOptionsNotTreatedAsValidValues";d:0;s:113:"SimpleSAML\Test\Module\core\Auth\Process\AttributeLimitTest::testThatIgnoreCaseOptionNotMatchBooleanAsStringValue";d:0;s:95:"SimpleSAML\Test\Module\core\Auth\Process\AttributeLimitTest::testMatchAttributeValuesIgnoreCase";d:0;s:90:"SimpleSAML\Test\Module\core\Auth\Process\AttributeLimitTest::testMatchAttributeValuesRegex";d:0;s:93:"SimpleSAML\Test\Module\core\Auth\Process\AttributeLimitTest::testMatchAttributeValuesNotArray";d:0;s:79:"SimpleSAML\Test\Module\core\Auth\Process\AttributeLimitTest::testNoIntersection";d:0;s:68:"SimpleSAML\Test\Module\core\Auth\Process\AttributeMapTest::testBasic";d:0;s:72:"SimpleSAML\Test\Module\core\Auth\Process\AttributeMapTest::testDuplicate";d:0;s:71:"SimpleSAML\Test\Module\core\Auth\Process\AttributeMapTest::testMultiple";d:0;s:80:"SimpleSAML\Test\Module\core\Auth\Process\AttributeMapTest::testMultipleDuplicate";d:0;s:71:"SimpleSAML\Test\Module\core\Auth\Process\AttributeMapTest::testCircular";d:0;s:73:"SimpleSAML\Test\Module\core\Auth\Process\AttributeMapTest::testMissingMap";d:0;s:91:"SimpleSAML\Test\Module\core\Auth\Process\AttributeMapTest::testInvalidOriginalAttributeType";d:0;s:89:"SimpleSAML\Test\Module\core\Auth\Process\AttributeMapTest::testInvalidMappedAttributeType";d:0;s:77:"SimpleSAML\Test\Module\core\Auth\Process\AttributeMapTest::testMissingMapFile";d:0;s:72:"SimpleSAML\Test\Module\core\Auth\Process\AttributeMapTest::testOverwrite";d:0;s:80:"SimpleSAML\Test\Module\core\Auth\Process\AttributeMapTest::testOverwriteReversed";d:0;s:73:"SimpleSAML\Test\Module\core\Auth\Process\AttributeValueMapTest::testBasic";d:0;s:80:"SimpleSAML\Test\Module\core\Auth\Process\AttributeValueMapTest::testNoDuplicates";d:0;s:75:"SimpleSAML\Test\Module\core\Auth\Process\AttributeValueMapTest::testReplace";d:0;s:72:"SimpleSAML\Test\Module\core\Auth\Process\AttributeValueMapTest::testKeep";d:0;s:79:"SimpleSAML\Test\Module\core\Auth\Process\AttributeValueMapTest::testUnknownFlag";d:0;s:90:"SimpleSAML\Test\Module\core\Auth\Process\AttributeValueMapTest::testMissingSourceAttribute";d:0;s:90:"SimpleSAML\Test\Module\core\Auth\Process\AttributeValueMapTest::testMissingTargetAttribute";d:0;s:89:"SimpleSAML\Test\Module\core\Auth\Process\CardinalitySingleTest::testSingleValuedUnchanged";d:0;s:78:"SimpleSAML\Test\Module\core\Auth\Process\CardinalitySingleTest::testFirstValue";d:0;s:87:"SimpleSAML\Test\Module\core\Auth\Process\CardinalitySingleTest::testFirstValueUnchanged";d:0;s:75:"SimpleSAML\Test\Module\core\Auth\Process\CardinalitySingleTest::testFlatten";d:0;s:84:"SimpleSAML\Test\Module\core\Auth\Process\CardinalitySingleTest::testFlattenUnchanged";d:0;s:73:"SimpleSAML\Test\Module\core\Auth\Process\CardinalitySingleTest::testAbort";d:0;s:70:"SimpleSAML\Test\Module\core\Auth\Process\CardinalityTest::testMinNoMax";d:0;s:70:"SimpleSAML\Test\Module\core\Auth\Process\CardinalityTest::testMaxNoMin";d:0;s:68:"SimpleSAML\Test\Module\core\Auth\Process\CardinalityTest::testMaxMin";d:0;s:76:"SimpleSAML\Test\Module\core\Auth\Process\CardinalityTest::testMaxOutOfBounds";d:0;s:76:"SimpleSAML\Test\Module\core\Auth\Process\CardinalityTest::testMinOutOfBounds";d:0;s:78:"SimpleSAML\Test\Module\core\Auth\Process\CardinalityTest::testMissingAttribute";d:0;s:72:"SimpleSAML\Test\Module\core\Auth\Process\CardinalityTest::testMinInvalid";d:0;s:73:"SimpleSAML\Test\Module\core\Auth\Process\CardinalityTest::testMinNegative";d:0;s:72:"SimpleSAML\Test\Module\core\Auth\Process\CardinalityTest::testMaxInvalid";d:0;s:79:"SimpleSAML\Test\Module\core\Auth\Process\CardinalityTest::testMinGreaterThanMax";d:0;s:82:"SimpleSAML\Test\Module\core\Auth\Process\CardinalityTest::testInvalidAttributeName";d:0;s:74:"SimpleSAML\Test\Module\core\Auth\Process\PHPTest::testInvalidConfiguration";d:0;s:65:"SimpleSAML\Test\Module\core\Auth\Process\PHPTest::testCodeDefined";d:0;s:80:"SimpleSAML\Test\Module\core\Auth\Process\PHPTest::testPreserveIncomingAttributes";d:0;s:78:"SimpleSAML\Test\Module\core\Auth\Process\PHPTest::testThrowExceptionFromFilter";d:0;s:72:"SimpleSAML\Test\Module\core\Auth\Process\PHPTest::testStateCanBeModified";d:0;s:70:"SimpleSAML\Test\Module\core\Auth\Process\ScopeAttributeTest::testBasic";d:0;s:76:"SimpleSAML\Test\Module\core\Auth\Process\ScopeAttributeTest::testNoOverwrite";d:0;s:78:"SimpleSAML\Test\Module\core\Auth\Process\ScopeAttributeTest::testNoDuplication";d:0;s:82:"SimpleSAML\Test\Module\core\Auth\Process\ScopeAttributeTest::testNoSourceAttribute";d:0;s:81:"SimpleSAML\Test\Module\core\Auth\Process\ScopeAttributeTest::testNoScopeAttribute";d:0;s:72:"SimpleSAML\Test\Module\core\Auth\Process\ScopeAttributeTest::testMultiAt";d:0;s:82:"SimpleSAML\Test\Module\core\Auth\Process\ScopeAttributeTest::testMultivaluedSource";d:0;s:69:"SimpleSAML\Test\Module\core\Auth\Process\ScopeAttributeTest::testNoAt";d:0;s:76:"SimpleSAML\Test\Module\core\Auth\Process\ScopeAttributeTest::testOnlyIfEmpty";d:0;s:74:"SimpleSAML\Test\Module\core\Auth\Process\ScopeFromAttributeTest::testBasic";d:0;s:80:"SimpleSAML\Test\Module\core\Auth\Process\ScopeFromAttributeTest::testNoOverwrite";d:0;s:86:"SimpleSAML\Test\Module\core\Auth\Process\ScopeFromAttributeTest::testNoSourceAttribute";d:0;s:76:"SimpleSAML\Test\Module\core\Auth\Process\ScopeFromAttributeTest::testMultiAt";d:0;s:73:"SimpleSAML\Test\Module\core\Auth\Process\ScopeFromAttributeTest::testNoAt";d:0;s:69:"SimpleSAML\Test\Module\core\Auth\Process\TargetedIDTest::testNoUserID";d:0;s:79:"SimpleSAML\Test\Module\core\Auth\Process\TargetedIDTest::testAttributeNotExists";d:0;s:87:"SimpleSAML\Test\Module\core\Auth\Process\TargetedIDTest::testConfigInvalidAttributeName";d:0;s:80:"SimpleSAML\Test\Module\core\Auth\Process\TargetedIDTest::testConfigInvalidNameId";d:0;s:97:"SimpleSAML\Test\Module\core\Auth\UserPassBaseTest::testAuthenticateECPCallsLoginAndSetsAttributes";d:0.001;s:85:"SimpleSAML\Test\Module\core\Auth\UserPassBaseTest::testAuthenticateECPMissingUsername";d:0;s:85:"SimpleSAML\Test\Module\core\Auth\UserPassBaseTest::testAuthenticateECPMissingPassword";d:0;s:98:"SimpleSAML\Test\Module\core\Auth\UserPassBaseTest::testAuthenticateECPCallsLoginWithForcedUsername";d:0;s:85:"SimpleSAML\Test\Module\core\Auth\UserPassOrgBaseTest::testRememberOrganizationEnabled";d:0.001;s:85:"SimpleSAML\Test\Module\core\Controller\LoginTest::testAutomaticLoginWhenOnlyOneSource";d:0.001;s:73:"SimpleSAML\Test\Module\core\Controller\LoginTest::testMultipleAuthSources";d:0.003;s:80:"SimpleSAML\Test\Module\core\Controller\LoginTest::testLoginWithInvalidAuthSource";d:0;s:83:"SimpleSAML\Test\Module\core\Controller\LoginTest::testLoginWhenAlreadyAuthenticated";d:0;s:60:"SimpleSAML\Test\Module\core\Controller\LoginTest::testLogout";d:0;s:70:"SimpleSAML\Test\Module\core\Controller\LoginTest::testNotAuthenticated";d:0;s:67:"SimpleSAML\Test\Module\core\Controller\LoginTest::testAuthenticated";d:0.009;s:68:"SimpleSAML\Test\Module\core\Storage\SQLPermanentStorageTest::testSet";d:0.001;s:77:"SimpleSAML\Test\Module\core\Storage\SQLPermanentStorageTest::testSetOverwrite";d:0.001;s:79:"SimpleSAML\Test\Module\core\Storage\SQLPermanentStorageTest::testNonexistentKey";d:0;s:75:"SimpleSAML\Test\Module\core\Storage\SQLPermanentStorageTest::testExpiration";d:3.004;s:71:"SimpleSAML\Test\Module\core\Storage\SQLPermanentStorageTest::testRemove";d:0.001;s:57:"SimpleSAML\Test\Module\cron\Controller\CronTest::testInfo";d:0.005;s:56:"SimpleSAML\Test\Module\cron\Controller\CronTest::testRun";d:0.004;s:84:"SimpleSAML\Test\Module\multiauth\Auth\Source\MultiAuthTest::testSourcesMustBePresent";d:0.001;s:84:"SimpleSAML\Test\Module\multiauth\Auth\Source\MultiAuthTest::testPreselectMustBeValid";d:0;s:83:"SimpleSAML\Test\Module\multiauth\Auth\Source\MultiAuthTest::testPreselectIsOptional";d:0;s:88:"SimpleSAML\Test\Module\multiauth\Auth\Source\MultiAuthTest::testPreselectCanBeConfigured";d:0;s:89:"SimpleSAML\Test\Module\multiauth\Auth\Source\MultiAuthTest::testStatePreselectHasPriority";d:0;s:74:"SimpleSAML\Test\Module\saml\Auth\Process\FilterScopesTest::testValidScopes";d:0;s:76:"SimpleSAML\Test\Module\saml\Auth\Process\FilterScopesTest::testInvalidScopes";d:0;s:79:"SimpleSAML\Test\Module\saml\Auth\Process\NameIDAttributeTest::testMinimalConfig";d:0;s:85:"SimpleSAML\Test\Module\saml\Auth\Process\NameIDAttributeTest::testCustomAttributeName";d:0;s:72:"SimpleSAML\Test\Module\saml\Auth\Process\NameIDAttributeTest::testFormat";d:0;s:94:"SimpleSAML\Test\Module\saml\Auth\Process\NameIDAttributeTest::testInvalidFormatThrowsException";d:0;s:100:"SimpleSAML\Test\Module\saml\Auth\Process\NameIDAttributeTest::testInvalidRequestLeavesStateUntouched";d:0;s:94:"SimpleSAML\Test\Module\saml\Auth\Process\NameIDAttributeTest::testCustomAttributeNameAndFormat";d:0;s:80:"SimpleSAML\Test\Module\saml\Auth\Process\NameIDAttributeTest::testOverrideNameID";d:0;s:64:"SimpleSAML\Test\Module\saml\Auth\Source\SPTest::testAuthnRequest";d:0.005;s:58:"SimpleSAML\Test\Module\saml\Auth\Source\SPTest::testNameID";d:0;s:72:"SimpleSAML\Test\Module\saml\Auth\Source\SPTest::testAuthnContextClassRef";d:0;s:63:"SimpleSAML\Test\Module\saml\Auth\Source\SPTest::testForcedAuthn";d:0;s:81:"SimpleSAML\Test\Module\saml\Auth\Source\SPTest::testIdpListWithNoMatchingMetadata";d:0.001;s:82:"SimpleSAML\Test\Module\saml\Auth\Source\SPTest::testIdpListWithExplicitIdpNotMatch";d:0.001;s:79:"SimpleSAML\Test\Module\saml\Auth\Source\SPTest::testIdpListWithExplicitIdpMatch";d:0.001;s:74:"SimpleSAML\Test\Module\saml\Auth\Source\SPTest::testIdpListWithSingleMatch";d:0.001;s:76:"SimpleSAML\Test\Module\saml\Auth\Source\SPTest::testIdpListWithMultipleMatch";d:0.001;s:77:"SimpleSAML\Test\Module\saml\IdP\SAML2Test::testIdPInitiatedLoginMinimumParams";d:0.005;s:78:"SimpleSAML\Test\Module\saml\IdP\SAML2Test::testIdPInitiatedLoginOptionalParams";d:0.001;s:78:"SimpleSAML\Test\Module\saml\IdP\SAML2Test::testIdPInitShibCompatyMinimumParams";d:0.001;s:78:"SimpleSAML\Test\Module\saml\IdP\SAML2Test::testIdPInitShibCompatOptionalParams";d:0.001;s:59:"SimpleSAML\Test\Module\saml\IdP\SQLNameIDTest::testSQLStore";d:0.002;s:68:"SimpleSAML\Test\Module\saml\IdP\SQLNameIDTest::testIncompatibleStore";d:0;s:59:"SimpleSAML\Test\Module\saml\IdP\SQLNameIDTest::testDatabase";d:0.001;s:46:"SimpleSAML\Test\Web\IndexTest::testRedirection";d:0.059;s:42:"SimpleSAML\Test\Web\RouterTest::testSyntax";d:0.008;s:66:"SimpleSAML\Test\Module\core\Auth\Process\TargetedIDTest::testBasic";d:0;s:71:"SimpleSAML\Test\Module\core\Auth\Process\TargetedIDTest::testWithSrcDst";d:0;s:77:"SimpleSAML\Test\Module\core\Auth\Process\TargetedIDTest::testNameIdGeneration";d:0;s:75:"SimpleSAML\Test\Module\core\Auth\Process\TargetedIDTest::testIdIsPersistent";d:0;s:71:"SimpleSAML\Test\Module\core\Auth\Process\TargetedIDTest::testIdIsUnique";d:0;}}}
\ No newline at end of file
diff --git a/lib/SimpleSAML/Auth/DefaultAuth.php b/lib/SimpleSAML/Auth/DefaultAuth.php
index 192868f31..968d37d89 100644
--- a/lib/SimpleSAML/Auth/DefaultAuth.php
+++ b/lib/SimpleSAML/Auth/DefaultAuth.php
@@ -4,6 +4,7 @@ declare(strict_types=1);
 
 namespace SimpleSAML\Auth;
 
+use Exception;
 use SimpleSAML\Module\saml\Auth\Source\SP;
 use SimpleSAML\Session;
 use SimpleSAML\Utils;
@@ -157,11 +158,11 @@ class DefaultAuth
      * @return Source The authentication source.
      * @throws \Exception If the $id does not correspond with an authentication source.
      */
-    private static function getAuthSource($id)
+    private static function getAuthSource($id): Source
     {
         $as = Source::getById($id);
         if ($as === null) {
-            throw new \Exception('Invalid authentication source: ' . $id);
+            throw new Exception('Invalid authentication source: ' . $id);
         }
         return $as;
     }
diff --git a/lib/SimpleSAML/Auth/ProcessingChain.php b/lib/SimpleSAML/Auth/ProcessingChain.php
index 3ba249ecf..35af723c2 100644
--- a/lib/SimpleSAML/Auth/ProcessingChain.php
+++ b/lib/SimpleSAML/Auth/ProcessingChain.php
@@ -95,7 +95,7 @@ class ProcessingChain
      * @param array $src  Source filters. May be unsorted.
      * @return void
      */
-    private static function addFilters(array &$target, array $src)
+    private static function addFilters(array &$target, array $src): void
     {
         foreach ($src as $filter) {
             $fp = $filter->priority;
@@ -341,7 +341,7 @@ class ProcessingChain
      * @param array &$state
      * @return void
      */
-    private static function addUserID(array &$state)
+    private static function addUserID(array &$state): void
     {
         assert(array_key_exists('Attributes', $state));
 
diff --git a/lib/SimpleSAML/Configuration.php b/lib/SimpleSAML/Configuration.php
index aa05a8660..6a5803776 100644
--- a/lib/SimpleSAML/Configuration.php
+++ b/lib/SimpleSAML/Configuration.php
@@ -1095,10 +1095,8 @@ class Configuration implements Utils\ClearableState
      *
      * @throws \Exception If the default binding is missing for this endpoint type.
      */
-    private function getDefaultBinding($endpointType)
+    private function getDefaultBinding(string $endpointType): string
     {
-        assert(is_string($endpointType));
-
         $set = $this->getString('metadata-set');
         switch ($set . ':' . $endpointType) {
             case 'saml20-idp-remote:SingleSignOnService':
diff --git a/lib/SimpleSAML/IdP.php b/lib/SimpleSAML/IdP.php
index bacc8c804..e25858dfb 100644
--- a/lib/SimpleSAML/IdP.php
+++ b/lib/SimpleSAML/IdP.php
@@ -348,7 +348,7 @@ class IdP
      * @throws \SimpleSAML\Module\saml\Error\NoPassive If we were asked to do passive authentication.
      * @return void
      */
-    private function authenticate(array &$state)
+    private function authenticate(array &$state): void
     {
         if (isset($state['isPassive']) && (bool) $state['isPassive']) {
             throw new NoPassive(SAML2::STATUS_RESPONDER, 'Passive authentication not supported.');
@@ -371,7 +371,7 @@ class IdP
      * @throws \Exception If there is no auth source defined for this IdP.
      * @return void
      */
-    private function reauthenticate(array &$state)
+    private function reauthenticate(array &$state): void
     {
         $sourceImpl = $this->authSource->getAuthSource();
         $sourceImpl->reauthenticate($state);
diff --git a/lib/SimpleSAML/IdP/TraditionalLogoutHandler.php b/lib/SimpleSAML/IdP/TraditionalLogoutHandler.php
index 7ea2bfe74..da51e0013 100644
--- a/lib/SimpleSAML/IdP/TraditionalLogoutHandler.php
+++ b/lib/SimpleSAML/IdP/TraditionalLogoutHandler.php
@@ -45,7 +45,7 @@ class TraditionalLogoutHandler implements LogoutHandlerInterface
      * @param array &$state The logout state.
      * @return void
      */
-    private function logoutNextSP(array &$state)
+    private function logoutNextSP(array &$state): void
     {
         $association = array_pop($state['core:LogoutTraditional:Remaining']);
         if ($association === null) {
diff --git a/lib/SimpleSAML/Kernel.php b/lib/SimpleSAML/Kernel.php
index 814624af8..03389ade5 100644
--- a/lib/SimpleSAML/Kernel.php
+++ b/lib/SimpleSAML/Kernel.php
@@ -104,7 +104,7 @@ class Kernel extends BaseKernel
      * @param LoaderInterface $loader
      * @return void
      */
-    protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader)
+    protected function configureContainer(ContainerBuilder $c, LoaderInterface $loader)
     {
         $configuration = Configuration::getInstance();
         $baseDir = $configuration->getBaseDir();
@@ -114,11 +114,11 @@ class Kernel extends BaseKernel
             $loader->load($confDir . '/**/*' . self::CONFIG_EXTS, 'glob');
         }
 
-        $container->loadFromExtension('framework', [
+        $c->loadFromExtension('framework', [
             'secret' => Configuration::getInstance()->getString('secretsalt'),
         ]);
 
-        $this->registerModuleControllers($container);
+        $this->registerModuleControllers($c);
     }
 
 
@@ -148,7 +148,7 @@ class Kernel extends BaseKernel
      * @param ContainerBuilder $container
      * @return void
      */
-    private function registerModuleControllers(ContainerBuilder $container)
+    private function registerModuleControllers(ContainerBuilder $container): void
     {
         try {
             $definition = new Definition();
diff --git a/lib/SimpleSAML/Locale/Language.php b/lib/SimpleSAML/Locale/Language.php
index 4f6581313..9bb5b7097 100644
--- a/lib/SimpleSAML/Locale/Language.php
+++ b/lib/SimpleSAML/Locale/Language.php
@@ -290,7 +290,7 @@ class Language
      * @return string|null The preferred language based on the Accept-Language HTTP header,
      * or null if none of the languages in the header is available.
      */
-    private function getHTTPLanguage()
+    private function getHTTPLanguage(): ?string
     {
         $languageScore = Utils\HTTP::getAcceptLanguage();
 
diff --git a/lib/SimpleSAML/Locale/Localization.php b/lib/SimpleSAML/Locale/Localization.php
index a61d37010..3ce16dc13 100644
--- a/lib/SimpleSAML/Locale/Localization.php
+++ b/lib/SimpleSAML/Locale/Localization.php
@@ -221,7 +221,7 @@ class Localization
      * Setup the translator
      * @return void
      */
-    private function setupTranslator()
+    private function setupTranslator(): void
     {
         $this->translator = new Translator();
         $this->translator->register();
@@ -240,7 +240,7 @@ class Localization
      *
      * @throws \Exception If something is wrong with the locale file for the domain and activated language
      */
-    private function loadGettextGettextFromPO(string $domain = self::DEFAULT_DOMAIN, bool $catchException = true)
+    private function loadGettextGettextFromPO(string $domain = self::DEFAULT_DOMAIN, bool $catchException = true): void
     {
         try {
             $langPath = $this->getLangPath($domain);
@@ -286,7 +286,7 @@ class Localization
      * Set up L18N if configured or fallback to old system
      * @return void
      */
-    private function setupL10N()
+    private function setupL10N(): void
     {
         if ($this->i18nBackend === self::SSP_I18N_BACKEND) {
             Logger::debug("Localization: using old system");
diff --git a/lib/SimpleSAML/Locale/Translate.php b/lib/SimpleSAML/Locale/Translate.php
index 768e53029..abec8afea 100644
--- a/lib/SimpleSAML/Locale/Translate.php
+++ b/lib/SimpleSAML/Locale/Translate.php
@@ -319,7 +319,7 @@ class Translate
      *
      * @return string The string that should be used, or the tag name if $fallbacktag is set to false.
      */
-    private function getStringNotTranslated(string $tag, bool $fallbacktag)
+    private function getStringNotTranslated(string $tag, bool $fallbacktag): string
     {
         if ($fallbacktag) {
             return 'not translated (' . $tag . ')';
diff --git a/lib/SimpleSAML/Logger.php b/lib/SimpleSAML/Logger.php
index c7a86e0f3..bf5fdc325 100644
--- a/lib/SimpleSAML/Logger.php
+++ b/lib/SimpleSAML/Logger.php
@@ -391,7 +391,7 @@ class Logger
      * @param boolean $stats Whether this is a stats message or a regular one.
      * @return void
      */
-    private static function defer(int $level, string $message, bool $stats)
+    private static function defer(int $level, string $message, bool $stats): void
     {
         // save the message for later
         self::$earlyLog[] = ['level' => $level, 'string' => $message, 'statsLog' => $stats];
@@ -409,7 +409,7 @@ class Logger
      * @return void
      * @throws \Exception
      */
-    private static function createLoggingHandler(string $handler = null)
+    private static function createLoggingHandler(string $handler = null): void
     {
         self::$initializing = true;
 
@@ -468,7 +468,7 @@ class Logger
      * @param bool $statsLog
      * @return void
      */
-    private static function log(int $level, string $string, bool $statsLog = false)
+    private static function log(int $level, string $string, bool $statsLog = false): void
     {
         if (self::$initializing) {
             // some error occurred while initializing logging
diff --git a/lib/SimpleSAML/Memcache.php b/lib/SimpleSAML/Memcache.php
index 44f1e5997..334529a49 100644
--- a/lib/SimpleSAML/Memcache.php
+++ b/lib/SimpleSAML/Memcache.php
@@ -220,7 +220,7 @@ class Memcache
      *
      * @throws \Exception If any configuration option for the server is invalid.
      */
-    private static function addMemcacheServer($memcache, array $server)
+    private static function addMemcacheServer($memcache, array $server): void
     {
         // the hostname option is required
         if (!array_key_exists('hostname', $server)) {
@@ -311,7 +311,7 @@ class Memcache
      *
      * @throws \Exception If the servers configuration is invalid.
      */
-    private static function loadMemcacheServerGroup(array $group, $index = null)
+    private static function loadMemcacheServerGroup(array $group, string $index = null)
     {
         if (class_exists(\Memcached::class)) {
             if (is_string($index)) {
diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerFlatFile.php b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerFlatFile.php
index 45d8e61fa..e5d2c18c1 100644
--- a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerFlatFile.php
+++ b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerFlatFile.php
@@ -77,7 +77,7 @@ class MetaDataStorageHandlerFlatFile extends MetaDataStorageSource
      *     or null if we are unable to load metadata from the given file.
      * @throws \Exception If the metadata set cannot be loaded.
      */
-    private function load(string $set)
+    private function load(string $set): ?array
     {
         $metadatasetfile = $this->directory . $set . '.php';
 
diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php
index 841f7282d..4f0f821a8 100644
--- a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php
+++ b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerPdo.php
@@ -81,7 +81,7 @@ class MetaDataStorageHandlerPdo extends MetaDataStorageSource
      * @throws \Exception If a database error occurs.
      * @throws \SimpleSAML\Error\Exception If the metadata can be retrieved from the database, but cannot be decoded.
      */
-    private function load(string $set)
+    private function load(string $set): ?array
     {
         $tableName = $this->getTableName($set);
 
@@ -145,15 +145,15 @@ class MetaDataStorageHandlerPdo extends MetaDataStorageSource
     /**
      * Retrieve a metadata entry.
      *
-     * @param string $entityId The entityId we are looking up.
+     * @param string $index The entityId we are looking up.
      * @param string $set The set we are looking for metadata in.
      *
      * @return array|null An associative array with metadata for the given entity, or NULL if we are unable to
      *         locate the entity.
      */
-    public function getMetaData($entityId, $set)
+    public function getMetaData($index, $set)
     {
-        assert(is_string($entityId));
+        assert(is_string($index));
         assert(is_string($set));
 
         // validate the metadata set is valid
@@ -162,8 +162,8 @@ class MetaDataStorageHandlerPdo extends MetaDataStorageSource
         }
 
         // support caching
-        if (isset($this->cachedMetadata[$entityId][$set])) {
-            return $this->cachedMetadata[$entityId][$set];
+        if (isset($this->cachedMetadata[$index][$set])) {
+            return $this->cachedMetadata[$index][$set];
         }
 
         $tableName = $this->getTableName($set);
@@ -176,13 +176,13 @@ class MetaDataStorageHandlerPdo extends MetaDataStorageSource
             $stmt = $this->db->read(
                 "SELECT entity_id, entity_data FROM {$tableName} "
                 . "WHERE (entity_id LIKE :dynamicId OR entity_id = :entityId)",
-                ['dynamicId' => '__DYNAMIC%', 'entityId' => $entityId]
+                ['dynamicId' => '__DYNAMIC%', 'entityId' => $index]
             );
         } else {
             // other metadata types should be able to match on entity id
             $stmt = $this->db->read(
                 "SELECT entity_id, entity_data FROM {$tableName} WHERE entity_id = :entityId",
-                ['entityId' => $entityId]
+                ['entityId' => $index]
             );
         }
 
@@ -204,10 +204,10 @@ class MetaDataStorageHandlerPdo extends MetaDataStorageSource
             }
 
             // update the entity id to either the key (if not dynamic or generate the dynamic hosted url)
-            $metadataSet[$d['entity_id']] = $this->updateEntityID($set, $entityId, $data);
+            $metadataSet[$d['entity_id']] = $this->updateEntityID($set, $index, $data);
         }
 
-        $indexLookup = $this->lookupIndexFromEntityId($entityId, $metadataSet);
+        $indexLookup = $this->lookupIndexFromEntityId($index, $metadataSet);
         if (isset($indexLookup) && array_key_exists($indexLookup, $metadataSet)) {
             $this->cachedMetadata[$indexLookup][$set] = $metadataSet[$indexLookup];
             return $this->cachedMetadata[$indexLookup][$set];
diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerSerialize.php b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerSerialize.php
index c2dd6b0f1..c54e7c325 100644
--- a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerSerialize.php
+++ b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerSerialize.php
@@ -168,18 +168,18 @@ class MetaDataStorageHandlerSerialize extends MetaDataStorageSource
     /**
      * Retrieve a metadata entry.
      *
-     * @param string $entityId The entityId we are looking up.
+     * @param string $index The entityId we are looking up.
      * @param string $set The set we are looking for metadata in.
      *
      * @return array|null An associative array with metadata for the given entity, or NULL if we are unable to
      *         locate the entity.
      */
-    public function getMetaData($entityId, $set)
+    public function getMetaData($index, $set)
     {
-        assert(is_string($entityId));
+        assert(is_string($index));
         assert(is_string($set));
 
-        $filePath = $this->getMetadataPath($entityId, $set);
+        $filePath = $this->getMetadataPath($index, $set);
 
         if (!file_exists($filePath)) {
             return null;
@@ -202,7 +202,7 @@ class MetaDataStorageHandlerSerialize extends MetaDataStorageSource
         }
 
         if (!array_key_exists('entityid', $data)) {
-            $data['entityid'] = $entityId;
+            $data['entityid'] = $index;
         }
 
         return $data;
diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageSource.php b/lib/SimpleSAML/Metadata/MetaDataStorageSource.php
index 7a0b4be4b..9117f8000 100644
--- a/lib/SimpleSAML/Metadata/MetaDataStorageSource.php
+++ b/lib/SimpleSAML/Metadata/MetaDataStorageSource.php
@@ -185,7 +185,7 @@ abstract class MetaDataStorageSource
 
         foreach ($metadataSet as $index => $entry) {
             $cidrHints = [];
-            
+
             // support hint.cidr for idp discovery
             if (array_key_exists('hint.cidr', $entry) && is_array($entry['hint.cidr'])) {
                 $cidrHints = $entry['hint.cidr'];
diff --git a/lib/SimpleSAML/Metadata/SAMLBuilder.php b/lib/SimpleSAML/Metadata/SAMLBuilder.php
index e90df10da..04a1b5d33 100644
--- a/lib/SimpleSAML/Metadata/SAMLBuilder.php
+++ b/lib/SimpleSAML/Metadata/SAMLBuilder.php
@@ -88,7 +88,7 @@ class SAMLBuilder
      * @param array $metadata
      * @return void
      */
-    private function setExpiration(array $metadata)
+    private function setExpiration(array $metadata): void
     {
         if (array_key_exists('expire', $metadata)) {
             if ($metadata['expire'] - time() < $this->maxDuration) {
@@ -171,7 +171,7 @@ class SAMLBuilder
      * @param \SAML2\XML\md\RoleDescriptor $e Reference to the element where the Extensions element should be included.
      * @return void
      */
-    private function addExtensions(Configuration $metadata, RoleDescriptor $e)
+    private function addExtensions(Configuration $metadata, RoleDescriptor $e): void
     {
         if ($metadata->hasValue('tags')) {
             $a = new Attribute();
@@ -423,7 +423,7 @@ class SAMLBuilder
     private function addAttributeConsumingService(
         SPSSODescriptor $spDesc,
         Configuration $metadata
-    ) {
+    ): void {
         $attributes = $metadata->getArray('attributes', []);
         $name = $metadata->getLocalizedString('name', null);
 
@@ -790,7 +790,7 @@ class SAMLBuilder
      * @param string                      $x509data The certificate data.
      * @return void
      */
-    private function addX509KeyDescriptor(RoleDescriptor $rd, string $use, string $x509data)
+    private function addX509KeyDescriptor(RoleDescriptor $rd, string $use, string $x509data): void
     {
         assert(in_array($use, ['encryption', 'signing'], true));
 
@@ -809,7 +809,7 @@ class SAMLBuilder
      * @param \SimpleSAML\Configuration    $metadata The metadata of the entity.
      * @return void
      */
-    private function addCertificate(RoleDescriptor $rd, Configuration $metadata)
+    private function addCertificate(RoleDescriptor $rd, Configuration $metadata): void
     {
         $keys = $metadata->getPublicKeys();
         foreach ($keys as $key) {
diff --git a/lib/SimpleSAML/Metadata/SAMLParser.php b/lib/SimpleSAML/Metadata/SAMLParser.php
index 64c0f02bc..2608312af 100644
--- a/lib/SimpleSAML/Metadata/SAMLParser.php
+++ b/lib/SimpleSAML/Metadata/SAMLParser.php
@@ -404,7 +404,7 @@ class SAMLParser
         int $maxExpireTime = null,
         array $validators = [],
         array $parentExtensions = []
-    ) {
+    ): array {
         if ($element instanceof EntityDescriptor) {
             $ret = new SAMLParser($element, $maxExpireTime, $validators, $parentExtensions);
             $ret = [$ret->getEntityId() => $ret];
@@ -440,7 +440,7 @@ class SAMLParser
      * @return int|null The unix timestamp for when the element should expire. Will be NULL if no
      *             limit is set for the element.
      */
-    private static function getExpireTime($element, int $maxExpireTime = null)
+    private static function getExpireTime($element, int $maxExpireTime = null): ?int
     {
         // validUntil may be null
         $expire = $element->getValidUntil();
@@ -501,7 +501,7 @@ class SAMLParser
      * @param array $roleDescriptor The parsed role descriptor.
      * @return void
      */
-    private function addExtensions(array &$metadata, array $roleDescriptor)
+    private function addExtensions(array &$metadata, array $roleDescriptor): void
     {
         assert(array_key_exists('scope', $roleDescriptor));
         assert(array_key_exists('tags', $roleDescriptor));
@@ -865,7 +865,7 @@ class SAMLParser
      *
      * @return array An associative array with metadata we have extracted from this element.
      */
-    private static function parseRoleDescriptorType(RoleDescriptor $element, int $expireTime = null)
+    private static function parseRoleDescriptorType(RoleDescriptor $element, int $expireTime = null): array
     {
         $ret = [];
 
@@ -940,7 +940,7 @@ class SAMLParser
      *                             NULL if unknown.
      * @return void
      */
-    private function processSPSSODescriptor(SPSSODescriptor $element, int $expireTime = null)
+    private function processSPSSODescriptor(SPSSODescriptor $element, int $expireTime = null): void
     {
         $sp = self::parseSSODescriptor($element, $expireTime);
 
@@ -975,7 +975,7 @@ class SAMLParser
      *                             NULL if unknown.
      * @return void
      */
-    private function processIDPSSODescriptor(IDPSSODescriptor $element, int $expireTime = null)
+    private function processIDPSSODescriptor(IDPSSODescriptor $element, int $expireTime = null): void
     {
         $idp = self::parseSSODescriptor($element, $expireTime);
 
@@ -1003,7 +1003,7 @@ class SAMLParser
     private function processAttributeAuthorityDescriptor(
         AttributeAuthorityDescriptor $element,
         $expireTime
-    ) {
+    ): void {
         assert($expireTime === null || is_int($expireTime));
 
         $aad = self::parseRoleDescriptorType($element, $expireTime);
@@ -1187,7 +1187,7 @@ class SAMLParser
      * @param \SAML2\XML\md\Organization $element The Organization element.
      * @return void
      */
-    private function processOrganization(Organization $element)
+    private function processOrganization(Organization $element): void
     {
         $this->organizationName = $element->getOrganizationName();
         $this->organizationDisplayName = $element->getOrganizationDisplayName();
@@ -1201,7 +1201,7 @@ class SAMLParser
      * @param \SAML2\XML\md\ContactPerson $element The ContactPerson element.
      * @return void
      */
-    private function processContactPerson(ContactPerson $element)
+    private function processContactPerson(ContactPerson $element): void
     {
         $contactPerson = [];
         if ($element->getContactType() !== '') {
@@ -1235,7 +1235,7 @@ class SAMLParser
      * @param array $sp The array with the SP's metadata.
      * @return void
      */
-    private static function parseAttributeConsumerService(AttributeConsumingService $element, array &$sp)
+    private static function parseAttributeConsumerService(AttributeConsumingService $element, array &$sp): void
     {
         $sp['name'] = $element->getServiceName();
         $sp['description'] = $element->getServiceDescription();
@@ -1342,7 +1342,7 @@ class SAMLParser
      *
      * @return array|null An associative array describing the key, or null if this is an unsupported key.
      */
-    private static function parseKeyDescriptor(KeyDescriptor $kd)
+    private static function parseKeyDescriptor(KeyDescriptor $kd): ?array
     {
         $r = [];
 
diff --git a/lib/SimpleSAML/Metadata/Sources/MDQ.php b/lib/SimpleSAML/Metadata/Sources/MDQ.php
index 4b3a3adb7..e98bcf212 100644
--- a/lib/SimpleSAML/Metadata/Sources/MDQ.php
+++ b/lib/SimpleSAML/Metadata/Sources/MDQ.php
@@ -4,6 +4,7 @@ declare(strict_types=1);
 
 namespace SimpleSAML\Metadata\Sources;
 
+use Exception;
 use RobRichards\XMLSecLibs\XMLSecurityDSig;
 use SimpleSAML\Configuration;
 use SimpleSAML\Error;
@@ -79,7 +80,7 @@ class MDQ extends \SimpleSAML\Metadata\MetaDataStorageSource
         assert(is_array($config));
 
         if (!array_key_exists('server', $config)) {
-            throw new \Exception(__CLASS__ . ": the 'server' configuration option is not set.");
+            throw new Exception(__CLASS__ . ": the 'server' configuration option is not set.");
         } else {
             $this->server = $config['server'];
         }
@@ -132,11 +133,8 @@ class MDQ extends \SimpleSAML\Metadata\MetaDataStorageSource
      *
      * @return string  The full path to the cache file.
      */
-    private function getCacheFilename($set, $entityId)
+    private function getCacheFilename(string $set, string $entityId): string
     {
-        assert(is_string($set));
-        assert(is_string($entityId));
-
         if ($this->cacheDir === null) {
             throw new Error\ConfigurationError("Missing cache directory configuration.");
         }
@@ -156,7 +154,7 @@ class MDQ extends \SimpleSAML\Metadata\MetaDataStorageSource
      *                     if the entity could not be found.
      * @throws \Exception If an error occurs while loading metadata from cache.
      */
-    private function getFromCache(string $set, string $entityId)
+    private function getFromCache(string $set, string $entityId): ?array
     {
         if (empty($this->cacheDir)) {
             return null;
@@ -167,7 +165,7 @@ class MDQ extends \SimpleSAML\Metadata\MetaDataStorageSource
             return null;
         }
         if (!is_readable($cachefilename)) {
-            throw new \Exception(__CLASS__ . ': could not read cache file for entity [' . $cachefilename . ']');
+            throw new Exception(__CLASS__ . ': could not read cache file for entity [' . $cachefilename . ']');
         }
         Logger::debug(__CLASS__ . ': reading cache [' . $entityId . '] => [' . $cachefilename . ']');
 
@@ -185,18 +183,18 @@ class MDQ extends \SimpleSAML\Metadata\MetaDataStorageSource
         if (empty($rawData)) {
             /** @var array $error */
             $error = error_get_last();
-            throw new \Exception(
+            throw new Exception(
                 __CLASS__ . ': error reading metadata from cache file "' . $cachefilename . '": ' . $error['message']
             );
         }
 
         $data = unserialize($rawData);
         if ($data === false) {
-            throw new \Exception(__CLASS__ . ': error unserializing cached data from file "' . $cachefilename . '".');
+            throw new Exception(__CLASS__ . ': error unserializing cached data from file "' . $cachefilename . '".');
         }
 
         if (!is_array($data)) {
-            throw new \Exception(__CLASS__ . ': Cached metadata from "' . $cachefilename . '" wasn\'t an array.');
+            throw new Exception(__CLASS__ . ': Cached metadata from "' . $cachefilename . '" wasn\'t an array.');
         }
 
         return $data;
@@ -213,7 +211,7 @@ class MDQ extends \SimpleSAML\Metadata\MetaDataStorageSource
      * @throws \Exception If metadata cannot be written to cache.
      * @return void
      */
-    private function writeToCache(string $set, string $entityId, array $data)
+    private function writeToCache(string $set, string $entityId, array $data): void
     {
         if (empty($this->cacheDir)) {
             return;
@@ -237,7 +235,7 @@ class MDQ extends \SimpleSAML\Metadata\MetaDataStorageSource
      * @return array|NULL  The associative array with the metadata, or NULL if no metadata for
      *                     the given set was found.
      */
-    private static function getParsedSet(SAMLParser $entity, string $set)
+    private static function getParsedSet(SAMLParser $entity, string $set): ?array
     {
         switch ($set) {
             case 'saml20-idp-remote':
diff --git a/lib/SimpleSAML/Session.php b/lib/SimpleSAML/Session.php
index 5d6b6f683..ea78e0eca 100644
--- a/lib/SimpleSAML/Session.php
+++ b/lib/SimpleSAML/Session.php
@@ -714,7 +714,7 @@ class Session implements \Serializable, Utils\ClearableState
      *
      * @throws \Exception If the handler is not a valid function or method.
      */
-    private function callLogoutHandlers(string $authority)
+    private function callLogoutHandlers(string $authority): void
     {
         assert(isset($this->authData[$authority]));
 
@@ -930,7 +930,7 @@ class Session implements \Serializable, Utils\ClearableState
      *
      * @return void
      */
-    private function expireData()
+    private function expireData(): void
     {
         $ct = time();
 
diff --git a/lib/SimpleSAML/SessionHandler.php b/lib/SimpleSAML/SessionHandler.php
index 26fb433f1..efe0104a2 100644
--- a/lib/SimpleSAML/SessionHandler.php
+++ b/lib/SimpleSAML/SessionHandler.php
@@ -133,7 +133,7 @@ abstract class SessionHandler
      *
      * @throws \Exception If we cannot instantiate the session handler.
      */
-    private static function createSessionHandler()
+    private static function createSessionHandler(): void
     {
         $store = Store::getInstance();
         if ($store === false) {
diff --git a/lib/SimpleSAML/Stats.php b/lib/SimpleSAML/Stats.php
index caa0afe69..98e9f89f2 100644
--- a/lib/SimpleSAML/Stats.php
+++ b/lib/SimpleSAML/Stats.php
@@ -52,7 +52,7 @@ class Stats
      *
      * @return void
      */
-    private static function initOutputs()
+    private static function initOutputs(): void
     {
         $config = Configuration::getInstance();
         $outputCfgs = $config->getConfigList('statistics.out');
diff --git a/lib/SimpleSAML/Store/SQL.php b/lib/SimpleSAML/Store/SQL.php
index 08e7d1837..ae21bf195 100644
--- a/lib/SimpleSAML/Store/SQL.php
+++ b/lib/SimpleSAML/Store/SQL.php
@@ -83,7 +83,7 @@ class SQL extends Store
      * Initialize the table-version table.
      * @return void
      */
-    private function initTableVersionTable()
+    private function initTableVersionTable(): void
     {
         $this->tableVersions = [];
 
@@ -107,7 +107,7 @@ class SQL extends Store
      * Initialize key-value table.
      * @return void
      */
-    private function initKVTable()
+    private function initKVTable(): void
     {
         $current_version = $this->getTableVersion('kvstore');
 
@@ -288,7 +288,7 @@ class SQL extends Store
      * Clean the key-value table of expired entries.
      * @return void
      */
-    private function cleanKVStore()
+    private function cleanKVStore(): void
     {
         Logger::debug('store.sql: Cleaning key-value store.');
 
diff --git a/lib/SimpleSAML/Utilities.php b/lib/SimpleSAML/Utilities.php
index ca5536a44..be12e719b 100644
--- a/lib/SimpleSAML/Utilities.php
+++ b/lib/SimpleSAML/Utilities.php
@@ -235,11 +235,9 @@ class Utilities
      * @param array $parameters
      * @return void
      */
-    private static function doRedirect($url, $parameters = [])
+    private static function doRedirect(string $url, array $parameters = []): void
     {
-        assert(is_string($url));
-        assert(!empty($url));
-        assert(is_array($parameters));
+        Assert::NotEmpty($url);
 
         if (!empty($parameters)) {
             $url = self::addURLparameter($url, $parameters);
diff --git a/lib/SimpleSAML/Utils/Config.php b/lib/SimpleSAML/Utils/Config.php
index 6059ff35e..0fddcbf2e 100644
--- a/lib/SimpleSAML/Utils/Config.php
+++ b/lib/SimpleSAML/Utils/Config.php
@@ -73,11 +73,11 @@ class Config
         $configDir = dirname(dirname(dirname(__DIR__))) . '/config';
         /** @var string|false $configDirEnv */
         $configDirEnv = getenv('SIMPLESAMLPHP_CONFIG_DIR');
-        
+
         if ($configDirEnv === false) {
             $configDirEnv = getenv('REDIRECT_SIMPLESAMLPHP_CONFIG_DIR');
         }
-        
+
         if ($configDirEnv !== false) {
             if (!is_dir($configDirEnv)) {
                 throw new \InvalidArgumentException(
diff --git a/lib/SimpleSAML/Utils/EMail.php b/lib/SimpleSAML/Utils/EMail.php
index 08c70df75..43e34897a 100644
--- a/lib/SimpleSAML/Utils/EMail.php
+++ b/lib/SimpleSAML/Utils/EMail.php
@@ -73,7 +73,7 @@ class EMail
         return $address;
     }
 
-    
+
     /**
      * Set the data that should be embedded in the e-mail body
      *
@@ -231,8 +231,6 @@ class EMail
      */
     public static function initFromConfig(EMail $EMail)
     {
-        assert($EMail instanceof EMail);
-
         $config = Configuration::getInstance();
         $EMail->setTransportMethod(
             $config->getString('mail.transport.method', 'mail'),
diff --git a/lib/SimpleSAML/Utils/HTTP.php b/lib/SimpleSAML/Utils/HTTP.php
index 793718930..141a2233b 100644
--- a/lib/SimpleSAML/Utils/HTTP.php
+++ b/lib/SimpleSAML/Utils/HTTP.php
@@ -173,7 +173,7 @@ class HTTP
      * @author Mads Freek Petersen
      * @author Jaime Perez, UNINETT AS <jaime.perez@uninett.no>
      */
-    private static function redirect(string $url, array $parameters = [])
+    private static function redirect(string $url, array $parameters = []): void
     {
         if (empty($url)) {
             throw new \InvalidArgumentException('Invalid input parameters.');
diff --git a/lib/SimpleSAML/XHTML/IdPDisco.php b/lib/SimpleSAML/XHTML/IdPDisco.php
index d5b647513..069676eb7 100644
--- a/lib/SimpleSAML/XHTML/IdPDisco.php
+++ b/lib/SimpleSAML/XHTML/IdPDisco.php
@@ -653,7 +653,7 @@ class IdPDisco
      * @param string $language
      * @return string|null
      */
-    private function getEntityDisplayName(array $idpData, string $language)
+    private function getEntityDisplayName(array $idpData, string $language): ?string
     {
         if (isset($idpData['UIInfo']['DisplayName'][$language])) {
             return $idpData['UIInfo']['DisplayName'][$language];
diff --git a/lib/SimpleSAML/XHTML/Template.php b/lib/SimpleSAML/XHTML/Template.php
index 9ef8d5c1f..e8f6c5cff 100644
--- a/lib/SimpleSAML/XHTML/Template.php
+++ b/lib/SimpleSAML/XHTML/Template.php
@@ -441,7 +441,7 @@ class Template extends Response
      *
      * @return array|null The array containing information of all available languages.
      */
-    private function generateLanguageBar()
+    private function generateLanguageBar(): ?array
     {
         $languages = $this->translator->getLanguage()->getLanguageList();
         ksort($languages);
@@ -473,7 +473,7 @@ class Template extends Response
      * Set some default context
      * @return void
      */
-    private function twigDefaultContext()
+    private function twigDefaultContext(): void
     {
         // show language bar by default
         if (!isset($this->data['hideLanguageBar'])) {
@@ -586,7 +586,7 @@ class Template extends Response
      *
      * @throws \Exception If the template file couldn't be found.
      */
-    private function findTemplatePath(string $template, bool $throw_exception = true)
+    private function findTemplatePath(string $template, bool $throw_exception = true): ?string
     {
         $extensions = ['.tpl.php', '.php'];
 
@@ -757,7 +757,7 @@ class Template extends Response
      *
      * @return array
      */
-    private function getLanguageList()
+    private function getLanguageList(): array
     {
         return $this->translator->getLanguage()->getLanguageList();
     }
@@ -798,7 +798,7 @@ class Template extends Response
      * @param string $file
      * @return void
      */
-    private function includeAtTemplateBase(string $file)
+    private function includeAtTemplateBase(string $file): void
     {
         $data = $this->data;
 
diff --git a/lib/SimpleSAML/XML/Errors.php b/lib/SimpleSAML/XML/Errors.php
index 7db0b0699..c4622e481 100644
--- a/lib/SimpleSAML/XML/Errors.php
+++ b/lib/SimpleSAML/XML/Errors.php
@@ -34,7 +34,7 @@ class Errors
      *
      * @return void
      */
-    private static function addErrors()
+    private static function addErrors(): void
     {
         $currentErrors = libxml_get_errors();
         libxml_clear_errors();
diff --git a/lib/SimpleSAML/XML/Parser.php b/lib/SimpleSAML/XML/Parser.php
index dead12554..21623a44b 100644
--- a/lib/SimpleSAML/XML/Parser.php
+++ b/lib/SimpleSAML/XML/Parser.php
@@ -26,7 +26,7 @@ class Parser
         $this->simplexml->registerXPathNamespace('saml2meta', 'urn:oasis:names:tc:SAML:2.0:metadata');
         $this->simplexml->registerXPathNamespace('ds', 'http://www.w3.org/2000/09/xmldsig#');
     }
-    
+
 
     /**
      * @param \SimpleXMLElement $element
@@ -40,7 +40,7 @@ class Parser
         foreach ($namespaces as $prefix => $ns) {
             $element[(($prefix === '') ? 'xmlns' : 'xmlns:' . $prefix)] = $ns;
         }
-        
+
         /* Create a new parser with the xml document where the namespace definitions
          * are added.
          */
@@ -50,7 +50,7 @@ class Parser
         }
         return new Parser($xml);
     }
-    
+
 
     /**
      * @param string $xpath
@@ -67,7 +67,7 @@ class Parser
             return $defvalue;
         }
     }
-    
+
 
     /**
      * @param string $xpath
@@ -89,7 +89,7 @@ class Parser
         }
         return (string) $result[0];
     }
-    
+
 
     /**
      * @param array $xpath
diff --git a/lib/SimpleSAML/XML/Shib13/AuthnRequest.php b/lib/SimpleSAML/XML/Shib13/AuthnRequest.php
index ee16db4c3..1286a8257 100644
--- a/lib/SimpleSAML/XML/Shib13/AuthnRequest.php
+++ b/lib/SimpleSAML/XML/Shib13/AuthnRequest.php
@@ -32,7 +32,7 @@ class AuthnRequest
     {
         $this->relayState = $relayState;
     }
-    
+
 
     /**
      * @return string|null
@@ -41,7 +41,7 @@ class AuthnRequest
     {
         return $this->relayState;
     }
-    
+
 
     /**
      * @param string|null $issuer
diff --git a/lib/SimpleSAML/XML/Shib13/AuthnResponse.php b/lib/SimpleSAML/XML/Shib13/AuthnResponse.php
index e61e369fe..baab8ab1c 100644
--- a/lib/SimpleSAML/XML/Shib13/AuthnResponse.php
+++ b/lib/SimpleSAML/XML/Shib13/AuthnResponse.php
@@ -229,12 +229,12 @@ class AuthnResponse
         return null;
     }
 
-    
+
     /**
      * @throws \Exception
      * @return array
      */
-    public function getAttributes()
+    public function getAttributes(): array
     {
         $metadata = MetaDataStorageHandler::getMetadataHandler();
         $md = $metadata->getMetaData($this->getIssuer(), 'shib13-idp-remote');
@@ -309,7 +309,7 @@ class AuthnResponse
         return $attributes;
     }
 
-    
+
     /**
      * @throws \Exception
      * @return string
@@ -369,13 +369,12 @@ class AuthnResponse
         }
 
         $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();
 
diff --git a/lib/SimpleSAML/XML/Validator.php b/lib/SimpleSAML/XML/Validator.php
index 665f20ec2..d20ece0be 100644
--- a/lib/SimpleSAML/XML/Validator.php
+++ b/lib/SimpleSAML/XML/Validator.php
@@ -161,7 +161,7 @@ class Validator
      * @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)
+    private static function calculateX509Fingerprint(string $x509cert): ?string
     {
         $lines = explode("\n", $x509cert);
 
@@ -203,7 +203,7 @@ class Validator
      * @throws \Exception
      * @return void
      */
-    private static function validateCertificateFingerprint(string $certificate, array $fingerprints)
+    private static function validateCertificateFingerprint(string $certificate, array $fingerprints): void
     {
         $certFingerprint = self::calculateX509Fingerprint($certificate);
         if ($certFingerprint === null) {
diff --git a/modules/admin/lib/Controller/Federation.php b/modules/admin/lib/Controller/Federation.php
index c2cd1176c..c7b7e2e97 100644
--- a/modules/admin/lib/Controller/Federation.php
+++ b/modules/admin/lib/Controller/Federation.php
@@ -61,8 +61,9 @@ class Federation
      * @return \SimpleSAML\XHTML\Template
      * @throws \SimpleSAML\Error\Exception
      * @throws \SimpleSAML\Error\Exception
+     * @return void
      */
-    public function main()
+    public function main(): void
     {
         Utils\Auth::requireAdmin();
 
diff --git a/modules/core/lib/Auth/Process/AttributeLimit.php b/modules/core/lib/Auth/Process/AttributeLimit.php
index ee4b32240..c728ba816 100644
--- a/modules/core/lib/Auth/Process/AttributeLimit.php
+++ b/modules/core/lib/Auth/Process/AttributeLimit.php
@@ -70,7 +70,7 @@ class AttributeLimit extends \SimpleSAML\Auth\ProcessingFilter
      * @param array &$request  The current request.
      * @return array|null  Array with attribute names, or NULL if no limit is placed.
      */
-    private static function getSPIdPAllowed(array &$request)
+    private static function getSPIdPAllowed(array &$request): ?array
     {
         if (array_key_exists('attributes', $request['Destination'])) {
             // SP Config
diff --git a/modules/core/lib/Auth/Process/AttributeMap.php b/modules/core/lib/Auth/Process/AttributeMap.php
index bc21b5746..ec11b0452 100644
--- a/modules/core/lib/Auth/Process/AttributeMap.php
+++ b/modules/core/lib/Auth/Process/AttributeMap.php
@@ -81,7 +81,7 @@ class AttributeMap extends \SimpleSAML\Auth\ProcessingFilter
      * @throws \Exception If the filter could not load the requested attribute map file.
      * @return void
      */
-    private function loadMapFile(string $fileName)
+    private function loadMapFile(string $fileName): void
     {
         $config = Configuration::getInstance();
 
diff --git a/modules/core/lib/Auth/Process/GenerateGroups.php b/modules/core/lib/Auth/Process/GenerateGroups.php
index e04b800df..cf189839a 100644
--- a/modules/core/lib/Auth/Process/GenerateGroups.php
+++ b/modules/core/lib/Auth/Process/GenerateGroups.php
@@ -104,7 +104,7 @@ class GenerateGroups extends \SimpleSAML\Auth\ProcessingFilter
      * @param array $attributes  The attributes of the user.
      * @return string|null  The realm of the user, or NULL if we are unable to determine the realm.
      */
-    private static function getRealm(array $attributes)
+    private static function getRealm(array $attributes): ?string
     {
         if (!array_key_exists('eduPersonPrincipalName', $attributes)) {
             return null;
diff --git a/modules/core/lib/Stats/Output/File.php b/modules/core/lib/Stats/Output/File.php
index b39b072d4..fe2fa69b3 100644
--- a/modules/core/lib/Stats/Output/File.php
+++ b/modules/core/lib/Stats/Output/File.php
@@ -57,7 +57,7 @@ class File extends \SimpleSAML\Stats\Output
      * @param string $date  The date for the log file.
      * @return void
      */
-    private function openLog(string $date)
+    private function openLog(string $date): void
     {
         if ($this->file !== null && $this->file !== false) {
             fclose($this->file);
diff --git a/modules/exampleauth/lib/Auth/Source/External.php b/modules/exampleauth/lib/Auth/Source/External.php
index f65608827..1f4e7bf20 100644
--- a/modules/exampleauth/lib/Auth/Source/External.php
+++ b/modules/exampleauth/lib/Auth/Source/External.php
@@ -60,7 +60,7 @@ class External extends \SimpleSAML\Auth\Source
      *
      * @return array|null  The user's attributes, or NULL if the user isn't authenticated.
      */
-    private function getUser()
+    private function getUser(): ?array
     {
         /*
          * In this example we assume that the attributes are
diff --git a/modules/saml/lib/Auth/Source/SP.php b/modules/saml/lib/Auth/Source/SP.php
index 2fd436b2b..a5370e5e5 100644
--- a/modules/saml/lib/Auth/Source/SP.php
+++ b/modules/saml/lib/Auth/Source/SP.php
@@ -464,7 +464,7 @@ class SP extends \SimpleSAML\Auth\Source
      * @return void
      * @deprecated will be removed in a future version
      */
-    private function startSSO1(Configuration $idpMetadata, array $state)
+    private function startSSO1(Configuration $idpMetadata, array $state): void
     {
         $idpEntityId = $idpMetadata->getString('entityid');
 
@@ -502,7 +502,7 @@ class SP extends \SimpleSAML\Auth\Source
      * @param array $state  The state array for the current authentication.
      * @return void
      */
-    private function startSSO2(Configuration $idpMetadata, array $state)
+    private function startSSO2(Configuration $idpMetadata, array $state): void
     {
         if (isset($state['saml:ProxyCount']) && $state['saml:ProxyCount'] < 0) {
             Auth\State::throwException(
@@ -651,7 +651,7 @@ class SP extends \SimpleSAML\Auth\Source
         if (isset($state['saml:Extensions'])) {
             $ar->setExtensions($state['saml:Extensions']);
         }
-        
+
         $providerName = $this->metadata->getString("ProviderName", null);
         if ($providerName !== null) {
             $ar->setProviderName($providerName);
@@ -747,7 +747,7 @@ class SP extends \SimpleSAML\Auth\Source
      * @param array $state  The state array.
      * @return void
      */
-    private function startDisco(array $state)
+    private function startDisco(array $state): void
     {
         $id = Auth\State::saveState($state, 'saml:sp:sso');
 
diff --git a/modules/saml/lib/IdP/SAML2.php b/modules/saml/lib/IdP/SAML2.php
index 37faa0d8e..56026c04a 100644
--- a/modules/saml/lib/IdP/SAML2.php
+++ b/modules/saml/lib/IdP/SAML2.php
@@ -198,7 +198,7 @@ class SAML2
         string $AssertionConsumerServiceURL = null,
         string $ProtocolBinding = null,
         int $AssertionConsumerServiceIndex = null
-    ) {
+    ): ?array {
         /* We want to pick the best matching endpoint in the case where for example
          * only the ProtocolBinding is given. We therefore pick endpoints with the
          * following priority:
@@ -950,7 +950,7 @@ class SAML2
         Configuration $idpMetadata,
         Configuration $spMetadata,
         array &$state
-    ) {
+    ): ?string {
         $attribute = $spMetadata->getString('simplesaml.nameidattribute', null);
         if ($attribute === null) {
             $attribute = $idpMetadata->getString('simplesaml.nameidattribute', null);
diff --git a/modules/saml/lib/IdP/SQLNameID.php b/modules/saml/lib/IdP/SQLNameID.php
index 592ec92c0..a3e400a60 100644
--- a/modules/saml/lib/IdP/SQLNameID.php
+++ b/modules/saml/lib/IdP/SQLNameID.php
@@ -82,7 +82,7 @@ class SQLNameID
      * @param array $config
      * @return void
      */
-    private static function create(array $config = [])
+    private static function create(array $config = []): void
     {
         $store = empty($config) ? self::getStore() : null;
         $table = self::tableName($config);
@@ -132,7 +132,7 @@ class SQLNameID
      * @param array $config
      * @return void
      */
-    private static function createTable(string $table, array $config = [])
+    private static function createTable(string $table, array $config = []): void
     {
         $query = 'CREATE TABLE ' . $table . ' (
             _idp VARCHAR(256) NOT NULL,
@@ -177,13 +177,13 @@ class SQLNameID
      * @param array $config
      * @return void
      */
-    public static function add($idpEntityId, $spEntityId, $user, $value, array $config = [])
-    {
-        assert(is_string($idpEntityId));
-        assert(is_string($spEntityId));
-        assert(is_string($user));
-        assert(is_string($value));
-
+    public static function add(
+        string $idpEntityId,
+        string $spEntityId,
+        string $user,
+        string $value,
+        array $config = []
+    ): void {
         $params = [
             '_idp' => $idpEntityId,
             '_sp' => $spEntityId,
diff --git a/modules/saml/lib/Message.php b/modules/saml/lib/Message.php
index 57814ba7d..2513d14c0 100644
--- a/modules/saml/lib/Message.php
+++ b/modules/saml/lib/Message.php
@@ -94,7 +94,7 @@ class Message
         Configuration $srcMetadata,
         Configuration $dstMetadata,
         \SAML2\Message $message
-    ) {
+    ): void {
 
         $signingEnabled = null;
         if ($message instanceof LogoutRequest || $message instanceof LogoutResponse) {
@@ -170,7 +170,7 @@ class Message
      * @throws \SimpleSAML\Error\Exception if there is not certificate in the metadata for the entity.
      * @throws \Exception if the signature validation fails with an exception.
      */
-    public static function checkSign(Configuration $srcMetadata, SignedElement $element)
+    public static function checkSign(Configuration $srcMetadata, SignedElement $element): bool
     {
         // find the public key that should verify signatures by this entity
         $keys = $srcMetadata->getPublicKeys('signing');
@@ -443,7 +443,7 @@ class Message
         Configuration $srcMetadata,
         Configuration $dstMetadata,
         Assertion &$assertion
-    ) {
+    ): void {
         if (!$assertion->hasEncryptedAttributes()) {
             return;
         }
diff --git a/modules/saml/lib/SP/LogoutStore.php b/modules/saml/lib/SP/LogoutStore.php
index 800933a64..ada4dae26 100644
--- a/modules/saml/lib/SP/LogoutStore.php
+++ b/modules/saml/lib/SP/LogoutStore.php
@@ -25,7 +25,7 @@ class LogoutStore
      * @param \SimpleSAML\Store\SQL $store  The datastore.
      * @return void
      */
-    private static function createLogoutTable(Store\SQL $store)
+    private static function createLogoutTable(Store\SQL $store): void
     {
         $tableVer = $store->getTableVersion('saml_LogoutStore');
         if ($tableVer === 4) {
@@ -200,7 +200,7 @@ class LogoutStore
      * @param \SimpleSAML\Store\SQL $store  The datastore.
      * @return void
      */
-    private static function cleanLogoutStore(Store\SQL $store)
+    private static function cleanLogoutStore(Store\SQL $store): void
     {
         Logger::debug('saml.LogoutStore: Cleaning logout store.');
 
@@ -230,7 +230,7 @@ class LogoutStore
         string $sessionIndex,
         int $expire,
         string $sessionId
-    ) {
+    ): void {
         self::createLogoutTable($store);
 
         if (rand(0, 1000) < 10) {
diff --git a/psalm.xml b/psalm.xml
index ff74be3ca..7ab9b1ba9 100644
--- a/psalm.xml
+++ b/psalm.xml
@@ -4,7 +4,6 @@
     useDocblockTypes="true"
     totallyTyped="false"
     hideExternalErrors="true"
-    allowCoercionFromStringToClassConst="true"
     allowStringToStandInForClass="true"
 >
     <projectFiles>
-- 
GitLab