比例道
| フロントページ | 新着 | 一覧 |
<-domain ijino tamedesu

diary/20080822

Dojaへbouncycastleを移植完了

Dojaへの暗号ライブラリboucycastleの移植が終わった.Dojaは意外と速くてRSA秘密/公開鍵の署名をするのに2秒かからなかった.これなら署名用のファームウェアを用意する必要はない.DojaのJAVA処理系で十分処理できる.
結構苦労した(3日かかった)ので,今後移植する人のために覚え書きを記しておく.

  • linuxの環境にorg以下のjavaソースファイルを置く.
  • orgディレクトリが存在するディレクトリにてRSATest.java(orgの下の方へ掘っていけば見つかる)を参考に,適当な名前(MySignatureとか)のクラスファイルを作り,そのmainメソッドの中に署名を行うプログラムを書く.
  • javac MySignature.javaでコンパイルする.文法ミスがなければコンパイルが通るはずである.
  • java MySignatureで実行する.署名が行われる.
  • とここまでが下準備である.orgディレクトリを下っていくと.classファイルができているはずだ.これに対応する.javaファイルだけが署名に必要なファイルだ.
  • Dojaの開発環境のsrcディレクトリ内にorgディレクトリをコピーする.このとき上記で調べた署名に必要なファイルだけをコピーする.間違えて.javaファイルを全部コピーするとDojaの処理系でコンパイルできなくなる.
  • Dojaの開発環境のsrcディレクトリ内にMySignature.javaをコピーする.そしてiアプリで動かすために外側のクラスをiapplicationやpanel等からの継承に変えてiアプリプログラムとしての体裁を整える.
  • このままコンパイルするとBigIntegerクラスがないとエラーを吐く.そこで,これからそのBigIntegerクラスをDojaへ移植する.
  • bouncycastleのソース置き場にcripto-140という一番大きなソースファイルがあるので拾ってくる.その中にJ2MEというディレクトリがあり,それを下っていくとjava/math/BigInteger.javaが見つかるので,javaディレクトリ以下を全部Dojaのsrcディレクトリにコピーする.
  • ディレクトリ名がjavaだとパッケージ名が本物のjavaとかぶるので,mv java fakeなどとしてディレクトリ名を変えておく.
  • import文でjava.math.BigIntegerを必要としているファイルがorgディレクトリの配下に5個あるので,fake.math.BigIntegerに変えておく.
  • fake/math/BigInteger.javaファイル内のpakage名をjava.mathからfake.mathに変えておく.
  • ここまでやってコンパイルするとBigIntegerのエラーは消えるが,privilege(アクセスコントロール)のメソッドがないと言うエラーが2個生じる.アクセスコントロールなど不要なので,関連パッケージをimportしている文をコメントアウトし,アクセスコントロールメソッドを呼び出しているメソッドが一つあるので,中身を全部コメントアウトしてreturn false;だけを実行するように書き換える.
  • あと,fake/math/以下で使ってない.javaファイルをコンパイルしようとしてエラーを吐くのでfake以下のmath以外のディレクトリは削除しておく.
  • これでコンパイルするとエラーが出なくなり,実行できる.実行時にはスタックサイズを大きめにとらないと,BigIntegerは結構大きめのヒープを必要とするので注意する.
  • Dojaの開発環境で動くプログラムは実機でももちろん動く.驚いたのは最近の実機(905i以降)はJAVA VMの速度が速く,開発環境での実行よりも5倍位速く動く.505iの頃とは雲泥の差である.