Как заставить JSCh/JCE работать с Java 1.4?

Согласно http://www.jcraft.com/jsch/, JSch is in pure Java, but it depends on Java Cryptography Extension (JCE). JSch has been known to work with J2SE 1.4.0 or later (no additional libraries required).

Прежде чем кто-либо предложит мне обновить (что действительно облегчит мою жизнь), это не вариант: я должен заставить это работать под Java 1.4.2.

Итак, я скачал исходный код JSch 0.1.54 (и исходный код JZLib 1.1.3) и исправил несколько мелких проблем здесь и там. Остальным камнем преткновения является JCE. Без него следующие классы (найдены под java.security.interfaces начиная с Java 1.5) отсутствуют:

Error:(40, 3) java: cannot find symbol
  symbol:   class ECFieldFp
  symbol:   class ECGenParameterSpec
  symbol:   class ECParameterSpec
  symbol:   class ECPoint
  symbol:   class ECPrivateKey
  symbol:   class ECPrivateKeySpec
  symbol:   class ECPublicKey
  symbol:   class ECPublicKeySpec
  symbol:   class EllipticCurve

Где находится источник JCE или банка, который удовлетворит эту потребность? Страница Bouncy Castle ( https://www.bouncycastle.org/latest_releases.html), кажется, является частью решения, но есть изумительный выбор загрузок для Java 1.4. Я старался lcrypto-jdk14-157 но это неполно по сравнению с приведенным выше списком: он поставляет только ECPoint а также ECPrivateKey,

1 ответ

Согласно журналу изменений, поддержка была добавлена ​​начиная с версии 0.1.52. Эти классы используются в com/jcraft/jsch/jce/KeyPairGenECDSA.java, KeyPairECDSA.java, ECDH.hava, SignatureECDSA.java и другие новые файлы для поддержки ECDSA ключ.

Если вам не нужно подключать только поддерживаемый сервер ECDSA ключ. Решением является загрузка исходного кода с sourceforge.net, сборка файла JAR с использованием JDK 1.4.2. Есть одна совместимая проблема:

jsch-0.1.51/src/main/java/com/jcraft/jsch/Util.java:490: replace(char,char) in java.
lang.String cannot be applied to (java.lang.String,java.lang.String)
    str = str.replace("~", System.getProperty("user.home"));

Все, что вам нужно, это исправить эту ошибку.

Другие вопросы по тегам