Asignar un documento
[CAPICOM es un componente solo de 32 bits que está disponible para su uso en los siguientes sistemas operativos: Windows Server 2008, Windows Vista y Windows XP. En su lugar, use .NET Framework para implementar características de seguridad. Para obtener más información, vea Alternativas al uso de CAPICOM.
Un documento se puede firmar mediante más de un firmante. Esto sucede cuando, por ejemplo, dos o más partes firman un contrato o un informe de gastos. En el ejemplo siguiente, un segundo firmante recibe un documento ya firmado. Este firmante usa el método CoSign para adjuntar una firma adicional al documento.
Si se produce algún error CAPICOM, se devuelve un valor negativo en la propiedad Err.Number . Para obtener más información sobre los códigos de error CAPICOM, consulte CAPICOM_ERROR_CODE. Si el código de error de la propiedad Err.Number es un valor positivo, el error es un error de Windows. Para obtener información sobre los códigos de error de Windows, consulte Winerror.h.
Nota
La cosignación de un documento también requiere que el cosignador tenga un certificado disponible con una clave privada para crear la firma. Si no se especifica un firmante en la llamada al método Sign y no hay ningún certificado en CAPICOM_MY_STORE con una clave privada asociada, se produce un error en el método . Si hay uno y solo un certificado en CAPICOM_MY_STORE con una clave privada asociada, se usan esa clave y certificado. Si hay más de un certificado utilizable, se muestra un mensaje para permitir al usuario elegir el certificado deseado.
Si el método CoSign se usa en una aplicación basada en web, siempre se muestra un mensaje para obtener el permiso del usuario antes de crear una firma mediante la clave privada del firmante.
En el ejemplo siguiente, los archivos que contienen el documento que se van a firmar y las firmas actuales de ese documento se leen, la firma se cosigna y la nueva firma se escribe en un archivo. En el ejemplo se usa una firma desasociada con los datos firmados y la firma en archivos independientes.
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