AUTH CRAM-MD5 認証で失敗するケースがあると書いたが、成功したり、失敗したり、かなり動作が不安定だ。 諦めてトレースすることにした。
AuthHelper.cs の Cram_Md5() 関数から戻ってくる文字列が問題になっているようだ。 関数のソースを見てみても、問題がありそうには見えない...その部分を切り出してテストしてみる。
なぜか、HMAC-MD5 ハッシュの戻り値を一旦 string に変換して、再度 byte[] に戻している。 その過程で...Encoding.Default.GetString() と Encoding.Default.GetBytes() を繰り返すうちに値が怪しくなるようだ。 それならそれで問題が起きないように書き換えれば良いだろうということで、AUTH CRAM-MD5 問題は解決なのかもしれない。