Compartilhar via


Método SignedData.Sign

[O método Sign está disponível para uso nos sistemas operacionais especificados na seção Requisitos. Em vez disso, use a classe SignedCms no namespace System.Security.Cryptography.Pkcs .]

O método Sign cria uma assinatura digital no conteúdo a ser assinado. Uma assinatura digital consiste em um hash do conteúdo a ser assinado criptografado usando a chave privada do signatário. Esse método só pode ser usado depois que a propriedade SignedData.Content tiver sido inicializada. Se o método Sign for chamado em um objeto que já tem uma assinatura, a assinatura antiga será substituída. A assinatura é criada usando o algoritmo de assinatura SHA1.

Sintaxe

SignedData.Sign( _
  [ ByVal Signer ], _
  [ ByVal bDetached ], _
  [ ByVal EncodingType ] _
)

Parâmetros

Signatário [in, opcional]

Uma referência ao objeto Signer do signatário dos dados. O objeto Signer deve ter acesso à chave privada do certificado usado para assinar. Esse parâmetro pode ser NULL; para obter mais informações, consulte Comentários.

bDetached [in, opcional]

Se True, os dados a serem assinados serão desanexados; ou seja, o conteúdo assinado não está incluído como parte do objeto assinado. Para verificar a assinatura no conteúdo desanexado, um aplicativo deve ter uma cópia do conteúdo original. O conteúdo desanexado geralmente é usado para diminuir o tamanho de um objeto assinado a ser enviado pela Web, se o destinatário da mensagem assinada tiver uma cópia original dos dados assinados. O valor padrão é Falso.

EncodingType [in, opcional]

Um valor da enumeração CAPICOM_ENCODING_TYPE que indica como os dados assinados devem ser codificados. O valor padrão é CAPICOM_ENCODE_BASE64. Esse parâmetro pode usar um dos valores a seguir.

Valor Significado
CAPICOM_ENCODE_ANY
Esse tipo de codificação é usado somente quando os dados de entrada têm um tipo de codificação desconhecido. Se esse valor for usado para especificar o tipo de codificação da saída, CAPICOM_ENCODE_BASE64 será usado. Introduzido no CAPICOM 2.0.
CAPICOM_ENCODE_BASE64
Os dados são salvos como uma cadeia de caracteres codificada em base64.
CAPICOM_ENCODE_BINARY
Os dados são salvos como uma sequência binária pura.

 

Valor retornado

Esse método retorna uma cadeia de caracteres que contém os dados codificados e assinados.

Se esse método falhar, um erro será gerado. O objeto Err conterá informações adicionais sobre o erro.

Comentários

Importante

Quando esse método é chamado de um script web, o script precisa usar sua chave privada para criar uma assinatura digital. Permitir que sites não confiáveis usem sua chave privada é um risco à segurança. Uma caixa de diálogo que pergunta se o site pode usar sua chave privada é exibida quando esse método é chamado pela primeira vez. Se você permitir que o script use sua chave privada para criar uma assinatura digital e selecionar "Não mostrar essa caixa de diálogo novamente", a caixa de diálogo não aparecerá mais para nenhum script dentro desse domínio que use sua chave privada para criar uma assinatura digital. No entanto, scripts fora desse domínio que tentam usar sua chave privada para criar uma assinatura digital ainda farão com que essa caixa de diálogo apareça. Se você não permitir que o script use sua chave privada e selecione "Não mostrar essa caixa de diálogo novamente", os scripts dentro desse domínio serão automaticamente recusados a capacidade de usar sua chave privada para criar assinaturas digitais.

 

Como a criação de uma assinatura digital requer o uso de uma chave privada, os aplicativos baseados na Web que tentam usar esse método exigirão prompts de interface do usuário que permitem que o usuário aprove o uso da chave privada, por motivos de segurança.

Os seguintes resultados se aplicam ao valor do parâmetro Signer :

  • Se o parâmetro Signer não for NULL, esse método usará a chave privada apontada pelo certificado associado para criptografar a assinatura. Se a chave privada apontada pelo certificado não estiver disponível, o método falhará.
  • Se o parâmetro Signer for NULL e houver exatamente um certificado no repositório my CURRENT_USER que tenha acesso a uma chave privada, esse certificado será usado para criar a assinatura.
  • Se o parâmetro Signer for NULL, o valor da propriedade Settings.EnablePromptForCertificateUI for true e houver mais de um certificado no CURRENT_USER meu repositório com uma chave privada disponível, será exibida uma caixa de diálogo que permite que o usuário selecione qual certificado é usado.
  • Se o parâmetro Signer for NULL e a propriedade Settings.EnablePromptForCertificateUI for false, o método falhará.
  • Se o parâmetro Signer for NULL e não houver certificado no CURRENT_USER meu repositório com uma chave privada disponível, o método falhará.

Requisitos

Requisito Valor
Redistribuível
CAPICOM 2.0 ou posterior no Windows Server 2003 e Windows XP
DLL
Capicom.dll

Confira também

Objetos de criptografia

SignedData