3

nss を pkcs11 のプロバイダーとして使用したいのですが、Java、Oracle JRE、および ubuntu 64 ビットでコーディングしています。iaik と SunPKCS11 の 2 つの異なるラッパーを試しましたが、両方で同じ問題が発生しました。私のプロバイダーでは、最初に libnss3.so を使用しようとしましたが、インスタンス化モジュールで IOException を取得するたびに。次に、libsoftokn3.so を使用して、モジュールのインスタンス化に成功しました。しかし今、私は初期化時にこの例外に直面しています: "CKR_ARGUMENTS_BAD"

これが私のコードです。最初はiaikを使用し、2番目はSunPKCS11を使用しています

イアアク:

        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
4

1 に答える 1

2

ライブラリを指定する代わりに、このようにディレクトリを指定できます。

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);
于 2013-12-04T18:48:43.360 に答える