免费,开源,方便易用
XCA :http://sourceforge.net/projects/xca/
不过,windows版本的XCA,默认的算法为sha256,windows不支持,所以将其改成其他windows支持的算法就可以乐
2007年10月6日星期六
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 †
- test.htmlとGreeting.dllをIISのルート配下(デフォルトは「C:\Inetpub\wwwroot」)にコピーします。
- IEで[http://localhost/test.html]にアクセスします。
「Hello World」のダイアログを表示すると、おめでとう
TomcatにDeploy †
- test.htmlとGreeting.dllを Tomcatの「web_app」の配下にコピーします。
- Tomcatのルートweb.xml(デフォルトは「%TOMCAT_HOME%/conf/web.xml」)を編集し、下記の内容を追加します:
dll
application/x-msdownload 追加しないと、dllファイルをdownloadできません。追加した後、Tomcatを再起動します。
- IEで「http://localhost:8080/web_app/test.html」にアクセスします。
「Hello World」のダイアログを表示すると、おめでとう
参照資料 †
JSON与COM交互
利用JSON可以很方便得把string转化成Javascript 对象
COM 与 Javascript交互时,非常有用
1. JSON例
Javascript中,直接用JSON格式的文本来定义对象:
var myJSONObject = {"bindings": [
4.参考资料
http://blog.csdn.net/dyc13/archive/2007/04/10/1558963.aspx
http://www.json.org/js.html
http://www.json.org/
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#:
- Jayrock.
- Newtonsoft Json.NET. (本人尝试过,比较好用)
- JSONSharp.
- LitJSON.
- JSON for .NET.
- org.json.
- org.json.me.
- Json-lib.
- JSON Tools.
- org.json.simple.
- Stringtree.
- SOJO.
- VRaptor.
- Restlet.
- Jettison.
- json-taglib.
- FLEXJSON.
- XStream.
- JsonMarshaller.
4.参考资料
http://blog.csdn.net/dyc13
http://www.json.org/js.html
http://www.json.org/
订阅:
博文 (Atom)