在.net实现的订单数字签名系统中,在对订单进行数字签名验证时,需要用Windows的证书查看程序查看签名者的数字证书。假设用DataGrid显示所有已签名的订单,则在该DataGrid中增加两个模板列,一个放HIdden客户端控件,一个放Button客户端控件。客户端控件的名称由固定字符串+订单编号(绑定数据表的相应列)构成,客户端Button调用一JavaScript函数,参数为Hidden控件的Value属性(其值当然就是签名数据SignedData啦)。
具体实现如下:
1)在需要显示证书的DataGrid中增加两个模板列:
其中,ID为订单编号。
2)显示证书
具体实现如下:
1)在需要显示证书的DataGrid中增加两个模板列:
<asp:TemplateColumn>
<ItemTemplate>
<FONT face="宋体"><INPUT id=data<%# DataBinder.Eval(Container.DataItem,"ID")%> type=hidden value='<%# DataBinder.Eval(Container.DataItem,"data")%>'></FONT>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="查看证书">
<ItemTemplate>
<FONT face="宋体"><INPUT type="button" value="查看证书" onclick="DisplayCer(Form1.data<%# DataBinder.Eval(Container.DataItem,"ID")%>.value)" id=show<%# DataBinder.Eval(Container.DataItem,"ID")%>></FONT>
</ItemTemplate>
</asp:TemplateColumn>
<ItemTemplate>
<FONT face="宋体"><INPUT id=data<%# DataBinder.Eval(Container.DataItem,"ID")%> type=hidden value='<%# DataBinder.Eval(Container.DataItem,"data")%>'></FONT>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="查看证书">
<ItemTemplate>
<FONT face="宋体"><INPUT type="button" value="查看证书" onclick="DisplayCer(Form1.data<%# DataBinder.Eval(Container.DataItem,"ID")%>.value)" id=show<%# DataBinder.Eval(Container.DataItem,"ID")%>></FONT>
</ItemTemplate>
</asp:TemplateColumn>
2)显示证书
<SCRIPT language="VBScript">
Sub DisplayCer(data)
Dim strSignedData1
Dim oCert
Set strSignedData1 = CreateObject("CAPICOM.SignedData")
Set oCert = CreateObject("CAPICOM.Certificate")
strSignedData1.Verify data
Set oCert=strSignedData1.Signers(1).Certificate
oCert.Display()
End Sub
</SCRIPT>
Sub DisplayCer(data)
Dim strSignedData1
Dim oCert
Set strSignedData1 = CreateObject("CAPICOM.SignedData")
Set oCert = CreateObject("CAPICOM.Certificate")
strSignedData1.Verify data
Set oCert=strSignedData1.Signers(1).Certificate
oCert.Display()
End Sub
</SCRIPT>