[java-opensaml COMMIT] /trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/encryption/Encrypter.java

noreply at shibboleth.net noreply at shibboleth.net
Tue Jan 27 15:00:22 EST 2015


Author: putmanb
Date: Tue Jan 27 15:00:22 2015
New Revision: 4203

URL: http://svn.shibboleth.net/view/java-opensaml?rev=4203&view=rev
Log:
Add pre-encryption debug logging to Encrypter.

Modified:
    trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/encryption/Encrypter.java

Modified: trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/encryption/Encrypter.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/encryption/Encrypter.java?rev=4203&r1=4202&r2=4203&view=diff
==============================================================================
--- trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/encryption/Encrypter.java (original)
+++ trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/saml2/encryption/Encrypter.java Tue Jan 27 15:00:22 2015
@@ -25,10 +25,13 @@
 
 import net.shibboleth.utilities.java.support.security.IdentifierGenerationStrategy;
 import net.shibboleth.utilities.java.support.security.RandomIdentifierGenerationStrategy;
+import net.shibboleth.utilities.java.support.xml.SerializeSupport;
 
 import org.opensaml.core.xml.XMLObject;
 import org.opensaml.core.xml.XMLObjectBuilderFactory;
 import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
+import org.opensaml.core.xml.io.MarshallingException;
+import org.opensaml.core.xml.util.XMLObjectSupport;
 import org.opensaml.saml.saml2.core.Assertion;
 import org.opensaml.saml.saml2.core.Attribute;
 import org.opensaml.saml.saml2.core.BaseID;
@@ -59,6 +62,7 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 
 import com.google.common.base.Strings;
 
@@ -143,6 +147,9 @@
     /** Class logger. */
     private final Logger log = LoggerFactory.getLogger(Encrypter.class);
 
+    /** Pre-encryption logger. */
+    private final Logger logPreEncryption = LoggerFactory.getLogger("SAML_PRE_ENCRYPTION");
+
     /**
      * Constructor.
      * 
@@ -248,6 +255,7 @@
      * @throws EncryptionException thrown when encryption generates an error
      */
     public EncryptedAssertion encrypt(Assertion assertion) throws EncryptionException {
+        logPreEncryption(assertion, "Assertion");
         return (EncryptedAssertion) encrypt(assertion, EncryptedAssertion.DEFAULT_ELEMENT_NAME);
     }
 
@@ -259,6 +267,7 @@
      * @throws EncryptionException thrown when encryption generates an error
      */
     public EncryptedID encryptAsID(Assertion assertion) throws EncryptionException {
+        logPreEncryption(assertion, "Assertion (as EncryptedID)");
         return (EncryptedID) encrypt(assertion, EncryptedID.DEFAULT_ELEMENT_NAME);
     }
 
@@ -270,6 +279,7 @@
      * @throws EncryptionException thrown when encryption generates an error
      */
     public EncryptedAttribute encrypt(Attribute attribute) throws EncryptionException {
+        logPreEncryption(attribute, "Attribute");
         return (EncryptedAttribute) encrypt(attribute, EncryptedAttribute.DEFAULT_ELEMENT_NAME);
     }
 
@@ -281,6 +291,7 @@
      * @throws EncryptionException thrown when encryption generates an error
      */
     public EncryptedID encrypt(NameID nameID) throws EncryptionException {
+        logPreEncryption(nameID, "NameID");
         return (EncryptedID) encrypt(nameID, EncryptedID.DEFAULT_ELEMENT_NAME);
     }
 
@@ -292,6 +303,7 @@
      * @throws EncryptionException thrown when encryption generates an error
      */
     public EncryptedID encrypt(BaseID baseID) throws EncryptionException {
+        logPreEncryption(baseID, "BaseID");
         return (EncryptedID) encrypt(baseID, EncryptedID.DEFAULT_ELEMENT_NAME);
     }
 
@@ -303,7 +315,25 @@
      * @throws EncryptionException thrown when encryption generates an error
      */
     public NewEncryptedID encrypt(NewID newID) throws EncryptionException {
+        logPreEncryption(newID, "NewID");
         return (NewEncryptedID) encrypt(newID, NewEncryptedID.DEFAULT_ELEMENT_NAME);
+    }
+    
+    /**
+     * Log the target object prior to encryption.
+     * 
+     * @param xmlObject the XMLObject to encrypt
+     * @param objectType String description of the type of object to encrypt
+     */
+    private void logPreEncryption(XMLObject xmlObject, String objectType) {
+        if (logPreEncryption.isDebugEnabled()) {
+            try {
+                final Element dom = XMLObjectSupport.marshall(xmlObject);
+                logPreEncryption.debug("{} before encryption:\n{}", objectType, SerializeSupport.prettyPrintXML(dom));
+            } catch (final MarshallingException e) {
+                logPreEncryption.error("Unable to marshall {} for logging purposes", objectType, e);
+            }
+        }
     }
 
     /**



More information about the commits mailing list