5

我正在尝试使用 Safenet HSM 上的脑池曲线生成 ECDSA 密钥。我在 Safenet HSM 上启用了用户定义的域参数,我们正面临异常

 java.security.InvalidAlgorithmParameterException: params must be either a subtype of java.security.spec.ECParameterSpec or of type ECGenParameterSpec!
    at iaik.security.ec.common.ECKeyPairGenerator.initialize(Unknown Source) ~[iaik_eccelerate.jar:5.0]

我正在使用以下代码

ECDSAPrivateKey obj_privateKeyTemplate = new ECDSAPrivateKey();
    ECDSAPublicKey obj_publicKeyTemplate = new ECDSAPublicKey();

    obj_privateKeyTemplate.getSign().setBooleanValue(Boolean.TRUE);
    obj_privateKeyTemplate.getToken().setBooleanValue(Boolean.FALSE); // temporary session key ?

    obj_publicKeyTemplate.getVerify().setBooleanValue(Boolean.TRUE);
    obj_publicKeyTemplate.getToken().setBooleanValue(Boolean.FALSE); // temporary session key  ?
    ObjectID eccCurveObjectID = new ObjectID("1.3.36.3.3.2.8.1.1.1");
    obj_publicKeyTemplate.getEcdsaParams().setByteArrayValue(DerCoder.encode(eccCurveObjectID));
    KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("ECDSA", "IAIK ECCelerate");
    AlgorithmParameterSpec keyPairGenerationSpec = (AlgorithmParameterSpec) new PKCS11KeyPairGenerationSpec(
            null, obj_publicKeyTemplate, obj_privateKeyTemplate).setUseUserRole(true)
            .setTokenManager(this.m_objTokenManager);
    keyPairGenerator.initialize(keyPairGenerationSpec, new SecureRandom());
    obj_keypair = keyPairGenerator.generateKeyPair();

请帮我解决这个问题。

4

0 回答 0