Método IXpsSignatureManager::Sign (xpsdigitalsignature.h)

Assina o conteúdo de um pacote XPS conforme especificado pelas opções de assinatura e retorna a assinatura digital resultante.

Sintaxe

HRESULT Sign(
  [in]          IXpsSigningOptions *signOptions,
  [in]          const CERT_CONTEXT *x509Certificate,
  [out, retval] IXpsSignature      **signature
);

Parâmetros

[in] signOptions

Um ponteiro para a interface IXpsSigningOptions que contém as opções de assinatura.

Observação  

As propriedades SignatureMethod e DigestMethod da interface IXpsSigningOptions devem ser inicializadas antes que o ponteiro para essa interface possa ser usado no parâmetro signOptions .

 

[in] x509Certificate

Um ponteiro para a estrutura CERT_CONTEXT que contém o certificado X.509 a ser usado para assinatura.

[out, retval] signature

Um ponteiro para a interface IXpsSignature que contém a nova assinatura digital.

Se tiver êxito, esse método criará a parte de assinatura, a adicionará ao pacote e, na assinatura , retornará um ponteiro para a interface dessa parte de assinatura.

Retornar valor

O método retorna um HRESULT. Os valores possíveis incluem, mas não se limitam a, aqueles na tabela a seguir. Para obter valores retornados que não estão listados nesta tabela, consulte Erros de API de Assinatura Digital XPS e Erros de Documento XPS.

Código de retorno Descrição
S_OK
O método foi bem-sucedido.
XPS_E_MARKUP_COMPATIBILITY_ELEMENTS
O valor XPS_SIGN_FLAGS especificado que nenhum elemento de compatibilidade de marcação era esperado; no entanto, foram encontrados elementos de compatibilidade de marcação.
XPS_E_NO_CUSTOM_OBJECTS
signOptions não aponta para uma implementação de interface reconhecida. Não há suporte para a implementação personalizada de interfaces de API de Documento XPS.
XPS_E_PACKAGE_NOT_OPENED
Um pacote XPS ainda não foi aberto no gerenciador de assinaturas.

Comentários

Adicionar uma nova assinatura não substitui o arquivo ou fluxo original que foi lido chamando o método LoadPackageFile ou LoadPackageStream . A assinatura será adicionada à cópia na memória do pacote XPS até que o pacote seja salvo (chamando o método SavePackageToFile ou SavePackageToStream ).

Se a nova assinatura incluir partes que contêm elementos de compatibilidade de marcação, o padrão é que esse método falhe com um erro de XPS_E_MARKUP_COMPATIBILITY_ELEMENTS. Para substituir esse comportamento, chame IXpsSigningOptions::SetFlags; isso definirá o sinalizador XPS_SIGN_FLAGS_IGNORE_MARKUP_COMPATIBILITY na interface IXpsSigningOptions referenciada pelo parâmetro signOptions .

Se esse método retornar um valor HRESULT que não esteja na lista de seus valores retornados, o gerenciador de assinaturas deverá ser liberado e recriado.

Esse método terá êxito mesmo que a nova assinatura interrompa as assinaturas existentes.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 7 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 R2 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho xpsdigitalsignature.h

Confira também

CERT_CONTEXT

IXpsSignature

IXpsSignatureManager

IXpsSigningOptions

Especificação de Papel XML

Erros de API de Assinatura Digital do XPS

Erros de documento XPS