Ruby はてなブックマーク Atom API WSSE認証
はてなブックマークAtomAPI/はてなフォトライフAtomAPI で使用するWSSE認証のHTTP X-WSSEヘッダを作成するRubyスクリプト
$KCODE = 'u' require 'time' require 'digest/sha1' def hatena_wsse_header(hatena_id, password) # Nonce : HTTPリクエスト毎に生成したセキュリティ・トークン # ランダムなバイト列 http://sheepman.parfait.ne.jp/20050104.html nonce = Array.new(10){ rand(0x100000000) }.pack('I*') nonce_base64 = [nonce].pack("m").chomp # Base64エンコード # Created : Nonceが作成された日時をISO-8601表記で記述したもの now = Time.now.utc.iso8601 # PasswordDigest : Nonce, Created, パスワードを文字列連結しSHA1アルゴリズムでダイジェスト化して生成された文字列を、Base64エンコードした文字列 digest = [Digest::SHA1.digest(nonce + now + password)].pack("m").chomp credentials = sprintf(%Q<UsernameToken Username="%s", PasswordDigest="%s", Nonce="%s", Created="%s">, hatena_id, digest, nonce_base64, now) { 'X-WSSE' => credentials } end