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') {