[java-opensaml COMMIT] /trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/common/messaging/SAMLMessageSecurityS...

noreply at shibboleth.net noreply at shibboleth.net
Tue Feb 4 14:53:22 EST 2014


Author: tzeller
Date: Tue Feb  4 14:53:22 2014
New Revision: 3593

URL: http://svn.shibboleth.net/view/java-opensaml?rev=3593&view=rev
Log:
Provide utility method to sign a SignableSAMLObject. Add annotations and constraints.

Modified:
    trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/common/messaging/SAMLMessageSecuritySupport.java

Modified: trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/common/messaging/SAMLMessageSecuritySupport.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/common/messaging/SAMLMessageSecuritySupport.java?rev=3593&r1=3592&r2=3593&view=diff
==============================================================================
--- trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/common/messaging/SAMLMessageSecuritySupport.java (original)
+++ trunk/opensaml-saml-api/src/main/java/org/opensaml/saml/common/messaging/SAMLMessageSecuritySupport.java Tue Feb  4 14:53:22 2014
@@ -21,6 +21,7 @@
 import javax.annotation.Nullable;
 
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.utilities.java.support.logic.Constraint;
 
 import org.opensaml.core.xml.XMLObjectBuilder;
 import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
@@ -58,28 +59,47 @@
      * @throws SignatureException  if there is a problem with the signature operation
      * 
      */
-    public static void signMessage(MessageContext<SAMLObject> messageContext) 
+    public static void signMessage(@Nonnull final MessageContext<SAMLObject> messageContext) 
             throws SecurityException, MarshallingException, SignatureException {
+        Constraint.isNotNull(messageContext, "Message context cannot be null");
+        
         final SAMLObject outboundSAML = messageContext.getMessage();
         final SignatureSigningParameters parameters = getContextSigningParameters(messageContext);
 
         if (outboundSAML instanceof SignableSAMLObject && parameters != null) {
-            SignableSAMLObject signableMessage = (SignableSAMLObject) outboundSAML;
+            SAMLMessageSecuritySupport.signObject((SignableSAMLObject) outboundSAML, parameters);
+        }
+    }
 
-            XMLObjectBuilder<Signature> signatureBuilder = (XMLObjectBuilder<Signature>)
-                    XMLObjectProviderRegistrySupport.getBuilderFactory().getBuilder(Signature.DEFAULT_ELEMENT_NAME);
-            Signature signature = signatureBuilder.buildObject(Signature.DEFAULT_ELEMENT_NAME);
-            
-            signableMessage.setSignature(signature);
+    /**
+     * Signs a {@link SignableSAMLObject}.
+     * 
+     * @param signable the signable SAMLObject to sign
+     * @param parameters the signing parameters to use
+     * 
+     * @throws SecurityException if there is a problem preparing the signature
+     * @throws MarshallingException if there is a problem marshalling the SAMLObject
+     * @throws SignatureException if there is a problem with the signature operation
+     */
+    public static void signObject(@Nonnull final SignableSAMLObject signable,
+            @Nonnull final SignatureSigningParameters parameters) throws SecurityException, MarshallingException,
+            SignatureException {
+        Constraint.isNotNull(signable, "Signable SAMLObject cannot be null");
+        Constraint.isNotNull(parameters, "Signature signing parameters cannot be null");
 
-            SignatureSupport.prepareSignatureParams(signature, parameters);
-            
-            Marshaller marshaller = 
-                    XMLObjectProviderRegistrySupport.getMarshallerFactory().getMarshaller(signableMessage);
-            marshaller.marshall(signableMessage);
+        XMLObjectBuilder<Signature> signatureBuilder =
+                (XMLObjectBuilder<Signature>) XMLObjectProviderRegistrySupport.getBuilderFactory().getBuilder(
+                        Signature.DEFAULT_ELEMENT_NAME);
+        Signature signature = signatureBuilder.buildObject(Signature.DEFAULT_ELEMENT_NAME);
 
-            Signer.signObject(signature);
-        }
+        signable.setSignature(signature);
+
+        SignatureSupport.prepareSignatureParams(signature, parameters);
+
+        Marshaller marshaller = XMLObjectProviderRegistrySupport.getMarshallerFactory().getMarshaller(signable);
+        marshaller.marshall(signable);
+
+        Signer.signObject(signature);
     }
 
     /**
@@ -90,7 +110,9 @@
      * @return the signing parameters to use, may be null
      */
     @Nullable public static SignatureSigningParameters getContextSigningParameters(
-            MessageContext<SAMLObject> messageContext) {
+            @Nonnull final MessageContext<SAMLObject> messageContext) {
+        Constraint.isNotNull(messageContext, "Message context cannot be null");
+
         final SecurityParametersContext context = messageContext.getSubcontext(SecurityParametersContext.class);
         if (context != null) {
             return context.getSignatureSigningParameters();



More information about the commits mailing list