FEDIZ-170 - Load keystore/truststore resources in the container plugins
diff --git a/plugins/core/src/main/java/org/apache/cxf/fediz/core/config/FedizContext.java b/plugins/core/src/main/java/org/apache/cxf/fediz/core/config/FedizContext.java
index 3ec3c99..d9ff3de 100644
--- a/plugins/core/src/main/java/org/apache/cxf/fediz/core/config/FedizContext.java
+++ b/plugins/core/src/main/java/org/apache/cxf/fediz/core/config/FedizContext.java
@@ -23,6 +23,7 @@
 import java.io.File;
 import java.io.IOException;
 import java.math.BigInteger;
+import java.net.URL;
 import java.security.cert.CertificateException;
 import java.security.cert.X509Certificate;
 import java.util.ArrayList;
@@ -286,11 +287,16 @@
     
     private Properties createCryptoProperties(TrustManagersType tm) {
         String trustStoreFile = null;
-        String trustStorePw = null;
         KeyStoreType ks = tm.getKeyStore();
+        String trustStorePw = ks.getPassword();
         if (ks.getFile() != null && !ks.getFile().isEmpty()) {
             trustStoreFile = ks.getFile();
-            trustStorePw = ks.getPassword();
+        } else if (ks.getResource() != null && !ks.getResource().isEmpty()) {
+            URL resource = Loader.getResource(ks.getResource());
+            if (resource != null) {
+                // WSS4J will re-load the resource anyway
+                trustStoreFile = ks.getResource();
+            }
         } else {
             throw new IllegalStateException("No certificate store configured");
         }
@@ -318,12 +324,17 @@
     
     private Properties createCryptoProperties(KeyManagersType km) {
         String keyStoreFile = null;
-        String keyStorePw = null;
         String keyType = "jks";
         KeyStoreType ks = km.getKeyStore();
+        String keyStorePw = ks.getPassword();
         if (ks.getFile() != null && !ks.getFile().isEmpty()) {
             keyStoreFile = ks.getFile();
-            keyStorePw = ks.getPassword();
+        } else if (ks.getResource() != null && !ks.getResource().isEmpty()) {
+            URL resource = Loader.getResource(ks.getResource());
+            if (resource != null) {
+                // WSS4J will re-load the resource anyway
+                keyStoreFile = ks.getResource();
+            }
         } else {
             throw new IllegalStateException("No certificate store configured");
         }
diff --git a/plugins/core/src/test/java/org/apache/cxf/fediz/core/federation/RequestedClaimsTest.java b/plugins/core/src/test/java/org/apache/cxf/fediz/core/federation/RequestedClaimsTest.java
index 79c836c..2a2ba45 100644
--- a/plugins/core/src/test/java/org/apache/cxf/fediz/core/federation/RequestedClaimsTest.java
+++ b/plugins/core/src/test/java/org/apache/cxf/fediz/core/federation/RequestedClaimsTest.java
@@ -137,7 +137,7 @@
         KeyStoreType ks0 = new KeyStoreType();
         ks0.setType("JKS");
         ks0.setPassword("storepass");
-        ks0.setFile("ststrust.jks");
+        ks0.setResource("ststrust.jks");
         tm0.setKeyStore(ks0);
         
         certStores.getTrustManager().add(tm0);