2009/07/31 のメモ

『メガネのそばにいると嬉しいという男性が、ミルウォーキー郊外の店から4万5000ドル (およそ430万円) 以上に相当する大量のメガネを盗んだとして罪を問われている。』
罪を憎んでフェチを憎まず。でも犯罪はよくない

しまった職場でこの話題するの忘れた><

今回のIEの脆弱性の原因は値渡しにするべきところを参照渡しにしていたために起こったという話。こういうバグ見つけるの大変っすよねと思いました

CentOSの作成者Lance Davis氏がどっか行っちゃってCentOSのドメインも開発資金も大ピンチな巻。こんなことってあるのなー

SQLLiteとdisableIPv6は家のPCで試す。MetaboFixはあやういっぽいので入れない

Powered by Livedoor Clip
カテゴリー: Memo

2009/07/29 のメモ

その筋では有名らしい淡路の観音像施設がヤバいという話。
バカ建築の末路というか何というか

Powered by Livedoor Clip
カテゴリー: Memo

2009/07/27 のメモ

Ubuntuの次期バージョンには、クラウド環境のプラットフォーム Eucalyptus が標準で導入される、という解釈でいいのかな。面白そうです

Powered by Livedoor Clip
カテゴリー: Memo

Digest::SHAがインストールされていないレンタルサーバでSHA256を使用する奇妙な方法

 Amazon Web Service のAPI呼び出しの仕様変更は8/15までに行わないといけないことを知り、今頃になって仕方なく自作のアプリケーションに対して修正を始めました。
 それでAPIを呼び出すためには「SHA256アルゴリズムでクエリ文字列のハッシュをHMAC方式で計算し、base64に変換する」する必要があり、SHA256変換を行うためには perlでは Digest::SHA モジュールを使う必要があるとのことですが、自分が使っているレンタルサーバではインストールされていませんでした。なのでこの手は使えません。

 PHPであれば、標準でHMAC方式で計算を行える hash_hmac 関数が(5.1.2以降では)用意されていて、

	$data = hash_hmac("sha256", $query, $secretkey, true);
	$signature = base64_encode($data);

 と2行だけで処理できてしまいます。さすがPHPは何でもアリだよなあと感心していたのですが、ここで何故か「SHA256でハッシュを計算するところだけPHPで処理させればいいんじゃね?」という電波を受信してしまったのが運の尽き(何故か)。
 引数にクエリ文字列と秘密鍵を受け取り、上記の処理を行うだけのPHPプログラムをサーバ上に用意し、perlではそのプログラムをLWP::UserAgentで呼び出して結果を取得するという方法でやってみることにしました。

PHP – hmac.php


perl

use LWP::UserAgent;
use HTTP::Request::Common qw(POST);

sub hmac_sha256_base64
{
	my ($q, $secretkey) = @_;
	my %formdata = ('q' => $q, 's' => $secretkey);
	my $request  = POST('http://hmac.phpを置いたサーバ/hmac.php', [%formdata]);
    my $ua = LWP::UserAgent->new();
	my $res = $ua->request($request);
	return $res->content;
}

# $qに変換したいクエリ文字列、$secretkeyにあなたの秘密鍵を設定
my $signature = hmac_sha256_base64($q, $secretkey);

 なお、Digest::SHAがインストールされていないサーバでは、こちらで紹介されているように全てperlで書かれたDigest::SHA::PurePerlをサーバにアップロードして use lib でパスを通して使うのが正解の模様です(手遅れ)。