スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--/--/-- | スポンサー広告  TOP

Windows7対応編 Windows7RCを手に入れましたので対応作業中です。GetVersionEx()でWindows7判定方法。

とりあえず、Windows7RCを仮想PC(VMWARE PLAYER)にインストールしました。

私のソフトとしては、
「XP風終了メニュー」
「ボタン工房」
「発売日ナビ」
のWindows7対応版を準備中です。

OSのバージョンチックで、Windows7はWindowsVistaのマイナーバージョン。
ってことでプログラムの修正をしています。

GetVersionEx()でWindowsのメジャーとマイナーバージョンを判定できます。

 // OSをチェックしてフラグを設定する。
 m_version = WINDOWS_98NT;
 static const char * const strPlatformId[] = {
        "VER_PLATFORM_WIN32s","VER_PLATFORM_WIN32_WINDOWS",
        "VER_PLATFORM_WIN32_NT",
    };
  OSVERSIONINFO osvi;
   
 // OSバージョン値を得る。
  osvi.dwOSVersionInfoSize = sizeof(osvi);
  GetVersionEx(&osvi);
  switch( osvi.dwMajorVersion ) { // メジャーバージョン


  case 6:
   // windowsVista以降
   switch (osvi.dwMinorVersion) { // マイナーバージョン
   case 0:
    m_version = WINDOWS_VISTA;
    break;
   case 1:
    m_version = WINDOWS_7;
    break;
   default:
    m_version = WINDOWS_NEXT;
    break;
   }
}


それぞれ動作が確認出来しだい順次配布予定です。



スポンサーサイト

2009/05/22 | プログラミングCOMMENT(0)TRACKBACK(0)  TOP

PHP4 「Product Advertising API」をPHP4から使う。その2。HMAC-SHA256自作編。

前回の"「Product Advertising API」をPHP4から使う。その一。HMACへの道。"の続編です。
http://softyasu.blog121.fc2.com/blog-entry-100.html

今回は自前でHMACを実装します。
HMACはRFC2104として公開されていますので、まずその情報をご覧下さい。
http://www.ipa.go.jp/security/rfc/RFC2104JA.html

で、要約すると次のような処理をします。
(1)秘密キーがハッシュのブロック長より大きければ、秘密キー自体をsha256ハッシュ化する。
(2)秘密キーがハッシュのブロック長より小さければ、0でパディングする。
(3)ipadkeyは、ハッシュのブロック長分の0x36と秘密キーのxorをとって作る。
(4)opadkeyは、ハッシュのブロック長分の0x5cと秘密キーのxorをとって作る。
(5)ipadkeyとメッセージ(ハッシュ化データ)を結合して、sha256ハッシュ化する。
(6)opadkeyと(5)の結果を結合して、sha256ハッシュ化する。
で(6)の結果がMACって事になります。

SHA256ハッシュは下記のものを使っています。
http://www.nanolink.ca/pub/sha256/

では、PHPで書いたHMACのクラスです。

<?php
#####################################################################
#   HMAC-SHA256専用クラス
#       Copyright (c)ソフト屋 巣
#####################################################################

//  sha256ライブラリ
require_once('sha256.inc.php');
   
//  参考:RFC2104 http://www.ipa.go.jp/security/rfc/RFC2104JA.html
class HMAC_SHA256 {

    var $ipadkey;   //innerパッドキー
    var $opadkey;   //outerパッドキー
    var $pack_form; //packフォーマット。ブロック長とフォーマット。
   
    //==================================================
    //  コンストラクタ
    //      $key HMACの鍵
    //==================================================
    function HMAC_SHA256($key)
    {
        $this->pack_form = "H64";   //SHA256専用。
        define("HASH_BLOCK_SIZE",64);    //ブロック長
       
        //  鍵のパディング。
        if(strlen($key) > HASH_BLOCK_SIZE) {
            $key = pack($this->pack_form,sha256($key));//大きい場合はハッシュ化。
        } elseif(strlen($key) < HASH_BLOCK_SIZE) {
            $key = str_pad($key,HASH_BLOCK_SIZE,chr(0));
        }
       
        //  inner/outerパッドキーの作成。
        $this->ipadkey = (substr($key,0,HASH_BLOCK_SIZE) ^ str_repeat(chr(0x36),HASH_BLOCK_SIZE));
        $this->opadkey = (substr($key,0,HASH_BLOCK_SIZE) ^ str_repeat(chr(0x5C),HASH_BLOCK_SIZE));
    }
   
