Как сгенерировать ключи ECDSA с кривой мозга в Saf eNet HSM на основе PKCS11? - PullRequest
4 голосов
/ 19 июня 2020

Я пытаюсь сгенерировать ключи ECDSA, используя кривую мозгового пула в Saf enet HSM. Я включил пользовательские параметры домена в Saf enet 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();

Пожалуйста, помогите мне исправить эту проблему .

...