bouncycastle API

ID:bouncycastle-api

必威国际有限公司詹金斯插件GitHub释放必威国际有限公司詹金斯插件安装

这个插件为Bouncy Castle相关任务提供了一个稳定的API。使用Bouncy Castle的插件应该依赖于这个插件,而不是直接依赖于Bouncy Castle。

实现

这个插件的实现没有公开任何来自Bouncy Castle的类,只有JCA,允许插件不依赖于Bouncy Castle的细节。

为了完全解决这个问题,之后还需要采取一些其他措施,比如为每个版本的Bouncy Castle提供一个版本的插件等等。

发布说明

动机

由于版本之间的二进制不兼容、支持的算法不同等原因,jenkins核心和插件对多个Bouncy Cast必威国际有限公司le版本的依赖导致了问题。看到必威国际有限公司詹金斯- 35291完整的上下文。

在Je必威国际有限公司nkins核心1.648上,Bouncy Castle被从版本中删除1.471.54由于…的变化实例身份模块

发现的问题:

  • 在Jenkins <中运行的插件必威国际有限公司1.648得到1.47从父类装入器(在默认的类装入策略中)。如果它们在自己的类路径中包含一个更新的版本,那么从它们引用的JAR中只能看到“新的”类。
  • 在Jenkins >=运行的插件必威国际有限公司1.648得到1.54从父类装入器(在默认的类装入策略中)。如果它们在自己的类路径中包含一个较早的版本,那么只能从它们引用的JAR中看到“删除”的类。
  • 如果插件直接使用JCA而不是BC类,通常插件可以工作,但如果在BC中运行1.47必威国际有限公司詹金斯的核心,会缺少算法。
  • 插件正在引入不同版本的BC,这增加了de mix,可能会产生不可预测的结果

一些注意事项:

  • 许多插件只引入BC依赖来进行PEM编码/解码。这个API被BC改变了。
  • instance-identity-module仅将BC用于PEM编码/解码,因此可以从核心中消除这种依赖

建议的解决方案这个问题的一个可能的解决方案是创建一个插件(此插件),使用BC的插件将依赖于此插件。负责:

  • 将BC加载到超级类加载器中。
  • 将BC注册为JVM安全提供程序,以便允许其他插件使用带有BC算法的JCA API。
  • 提供一个API来执行常见的任务,比如PEM Encoding/Decoding,确保它在BC版本之间的稳定性。
Baidu