我在android项目中添加SSL密钥库并通过SSH连接,我想将密钥库文件作为Jetty资源或文件(我可以转换为资源)访问。不幸的是,我是Android的新手,并且不知道如何以这种方式访问原始资源。你能帮忙的话,我会很高兴。谢谢。
代码:
import org.eclipse.jetty.util.resource.Resource;
performConnection(){
// The file is present in raw directory.
Resource keystore = Resource.newClassPathResource("raw/domain.keystore");
}
另外,正如您在屏幕截图中所看到的,Resource类有多个参数。任何人都适合,只要我可以访问密钥库,因为该任务只证明是税收。
屏幕截图:
任何帮助都会很好。谢谢。
答案 0 :(得分:1)
我是Android新手,不知道如何以这种方式访问原始资源
原始资源是开发计算机上的文件。它们不是设备上的文件。
看看您是否可以提供InputStream
。如果可以,请使用getResources().openRawResource()
在原始资源上获得InputStream
。
否则,您必须使用InputStream
将原始资源复制到本地文件,例如internal storage,这样您就可以使用File
。
答案 1 :(得分:0)
private Resource loadKeystoreFromAPK(int rId) throws IOException {
File baseDir = getApplication().getExternalFilesDir(null);
File path = new File(baseDir, "keystore");
// Check if it exists, if not, create it
if (!path.exists()) {
path.mkdir();
}
path = new File(path, "truststore.store");
if(!path.exists()){
path.createNewFile();
}
FileOutputStream out = new FileOutputStream(path);
InputStream in = getResources().openRawResource(rId);
IOUtils.copy(in,out);
in.close();
out.close();
return Resource.newResource(path);
}
答案 2 :(得分:0)
当我在这里找到方法试图解决在我的 android 应用程序中检索我的密钥库的问题时,我没有得到任何这些建议。当我尝试之前建议的解决方案时,它在原始文件夹中找不到密钥库。
我是这样解决的:
我在主文件夹 app/src/main/assets
中创建了一个名为 assets 的文件夹,我将密钥库文件放在其中。
然后我可以使用这些步骤来检索名为 keystore.p12
的密钥库。
KeyStore keyStore = KeyStore.getInstance("PKCS12");
AssetManager ass = context.getAssets();
keyStore.load(ass.open("keystore.p12"), keyStorePassword.toCharArray());
我花了一些时间来解决这个问题,所以我希望这可以帮助其他人。您还需要用 try/catch 块包围它以处理可能的异常。如果您在活动中执行此操作,则可以在没有上下文部分的情况下调用 getAssets()
。