diff --git a/lib/SimpleSAML/Metadata/SAMLBuilder.php b/lib/SimpleSAML/Metadata/SAMLBuilder.php
index 052f55502f92ad788c2c584e181276abd7c34dd2..aeffb1af61bd5d8a1d89a499b6133659e90d0eb8 100644
--- a/lib/SimpleSAML/Metadata/SAMLBuilder.php
+++ b/lib/SimpleSAML/Metadata/SAMLBuilder.php
@@ -569,20 +569,9 @@ class SimpleSAML_Metadata_SAMLBuilder {
 		assert('in_array($use, array("encryption", "signing"), TRUE)');
 		assert('is_string($x509data)');
 
-		$keyDescriptor = new SAML2_XML_md_KeyDescriptor();
+		$keyDescriptor = SAML2_Utils::createKeyDescriptor($x509data);
 		$keyDescriptor->use = $use;
 		$rd->KeyDescriptor[] = $keyDescriptor;
-
-		$keyInfo = new SAML2_XML_ds_KeyInfo();
-		$keyDescriptor->KeyInfo = $keyInfo;
-
-		$x509Data = new SAML2_XML_ds_X509Data();
-		$keyInfo->info[] = $x509Data;
-
-		$x509Certificate = new SAML2_XML_ds_X509Certificate();
-		$x509Data->data[] = $x509Certificate;
-
-		$x509Certificate->certificate = $x509data;
 	}