0

我有一个 android 应用程序,它通过 https 并使用 wss (wss4j) 与安全的 web 服务进行通信。在以前的桌面 java 应用程序中一切正常,我使用物理 .jks 文件来初始化所有内容,即:

props.setProperty("org.apache.ws.security.crypto.merlin.file", "c:/temp/conf/ihar.jks");
Crypto crypto = CryptoFactory.getInstance(props);

这一切在桌面上都可以正常工作,但是,在 android 设备上,显然位置是错误的(“c:/temp/conf/ihar.jks”,当然,不存在)。所以我的问题是如何指定文件的位置?我认为它只需要一个刺激值,所以像“file:///android_asset/res/ihar.jks”这样的东西可行吗?

在此先感谢,伊恩·哈里根

4

1 回答 1

0

感谢您尝试 wss-Client-for-android :)

我目前没有可共享的项目(sry),但我可以就你的问题给你一些建议:

  • 至少在 Gingerbread 上不支持 JKS,所以使用 BKS (bouncycastle)
  • 将您的clientkeystore.bksclienttruststore.bks放入您的 Android 项目的res/raw文件夹中
  • 如何打开您的密钥库以访问证书或私钥:

    导入 java.security.KeyStore;
    ...
    InputStream keyStoreStream = resources.openRawResource(R.raw.clientkeystore);
    KeyStore keyStore = KeyStore.getInstance("BKS");
    keyStore.load(keyStoreStream, "xregistry".toCharArray());

  • 如何为 sendSOAPMessage 设置 cryptoParams(this、message、endpoint、cryptoParams);

    SecCryptoParams cryptoParams = new SecCryptoParams();
    cryptoParams.put(SecCryptoParams.KEYSTORE, new SecCryptoParam(R.raw.clientkeystore, KEYSTORE_PASSWORD)); cryptoParams.put(SecCryptoParams.TRUSTSTORE, new SecCryptoParam(R.raw.clienttruststore, TRUSTSTORE_PASSWORD));

我希望从这里你知道如何进行。
关于
Peter
(=PA=)
PS 我认为这种标记对我来说太多了:|

于 2012-08-26T17:00:25.417 回答