PHP HTTPクライアントでWSSE認証


$created = date('Y-m-d\TH:i:s\Z');
$nonce = pack('H*', sha1(md5(time())));
$pass_digest = base64_encode(pack('H*', sha1($nonce.$created.$pass)));
$wsse =
'UsernameToken Username="'.$user.'", '.
'PasswordDigest="'.$pass_digest.'", '.
'Nonce="'.base64_encode($nonce).'",'.
'Created="'.$created.'"';

$rawdata =
'<xml version="1.0" encoding="UTF-8"?>'.
'<hoge>hogehoge</hoge>';

$req = new HTTP_Request();
$req->setURL($url);
$req->addHeader('Accept','application/x.atom+xml, application/xml, text/xml, */*');
$req->addHeader('WWW-Authenticate','WSSE profile="UsernameToken"');
$req->addHeader('X-WSSE',$wsse );
$req->addHeader('Content-Type', 'application/x.atom+xml');
$req->addHeader('Cache-Control', 'no-cache');
$req->setMethod(HTTP_REQUEST_METHOD_POST);
$req->addRawPostData($rawdata);

$res = $req->sendRequest();
if (PEAR::isError($res)) {
...
}