初始化签名管理器

本主题介绍如何初始化签名管理器以用于 XPS 文档。

在程序中使用以下代码示例之前,请阅读常见数字签名编程任务中的免责声明。

若要使用加密 API 的 Windows 7 功能,请按如下所示定义 CRYPT_OID_INFO_HAS_EXTRA_FIELDS 符号:

#define CRYPT_OID_INFO_HAS_EXTRA_FIELDS

接下来,通过调用 CoCreateInstance 来实例化 IXpsSignatureManager 接口,如以下代码示例所示。

IXpsSignatureManager    *newInterface;

// Note the implicit requirement that CoInitializeEx 
//  has previously been called from this thread.

hr = CoCreateInstance(
    __uuidof(XpsSignatureManager),
    NULL, 
    CLSCTX_INPROC_SERVER,
    __uuidof(IXpsSignatureManager),
    reinterpret_cast<LPVOID*>(&newInterface));

// make sure that you got a pointer 
// to the interface
if (SUCCEEDED(hr)) {
    // Load document into signature manager from file.
    //  xpsDocument is initialized with the file name
    //  of the document to load outside of this example.
    hr = newInterface->LoadPackageFile (xpsDocument);

    // Use newInterface

    // Release interface pointers when finished with them 
    newInterface->Release();
}    

CoCreateInstance 实例化的接口只能由一个 XPS 文档使用,必须通过在调用任何其他方法之前调用 LoadPackageFileLoadPackageStream 来加载该文档。

实例化 IXpsSignatureManager 接口并加载 XPS 文档后,签名管理器已准备好使用。

后续步骤

对文档签名

向 XPS 文档添加签名请求

验证文档签名

本部分使用的内容

CoCreateInstance

IXpsSignatureManager

详细信息

XPS 数字签名 API 错误

XPS 文档错误

XML 纸张规范