You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by mu...@apache.org on 2006/06/08 20:28:27 UTC

svn commit: r412827 - /xml/security/trunk/src/org/jcp/xml/dsig/internal/dom/DOMSHADigestMethod.java

Author: mullan
Date: Thu Jun  8 11:28:26 2006
New Revision: 412827

URL: http://svn.apache.org/viewvc?rev=412827&view=rev
Log:
Add support for SHA256,512 digest methods.

Added:
    xml/security/trunk/src/org/jcp/xml/dsig/internal/dom/DOMSHADigestMethod.java

Added: xml/security/trunk/src/org/jcp/xml/dsig/internal/dom/DOMSHADigestMethod.java
URL: http://svn.apache.org/viewvc/xml/security/trunk/src/org/jcp/xml/dsig/internal/dom/DOMSHADigestMethod.java?rev=412827&view=auto
==============================================================================
--- xml/security/trunk/src/org/jcp/xml/dsig/internal/dom/DOMSHADigestMethod.java (added)
+++ xml/security/trunk/src/org/jcp/xml/dsig/internal/dom/DOMSHADigestMethod.java Thu Jun  8 11:28:26 2006
@@ -0,0 +1,182 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+/*
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+ */
+/*
+ * $Id$
+ */
+package org.jcp.xml.dsig.internal.dom;
+
+import javax.xml.crypto.*;
+import javax.xml.crypto.dsig.*;
+import javax.xml.crypto.dsig.spec.DigestMethodParameterSpec;
+
+import java.io.IOException;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.spec.AlgorithmParameterSpec;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.w3c.dom.Element;
+
+/**
+ * DOM-based implementation of DigestMethod for the SHA1, SHA256 and
+ * SHA512 algorithms.
+ *
+ * @author Sean Mullan
+ */
+public abstract class DOMSHADigestMethod extends DOMDigestMethod {
+
+    private static Logger log = Logger.getLogger("org.jcp.xml.dsig.internal.dom");
+
+    /**
+     * Creates a <code>DOMSHADigestMethod</code>.
+     */
+    protected DOMSHADigestMethod(AlgorithmParameterSpec params) 
+	throws InvalidAlgorithmParameterException {
+	super(params);
+    }
+
+    /**
+     * Creates a <code>DOMSHADigestMethod</code> from an element.
+     *
+     * @param dmElem a DigestMethod element
+     */
+    protected DOMSHADigestMethod(Element dmElem) throws MarshalException {
+	super(dmElem);
+    }
+
+    protected void checkParams(DigestMethodParameterSpec params) 
+	throws InvalidAlgorithmParameterException {
+	if (params != null) {
+	    throw new InvalidAlgorithmParameterException("no parameters " +
+		"should be specified for the " + getName() 
+		 + " DigestMethod algorithm");
+	}
+    }
+
+    protected DigestMethodParameterSpec unmarshalParams(Element paramsElem)
+	throws MarshalException {
+	throw new MarshalException("no parameters should " +
+	    "be specified for the " + getName() + " DigestMethod algorithm");
+    }
+
+    protected void marshalParams(Element parent, String dsPrefix)
+	throws MarshalException {
+	// should never get invoked
+	throw new MarshalException("no parameters should " +
+	    "be specified for the " + getName() + " DigestMethod algorithm");
+    }
+
+    /**
+     * Returns the name of the DigestMethod algorithm.
+     */
+    abstract String getName();
+
+    /**
+     * Returns a SHA1 DigestMethod.
+     */
+    static final DOMSHADigestMethod SHA1(AlgorithmParameterSpec params) 
+	throws InvalidAlgorithmParameterException {
+	return new DOMSHA1DigestMethod(params);
+    }
+    static final DOMSHADigestMethod SHA1(Element dmElem) 
+	throws MarshalException { 
+	return new DOMSHA1DigestMethod(dmElem);
+    }
+
+    /**
+     * Returns a SHA256 DigestMethod.
+     */
+    static final DOMSHADigestMethod SHA256(AlgorithmParameterSpec params) 
+	throws InvalidAlgorithmParameterException {
+	return new DOMSHA256DigestMethod(params);
+    }
+    static final DOMSHADigestMethod SHA256(Element dmElem) 
+	throws MarshalException { 
+	return new DOMSHA256DigestMethod(dmElem);
+    }
+
+    /**
+     * Returns a SHA512 DigestMethod.
+     */
+    static final DOMSHADigestMethod SHA512(AlgorithmParameterSpec params) 
+	throws InvalidAlgorithmParameterException { 
+	return new DOMSHA512DigestMethod(params);
+    }
+    static final DOMSHADigestMethod SHA512(Element dmElem) 
+	throws MarshalException { 
+	return new DOMSHA512DigestMethod(dmElem);
+    }
+
+    private static final class DOMSHA1DigestMethod extends DOMSHADigestMethod {
+	DOMSHA1DigestMethod(AlgorithmParameterSpec params) 
+	    throws InvalidAlgorithmParameterException {
+	    super(params);
+	}
+	DOMSHA1DigestMethod(Element dmElem) throws MarshalException {
+	    super(dmElem);
+	}
+        public String getAlgorithm() {
+	    return DigestMethod.SHA1;
+        }
+        String getMessageDigestAlgorithm() {
+            return "SHA";
+        }
+        String getName() {
+            return "SHA1";
+        }
+    }
+
+    private static final class DOMSHA256DigestMethod extends DOMSHADigestMethod{
+	DOMSHA256DigestMethod(AlgorithmParameterSpec params) 
+	    throws InvalidAlgorithmParameterException {
+	    super(params);
+	}
+	DOMSHA256DigestMethod(Element dmElem) throws MarshalException {
+	    super(dmElem);
+	}
+        public String getAlgorithm() {
+	    return DigestMethod.SHA256;
+        }
+        String getMessageDigestAlgorithm() {
+            return "SHA-256";
+        }
+        String getName() {
+            return "SHA256";
+        }
+    }
+
+    private static final class DOMSHA512DigestMethod extends DOMSHADigestMethod{
+	DOMSHA512DigestMethod(AlgorithmParameterSpec params) 
+	    throws InvalidAlgorithmParameterException {
+	    super(params);
+	}
+	DOMSHA512DigestMethod(Element dmElem) throws MarshalException {
+	    super(dmElem);
+	}
+        public String getAlgorithm() {
+	    return DigestMethod.SHA512;
+        }
+        String getMessageDigestAlgorithm() {
+            return "SHA-512";
+        }
+        String getName() {
+            return "SHA512";
+        }
+    }
+}