当前位置: 首页 > 知识库问答 >
问题:

如何初始化pkcs11的提供程序?

闾丘选
2023-03-14

我想使用nss作为pkcs11的提供者,我正在oracle JRE和ubuntu 64位上用java编码。我尝试了两种不同的包装,iaik和SunPKCS11,但在这两种包装中我遇到了相同的问题。对于我的提供者,我首先尝试使用libnss3。所以每次我在实例模块中得到IOException。然后我使用libsoftokn3。因此,我成功地实例化了一个模块。但现在我在初始化时遇到了这个异常:“CKR\u ARGUMENTS\u BAD”

这是我的代码,第一个使用iaik,第二个使用SunPKCS11

iaiak:

        Module pkcs11Module = Module.getInstance("libsoftokn.so");
        pkcs11Module.initialize(null);      //Here Throws the Excption:"iaik.pkcs.pkcs11.wrapper.PKCS11Exception: CKR_ARGUMENTS_BAD"
        Info info = pkcs11Module.getInfo();
        System.out.println(info);
        pkcs11Module.finalize(null);

SunPKCS11:

    String configName = "cfg";
    Provider p = new sun.security.pkcs11.SunPKCS11(configName);  //Here Throws the Excption:"sun.security.pkcs11.wrapper.PKCS11Exception: CKR_ARGUMENTS_BAD"
    Security.addProvider(p);

和文件“cfg”:

name = nss
library = /usr/lib/libsoftokn3.so

共有1个答案

宗政卓
2023-03-14

您可以像这样指定目录,而不是指定库。

Properties props = new Properties();
 props.put("name", "nss");
 props.put("nssLibraryDirectory", libDir);
 props.put("nssSecmodDirectory", dbDir);
 props.put("nssModule", "fips");
 props.put("nssDbMode", "readWrite");

 ByteArrayOutputStream out = new ByteArrayOutputStream();
 props.store(out, null);
 ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());

 Provider ret = new sun.security.pkcs11.SunPKCS11(in);
 类似资料:
  • 当你首次建立一个应用的时候,为你的数据库预先安装一些硬编码的数据,是很有用处的。 有几种方法可以让Django自动创建这些数据:你可以通过fixtures提供初始数据,或者提供一个包含初始数据的sql文件。 通常来讲,使用fixtrue更加简洁,因为它是数据库无关的,而使用sql初始化更加灵活。 提供初始数据的fixtures fixture是数据的集合,让Django了解如何导入到数据库中。创建

  • 问题内容: 像这个?http://weblogs.asp.net/dwahlin/archive/2007/09/09/c-3-0-features-object- initializers.aspx 问题答案: 其实有! 甚至: 这称为 双括号初始化 。但是,我会避免使用这种惯用法,因为它有一些意外的副作用,例如,此语法实际上创建了一个匿名内部类and 。

  • 我想为文本字段提供一个初始值,并用空值重新绘制它以清除文本。使用Flutter的API执行此操作的最佳方法是什么?

  • 问题内容: 据报道,这段代码在这里和这里都有效,但是我似乎无法使其正常工作。 IBOutlet已连接到情节提要中的对象。命名了prototypeCell,因此我可以将其使用,并将其自定义类属性设置为。 First Error(我可以解决,但上面的链接都不需要它,这使我觉得我做错了。对吗?): 第二个错误(有趣的错误): 单元类别代码: 初始化代码: 问题答案: 第一个初始化程序的正确签名是: 请注

  • 我当前的提供商有: 0-提供程序名称:SUN 1-提供程序名称:SUNRSAGN 2-提供程序名称:SunEC ... 9-提供商名称:SunPKCS11 CartaoCidadao 第九个提供者是我尝试使用的提供者,它使用pkcs11库。 使用info方法我可以看到它正在使用库: SunPKCS11 CartaoCidadao使用library/usr/local/lib/libpteidpkc

  • 目前,我有一个测试类,它有多个方法,所有方法都使用相同的数据提供程序。每次testng循环使用不同的方法时,它都会重新计算数据提供程序方法。有没有办法让数据提供程序运行一次? 谢谢 杰森