Поделиться через


Инициализация диспетчера подписей

В этом разделе описывается, как инициализировать диспетчер подписей для использования с документом XPS.

Прежде чем использовать приведенные ниже примеры кода в программе, прочтите заявление об отказе в задачах программирования Common Digital Signature.

Чтобы использовать функции API шифрования Windows 7, определите символ CRYPT_OID_INFO_HAS_EXTRA_FIELDS следующим образом:

#define CRYPT_OID_INFO_HAS_EXTRA_FIELDS

Затем создайте экземпляр интерфейса IXpsSignatureManager, вызвав CoCreateInstance, как показано в следующем примере кода.

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, который необходимо загрузить путем вызова LoadPackageFile или LoadPackageStream перед вызовом любого другого метода.

После создания экземпляра интерфейса IXpsSignatureManager и загрузки документа XPS диспетчер подписей готов к использованию.

Дальнейшие действия

Подписыв документ

Добавление запроса подписи в документ XPS

Проверка подписей документов

Используется в этом разделе

CoCreateInstance

IXpsSignatureManager

Дополнительные сведения

Ошибки API цифровых подписей XPS

Ошибки документа XPS

Спецификация XML-бумаги