From 66cfccd59689a07e0f7e557f846e8aca4c36c3a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=85kre=20Solberg?= <andreas.solberg@uninett.no> Date: Sat, 29 Nov 2008 04:32:54 +0000 Subject: [PATCH] Throw exception when no public key was found in metadata XML document. git-svn-id: https://simplesamlphp.googlecode.com/svn/trunk@1028 44740490-163a-0410-bde0-09ae8108e29a --- .../Metadata/MetaDataStorageSource.php | 16 ++++++++-------- lib/SimpleSAML/Metadata/SAMLParser.php | 5 +++++ 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageSource.php b/lib/SimpleSAML/Metadata/MetaDataStorageSource.php index 42d6f1edf..2ec89c801 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 d1bb42477..3981c865b 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') { -- GitLab