Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline migesok  
#1 Оставлено : 18 января 2013 г. 11:46:50(UTC)
migesok

Статус: Новичок

Группы: Участники
Зарегистрирован: 10.01.2013(UTC)
Сообщений: 2
Российская Федерация
Откуда: Новосибирск

Пытаюсь подружить автоматическую обработку WS-SecurityPolicy у Apache CXF и ГОСТовские алгоритмы.
Клиентская часть (собственно сама подпись) завелась с помощью самописного расширения. А вот с серверной (проверка подписи) - проблема.
В WSS4J условие на длину публичного ключа проверяется таким нехитрым кодом:
Код:

    /**
     * Check the asymmetric key length
     */
    public void checkAsymmetricKeyLength(
        PublicKey publicKey
    ) throws WSSecurityException {
        if (publicKey == null) {
            return;
        }
        if (publicKey instanceof RSAPublicKey) {
            int modulus = ((RSAPublicKey)publicKey).getModulus().bitLength();
            if (modulus < algorithmSuite.getMinimumAsymmetricKeyLength()
                || modulus > algorithmSuite.getMaximumAsymmetricKeyLength()) {
                LOG.debug(
                    "The asymmetric key length does not match the requirement"
                );
                throw new WSSecurityException(WSSecurityException.INVALID_SECURITY);
            }
        } else if (publicKey instanceof DSAPublicKey) {
            int length = ((DSAPublicKey)publicKey).getParams().getP().bitLength();
            if (length < algorithmSuite.getMinimumAsymmetricKeyLength()
                || length > algorithmSuite.getMaximumAsymmetricKeyLength()) {
                LOG.debug(
                    "The asymmetric key length does not match the requirement"
                );
                throw new WSSecurityException(WSSecurityException.INVALID_SECURITY);
            }
        } else {
            LOG.debug(
                "An unknown public key was provided"
            );
            throw new WSSecurityException(WSSecurityException.INVALID_SECURITY);
        }
    }

Как несложно понять, отсутствие общего API для получения длины публичного ключа товарищи заменяют перебором известных подклассов PublicKey. И конечно же ru.CryptoPro.JCP.Key.GostPublicKey в этом празднике жизни не учавствует.
Есть желание попатчить исходники WSS4J, но не понятно, как на самом деле получить эту злосчастную длину.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (3)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.