diff --git a/lib/SAML2/EncryptedAssertion.php b/lib/SAML2/EncryptedAssertion.php
index 5084ebb6d40552090ba75eea7a116f64d92c6a8a..9c69ad08cdee0c374a33863c843b00ccd05bca8a 100644
--- a/lib/SAML2/EncryptedAssertion.php
+++ b/lib/SAML2/EncryptedAssertion.php
@@ -46,8 +46,7 @@ class SAML2_EncryptedAssertion {
 
 		$xml = $assertion->toXML();
 
-		$xmlStr = $xml->ownerDocument->saveXML($xml);
-		SimpleSAML_Utilities::debugMessage($xmlStr, 'encrypt');
+		SimpleSAML_Utilities::debugMessage($xml, 'encrypt');
 
 		$enc = new XMLSecEnc();
 		$enc->setNode($xml);
@@ -88,8 +87,7 @@ class SAML2_EncryptedAssertion {
 
 		$assertionXML = SAML2_Utils::decryptElement($this->encryptedData, $inputKey);
 
-		$xmlStr = $assertionXML->ownerDocument->saveXML($assertionXML);
-		SimpleSAML_Utilities::debugMessage($xmlStr, 'decrypt');
+		SimpleSAML_Utilities::debugMessage($assertionXML, 'decrypt');
 
 		return new SAML2_Assertion($assertionXML);
 	}
diff --git a/lib/SimpleSAML/Utilities.php b/lib/SimpleSAML/Utilities.php
index 95b165c185c77ac27581ca0c771131baca78d00c..652212e5a56de7f7852f6d9976599173292d2b01 100644
--- a/lib/SimpleSAML/Utilities.php
+++ b/lib/SimpleSAML/Utilities.php
@@ -1910,11 +1910,11 @@ class SimpleSAML_Utilities {
 	/**
 	 * Helper function to log messages that we send or receive.
 	 *
-	 * @param string $message  The message, as an XML string.
+	 * @param string|DOMElement $message  The message, as an XML string or an XML element.
 	 * @param string $type  Whether this message is sent or received, encrypted or decrypted.
 	 */
 	public static function debugMessage($message, $type) {
-		assert('is_string($message)');
+		assert('is_string($message) || $message instanceof DOMElement');
 
 		$globalConfig = SimpleSAML_Configuration::getInstance();
 		if (!$globalConfig->getBoolean('debug', FALSE)) {
@@ -1922,6 +1922,10 @@ class SimpleSAML_Utilities {
 			return;
 		}
 
+		if ($message instanceof DOMElement) {
+			$message = $message->ownerDocument->saveXML($message);
+		}
+
 		switch ($type) {
 		case 'in':
 			SimpleSAML_Logger::debug('Received message:');