Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
[CAPICOM é um componente somente de 32 bits que está disponível para uso nos seguintes sistemas operacionais: Windows Server 2008, Windows Vista e Windows XP. Em vez disso, use o .NET Framework para implementar recursos de segurança. Para obter mais informações, consulte Alternativas ao uso do CAPICOM.]
Um documento pode ser assinado por mais de um signatário. Isso acontece quando, por exemplo, duas ou mais partes assinam um contrato ou um relatório de despesas. No exemplo a seguir, um documento já assinado é recebido por um segundo signatário. Esse signatário usa o método CoSign para anexar uma assinatura adicional ao documento.
Se ocorrer algum erro CAPICOM, um valor negativo será retornado na propriedade Err.Number. Para obter mais informações sobre códigos de erro CAPICOM, consulte CAPICOM_ERROR_CODE. Se o código de erro na propriedade Err.Number for um valor positivo, o erro será um erro do Windows. Para obter informações sobre códigos de erro do Windows, consulte Winerror.h.
Nota
Co-assinar um documento também exige que o co-assinante tenha um certificado disponível com uma chave privada para criar a assinatura. Se um signatário não for especificado na chamada do método Sign e não houver certificado em CAPICOM_MY_STORE com uma chave privada associada, o método falhará. Se houver um e apenas um certificado em CAPICOM_MY_STORE com uma chave privada associada, essa chave e certificado serão usados. Se houver mais de um certificado utilizável, um prompt será exibido para permitir que o usuário escolha o certificado desejado.
Se o método CoSign for usado em um aplicativo baseado na Web, um prompt sempre será exibido para obter a permissão do usuário antes que uma assinatura seja criada usando a chave privada desse signatário.
No exemplo a seguir, os arquivos que contêm o documento a ser assinado e as assinaturas atuais nesse documento são lidos, a assinatura é cosignada e a nova assinatura é gravada em um arquivo. O exemplo usa uma assinatura separada, com os dados assinados e a assinatura em arquivos distintos.
Sub CoSignContent(ByVal InputFile1Name As String, ByVal _
InputFile2Name As String, ByVal OutputFileName As String)
On Error GoTo ErrorHandler
Dim c As String
Dim s As String
Dim CS As String
Dim Signobj As New SignedData
Open InputFile1Name for Input as #1
Input #1, s
Close #1
Open InputFileName2 for input as #2
Input #2, c
Close #2
Signobj.Content = c
Signobj.Verify(s)
CS = Signobj.CoSign
Open OutputFileName for output as #3
Write #3, CS
Close # 3
Signobj = Nothing
MsgBox("Cosign finished. Cosignature saved to a file.")
Exit Sub
ErrorHandler:
If err.number > 0 Then
MsgBox("Visual Basic error found:" & err.description)
Else
MsgBox("CAPICOM error found : " & err.number)
End If
End Sub