iSignerCertificate 接口 (certenroll.h)

ISignerCertificate 接口表示一个签名证书,可用于对证书请求进行签名。 初始化接口时,证书注册控制从个人存储中检索签名证书,并使用它来查找关联的 私钥。 可以使用私钥对 PKCS #7 或 CMC 请求进行签名,但不能对 PKCS #10 请求进行签名。 必须使用与请求中包含的 公钥 关联的私钥对 PKCS #10 请求进行签名。 可以使用与请求关联的私钥或与签名证书关联的私钥对自签名证书进行签名。 下表对此进行了总结。

请求类型 (接口) 签名证书
PKCS #7 (IX509CertificateRequestPkcs7) 1
PKCS #10 (IX509CertificateRequestPkcs10) 0
CMC (IX509CertificateRequestCmc) 0 个或更多
自签名 (IX509CertificateRequestCertificate) 0 或 1
 

签名 CMC 请求时,要签名的数据由包装在 CMS SignedData 对象中的可辨别编码规则 (DER) 编码的 CmcData 对象组成。 SignerInfo 对象的 encryptedDigest 字段包含一个签名,多个 SignerInfo 对象可以与请求相关联。


---------------------------------------------------------------------
-- CMC request data
---------------------------------------------------------------------

CmcData ::= SEQUENCE 
{
controlSequence     SEQUENCE OF TaggedAttribute,
reqSequence         SEQUENCE OF TaggedRequest,
cmsSequence         SEQUENCE OF TaggedContentInfo,
otherMsgSequence    SEQUENCE OF TaggedOtherMs
}

---------------------------------------------------------------------
-- SignedData object that wraps the CMC request
---------------------------------------------------------------------

SignedData ::= SEQUENCE 
{
   version             INTEGER,
   digestAlgorithms    DigestAlgorithmIdentifiers,
   contentInfo         ContentInfo,
   certificates        [0] IMPLICIT Certificates OPTIONAL,
   crls                [1] IMPLICIT CertificateRevocationLists OPTIONAL,
   signerInfos         SignerInfos
}

DigestAlgorithmIdentifiers ::=  SET OF DigestAlgorithmIdentifier 
DigestAlgorithmIdentifiersNC ::= SET OF DigestAlgorithmIdentifierNC

SignerInfos ::= SET OF SignerInfo

SignerInfo ::= SEQUENCE 
{
    version                     INTEGER,
    sid                         CertIdentifier,
    digestAlgorithm             DigestAlgorithmIdentifier,
    authenticatedAttributes     [0] IMPLICIT Attributes OPTIONAL,
    digestEncryptionAlgorithm   DigestEncryptionAlgId,
    encryptedDigest             EncryptedDigest,
    unauthenticatedAttributes   [1] IMPLICIT Attributes OPTIONAL
}

每个 ISignerCertificate 对象都与一个标识使用的哈希和公钥算法的 IX509SignatureInformation 对象相关联。 此对象在初始化 ISignerCertificate 对象时创建并初始化。

继承

ISignerCertificate 接口继承自 IDispatch 接口。 ISignerCertificate 还具有以下类型的成员:

方法

ISignerCertificate 接口具有以下方法。

 
ISignerCertificate::get_Certificate

检索包含证书的可辨别编码规则 (DER) 编码的字节数组。
ISignerCertificate::get_ParentWindow

指定或检索用于显示签名证书信息的窗口的 ID。 (获取)
ISignerCertificate::get_PrivateKey

检索与 ISignerCertificate 对象关联的私钥。
ISignerCertificate::get_SignatureInformation

检索包含证书签名相关信息的 IX509SignatureInformation 对象。
ISignerCertificate::get_Silent

指定或检索一个布尔值,该值指示使用私钥对证书请求进行签名时是否通知用户。 (获取)
ISignerCertificate::get_UIContextMessage

指定或检索包含与签名证书关联的用户界面文本的字符串。 (获取)
ISignerCertificate::Initialize

从签名证书初始化 对象。
ISignerCertificate::p ut_ParentWindow

指定或检索用于显示签名证书信息的窗口的 ID。 (放置)
ISignerCertificate::p ut_Pin

指定用于对智能卡用户进行身份验证 (PIN) 个人标识号。
ISignerCertificate::p ut_Silent

指定或检索一个布尔值,该值指示使用私钥对证书请求进行签名时是否通知用户。 (放置)
ISignerCertificate::p ut_UIContextMessage

指定或检索包含与签名证书关联的用户界面文本的字符串。 (放置)

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 certenroll.h

另请参阅

CertEnroll 接口

IDispatch

ISignerCertificates