SignedData.Sign 方法
[ Sign 方法可用于“要求”部分中指定的操作系统。 请改用 System.Security.Cryptography.Pkcs 命名空间中的 SignedCms 类。]
Sign 方法对要签名的内容创建数字签名。 数字签名由要签名的内容的 哈希 组成,该哈希使用签名者的私钥进行加密。 此方法只能在初始化 SignedData.Content 属性后使用。 如果对已有签名的对象调用 Sign 方法,则会替换旧签名。 签名是使用 SHA1 签名算法创建的。
语法
SignedData.Sign( _
[ ByVal Signer ], _
[ ByVal bDetached ], _
[ ByVal EncodingType ] _
)
参数
-
登录者 [in, 可选]
-
对数据的签名者的 Signer 对象的引用。 Signer 对象必须有权访问用于签名的证书的私钥。 此参数可以为 NULL;有关详细信息,请参阅备注。
-
bDetached [in, optional]
-
如果 为 True,则分离要签名的数据;也就是说,已签名的内容不作为已签名对象的一部分包含在内。 若要验证分离内容上的签名,应用程序必须具有原始内容的副本。 如果已签名邮件的收件人具有已签名数据的原始副本,则分离内容通常用于减小要通过 Web 发送的已签名对象的大小。 默认值为 False。
-
EncodingType [in, optional]
-
CAPICOM_ENCODING_TYPE 枚举的值,该值指示如何对带符号的数据进行编码。 默认值为 CAPICOM_ENCODE_BASE64。 此参数的取值可为下列值之一:
值 含义 - CAPICOM_ENCODE_ANY
仅当输入数据具有未知编码类型时,才使用此编码类型。 如果使用此值指定输出的编码类型,则将改用CAPICOM_ENCODE_BASE64。 在 CAPICOM 2.0 中引入。 - CAPICOM_ENCODE_BASE64
数据保存为 base64 编码的字符串。 - CAPICOM_ENCODE_BINARY
数据保存为纯二进制序列。
返回值
此方法返回一个字符串,其中包含已编码的带符号数据。
如果此方法失败,将引发错误。 Err 对象将包含有关错误的其他信息。
备注
重要
从 Web 脚本调用此方法时,脚本需要使用私钥创建数字签名。 允许不受信任的网站使用私钥存在安全风险。 首次调用此方法时,将显示一个对话框,询问网站是否可以使用私钥。 如果允许脚本使用私钥创建数字签名并选择“不再显示此对话框”,则使用该私钥创建数字签名的域中的任何脚本将不再显示该对话框。 但是,该域外部尝试使用私钥创建数字签名的脚本仍会导致此对话框出现。 如果不允许脚本使用私钥并选择“不再显示此对话框”,则会自动拒绝该域中的脚本使用私钥创建数字签名。
由于创建 数字签名 需要使用 私钥,因此尝试使用此方法的基于 Web 的应用程序将需要用户界面提示,以允许用户批准使用私钥,出于安全原因。
以下结果适用于 Signer 参数值:
- 如果 Signer 参数不为 NULL,则此方法使用关联证书指向的私钥来加密签名。 如果证书指向的私钥不可用,该方法将失败。
- 如果 Signer 参数为 NULL ,并且CURRENT_USER MY 存储中恰好有一个证书有权访问私钥,则该证书用于创建签名。
- 如果 Signer 参数为 NULL, 则 Settings.EnablePromptForCertificateUI 属性值为 true,并且CURRENT_USER MY 存储中有多个具有可用私钥的证书,将显示一个对话框,允许用户选择所使用的证书。
- 如果 Signer 参数为 NULL ,并且 Settings.EnablePromptForCertificateUI 属性为 false,则该方法将失败。
- 如果 Signer 参数为 NULL ,并且CURRENT_USER MY 存储中没有具有可用私钥的证书,则该方法将失败。
要求
要求 | 值 |
---|---|
可再发行组件 |
Windows Server 2003 和 Windows XP 上的 CAPICOM 2.0 或更高版本 |
DLL |
|
另请参阅