PuTTY→OpenSSH キーファイル変換

java.net上に、PuTTYのキーファイル(.ppk)をOpenSSHのフォーマットに変換するツールを公開しました。Hudsonが使っているtrilead ssh libraryではOpenSSHフォーマットしかサポートされていないのですが、PuTTYの鍵をアップロードして「使えないよ!」と困っているユーザーがいたのが動機です。


鍵の変換には幾つかの暗号計算が必要だったのですが、JDKにはこの手のアルゴリズムがディフォルトで入っていないので、実に使えません。U.S.の輸出規制関係の制限のはずですが、ソースコードもないから別途javadocを見ないと使い方もわからないという使えなさ。今の時代に暗号アルゴリズムの輸出規制なんて意味あると思ってるのかね。


しょうがないので、このツールはtrilead ssh libraryからbase64やAESの実装を借りています。あと、どちらの鍵フォーマットもASN.1を使っているというのが発見。ASN.1は以前FastInfoset関係でちょっとだけやったことがありますが、意外と使われているフォーマットのようです。知らんかった。