diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageSource.php b/lib/SimpleSAML/Metadata/MetaDataStorageSource.php index 42d6f1edf743aee4aa3542a138c81d7e3e7a2fd2..2ec89c801119030d8af5cbe42d673eff6cc01855 100644 --- a/lib/SimpleSAML/Metadata/MetaDataStorageSource.php +++ b/lib/SimpleSAML/Metadata/MetaDataStorageSource.php @@ -61,14 +61,14 @@ abstract class SimpleSAML_Metadata_MetaDataStorageSource { } switch($type) { - case 'flatfile': - return new SimpleSAML_Metadata_MetaDataStorageHandlerFlatFile($sourceConfig); - case 'xml': - return new SimpleSAML_Metadata_MetaDataStorageHandlerXML($sourceConfig); - case 'dynamicxml': - return new SimpleSAML_Metadata_MetaDataStorageHandlerDynamicXML($sourceConfig); - default: - throw new Exception('Invalid metadata source type: "' . $type . '".'); + case 'flatfile': + return new SimpleSAML_Metadata_MetaDataStorageHandlerFlatFile($sourceConfig); + case 'xml': + return new SimpleSAML_Metadata_MetaDataStorageHandlerXML($sourceConfig); + case 'dynamicxml': + return new SimpleSAML_Metadata_MetaDataStorageHandlerDynamicXML($sourceConfig); + default: + throw new Exception('Invalid metadata source type: "' . $type . '".'); } } diff --git a/lib/SimpleSAML/Metadata/SAMLParser.php b/lib/SimpleSAML/Metadata/SAMLParser.php index d1bb4247745ef1153eb380df7ad10dcb65f3c586..3981c865bb09ed255662b3a8012408c9703f9206 100644 --- a/lib/SimpleSAML/Metadata/SAMLParser.php +++ b/lib/SimpleSAML/Metadata/SAMLParser.php @@ -598,6 +598,11 @@ class SimpleSAML_Metadata_SAMLParser { $ret['NameIDFormat'] = $spd['nameIDFormats'][0]; } + // Require that a certificate is embedded + if (!is_array($idp['keys'])) { + throw new Exception('Could not find any embedded certificates in metadata document.'); + } + /* Add certificate data. Only the first valid certificate will be added. */ foreach($idp['keys'] as $key) { if($key['type'] !== 'X509Certificate') {