2003-04-17 [長年日記]

openssl for CE (6)

サンプルプログラムを作って、暗号化がうまくいかない原因を調べてみたところ、乱数生成器がうまく初期化されていなかったからのようです。確かにcrypto/rand/rand_win.cを見るとCE周りのifdefが沢山入っています。試しにopensslコマンドを使っても以下のようにすれば暗号化できました。とりあえず、random.txtの中身は適当で。

openssl smime -encrypt -des3 -in test.txt -out \
  encrypt.txt -rand random.txt newcert.pem

またmultipart/signedでない署名の方は、原因は不明ですが、サンプルプログラムから呼び出せばうまく動作しました。というわけで、一通り問題なく動作したということで良いのかな?

2.1.x系でS/MIME

鍵や証明書の管理を手動でやるなら、少なくとも復号化と署名の検証に関しては、opensslコマンドをテンプレート中から@Executeで呼び出すという方法で出来る気がしますね。文字コード周りで問題が出るような気もしますけど(QMAIL側からエンコーディングを指定して読む方法が無いので)。