package org.jboss.resteasy.test.crypto.resource; import org.jboss.resteasy.utils.TestApplication; import javax.ws.rs.Path; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.ObjectInputStream; import java.security.PrivateKey; import java.security.cert.X509Certificate; import java.util.Base64; @Path("/test/resource") public class CryptoCertResource { public static X509Certificate cert; public static PrivateKey privateKey; static { try { privateKey = (PrivateKey) fromString(loadString("privateKey")); cert = (X509Certificate) fromString(loadString("cert")); } catch (Exception e) { throw new RuntimeException(e); } } public static String readString(final InputStream in) throws IOException { char[] buffer = new char[10240]; StringBuilder builder = new StringBuilder(); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); int wasRead = 0; do { wasRead = reader.read(buffer, 0, 1024); if (wasRead > 0) { builder.append(buffer, 0, wasRead); } } while (wasRead > -1); return builder.toString(); } private static String loadString(String name) throws IOException { String resource = String.format("%s.txt", name); InputStream stream = null; ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); if (classLoader != null) { stream = classLoader.getResourceAsStream(resource); } if (stream == null) { stream = TestApplication.class.getResourceAsStream(resource); } if (stream == null) { throw new RuntimeException(); } return readString(stream); } /** * Read the object from Base64 string. */ private static Object fromString(String s) throws IOException, ClassNotFoundException { byte[] data = Base64.getDecoder().decode(s); ObjectInputStream ois = new ObjectInputStream( new ByteArrayInputStream(data)); Object o = ois.readObject(); ois.close(); return o; } }