|
>>3882 ニッタン > HTTPSに接続後のサーバ証明書のsubjectとissuerを出力する部分で、 > メモリーリークが発生する様です。 ありがとうございます。 The functions X509_NAME_oneline() and X509_NAME_print() are legacy functions ということなので、X509_NAME_oneline() を使うのはやめて、 X509_NAME_print_ex() に変更しました。XN_FLAG_RFC2253 に したのは特に意味はありません。 # http://x68000.q-e-d.net/~68user/net/ssl-2.html |
|
ごもっとなご意見です。いろいろ推測させてしまったようです。 すみませんでした。 68userさんの推測とおり、 ・SSL対応のWebクライアントを作っています。 ・(Open)SSLの実装では特定の暗号化ロジックを使わないようしたい。 公開鍵の暗号化としてRSAを使いたいが有効鍵ビットは512としたい 共有鍵の暗号化としてRC4を使いたいが有効鍵ビットは40としたい これまでに以下の情報をご提供いただきました。 1.使用したい暗号化ロジックは SSL_CTX_set_cipher_list()で指定 2.暗号化方式として特定のロジックを使用禁止にしたいのであれば コンパイルオプションを設定すればよい について、有効鍵ビットを意識した設定は可能なのでしょか いろんなサンプルを見ましたが、方式の設定はあっても鍵長まで意識 したものが見つかりませんでした。 また、SSL_CTX_set_cipher_list()での設定は必須になるのでしょうか。 なかなかイメージがわきません。よろしくお願いします。 |
|
>>3884 jeiu > 公開鍵の暗号化としてRSAを使いたいが有効鍵ビットは512としたい > 共有鍵の暗号化としてRC4を使いたいが有効鍵ビットは40としたい では http://www21.ocn.ne.jp/~k-west/SSLandTLS/rfc2246-Ja.txt の RSA_EXPORT_WITH_RC4_40_MD5 で決まりでしょう。RSA かつ RC4 の 40bit となればこれしか選択肢がありません。 「RSA の鍵長 512bit 以下」という要件についてですが、これは 上記 RFC の 7.4.3. ServerKeyExchangeメッセージ ServerKeyExchangeメッセージは (略) 以下の鍵交換方式で使用される。 RSA_EXPORT (サーバ証明書の公開鍵が512ビットより長いとき) (略) 注: 現在の米国輸出法では、米国から輸出したソフトウェアにおいては、512 ビットより長いRSAのモジュラスを鍵交換において使用してはならない ことになっている。このメッセージを送信した場合、証明書内に含まれ ている512ビットより長いRSA鍵は、RSA_EXPORT鍵交換方式用の、512ビット 以下の長さを持つ一時的RSA鍵に署名するのに使用される。 で自然とクリアできます。 結局、ciphers(1) に SSL_RSA_EXPORT_WITH_RC4_40_MD5 EXP-RC4-MD5 とあるので SSL_connect() の前に if ( SSL_CTX_set_cipher_list(ctx, "EXP-RC4-MD5") == 0 ){ /* error */ } という処理を入れればよいでしょう。 |
|
68userさんのサイトで勉強させてもらってます。 http://x68000.q-e-d.net/~68user/net/rfc.html こちらのページの、POPの「日本語訳」のところがリンクが失敗してる ようですので、お知らせしておきます。 |
|
>>3886 kawa > http://x68000.q-e-d.net/~68user/net/rfc.html > こちらのページの、POPの「日本語訳」のところがリンクが失敗してる > ようですので、お知らせしておきます。 修正しました。ご連絡ありがとうございました。 |
|
自前parseルーチンで以下の様な処理をしています。 foreach(split(/&/, $query)){ my($name, $value) = split(/=/, $_); 〜日本語処理とかお約束の処理〜 # %FORMに格納 if(exist $FORM{$name}){;#既に以前の$nameが有れば(2回目以降) push($FORM{$name}, $value);#@{$FORM{$name}}の配列に格納 }else{ $FORM{$name} = $value;#初めての出現ならば通常通りに格納 } } 細かい部分は省略してますが、例えば checkbox などで、 chbox1&val1&chbox1&val2&chbox1&val3 の様なデータが来た場合、 $ALL_VALUE = $FORM{chbox} . " @{$FORM{chbox}}"; として、 $ALL_VALUE = 'val1 val2 val3' となる事を確認しています。 しかしなぜか、元のデータが複数の時の動作が理解できないのですが、 自分の理解が甘いような気もするので、ぜひとも動作の解説をしもらえない でしょうか? 以下は確認用のサンプルです。2行目のコメントを外して違いを確認ください。 データの内容によって結果が違います。 変数の内容が判りやすいように print 文を入れています。 $query=qq(cbox1=1&cbox1=2&cbox1=3&cbox2=1&cbox2=2&cbox2=3); #$query=qq(cbox1=1&cbox1=2&cbox1=3&cbox2=a&cbox2=b&cbox2=c); foreach(split(/&/, $query)){ my($name, $value) = split(/=/, $_); print qq($name=[$value]\n); if(exists $FORM{$name}){ push(@{$FORM{$name}}, $value); print qq( ->push:<$name>=[$value] count:). $#{$FORM{$name}} . qq(\n); }else{ $FORM{$name} = $value; } } print qq(Result1:[$FORM{'cbox1'} @{$FORM{'cbox1'}}]\n); print qq(Result2:[$FORM{'cbox2'} @{$FORM{'cbox2'}}]\n); 無名配列が $value の内容によって識別できていないように見えます。 Windows版とLinux版のそれぞれ 5.6.1 で確認しました。 |