You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by co...@apache.org on 2020/05/11 12:33:21 UTC
svn commit: r1877579 - in
/santuario/xml-security-java/trunk/src/main/java/org/apache:
jcp/xml/dsig/internal/dom/ xml/security/algorithms/
xml/security/algorithms/implementations/
Author: coheigea
Date: Mon May 11 12:33:20 2020
New Revision: 1877579
URL: http://svn.apache.org/viewvc?rev=1877579&view=rev
Log:
SANTUARIO-544 - Extract common functions. Thanks to Alanscut <wp...@163.com> for the patch. This closes #31.
Modified:
santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java
santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMStructure.java
santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXMLObject.java
santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/SignatureAlgorithmSpi.java
santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/implementations/SignatureBaseRSA.java
santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/implementations/SignatureDSA.java
santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/implementations/SignatureECDSA.java
Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java?rev=1877579&r1=1877578&r2=1877579&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java Mon May 11 12:33:20 2020
@@ -162,7 +162,7 @@ public final class DOMSignatureProperty
@SuppressWarnings("unchecked")
List<XMLStructure> ospContent = osp.getContent();
- return equalsContent(ospContent) &&
+ return equalsContent(content, ospContent) &&
target.equals(osp.getTarget()) && idsEqual;
}
@@ -178,30 +178,4 @@ public final class DOMSignatureProperty
return result;
}
- private boolean equalsContent(List<XMLStructure> otherContent) {
- int osize = otherContent.size();
- if (content.size() != osize) {
- return false;
- }
- for (int i = 0; i < osize; i++) {
- XMLStructure oxs = otherContent.get(i);
- XMLStructure xs = content.get(i);
- if (oxs instanceof javax.xml.crypto.dom.DOMStructure) {
- if (!(xs instanceof javax.xml.crypto.dom.DOMStructure)) {
- return false;
- }
- Node onode = ((javax.xml.crypto.dom.DOMStructure)oxs).getNode();
- Node node = ((javax.xml.crypto.dom.DOMStructure)xs).getNode();
- if (!DOMUtils.nodesEqual(node, onode)) {
- return false;
- }
- } else {
- if (!(xs.equals(oxs))) {
- return false;
- }
- }
- }
-
- return true;
- }
}
Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMStructure.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMStructure.java?rev=1877579&r1=1877578&r2=1877579&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMStructure.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMStructure.java Mon May 11 12:33:20 2020
@@ -26,6 +26,8 @@ import javax.xml.crypto.XMLStructure;
import javax.xml.crypto.dom.DOMCryptoContext;
import org.w3c.dom.Node;
+import java.util.List;
+
/**
* DOM-based abstract implementation of XMLStructure.
*
@@ -42,4 +44,31 @@ public abstract class DOMStructure imple
public abstract void marshal(Node parent, String dsPrefix,
DOMCryptoContext context) throws MarshalException;
+
+ protected boolean equalsContent(List<XMLStructure> content, List<XMLStructure> otherContent) {
+ int size = content.size();
+ if (size != otherContent.size()) {
+ return false;
+ }
+ for (int i = 0; i < size; i++) {
+ XMLStructure oxs = otherContent.get(i);
+ XMLStructure xs = content.get(i);
+ if (oxs instanceof javax.xml.crypto.dom.DOMStructure) {
+ if (!(xs instanceof javax.xml.crypto.dom.DOMStructure)) {
+ return false;
+ }
+ Node otherNode = ((javax.xml.crypto.dom.DOMStructure)oxs).getNode();
+ Node node = ((javax.xml.crypto.dom.DOMStructure)xs).getNode();
+ if (!DOMUtils.nodesEqual(node, otherNode)) {
+ return false;
+ }
+ } else {
+ if (!(xs.equals(oxs))) {
+ return false;
+ }
+ }
+ }
+
+ return true;
+ }
}
Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXMLObject.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXMLObject.java?rev=1877579&r1=1877578&r2=1877579&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXMLObject.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMXMLObject.java Mon May 11 12:33:20 2020
@@ -209,7 +209,7 @@ public final class DOMXMLObject extends
: mimeType.equals(oxo.getMimeType());
return idsEqual && encodingsEqual && mimeTypesEqual &&
- equalsContent(oxo.getContent());
+ equalsContent(content, oxo.getContent());
}
@Override
@@ -229,29 +229,4 @@ public final class DOMXMLObject extends
return result;
}
- private boolean equalsContent(List<XMLStructure> otherContent) {
- if (content.size() != otherContent.size()) {
- return false;
- }
- for (int i = 0, osize = otherContent.size(); i < osize; i++) {
- XMLStructure oxs = otherContent.get(i);
- XMLStructure xs = content.get(i);
- if (oxs instanceof javax.xml.crypto.dom.DOMStructure) {
- if (!(xs instanceof javax.xml.crypto.dom.DOMStructure)) {
- return false;
- }
- Node onode = ((javax.xml.crypto.dom.DOMStructure)oxs).getNode();
- Node node = ((javax.xml.crypto.dom.DOMStructure)xs).getNode();
- if (!DOMUtils.nodesEqual(node, onode)) {
- return false;
- }
- } else {
- if (!(xs.equals(oxs))) {
- return false;
- }
- }
- }
-
- return true;
- }
}
Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/SignatureAlgorithmSpi.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/SignatureAlgorithmSpi.java?rev=1877579&r1=1877578&r2=1877579&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/SignatureAlgorithmSpi.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/SignatureAlgorithmSpi.java Mon May 11 12:33:20 2020
@@ -18,8 +18,7 @@
*/
package org.apache.xml.security.algorithms;
-import java.security.Key;
-import java.security.SecureRandom;
+import java.security.*;
import java.security.spec.AlgorithmParameterSpec;
import org.apache.xml.security.signature.XMLSignatureException;
@@ -171,4 +170,47 @@ public abstract class SignatureAlgorithm
protected abstract void engineSetHMACOutputLength(int HMACOutputLength)
throws XMLSignatureException;
+ protected static void engineInitVerify(Key publicKey, Signature signatureAlgorithm) throws XMLSignatureException {
+ if (!(publicKey instanceof PublicKey)) {
+ String supplied = null;
+ if (publicKey != null) {
+ supplied = publicKey.getClass().getName();
+ }
+ String needed = PublicKey.class.getName();
+ Object[] exArgs = { supplied, needed };
+
+ throw new XMLSignatureException("algorithms.WrongKeyForThisOperation", exArgs);
+ }
+
+ try {
+ signatureAlgorithm.initVerify((PublicKey) publicKey);
+ } catch (InvalidKeyException ex) {
+ throw new XMLSignatureException(ex);
+ }
+ }
+
+ protected static void engineInitSign(Key privateKey, SecureRandom secureRandom, Signature signatureAlgorithm)
+ throws XMLSignatureException {
+ if (!(privateKey instanceof PrivateKey)) {
+ String supplied = null;
+ if (privateKey != null) {
+ supplied = privateKey.getClass().getName();
+ }
+ String needed = PrivateKey.class.getName();
+ Object[] exArgs = { supplied, needed };
+
+ throw new XMLSignatureException("algorithms.WrongKeyForThisOperation", exArgs);
+ }
+
+ try {
+ if (secureRandom == null) {
+ signatureAlgorithm.initSign((PrivateKey) privateKey);
+ } else {
+ signatureAlgorithm.initSign((PrivateKey) privateKey, secureRandom);
+ }
+ } catch (InvalidKeyException ex) {
+ throw new XMLSignatureException(ex);
+ }
+ }
+
}
Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/implementations/SignatureBaseRSA.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/implementations/SignatureBaseRSA.java?rev=1877579&r1=1877578&r2=1877579&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/implementations/SignatureBaseRSA.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/implementations/SignatureBaseRSA.java Mon May 11 12:33:20 2020
@@ -19,13 +19,10 @@
package org.apache.xml.security.algorithms.implementations;
import java.security.InvalidAlgorithmParameterException;
-import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
-import java.security.PrivateKey;
import java.security.Provider;
-import java.security.PublicKey;
import java.security.SecureRandom;
import java.security.Signature;
import java.security.SignatureException;
@@ -79,11 +76,7 @@ public abstract class SignatureBaseRSA e
this.signatureAlgorithm = Signature.getInstance(algorithmID, provider);
}
- } catch (NoSuchAlgorithmException ex) {
- Object[] exArgs = {algorithmID, ex.getLocalizedMessage()};
- throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs);
-
- } catch (NoSuchProviderException ex) {
+ } catch (NoSuchAlgorithmException | NoSuchProviderException ex) {
Object[] exArgs = {algorithmID, ex.getLocalizedMessage()};
throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs);
}
@@ -110,22 +103,7 @@ public abstract class SignatureBaseRSA e
/** {@inheritDoc} */
protected void engineInitVerify(Key publicKey) throws XMLSignatureException {
- if (!(publicKey instanceof PublicKey)) {
- String supplied = null;
- if (publicKey != null) {
- supplied = publicKey.getClass().getName();
- }
- String needed = PublicKey.class.getName();
- Object[] exArgs = { supplied, needed };
-
- throw new XMLSignatureException("algorithms.WrongKeyForThisOperation", exArgs);
- }
-
- try {
- this.signatureAlgorithm.initVerify((PublicKey) publicKey);
- } catch (InvalidKeyException ex) {
- throw new XMLSignatureException(ex);
- }
+ engineInitVerify(publicKey, this.signatureAlgorithm);
}
/** {@inheritDoc} */
@@ -140,26 +118,7 @@ public abstract class SignatureBaseRSA e
/** {@inheritDoc} */
protected void engineInitSign(Key privateKey, SecureRandom secureRandom)
throws XMLSignatureException {
- if (!(privateKey instanceof PrivateKey)) {
- String supplied = null;
- if (privateKey != null) {
- supplied = privateKey.getClass().getName();
- }
- String needed = PrivateKey.class.getName();
- Object[] exArgs = { supplied, needed };
-
- throw new XMLSignatureException("algorithms.WrongKeyForThisOperation", exArgs);
- }
-
- try {
- if (secureRandom == null) {
- this.signatureAlgorithm.initSign((PrivateKey) privateKey);
- } else {
- this.signatureAlgorithm.initSign((PrivateKey) privateKey, secureRandom);
- }
- } catch (InvalidKeyException ex) {
- throw new XMLSignatureException(ex);
- }
+ engineInitSign(privateKey, secureRandom, this.signatureAlgorithm);
}
/** {@inheritDoc} */
Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/implementations/SignatureDSA.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/implementations/SignatureDSA.java?rev=1877579&r1=1877578&r2=1877579&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/implementations/SignatureDSA.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/implementations/SignatureDSA.java Mon May 11 12:33:20 2020
@@ -20,13 +20,10 @@ package org.apache.xml.security.algorith
import java.io.IOException;
import java.security.InvalidAlgorithmParameterException;
-import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
-import java.security.PrivateKey;
import java.security.Provider;
-import java.security.PublicKey;
import java.security.SecureRandom;
import java.security.Signature;
import java.security.SignatureException;
@@ -90,11 +87,7 @@ public class SignatureDSA extends Signat
this.signatureAlgorithm = Signature.getInstance(algorithmID, provider);
}
- } catch (NoSuchAlgorithmException ex) {
- Object[] exArgs = {algorithmID, ex.getLocalizedMessage()};
- throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs);
-
- } catch (NoSuchProviderException ex) {
+ } catch (NoSuchAlgorithmException | NoSuchProviderException ex) {
Object[] exArgs = {algorithmID, ex.getLocalizedMessage()};
throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs);
}
@@ -134,22 +127,7 @@ public class SignatureDSA extends Signat
* {@inheritDoc}
*/
protected void engineInitVerify(Key publicKey) throws XMLSignatureException {
- if (!(publicKey instanceof PublicKey)) {
- String supplied = null;
- if (publicKey != null) {
- supplied = publicKey.getClass().getName();
- }
- String needed = PublicKey.class.getName();
- Object[] exArgs = { supplied, needed };
-
- throw new XMLSignatureException("algorithms.WrongKeyForThisOperation", exArgs);
- }
-
- try {
- this.signatureAlgorithm.initVerify((PublicKey) publicKey);
- } catch (InvalidKeyException ex) {
- throw new XMLSignatureException(ex);
- }
+ engineInitVerify(publicKey, this.signatureAlgorithm);
size = ((DSAKey)publicKey).getParams().getQ().bitLength();
}
@@ -171,26 +149,7 @@ public class SignatureDSA extends Signat
*/
protected void engineInitSign(Key privateKey, SecureRandom secureRandom)
throws XMLSignatureException {
- if (!(privateKey instanceof PrivateKey)) {
- String supplied = null;
- if (privateKey != null) {
- supplied = privateKey.getClass().getName();
- }
- String needed = PrivateKey.class.getName();
- Object[] exArgs = { supplied, needed };
-
- throw new XMLSignatureException("algorithms.WrongKeyForThisOperation", exArgs);
- }
-
- try {
- if (secureRandom == null) {
- this.signatureAlgorithm.initSign((PrivateKey) privateKey);
- } else {
- this.signatureAlgorithm.initSign((PrivateKey) privateKey, secureRandom);
- }
- } catch (InvalidKeyException ex) {
- throw new XMLSignatureException(ex);
- }
+ engineInitSign(privateKey, secureRandom, this.signatureAlgorithm);
size = ((DSAKey)privateKey).getParams().getQ().bitLength();
}
Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/implementations/SignatureECDSA.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/implementations/SignatureECDSA.java?rev=1877579&r1=1877578&r2=1877579&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/implementations/SignatureECDSA.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/implementations/SignatureECDSA.java Mon May 11 12:33:20 2020
@@ -19,16 +19,7 @@
package org.apache.xml.security.algorithms.implementations;
import java.io.IOException;
-import java.security.InvalidAlgorithmParameterException;
-import java.security.InvalidKeyException;
-import java.security.Key;
-import java.security.NoSuchProviderException;
-import java.security.PrivateKey;
-import java.security.Provider;
-import java.security.PublicKey;
-import java.security.SecureRandom;
-import java.security.Signature;
-import java.security.SignatureException;
+import java.security.*;
import java.security.spec.AlgorithmParameterSpec;
import org.apache.xml.security.algorithms.JCEMapper;
@@ -108,11 +99,7 @@ public abstract class SignatureECDSA ext
this.signatureAlgorithm = Signature.getInstance(algorithmID, provider);
}
- } catch (java.security.NoSuchAlgorithmException ex) {
- Object[] exArgs = { algorithmID, ex.getLocalizedMessage() };
- throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs);
-
- } catch (NoSuchProviderException ex) {
+ } catch (NoSuchAlgorithmException | NoSuchProviderException ex) {
Object[] exArgs = { algorithmID, ex.getLocalizedMessage() };
throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs);
}
@@ -145,23 +132,7 @@ public abstract class SignatureECDSA ext
/** {@inheritDoc} */
protected void engineInitVerify(Key publicKey) throws XMLSignatureException {
-
- if (!(publicKey instanceof PublicKey)) {
- String supplied = null;
- if (publicKey != null) {
- supplied = publicKey.getClass().getName();
- }
- String needed = PublicKey.class.getName();
- Object[] exArgs = { supplied, needed };
-
- throw new XMLSignatureException("algorithms.WrongKeyForThisOperation", exArgs);
- }
-
- try {
- this.signatureAlgorithm.initVerify((PublicKey) publicKey);
- } catch (InvalidKeyException ex) {
- throw new XMLSignatureException(ex);
- }
+ engineInitVerify(publicKey, signatureAlgorithm);
}
/** {@inheritDoc} */
@@ -178,26 +149,7 @@ public abstract class SignatureECDSA ext
/** {@inheritDoc} */
protected void engineInitSign(Key privateKey, SecureRandom secureRandom)
throws XMLSignatureException {
- if (!(privateKey instanceof PrivateKey)) {
- String supplied = null;
- if (privateKey != null) {
- supplied = privateKey.getClass().getName();
- }
- String needed = PrivateKey.class.getName();
- Object[] exArgs = { supplied, needed };
-
- throw new XMLSignatureException("algorithms.WrongKeyForThisOperation", exArgs);
- }
-
- try {
- if (secureRandom == null) {
- this.signatureAlgorithm.initSign((PrivateKey) privateKey);
- } else {
- this.signatureAlgorithm.initSign((PrivateKey) privateKey, secureRandom);
- }
- } catch (InvalidKeyException ex) {
- throw new XMLSignatureException(ex);
- }
+ engineInitSign(privateKey, secureRandom, this.signatureAlgorithm);
}
/** {@inheritDoc} */