2007年10月6日星期六

一个创建X509证书的工具

免费,开源,方便易用
XCA :http://sourceforge.net/projects/xca/
不过,windows版本的XCA,默认的算法为sha256,windows不支持,所以将其改成其他windows支持的算法就可以乐

2007年10月5日星期五

C# Active Control で証明書を使って署名

目標

  • C# ActiveX Controlで証明書を使って署名する技術の紹介

開発環境

  • Microsoft Visual C# 2005 Express Edition

ポイント

ローカルマシンンから証明書を取得

  • Current Userの証明書集合を取得します(ICカードにある証明書も含まれています):
               X509Certificate2Collection cerCollection = null;
    //Get The Certificates of Current User
    X509Store store = new X509Store(StoreLocation.CurrentUser);
    store.Open(OpenFlags.ReadOnly);
    if (store.Certificates != null && store.Certificates.Count > 0)
    {
    cerCollection = (X509Certificate2Collection)store.Certificates;
    }
  • 証明書をcerCollectionから取得して処理します。
               if (cerCollection != null && cerCollection .Count > 0)
    {
    foreach (X509Certificate2 cer in cerCollection )
    {
    //証明書に対する処理
    Console.WriteLine(cer.Subject);
    }
    }

証明書を使って署名

       public byte[] sign(byte[] data, X509Certificate2 cert)
{
RSACryptoServiceProvider csp = (RSACryptoServiceProvider)cert.PrivateKey;
byte[] byteEncrypt = csp.SignData(data, "SHA1");
return byteEncrypt;
}

署名のCOM Componentの作成

  • タイプ「X509Certificate2」がJavascriptと直接に通信できないので、その代わりに、証明書のインデックスを使います
       [ClassInterface(ClassInterfaceType.AutoDual)]
    public class SignService
    {
    //data : 署名するデータ
    //index : 署名用の証明書が証明書集合にのインデックス
    //return : Base64でエンコードされた署名
    public String sign(String data, int index){
    X509Store store = new X509Store(StoreLocation.CurrentUser);
    store.Open(OpenFlags.ReadOnly);
    X509Certificate2Collection certCollection = (X509Certificate2Collection)store.Certificates;
    X509Certificate2 cert = certCollection[index];
    RSACryptoServiceProvider csp = (RSACryptoServiceProvider)cert.PrivateKey;
    byte[] sig = csp.SignData(data, "SHA1");
    String result = System.Convert.ToBase64String(sig);
    }
    }

参考資料

2007年10月4日星期四

C#でWindows Controlの作成

目標

  • C#でActiveX Control開発過程の紹介
  • シンプルActiveX Controlの作成

開発環境

  • Microsoft Visual C# 2005 Express Edition

ステップ

クラス ライブラリプロジェクトを新規

  • Microsoft Visual C# 2005 Expression Editionの開発環境でクラス ライブラリプロジェクトを新規します。

    本文には、このプロジェクトの名前は「Greeting」とします。

AssemblyInfo?.csを修正

  • C#で開発したタイプは、COMに使うことができるため、「ComVisible?」の値を「true」にしなければなりません。

    開発環境の右のソリューションエクスプローラに、「/Greeting/Properties/AssemblyInfo?.cs」を下記のように編集します:

    [assembly: ComVisible?(false)] → [assembly: ComVisible?(true)]

Simple Controlの作成

  • HelloWorld?」のクラスを作成します:
    using System;
    using System.Collections.Generic;
    using System.Runtime.InteropServices;
    using System.Text;
    namespace Greeting
    {
    [ClassInterface(ClassInterfaceType.AutoDual)]
    public class HelloWorld
    {
    public String sayHello()
    {
    return "Hello World!";
    }
    }
    }

テストページの作成

  • プロジェクトをビルドして、「Greeting.dll」が生成されます。このGreeting.dllを利用して、簡単なテストページ(test.html)を作られます:







テストと実行

  • test.htmlとGreeting.dllをWEBサーバにDeployします

IISにDeploy

  1. test.htmlとGreeting.dllをIISのルート配下(デフォルトは「C:\Inetpub\wwwroot」)にコピーします。
  2. IEで[http://localhost/test.html]にアクセスします。

    「Hello World」のダイアログを表示すると、おめでとう [smile]

TomcatにDeploy

  1. test.htmlとGreeting.dllを Tomcatの「web_app」の配下にコピーします。
  2. Tomcatのルートweb.xml(デフォルトは「%TOMCAT_HOME%/conf/web.xml」)を編集し、下記の内容を追加します:
       
    dll
    application/x-msdownload

    追加しないと、dllファイルをdownloadできません。追加した後、Tomcatを再起動します。

  3. IEで「http://localhost:8080/web_app/test.html」にアクセスします。

    「Hello World」のダイアログを表示すると、おめでとう [smile]

参照資料

JSON与COM交互

利用JSON可以很方便得把string转化成Javascript 对象
COM 与 Javascript交互时,非常有用

1. JSON例

Javascript中,直接用JSON格式的文本来定义对象:
var myJSONObject = {"bindings": [
        {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
{"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
{"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
]
};

然后,可通过以下方式来访问:
myJSONObject.bindings[0].method

2.COM组件返回JSON格式的文本,用以下方式将其转化成Javascript对象:
var myObject = eval('(' + myJSONtext + ')');

3.将复杂数据类型的对象转化成JSON格式的文本的工具

COM组件需要返回复杂的数据类型(如数组)的对象时,可先将其转化成JSON格式后,再传给JavaScript处理!
将复杂数据类型转化成JSON格式的工具或者类库有:

C#:
Java: C++:

4.参考资料

http://blog.csdn.net/dyc13/archive/2007/04/10/1558963.aspx

http://www.json.org/js.html

http://www.json.org/