GnuPG key signの作業をする(signing-party/caff)

先日JNUGの総会へ行ってきて、OpenPGPの鍵の本人確認をしてきました。その後にやるべき作業を、忘備録として記しておきます。 key signの作業を楽にするためのツールはいろいろありますが、今回はsigning-partyパッケージに含まれるcaffを使います。 Package: signing-party Version: 1.1.4-1 Maintainer: Thijs Kinkhorst <thijs@debian.org> Description-ja: 各種 OpenPGP 関連ツール signing-party はあらゆる種類の PGP/GnuPG 関連ツール集で、キーサイン、 キーリングの分析、キーサインパーティの準備用ツールを含んでいます。 . * caff: “CA – Fire and Forget” 鍵にサインしてメールを送信します * pgp-clean: 自己署名以外の全署名を鍵から削除します * pgp-fixkey: 鍵から破損したパケットを除去します * gpg-mailkeys: サイン済みの鍵をその所有者へ単純にメール送信します * gpg-key2ps: 指紋を短冊にした PostScript ファイルを生成します * gpgdir: 再帰的にディレクトリを暗号化するツールです * gpglist: あなたの UID にサインした人を表示します * gpgsigs: GnuPG 鍵の一覧に対してサイン済みの鍵に注釈を付けます… Continue reading GnuPG key signの作業をする(signing-party/caff)

Intel Celeron N2806のeMMC(RPMB)

ECS LivaというBay-Trail MベースのPCがあります。秋葉原の複数の店舗やAmazonで扱っています。2万円しない小型PCで、メモリ(2GB)とストレージ(eMMC 32GB)を搭載しているので、OSさえ用意すれば他には何もなくても使えるマシンです。 公式でUbuntu 14.04が動作すると書かれているのですが、やはりDebianを使いたいのでなんとかしてインストールしてみました。 しかし、wheezyのインストーラではストレージを認識できません。Linux kernel 3.8から入ったsdhc_acpiというホストドライバが必要なのですが、Debian wheezyの標準kernelは3.2と古いのが原因です。 結局、自分は一度Ubuntu Live USBイメージから起動して、debootstrapで頑張ってDebianをインストールするという手段で実現しました。Debianさえ入ってしまえば、backportsにある3.14 kernelがwheezyでも使えます。 最初はwheezy用のインストーラを作るべく頑張ってみたのですが、3.14 debian udebにsdhc-acpi.koが含まれていないというバグがあるため(kernel debにはある)、kernelパッケージを作り直す必要がありました。しかし作り直しても、eMMCデバイスは見えるけれどもアクセスすると固まるという問題があったため、挫折しました。 今のbackports kernelでは一応動いていますが、Replay Protected Memory Block(RPMB)と呼ばれる領域にアクセスできないという不具合があります。この警告はUbuntu kernelだと出ません。 [ 3.202626] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900 [ 3.205033] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900 [ 3.207399] mmcblk0rpmb: timed out sending r/w… Continue reading Intel Celeron N2806のeMMC(RPMB)

KAKASIのコードについて

ここしばらくKAKASIのソースをいじっています。いい加減あたらしいバージョンをリリースして、しばらくは他のことをやりたいのですが、次に戻ってきたときいろいろと忘れそうなので、記録として残しておこうと思います。 そもそもKAKASIとは何か オリジナルのKAKASIはたかはしもとのぶさんによって作成されたソフトウェアです。漢字、カタカナ、ひらがな、ローマ字を相互に変換する機能をもっています。SKKの辞書を用いて、 オリジナルのKAKASIに、単語を分割する「分かち書き」機能をパッチとして作成したのが、馬場さんです。馬場さんはこの機能を利用して、freeWAISやNamazuなどの全文検索ソフトウェアで日本語を扱えるようにしました。 自分もNamazuの開発にかかわる中で、パッチとしてKAKASIの機能をメンテナンスするのはしんどい、KAKASIのリリース自体長らく行われていない、といった理由で、Namazuの開発の一環としてKAKASIの開発を継承することをたかはしさんに打診し、受け入れられて今に至ります。 最近の作業 KAKASIのバージョンは長いこと2.3.4でリリースが止まっていました。2006年ごろ自分がリリースをしようとした痕跡があるのですが、その後Debian方面でlibtext-kakasi-perlのテストが通らなくなった等いろいろな要因で「これはリリースしないといけない」と思い、ようやく出せたのが2014/1/18です。このリリースで一番大きい変化はUTF-8のサポートです。といっても、iconvに依存しています。KAKASI本体がISO-2022-JP, EUC-JP, SJIS(cp932)の変換機能を持っているのですが、UTF-8対応のためにテーブルを持つのもどうかな、と思いiconvを使うようにして実装しました。 これでひとまず解決か、と思いきやperlモジュールでテストが通らない問題が直っていませんでした。何が起きていたかというと、分かち書きオプション-wを付加したときに、先頭に余計な空白を出力するために、期待されていた出力とは異なっていたのです。 このバグはDebianパッケージの自動ビルドで発覚しました。開発者がアップロードしたアーキテクチャ以外(mips, arm等)のパッケージは、自動的にビルドサーバーによってパッケージが作成されます。その時make testまで実行するので、ライブラリの変化によってバグが顕著化されました。 これを直すために作業を進めていたところ、さらに複数のバグが発覚し、それらの対応も必要になり、今に至ります。 KAKASIの基本データ構造Character kakasi.hで様々なデータ構造が定義されていますが、文字を格納する基本となる型Character(実体はstruct character)が入出力の基本となります。 typedef struct character { char type; unsigned char c1, c2; } Character; typeは文字の種別を表し、0~5, 127の値をとります。値の定義は同様にkakasi.hで行われています /* character set */ #define ASCII 0 #define JISROMAN 1 #define GRAPHIC 2 #define KATAKANA 3 #define JIS78 4 #define JIS83 5 #define OTHER… Continue reading KAKASIのコードについて