首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSCEP-错误的第三个参数类型。发现:'org.spongycastle.pkcs.PKCS10CertificationRequest',必需:'org.bouncycastle.pkcs.PKCS10CertificationRequest‘

JSCEP-错误的第三个参数类型。发现:'org.spongycastle.pkcs.PKCS10CertificationRequest',必需:'org.bouncycastle.pkcs.PKCS10CertificationRequest‘
EN

Stack Overflow用户
提问于 2019-06-11 12:50:43
回答 1查看 103关注 0票数 0

我正在为android实现Jscep。一开始,我尝试了Jscep的java,它运行得很好。现在在安卓系统中,我使用的是SpongyCastle而不是BouncyCastle。现在我的问题是客户端类的注册方法是使用BouncyCastle。因此,当我试图通过争论,海绵城堡和赏金城堡是不合适的(显然)。

以下是海绵堡的延伸。

代码语言:javascript
复制
        PKCS10CertificationRequestBuilder crb = generateCSR(keyPair,entity);

我将上面的变量'crb‘作为第三个参数来注册方法,如下所示。

代码语言:javascript
复制
try {
            response = client.enrol(cert, keyPair.getPrivate(), crb.build(getContentSigner(keyPair)), "MDM-ROOT-CA");
        } 

我得到了以下错误。“错误的第三个参数类型。找到:'org.spongycastle.pkcs.PKCS10CertificationRequest',必需:'org.bouncycastle.pkcs.PKCS10CertificationRequest".

我试着扩展客户,但它被宣布为最终。

我的问题是“我应该切换回BouncyCastle罐子吗?”或者“我如何才能传递这个海绵城堡变量?”

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-11 13:56:18

我的问题是“我应该切换回BouncyCastle罐子吗?”或者“我如何才能传递这个海绵城堡变量?”

在所有的Android平台上,两者都不起作用。

据我所见,Jscep使用的是(真正的) BouncyCastle而不是SpongyCastle。

如果我正确地阅读了这个老问题,BouncyCastle在3.0Android版本前就缺少了Jscep所需要的功能。

  • 对于3.0前的Android,他们似乎并不是一个实用的解决方案。您不能只是告诉Java将这两种类型视为等效类型。它将破坏JVM / Davlik运行时类型系统。
  • 根据这个StackOverflow问答的说法,在3.0Android中,安卓在其缩减的BouncyCastle上更改了Java软件包的名称。这意味着您应该能够将真正的BouncyCastle JAR与3.0+ Android应用程序捆绑在一起。这应该足以让Jscep在那个平台上工作。 这个SpongyCastle问题评论说让安卓使用真正的BouncyCastle功能的诀窍是: ..。调用Security.removeProvider(BouncyCastleProvider.PROVIDER_NAME)在调用Security.addProvider(new BouncyCastleProvider())之前删除内置的BC。
  • 理论上,应该可以移植Jscep来使用SpongyCastle,但是没有明确的迹象表明有人成功地做到了这一点。(鉴于以前的情况,对这样一个港口的需求只会减少。)

而且,我也找不到一种独立的替代Jscep在Android上工作的选择。然而,我确实发现:

这可能很有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56544185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档