Поддержка алгоритма PS256 для подписей в Java - PullRequest
1 голос
/ 06 января 2020

Согласно Java 12 спецификациям безопасности здесь должна поддерживаться схема подписи RSASSA-PSS (фактически начиная с Java 11). Однако если я попытаюсь использовать сигнатуру с алгоритмом PS256 в моем JWT, например, с помощью библиотеки nimbus jose + jwt , то она не будет работать, если я не использую BouncyCastle.

        val signer = RSASSASigner(signKey)
        val jwsObject = JWSObject(
                JWSHeader.Builder(JWSAlgorithm.PS256)    // PS256 gives error;  RS256 will work
                        .keyID(signKeyId)
                        .build(),
                Payload(json)
        jwsObject.sign(signer)

Это выдает ошибку:

java.security.NoSuchAlgorithmException: SHA256withRSAandMGF1 Signature not available

И действительно JCASupport.isSupported(JWSAlgorithm.PS256) ложно

Если я включу BouncyCastle, то это сработает:

        Security.addProvider(BouncyCastleProviderSingleton.getInstance())
        JCASupport.isSupported(JWSAlgorithm.PS256) == true

Я бы подумал, что BouncyCastle больше не нужен в Java 12 (я на самом деле использую Kotlin 1.3 с Java 12 и Spring Boot 2.2 и com.nimbusds 8, если быть точным). Я хотел бы быть независимым от BouncyCastle.

Что мне не хватает?

...