lark.com

火鸟乐园——生活在.net时代
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

数字签名验证时显示签名者的证书问题

Posted on 2004-11-15 23:21  火鸟  阅读(1176)  评论(1编辑  收藏  举报
在.net实现的订单数字签名系统中,在对订单进行数字签名验证时,需要用Windows的证书查看程序查看签名者的数字证书。假设用DataGrid显示所有已签名的订单,则在该DataGrid中增加两个模板列,一个放HIdden客户端控件,一个放Button客户端控件。客户端控件的名称由固定字符串+订单编号(绑定数据表的相应列)构成,客户端Button调用一JavaScript函数,参数为Hidden控件的Value属性(其值当然就是签名数据SignedData啦)。

具体实现如下:
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>
其中,ID为订单编号。

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>