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