You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by bu...@apache.org on 2019/09/17 20:39:35 UTC

[cxf] branch master updated: cxf-rt-rs-security-jose: do not throw JwkException twice

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

buhhunyx pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf.git


The following commit(s) were added to refs/heads/master by this push:
     new de03dfa  cxf-rt-rs-security-jose: do not throw JwkException twice
de03dfa is described below

commit de03dfae71010bd3719430d8d7453732f4c151ea
Author: Alexey Markevich <bu...@gmail.com>
AuthorDate: Tue Sep 17 09:54:09 2019 +0300

    cxf-rt-rs-security-jose: do not throw JwkException twice
---
 .../org/apache/cxf/rs/security/jose/common/JoseUtils.java   |  8 ++++++--
 .../java/org/apache/cxf/rs/security/jose/jwk/JwkUtils.java  | 11 ++++-------
 .../org/apache/cxf/rs/security/jose/jwk/JwkUtilsTest.java   | 13 +++++++++++++
 3 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/common/JoseUtils.java b/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/common/JoseUtils.java
index 330543b..2f0bb75 100644
--- a/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/common/JoseUtils.java
+++ b/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/common/JoseUtils.java
@@ -19,6 +19,7 @@
 package org.apache.cxf.rs.security.jose.common;
 
 import java.io.File;
+import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
 import java.nio.charset.StandardCharsets;
@@ -156,12 +157,15 @@ public final class JoseUtils {
     // <Start> Copied from JAX-RS RT FRONTEND ResourceUtils
     //
 
-    public static InputStream getResourceStream(String loc, Bus bus) throws Exception {
+    public static InputStream getResourceStream(String loc, Bus bus) throws IOException {
         URL url = getResourceURL(loc, bus);
         return url == null ? null : url.openStream();
     }
 
-    public static URL getResourceURL(String loc, Bus bus) throws Exception {
+    public static URL getResourceURL(String loc, Bus bus) throws IOException {
+        if (loc == null) {
+            return null;
+        }
         URL url = null;
         if (loc.startsWith(CLASSPATH_PREFIX)) {
             String path = loc.substring(CLASSPATH_PREFIX.length());
diff --git a/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jwk/JwkUtils.java b/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jwk/JwkUtils.java
index 59d84bd..888837e 100644
--- a/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jwk/JwkUtils.java
+++ b/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jwk/JwkUtils.java
@@ -271,15 +271,12 @@ public final class JwkUtils {
         String keyContent = null;
         String keyStoreLoc = props.getProperty(JoseConstants.RSSEC_KEY_STORE_FILE);
         if (keyStoreLoc != null) {
-            try {
-                InputStream is = JoseUtils.getResourceStream(keyStoreLoc, bus);
-                if (is == null) {
+            try (InputStream isResource = JoseUtils.getResourceStream(keyStoreLoc, bus)) {
+                if (isResource == null) {
                     throw new JwkException("Error in loading keystore location: " + keyStoreLoc);
                 }
-                try (InputStream isResource = is) {
-                    keyContent = IOUtils.readStringFromStream(isResource);
-                }
-            } catch (Exception ex) {
+                keyContent = IOUtils.readStringFromStream(isResource);
+            } catch (IOException ex) {
                 throw new JwkException(ex);
             }
         } else {
diff --git a/rt/rs/security/jose-parent/jose/src/test/java/org/apache/cxf/rs/security/jose/jwk/JwkUtilsTest.java b/rt/rs/security/jose-parent/jose/src/test/java/org/apache/cxf/rs/security/jose/jwk/JwkUtilsTest.java
index 06bff16..2c0bb14 100644
--- a/rt/rs/security/jose-parent/jose/src/test/java/org/apache/cxf/rs/security/jose/jwk/JwkUtilsTest.java
+++ b/rt/rs/security/jose-parent/jose/src/test/java/org/apache/cxf/rs/security/jose/jwk/JwkUtilsTest.java
@@ -21,7 +21,9 @@ package org.apache.cxf.rs.security.jose.jwk;
 import java.math.BigInteger;
 import java.security.interfaces.RSAPrivateKey;
 import java.security.interfaces.RSAPublicKey;
+import java.util.Properties;
 
+import org.apache.cxf.rs.security.jose.common.JoseConstants;
 import org.apache.cxf.rs.security.jose.common.JoseException;
 import org.apache.cxf.rs.security.jose.common.JoseUtils;
 import org.apache.cxf.rs.security.jose.common.KeyManagementUtils;
@@ -189,5 +191,16 @@ public class JwkUtilsTest {
         String thumbprint = JwkUtils.getThumbprint(EC_521_KEY);
         assertEquals("rz4Ohmpxg-UOWIWqWKHlOe0bHSjNUFlHW5vwG_M7qYg", thumbprint);
     }
+    @Test
+    public void testLoadPublicJwkSet() throws Exception {
+        final Properties props = new Properties();
+        props.setProperty(JoseConstants.RSSEC_KEY_STORE_FILE, "unavailable");
+        try {
+            JwkUtils.loadPublicJwkSet(null, props);
+            fail();
+        } catch (JwkException e) {
+            assertNull(e.getCause());
+        }
+    }
 
 }
\ No newline at end of file