それで、さらに掘り下げた後、Bouncy Castle TLS API を見つけました。簡単に言えば、これまでのところうまくいっているようですが、途中でいくつかの障害に遭遇したため、実行した手順をリストします。
ソースとクラス ファイルの zip をhttp://www.bouncycastle.org/latest_releases.htmlからダウンロードできます。「ソースと Javadoc」セクションの下に、J2ME へのリンクがあります。
最初に、cldc_classes.zip を外部 JAR としてビルド パスに追加しようとしました。弾む城のコードのコード補完は、現在 Eclipse で機能していました。そのため、シミュレーターを起動しましたが、アプリを起動しようとすると、「アプリの起動中にエラーが発生しました: モジュール 'cldc_classes.zip' が見つかりません」というメッセージが表示されました。私は周りを検索し、ビルドパス設定の「注文とエクスポート」タブのボックスをチェックする必要があるという問題を発見しました。おっとっと!
そのため、チェックして再度実行しようとしましたが、シミュレーターが起動する前に「エラー: preverifier が失敗しました」というメッセージが表示されました。さらに検索すると、zipファイルを機能させるには事前検証が必要であることが明らかになりましたが、それは十分に簡単だと思われました。
preverify ツールを使用すると、Java パッケージ内のクラスの重複作成に関係があるように見える多くのエラーと警告が表示されました。Bouncy Castle の FAQ で、彼らはこのようなことを言及し、コードを難読化することを提案しました。
Java難読化ツールを見つけ、少しいじった後、クラスを難読化することができました。事前検証を試みましたが、再び失敗しました...事前検証について必要以上に学びたくなかったので、ソースファイルをインポートすることにしました。
パッケージの 1 つに ArrayList に依存するエラーがありましたが、必要ではないようでしたので削除しました。実行しようとすると、「重複する属性の不一致: 'MIDlet-name'」に関するエラーが発生しました。エラーを取り除くために削除したパッケージの 1 つに .jad ファイルがありました。また、テスト パッケージを削除しても影響はありませんでした。
今実行しようとすると、「Eclipse I/O エラー: プログラム "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();