Войти Подтвердить проблему провайдером в JCA - PullRequest
0 голосов
/ 07 октября 2019

Я пытаюсь подписать и проверить свои данные в режимах SHA256 с RSA, MD2 с RSA, SHA1 с RSA, SHA512 с RSA. Мой провайдер поддерживает их все, но для моего кода работает только режим MD2. Другие не работают и не проверяют. В чем проблема? Я думаю, что мне не хватает некоторых теоретических вещей.

        KeyStore ks = KeyStore.getInstance("PKCS11", provider);
        ks.load(null, null);

        PrivateKey privateKey = (PrivateKey) ks.getKey("RSA-1024", null);
        Signature dsa = Signature.getInstance("MD2withRSA", provider);
        dsa.initSign(privateKey);
        dsa.update("abcde".getBytes());
        byte[] sign = dsa.sign();
        System.out.println(Utility.byteArrayToHex(sign));
        Certificate certificate = ks.getCertificate("newRSA-1024");
        RSAPublicKey publicKey = (RSAPublicKey) certificate.getPublicKey();

        dsa.initVerify(publicKey);
        dsa.update("abcde".getBytes());
        boolean verifies = dsa.verify(sign);
        System.out.println("veryfied: " + verifies);
...