Итак, после еще нескольких копаний я обнаружил TLS API Bouncy Castle . Короче говоря, кажется, что это работает до сих пор, но я собираюсь перечислить шаги, которые я прошел, потому что я наткнулся на несколько препятствий на этом пути.
Вы можете скачать исходный код, а также архивы файлов классов с http://www.bouncycastle.org/latest_releases.html. В разделе «Источники и Javadoc» есть ссылки на J2ME.
Сначала я попытался добавить cldc_classes.zip в качестве внешнего JAR-файла к пути сборки. Завершение кода для кода надувного замка теперь работало в Eclipse. Итак, я запустил симулятор, но когда я попытался запустить приложение, он выдал «Ошибка запуска приложения: модуль 'cldc_classes.zip' not found». Я искал и обнаружил, что проблема в том, что мне нужно было поставить галочку на вкладке «Порядок и экспорт» в настройке Build Path. Oops!
Итак, я проверил его и попытался запустить снова, но получил сообщение «Ошибка: предварительный сбой не прошел» еще до запуска симулятора. Еще несколько поисков показали, что мне пришлось предварительно проверить zip-файл, чтобы он работал, и казалось, что это будет достаточно просто.
Использование инструмента preverify выдает множество ошибок и предупреждений, которые выглядят так, как будто они как-то связаны с созданием дубликатов классов в пакете java. В часто задаваемых вопросах о Bouncy Castle они упомянули что-то вроде этого и предложили запутать код.
Я нашел обфускатор java и после небольшого переигрывания смог запутать классы. Пытался провести предварительную проверку, и это снова не удалось ... Я не хотел больше узнавать о предварительной проверке, чем я, поэтому решил просто импортировать исходные файлы.
В одном из пакетов были ошибки, основанные на ArrayList, но, похоже, в этом нет необходимости, и я просто удалил его. При попытке его запустить произошла ошибка о «несоответствии дубликатов атрибутов:« имя-мидлета ». В одном из пакетов, который имел это, был файл .jad, который я удалил, чтобы избавиться от ошибки. Тестовые пакеты также могут быть удалены без последствий.
Пытаясь запустить сейчас, я получил "Ошибка ввода-вывода Eclipse: Невозможно запустить программу" jar ": Ошибка CreateProcess = 2". Некоторые поиски показали, что мне нужно добавить папку java jdk bin (что-то вроде C: \ Program Files \ Java \ jdk \ bin) в переменную среды PATH.
Наконец-то я смог запустить и успешно подключиться, отправить и получить данные. Вероятно, есть лучший / более простой способ использования банок надувных замков в проекте, и я могу заняться этим теперь, когда я знаю, что код действительно работает. Ниже приведен пример кода для подключения.
SocketConnection con = (SocketConnection)Connector.open("socket://url:443");
TlsProtocolHandler tph = new TlsProtocolHandler(con.openInputStream(), con.openOutputStream());
tph.connect(new AlwaysValidVerifier());
is = tph.getInputStream();
os = tph.getOutputStream();