何が問題かと言えば現状ではサポートしていないアルゴリズムはまったく扱えないということ。追加もできない。別にそれでいいじゃんと言えばそうなんだけど、せっかく抽象化しているのにサポートしてないものはべた書きでは面白くない。
ということで、APIを見ながら何がどうなればいいかということを考えてみることにする。
- cipher
- アルゴリズムをラップしたCipherオブジェクトを返す。現状では与えられたCipherタイプが定義済みの共通鍵方式かどうかを判別している。(まずはこれか)
- encrypt
- decrypt
- Cで書かれたsubr。中身はやっぱり共通鍵かどうか見てディスパッチしてる
- signature
- verify
- Cで書かれたsubr。共通鍵ならエラーは上げる。Schemeで書かれたsignerとverifierを呼び出している。
(しかし、結構でかいライブラリの割りに、口は少ないなぁ。いいことなのか?)
っで、どうしたいか。今回まずいなぁと思ったのは、PKCS#12のファイルを読み込む際にPBEが複号できないといけないのだが、(crypto)ライブラリではサポートされていない上にcipherを作ることも追加することもできない。 これはよろしくない。(元々はlibtomcryptの薄いラッパーのつもりだったし十分ではあったのだが)
とりあえず案としては、pimplみたいな感じで<cipher>と<cipher-spi>(名前はJCEから)クラスを作って、標準サポートに<builtin-cipher-spi>、ユーザーが追加したかったら<cipher-spi>を継承したクラスを作るという風にしたらいいだろうか。ちょっと考え方がJavaよりで、関数型ではないかもしれんが・・・
追記:
PBEはPKCS#5で定義されているものらしい。中身は(まだ)読んでないけど、 暗号のアルゴリズム自体ではなく、暗号器というか皮の定義なのか?最近RSAのサイトに繋がりにくい(ftpに繋がらん!)から調べにくい・・・
No comments:
Post a Comment