Compartilhar via


Método IOpcDigitalSignatureManager::ReplaceSignatureXml (msopc.h)

Substitui a marcação de assinatura existente armazenada em uma parte de assinatura especificada.

Sintaxe

HRESULT ReplaceSignatureXml(
  [in]          IOpcPartUri          *signaturePartName,
  [in]          const UINT8          *newSignatureXml,
  [in]          UINT32               count,
  [out, retval] IOpcDigitalSignature **digitalSignature
);

Parâmetros

[in] signaturePartName

Um ponteiro de interface IOpcPartUri que representa o nome da parte da assinatura que armazena a marcação de assinatura existente.

[in] newSignatureXml

Um buffer que contém a marcação de assinatura que substituirá a marcação existente.

[in] count

O tamanho do buffer newSignatureXml .

[out, retval] digitalSignature

Um ponteiro para uma nova interface IOpcDigitalSignature que representa a assinatura derivada da marcação de assinatura que é passada em newSignatureXml.

Retornar valor

O método retorna um HRESULT. Os possíveis valores incluem, mas sem limitação, aqueles na tabela a seguir.

Valor/código retornado Descrição
S_OK
O método foi bem-sucedido.
E_POINTER
Pelo menos um dos parâmetros signaturePartName, newSignatureXml e digitalSignature é NULL.
OPC_E_DS_DUPLICATE_PACKAGE_OBJECT_REFERENCES
0x8051002D
O buffer newSignatureXml contém mais de um elemento Reference que se refere ao elemento Object do pacote, mas apenas uma dessas Referências é permitida.
OPC_E_DS_DUPLICATE_SIGNATURE_PROPERTY_ELEMENT
0x80510028
O buffer newSignatureXml contém mais de um elemento SignatureProperty que tem o mesmo atributo Id .
OPC_E_DS_EXTERNAL_SIGNATURE_REFERENCE
0x8051002F
No buffer newSignatureXml , um elemento Reference refere-se a um objeto externo ao pacote. Os elementos de referência devem apontar para partes ou elementos Object internos.
OPC_E_DS_INVALID_CANONICALIZATION_METHOD
0x80510022
Um método de canonicalização sem suporte foi solicitado ou usado no buffer newSignatureXml .
OPC_E_DS_INVALID_RELATIONSHIP_TRANSFORM_XML
0x80510021
No buffer newSignatureXml , um elemento Transform que indica o uso da transformação de relações e os critérios de seleção para a transformação não estão em conformidade com o esquema especificado no OPC.
OPC_E_DS_INVALID_SIGNATURE_COUNT
0x8051002B
O buffer newSignatureXml não contém a marcação de assinatura para exatamente uma assinatura.
OPC_E_DS_INVALID_SIGNATURE_XML
0x8051002A
O tamanho do buffer newSignatureXml é 0, mas esse buffer deve ter um tamanho maior que 0.
OPC_E_DS_MISSING_CANONICALIZATION_TRANSFORM
0x80510032
No buffer newSignatureXml , uma transformação de relações não é seguida por um método de canonicalização; a transformação de relações deve ser seguida por um método de canonicalização.
OPC_E_DS_MISSING_PACKAGE_OBJECT_REFERENCE
0x8051002E
No buffer newSignatureXml , não foi encontrada uma Referência ao elemento Object específico do pacote.
OPC_E_DS_MISSING_SIGNATURE_ALGORITHM
0x8051002C
A marcação de assinatura no buffer newSignatureXml não especifica um algoritmo de método de assinatura.
OPC_E_DS_MISSING_SIGNATURE_PROPERTIES_ELEMENT
0x80510026
No buffer newSignatureXml , o elemento SignatureProperties não foi encontrado.
OPC_E_DS_MISSING_SIGNATURE_PROPERTY_ELEMENT
0x80510027
No buffer newSignatureXml , o elemento filho SignatureProperty do elemento SignatureProperties não foi encontrado.
OPC_E_DS_MISSING_SIGNATURE_TIME_PROPERTY
0x80510029
No buffer newSignatureXml , o elemento SignatureProperty com o valor do atributo Id de "idSignatureTime" não existe ou não foi construído corretamente.
OPC_E_DS_MULTIPLE_RELATIONSHIP_TRANSFORMS
0x80510031
No buffer newSignatureXml , mais de uma transformação de relações é especificada para um elemento Reference , mas apenas uma transformação de relações é permitida.
OPC_E_DS_REFERENCE_MISSING_CONTENT_TYPE
0x80510030
O valor do atributo URI de um elemento Reference no buffer newSignatureXml não inclui o tipo de conteúdo da parte referenciada.
OPC_E_DS_SIGNATURE_PROPERTY_MISSING_TARGET
0x80510045
No buffer newSignatureXml , o elemento SignatureProperty não tem o atributo Target necessário.
OPC_E_DS_SIGNATURE_REFERENCE_MISSING_URI
0x80510043
Um elemento Reference , que está no buffer newSignatureXml , requer o atributo URI , mas o atributo está ausente.
OPC_E_DS_UNSIGNED_PACKAGE
0x80510055
O pacote não está assinado; portanto, a marcação de assinatura não pode ser substituída.
OPC_E_NO_SUCH_PART
0x80510018
A parte especificada não existe.

Comentários

Esse método não valida a assinatura derivada da nova marcação de assinatura que está no parâmetro newSignatureXml .

O chamador deve confirmar que a nova marcação de assinatura, que substitui a marcação de assinatura existente na parte de assinatura especificada, não interromperá a assinatura.

Esse método altera a marcação de assinatura existente; certificados e relações que têm a parte de assinatura especificada como sua origem são preservados.

Acesso thread-safe

Os objetos de empacotamento não são thread-safe.

Para obter mais informações, consulte o Introdução com a API de Empacotamento.

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 msopc.h

Confira também

Interfaces de empacotamento principais

Visão geral de assinaturas digitais

Introdução com a API de Empacotamento

IOpcDigitalSignatureManager

Visões gerais

Guia de programação da API de empacotamento

Referência da API de empacotamento

Exemplos de API de empacotamento

Empacotando interfaces de assinatura digital

Interfaces de empacotamento

Referência