You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by co...@apache.org on 2022/06/10 07:15:36 UTC

[ws-wss4j] branch master updated: PMD updates for ws-security-stax - part I

This is an automated email from the ASF dual-hosted git repository.

coheigea pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ws-wss4j.git


The following commit(s) were added to refs/heads/master by this push:
     new 412bc7b74 PMD updates for ws-security-stax - part I
412bc7b74 is described below

commit 412bc7b745bffd1398b7083f87f1f22cbc60f300
Author: Colm O hEigeartaigh <co...@apache.org>
AuthorDate: Fri Jun 10 08:15:19 2022 +0100

    PMD updates for ws-security-stax - part I
---
 .../wss4j/stax/ext/WSSSecurityProperties.java      |  8 ++--
 .../processor/input/DecryptInputProcessor.java     |  4 +-
 .../processor/input/SAMLTokenInputHandler.java     | 44 ++++++++++----------
 .../input/SecurityHeaderInputProcessor.java        |  2 +-
 .../input/SecurityTokenReferenceInputHandler.java  |  2 +-
 .../processor/input/UsernameTokenInputHandler.java |  2 +-
 .../WSSSignatureReferenceVerifyInputProcessor.java | 47 ++++++++++------------
 .../processor/output/SAMLTokenOutputProcessor.java | 13 +++---
 8 files changed, 57 insertions(+), 65 deletions(-)

