Верификация в Java без токена

Какие есть способы верификации подписи SHAwithRSA (подписанной токеном ЭЦП), без использования самого токена и не применяя MSCApi?
Пробовал след-ие варианты:
1. SunMSCAPI - работает, подпись проходит верификацию, но этот вар-нт не годится, ибо мне нужна работа под unix'ами;
2. BouncyCastle - подпись проверку не проходит;
3. SunPKCS11 + rtPKCS11/rtPKCS11ECP - вообще чудеса: на запрос любого алгоритма отвечает NoSuchAlgorithmException.
Provider.getServices() возвращает пустой список, то есть получающийся провайдер вообще не понимает никакие алгоритмы;
3. JRT11Provider - не поддерживает SHAwithRSA

Пример того, что я пытаюсь делать с SunPKCS11:

String pkcs11config = "name = ruToken\n"
         + "library = c:\\windows\\system32\\rtPKCS11ECP.dll";
ByteArrayInputStream configStream = new ByteArrayInputStream(pkcs11config.getBytes());
Provider provider = new SunPKCS11(configStream);
Signature signature = Signature.getInstance("SHA1withRSA", provider);  // NoSuchAlgorithmException, WTF?

Что я делаю не так? Буду очень признателен за любую помощь.

Re: Верификация в Java без токена

rtPKCS11/rtPKCS11ecp не поддерживают алгоритм SHAwithRSA
поддерживаются лишь SHA1 и RSA по отдельности

В BouncyCastle у вас не проходит проверку возможно потому что может использоваться разный вид паддинга (PKCS1.5 или OAEP)