Я пытаюсь подписать и проверить свои данные в режимах 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);