    //==================================================
    //  HMAC関数
    //      $msg メッセージ
    //==================================================
    function hmac($msg)
    {
        //  innerハッシュ
        $hashin = sha256($this->ipadkey.$msg);
        //  innerハッシュにouterを合成してハッシュを求める。
        $hash = sha256($this->opadkey.pack($this->pack_form,$hashin));
        //  パックして持ち帰る。
        return pack($this->pack_form,$hash);
    }
}
?>


今回は、ここまで。
次回は実際にHMACを使うサンプルコードをお見せします。

つづく。

以上です。お役に立ちましたら拍手をお願いします

2009/05/19 | 未分類COMMENT(1)TRACKBACK(0)  TOP

PHP4 「Product Advertising API」をPHP4から使う。その一。HMACへの道。

PHP4から「Product Advertising API」を使う場合の問題点となるのは、電子認証で必要なハッシュ メッセージ認証コードのHMAC-SHA256が簡単に使えないことです。便利なhash_hmac()とかmhash()がデフォルトでは使えませんので、レンタルサーバでは代用策を考えないといけません。
仕方なく、自前で実装の道を探ってみました。

まず、SHA256ハッシュをPHPだけで作り出すフリーのライブラリを探してみます。
色々探して見つけたのがこれ↓
http://www.nanolink.ca/pub/sha256/
「public domain」との事ですし、実行速度的にも申し分ありません。

次はHMACを実装しないといけません。
HMACはRFC2104として公開されていますので、まずその情報を見てみます。
http://www.ipa.go.jp/security/rfc/RFC2104JA.html
なんとなく分かったような分からないような感じです。
wikiは簡単すぎて訳分かりません。
http://ja.wikipedia.org/wiki/HMAC

って事で次回はHMACの実装に挑戦します。 つづく。

便利サイトのご紹介。
http://www.insidepro.com/hashes.php?lang=eng
ここのサイトで、Password:にデータ、HMAC-key::暗号キーを入れると色々なハッシュやHMACを一発表示できます。
ご活用ください。私は検証にとても役立ちました。

以上です。お役に立ちましたら拍手をお願いします。

2009/05/18 | 未分類COMMENT(0)TRACKBACK(0)  TOP

けろへいマンガ番外編 ちなみに私はCOBOLの宣言文が大嫌いでした。

20090514.png

2009/05/14 | 未分類COMMENT(0)TRACKBACK(0)  TOP

アマゾン 「Amazon アソシエイト Web サービス」が「Product Advertising API」に変更。

「Amazon アソシエイト Web サービス」略称AWSの事ですね。
ようするにアマゾン WEB APIの事で検索ワードで問い合わせると情報がXMLで返される仕組みです。
今までもECS4やら色々な呼び方の変更がされてきました。
ただ、Amazonのクラウドサービスの名称がEC2だったり混乱を招いていたのも確かです。
今回、名称変更が通知されました。
http://affiliate-blog.amazon.co.jp/

で、名前が変わるだけなら良いですが、「認証のための電子署名」が必要となりますってことで対応が必要になります。
2009年8月16日までに対応が必要なので、残りの期間は3ヶ月となります。
PHPとかライブラリの対応は間に合うんだろうか?

ってことでしばらくは対応作業を報告していくことになるかと思います。
報告はC++(発売日ナビ)とPHP4(漫画家・小説家データベース)をそれぞれ報告予定。

とりあえず今回は電子署名のための秘密キーの取得方法ついて。
アカウントサービスに行ってください。
https://affiliate.amazon.co.jp/gp/advertising/api/detail/main.html
のページの真ん中辺りにある「リソース」の「アカウント設定」をクリックします。
ユーザーIDとパスワードは、AWSのものを使います。
そうすると「アクセスキー情報」のリンクありますので、そちらで秘密キーが入手できます。
今回はここまで、また進展しましたら報告したいと思います。

「Product Advertising API」については下記サイトに情報があります(大半は英語です)。https://affiliate.amazon.co.jp/gp/advertising/api/detail/main.html

以上です。お役に立ちましたら拍手をお願いします。

2009/05/10 | 開発状況COMMENT(0)TRACKBACK(0)  TOP

 | BLOG TOP | 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。