diff --git a/ws-security-stax/src/main/java/org/apache/wss4j/stax/ext/WSSSecurityProperties.java b/ws-security-stax/src/main/java/org/apache/wss4j/stax/ext/WSSSecurityProperties.java
index 4250587fe..7d765ef3d 100644
--- a/ws-security-stax/src/main/java/org/apache/wss4j/stax/ext/WSSSecurityProperties.java
+++ b/ws-security-stax/src/main/java/org/apache/wss4j/stax/ext/WSSSecurityProperties.java
@@ -334,7 +334,7 @@ public class WSSSecurityProperties extends XMLSecurityProperties {
         if (signatureWSSCrypto != null) {
             return signatureWSSCrypto.getCryptoProperties();
         }
-        return null;
+        return null;    //NOPMD
     }
 
     public void setSignatureCryptoProperties(Properties cryptoProperties) {
@@ -409,7 +409,7 @@ public class WSSSecurityProperties extends XMLSecurityProperties {
         if (signatureVerificationWSSCrypto != null) {
             return signatureVerificationWSSCrypto.getCryptoProperties();
         }
-        return null;
+        return null;    //NOPMD
     }
 
     public void setSignatureVerificationCryptoProperties(Properties cryptoProperties) {
@@ -488,7 +488,7 @@ public class WSSSecurityProperties extends XMLSecurityProperties {
         if (decryptionWSSCrypto != null) {
             return decryptionWSSCrypto.getCryptoProperties();
         }
-        return null;
+        return null;    //NOPMD
     }
 
     public void setDecryptionCryptoProperties(Properties cryptoProperties) {
@@ -582,7 +582,7 @@ public class WSSSecurityProperties extends XMLSecurityProperties {
         if (encryptionWSSCrypto != null) {
             return encryptionWSSCrypto.getCryptoProperties();
         }
-        return null;
+        return null;    //NOPMD
     }
 
     public void setEncryptionCryptoProperties(Properties cryptoProperties) {
diff --git a/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/input/DecryptInputProcessor.java b/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/input/DecryptInputProcessor.java
index 40079a37f..709d8ca5a 100644
--- a/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/input/DecryptInputProcessor.java
+++ b/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/input/DecryptInputProcessor.java
@@ -200,7 +200,7 @@ public class DecryptInputProcessor extends AbstractDecryptInputProcessor {
             //1.) if an attachment is encrypted and signed the order is preserved
             //2.) the attachments are processed after the SOAP-Document which allows us to stream everything
             attachmentReferences.add(
-                    new DeferredAttachment(encryptedDataType, cipher, inboundSecurityToken)
+                    new DeferredAttachment(encryptedDataType, cipher, inboundSecurityToken) //NOPMD
             );
         }
     }
@@ -354,7 +354,7 @@ public class DecryptInputProcessor extends AbstractDecryptInputProcessor {
             final Key symmetricKey =
                 inboundSecurityToken.getSecretKey(encAlgo, XMLSecurityConstants.Enc, encryptedDataType.getId());
 
-            InputStream attachmentInputStream =
+            InputStream attachmentInputStream = //NOPMD
                 AttachmentUtils.setupAttachmentDecryptionStream(encAlgo, cipher, symmetricKey, attachment.getSourceStream());
 
             Attachment resultAttachment = new Attachment();
diff --git a/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/input/SAMLTokenInputHandler.java b/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/input/SAMLTokenInputHandler.java
index d392a6679..c47c247f3 100644
--- a/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/input/SAMLTokenInputHandler.java
+++ b/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/input/SAMLTokenInputHandler.java
@@ -232,23 +232,22 @@ public class SAMLTokenInputHandler extends AbstractInputSecurityHeaderHandler {
         while (xmlSecEventIterator.hasNext()) {
             XMLSecEvent xmlSecEvent = xmlSecEventIterator.next();
             idx++;
-            switch (xmlSecEvent.getEventType()) {
-                case XMLStreamConstants.START_ELEMENT:
-                    QName elementName = xmlSecEvent.asStartElement().getName();
-                    if (WSSConstants.TAG_dsig_KeyInfo.equals(elementName)) {
-                        List<QName> elementPath = xmlSecEvent.asStartElement().getElementPath();
-                        if (elementPath.size() >= 4) {
-                            int lastIndex = elementPath.size() - 2;
-                            if ("SubjectConfirmationData".equals(elementPath.get(lastIndex).getLocalPart())
+            if (XMLStreamConstants.START_ELEMENT == xmlSecEvent.getEventType()) {
+                QName elementName = xmlSecEvent.asStartElement().getName();
+                if (WSSConstants.TAG_dsig_KeyInfo.equals(elementName)) {
+                    List<QName> elementPath = xmlSecEvent.asStartElement().getElementPath();
+                    if (elementPath.size() >= 4) {
+                        int lastIndex = elementPath.size() - 2;
+                        if ("SubjectConfirmationData".equals(elementPath.get(lastIndex).getLocalPart())
                                 && "SubjectConfirmation".equals(elementPath.get(lastIndex - 1).getLocalPart())
                                 && "Subject".equals(elementPath.get(lastIndex - 2).getLocalPart())) {
-                                return idx;
-                            } else if ("SubjectConfirmation".equals(elementPath.get(lastIndex).getLocalPart())
+                            return idx;
+                        } else if ("SubjectConfirmation".equals(elementPath.get(lastIndex).getLocalPart())
                                 && "Subject".equals(elementPath.get(lastIndex - 1).getLocalPart())) {
-                                return idx;
-                            }
+                            return idx;
                         }
                     }
+                }
             }
         }
         return idx;
@@ -260,19 +259,18 @@ public class SAMLTokenInputHandler extends AbstractInputSecurityHeaderHandler {
         while (xmlSecEventIterator.hasNext()) {
             XMLSecEvent xmlSecEvent = xmlSecEventIterator.next();
             idx++;
-            switch (xmlSecEvent.getEventType()) {
-                case XMLStreamConstants.START_ELEMENT:
-                    QName elementName = xmlSecEvent.asStartElement().getName();
-                    if (WSSConstants.TAG_dsig_KeyInfo.equals(elementName)) {
-                        List<QName> elementPath = xmlSecEvent.asStartElement().getElementPath();
-                        if (elementPath.size() >= 4) {
-                            int lastIndex = elementPath.size() - 2;
-                            if ("Signature".equals(elementPath.get(lastIndex).getLocalPart())
+            if (XMLStreamConstants.START_ELEMENT == xmlSecEvent.getEventType()) {
+                QName elementName = xmlSecEvent.asStartElement().getName();
+                if (WSSConstants.TAG_dsig_KeyInfo.equals(elementName)) {
+                    List<QName> elementPath = xmlSecEvent.asStartElement().getElementPath();
+                    if (elementPath.size() >= 4) {
+                        int lastIndex = elementPath.size() - 2;
+                        if ("Signature".equals(elementPath.get(lastIndex).getLocalPart())
                                 && "Assertion".equals(elementPath.get(lastIndex - 1).getLocalPart())) {
-                                return idx;
-                            }
+                            return idx;
                         }
                     }
+                }
             }
         }
         return idx;
@@ -308,7 +306,7 @@ public class SAMLTokenInputHandler extends AbstractInputSecurityHeaderHandler {
             loop:
             while (xmlSecEventIterator.hasNext()) {
                 xmlSecEvent = xmlSecEventIterator.next();
-                switch (xmlSecEvent.getEventType()) {
+                switch (xmlSecEvent.getEventType()) {   //NOPMD
                     case XMLStreamConstants.END_ELEMENT:
                         if (xmlSecEvent.asEndElement().getName().equals(elementName)) {
                             break loop;
diff --git a/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/input/SecurityHeaderInputProcessor.java b/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/input/SecurityHeaderInputProcessor.java
index b9cb72406..8a9932c82 100644
--- a/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/input/SecurityHeaderInputProcessor.java
+++ b/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/input/SecurityHeaderInputProcessor.java
@@ -85,7 +85,7 @@ public class SecurityHeaderInputProcessor extends AbstractInputProcessor {
             subInputProcessorChain.reset();
             xmlSecEvent = subInputProcessorChain.processHeaderEvent();
 
-            switch (xmlSecEvent.getEventType()) {
+            switch (xmlSecEvent.getEventType()) {   //NOPMD
                 case XMLStreamConstants.START_ELEMENT:
                     XMLSecStartElement xmlSecStartElement = xmlSecEvent.asStartElement();
                     int documentLevel = xmlSecStartElement.getDocumentLevel();
diff --git a/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/input/SecurityTokenReferenceInputHandler.java b/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/input/SecurityTokenReferenceInputHandler.java
index 94708cbee..241900c9e 100644
--- a/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/input/SecurityTokenReferenceInputHandler.java
+++ b/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/input/SecurityTokenReferenceInputHandler.java
@@ -128,7 +128,7 @@ public class SecurityTokenReferenceInputHandler extends AbstractInputSecurityHea
         public XMLSecEvent processEvent(final InputProcessorChain inputProcessorChain)
                 throws XMLStreamException, XMLSecurityException {
             XMLSecEvent xmlSecEvent = inputProcessorChain.processEvent();
-            switch (xmlSecEvent.getEventType()) {
+            switch (xmlSecEvent.getEventType()) {   //NOPMD
                 case XMLStreamConstants.START_ELEMENT:
                     XMLSecStartElement xmlSecStartElement = xmlSecEvent.asStartElement();
                     Attribute attribute = xmlSecStartElement.getAttributeByName(this.attribute);
diff --git a/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/input/UsernameTokenInputHandler.java b/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/input/UsernameTokenInputHandler.java
index 5046ea675..6ba7e9e56 100644
--- a/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/input/UsernameTokenInputHandler.java
+++ b/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/input/UsernameTokenInputHandler.java
@@ -76,7 +76,7 @@ public class UsernameTokenInputHandler extends AbstractInputSecurityHeaderHandle
         final WSSSecurityProperties wssSecurityProperties = (WSSSecurityProperties) securityProperties;
         Instant created = verifyCreated(wssSecurityProperties, usernameTokenType);
 
-        ReplayCache replayCache = wssSecurityProperties.getNonceReplayCache();
+        ReplayCache replayCache = wssSecurityProperties.getNonceReplayCache();  //NOPMD
         final EncodedString encodedNonce =
                 XMLSecurityUtils.getQNameType(usernameTokenType.getAny(), WSSConstants.TAG_WSSE_NONCE);
         if (encodedNonce != null && replayCache != null) {
diff --git a/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/input/WSSSignatureReferenceVerifyInputProcessor.java b/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/input/WSSSignatureReferenceVerifyInputProcessor.java
index 881d1bff7..8dd4f85ca 100644
--- a/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/input/WSSSignatureReferenceVerifyInputProcessor.java
+++ b/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/input/WSSSignatureReferenceVerifyInputProcessor.java
@@ -124,7 +124,7 @@ public class WSSSignatureReferenceVerifyInputProcessor extends AbstractSignature
 
             final Attachment attachment = attachments.get(0);
 
-            InputStream attachmentInputStream = attachment.getSourceStream();
+            InputStream attachmentInputStream = attachment.getSourceStream();   //NOPMD
             if (!attachmentInputStream.markSupported()) {
                 attachmentInputStream = new BufferedInputStream(attachmentInputStream);
             }
@@ -134,30 +134,27 @@ public class WSSSignatureReferenceVerifyInputProcessor extends AbstractSignature
             try {
                 DigestOutputStream digestOutputStream =
                         createMessageDigestOutputStream(referenceType, inputProcessorChain.getSecurityContext());
-                UnsyncBufferedOutputStream bufferedDigestOutputStream =
-                        new UnsyncBufferedOutputStream(digestOutputStream);
-
-                if (referenceType.getTransforms() != null) {
-                    Transformer transformer =
-                            buildTransformerChain(referenceType, bufferedDigestOutputStream, inputProcessorChain, null);
-                    if (!(transformer instanceof AttachmentContentSignatureTransform)) {
-                        throw new WSSecurityException(
-                                WSSecurityException.ErrorCode.INVALID_SECURITY,
-                                "empty",
-                                new Object[] {"First transform must be Attachment[Content|Complete]SignatureTransform"}
-                        );
-                    }
-                    Map<String, Object> transformerProperties = new HashMap<>(2);
-                    transformerProperties.put(
-                            AttachmentContentSignatureTransform.ATTACHMENT, attachment);
-                    transformer.setProperties(transformerProperties);
-
-                    transformer.transform(attachmentInputStream);
+                try (UnsyncBufferedOutputStream bufferedDigestOutputStream =
+                        new UnsyncBufferedOutputStream(digestOutputStream)) {
+                    if (referenceType.getTransforms() != null) {
+                        Transformer transformer =
+                                buildTransformerChain(referenceType, bufferedDigestOutputStream, inputProcessorChain, null);
+                        if (!(transformer instanceof AttachmentContentSignatureTransform)) {
+                            throw new WSSecurityException(
+                                    WSSecurityException.ErrorCode.INVALID_SECURITY,
+                                    "empty",
+                                    new Object[]{"First transform must be Attachment[Content|Complete]SignatureTransform"}
+                            );
+                        }
+                        Map<String, Object> transformerProperties = new HashMap<>(2);
+                        transformerProperties.put(
+                                AttachmentContentSignatureTransform.ATTACHMENT, attachment);
+                        transformer.setProperties(transformerProperties);
 
-                    bufferedDigestOutputStream.close();
-                } else {
-                    XMLSecurityUtils.copy(attachmentInputStream, bufferedDigestOutputStream);
-                    bufferedDigestOutputStream.close();
+                        transformer.transform(attachmentInputStream);
+                    } else {
+                        XMLSecurityUtils.copy(attachmentInputStream, bufferedDigestOutputStream);
+                    }
                 }
                 compareDigest(digestOutputStream.getDigestValue(), referenceType);
 
@@ -310,7 +307,7 @@ public class WSSSignatureReferenceVerifyInputProcessor extends AbstractSignature
     private void detectReplayAttack(InputProcessorChain inputProcessorChain) throws WSSecurityException {
         TimestampSecurityEvent timestampSecurityEvent =
                 inputProcessorChain.getSecurityContext().get(WSSConstants.PROP_TIMESTAMP_SECURITYEVENT);
-        ReplayCache replayCache =
+        ReplayCache replayCache =   //NOPMD
             ((WSSSecurityProperties)getSecurityProperties()).getTimestampReplayCache();
         if (timestampSecurityEvent != null && replayCache != null) {
             final String cacheKey =
diff --git a/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/SAMLTokenOutputProcessor.java b/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/SAMLTokenOutputProcessor.java
index 6eab257a0..3a4cd5aa2 100644
--- a/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/SAMLTokenOutputProcessor.java
+++ b/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/SAMLTokenOutputProcessor.java
@@ -335,7 +335,7 @@ public class SAMLTokenOutputProcessor extends AbstractOutputProcessor {
                             return key;
                         }
                         byte[] secretKey = getSecretKeyUsingCallback();
-                        if (secretKey != null) {
+                        if (secretKey != null && secretKey.length > 0) {
                             String algoFamily = JCEAlgorithmMapper.getJCEKeyAlgorithmFromURI(algorithmURI);
                             key = new SecretKeySpec(secretKey, algoFamily);
                             setSecretKey(algorithmURI, key);
@@ -398,7 +398,7 @@ public class SAMLTokenOutputProcessor extends AbstractOutputProcessor {
                 }
             }
 
-            return null;
+            return new X509Certificate[0];
         }
 
 
@@ -413,7 +413,7 @@ public class SAMLTokenOutputProcessor extends AbstractOutputProcessor {
                 }
             }
 
-            return null;
+            return new byte[0];
         }
 
         @Override
@@ -488,15 +488,12 @@ public class SAMLTokenOutputProcessor extends AbstractOutputProcessor {
         }
 
         private boolean includeBST() {
-            if (senderVouches
+            return senderVouches
                 && getSecurityProperties().getSignatureKeyIdentifiers().contains(
                     WSSecurityTokenConstants.KEYIDENTIFIER_SECURITY_TOKEN_DIRECT_REFERENCE)
                 && securityToken != null
                 && !(WSSConstants.SAML_TOKEN_SIGNED.equals(action)
-                    && ((WSSSecurityProperties)getSecurityProperties()).isIncludeSignatureToken())) {
-                return true;
-            }
-            return false;
+                    && ((WSSSecurityProperties)getSecurityProperties()).isIncludeSignatureToken());
         }
     }