«NoSuchFieldError: qTESLA_I» с JcaContentSignerBuilder - PullRequest
1 голос
/ 01 ноября 2019

Самый простой пример:

import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder;

public class NoSuchFieldDemo {
  public static void main(String[] args) {
    JcaContentSignerBuilder builder = new JcaContentSignerBuilder("SHA384withECDSA");
  }
}

бросков:

Исключение в потоке "main" java.lang.NoSuchFieldError: qTESLA_I
в org.bouncycastle.operator. DefaultSignatureAlgorithmIdentifierFinder. (Неизвестный источник)
в org.bouncycastle.operator.jcajce.JcaContentSignerBuilder. (Неизвестный источник)
в NoSuchFieldDemo.main (NoSuchFieldDemo.java:5) * 101 *

1012 *

: Код, включая несколько «волшебную» строку
"SHA384withECDSA", взят из «API-интерфейса FIPS Java Bouncy Castle в 100 примерах» .

PS # 2: Это сохраняется после добавленияBouncyCastleFipsProvider в качестве наиболее предпочтительного поставщика безопасности:

// position is 1-based:
final int mostPreferredPosition = 1;
final int actualPosition = Security.insertProviderAt(new BouncyCastleFipsProvider(), mostPreferredPosition);

PS # 3: Я нахожусь на Ubuntu 18.04 с AdoptOpenJDK 11.0.3 + 7 на случай, если это важно

Я думаю, это наиболееочевидно, но что я делаю не так?

Обновление

У меня есть bcpkix-jdk15on на моем пути к классам, чтобы иметь JcaContentSignerBuilder. @ Джордж-Станчев предположил, что это может помешать ..?

1 Ответ

2 голосов
/ 01 ноября 2019

Убедитесь, что в вашем пути к классам нет банок не FIPS. Это может произойти, если вы используете не FIPS bcpkix и FIPS bcprov. Не FIPS bcpkix статически пытается добавить те алгоритмы qTESLA, которые определены в bcprov, но FIPS bcprov не имеет тех, которые определены, следовательно, исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...