現状では秘密鍵の生成は以下のようにして鍵オブジェクトを作ってやる必要がある。
(import (crypto)) (generate-secret-key DES3 #vu8(...)) ;; must be 24 byte bytevector
generate-secret-key
は総称メソッドなので、DES3
がわたってきた際に特異なものを作ってやればいいという話になる。本来ならという注釈がつくのがポイント。ドキュメントにちょろっと書いてあるのだが、この鍵アルゴリズムの名前は専用のクラスを作って唯一のオブジェクトを登録するのが望ましい、と書いてあるだけだったりする。つまり、なんでもいいのである。 (今思ったのだが、なんでオブジェクトを作る必要があるんだ?クラスだけでもいいんじゃね?) っで、その裏ルールに則って組み込みの秘密鍵なアルゴリズムは文字列が登録されていたりする。(これはバックエンドで使っているLibTomCryptoが文字列でディスクリプタを登録しているため)
そんなときのためにeql-specializerがあるんじゃないかとも思ったのだが、こいつは組み込みではサポートしていないので総称メソッドの定義時にメタクラスとして指定してやる必要があってうまくいかない。
解決方法はとりあえず思いつく中でスマートなものは以下の2つ。
- RSAと同様に秘密鍵のアルゴリズムも文字列じゃない何かにする
- eql-specializerを組み込みでサポートする
2.はどこと無くadhocな感じはするが、eql-specializerが組み込みに出来るチャンスともいう。
さて、どっちにしようかな・・・
No comments:
Post a Comment