Foros del Web » Programación para mayores de 30 ;) » .NET »

Firmar documento: capicom

Estas en el tema de Firmar documento: capicom en el foro de .NET en Foros del Web. Estoy buscando la manera de firmar un documento usando un certificado digital emitido por la FNMT. En la página de Microsoft hay una librería llamada ...
  #1 (permalink)  
Antiguo 23/03/2011, 02:43
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
Firmar documento: capicom

Estoy buscando la manera de firmar un documento usando un certificado digital emitido por la FNMT.

En la página de Microsoft hay una librería llamada Capicom que trae ejemplos de uso:

http://www.microsoft.com/downloads/e...5-ff88ea5896f6

Uno de estos ejemplos es una aplicación completa dónde se usa un certificado para firmar un documento, justo lo que busco!

Selecciono el fichero que quiero firmar, luego selecciono el certificado con el que lo quiero firmar pero al darle al botón 'Firmar' del ejemplo me suelta el error:

Error 800B0003: La forma especificada para el asunto no es la compatible o la conocida por el proveedor de confianza especificado.

El código de ejemplo es el siguiente:

Código:
Imports CAPICOM

Friend Class FrmSignedCode
    Inherits System.Windows.Forms.Form
    '******************************************************************************
    '
    ' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
    ' EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
    ' WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
    '
    ' Copyright (C) 1999- 2002.  Microsoft Corporation.  All rights reserved.
    '
    '******************************************************************************
    '
    ' SignedCode.vbp
    '
    ' This is a VB sample that illustrates how to use features introduced in
    ' CAPICOM v2.0 to sign, timestamp, and verify files using a certificate
    ' from Personal Store.
    '
    ' Note: For simplicity, this sample does not handle exception.
    '
    '******************************************************************************

    'timestamping URL
    Const URL As String = "http://timestamp.verisign.com/scripts/timstamp.dll"

    Dim st As New CAPICOM.Store
    Dim certs As CAPICOM.Certificates
    Dim selectedCerts As CAPICOM.Certificates
    Dim cert As CAPICOM.Certificate
    Dim Signer As New CAPICOM.Signer
    Public SignedCode As New CAPICOM.SignedCode

    Private Sub cmdSignInfo_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdSignInfo.Click
        FrmSignInfo.Show()
    End Sub

    Private Sub FrmSignedCode_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
        'open current user store and obtain certificates
        st.Open(CAPICOM.CAPICOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, CAPICOM.Constants.CAPICOM_MY_STORE, CAPICOM.CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_READ_ONLY)
        certs = st.Certificates
    End Sub

    Private Sub cmdSign_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdSign.Click
        On Error GoTo err_handler

        'sign
        SignedCode.Sign(Signer) 'AQUÍ SUELTA EL ERROR
        MsgBox("The fle has been signed succesfully")

        Exit Sub
err_handler:
        'if the user cancels, don't display error msg
        If Err.Number <> CAPICOM.CAPICOM_ERROR_CODE.CAPICOM_E_CANCELLED Then
            MsgBox("Error " & Hex(Err.Number) & ": " & Err.Description)
        End If
        Err.Clear()
        Exit Sub
    End Sub
    Private Sub cmdTimeStamp_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdTimeStamp.Click
        On Error GoTo err_handler
        'timestamp
        SignedCode.Timestamp(URL)
        MsgBox("The fle has been timestamped")
        Exit Sub

err_handler:
        MsgBox(Err.Description)
        Exit Sub
    End Sub

    Private Sub cmdVerify_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdVerify.Click
        On Error GoTo err_handler
        'verify
        SignedCode.Verify()
        MsgBox("The file has been verified")
        Exit Sub

err_handler:
        MsgBox(Hex(Err.Number) & ": " & Err.Description)
        Exit Sub
    End Sub

    Private Sub dir_Renamed_Change(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles dir_Renamed.Change
        On Error GoTo err_handler

        file.Path = dir_Renamed.Path

        Exit Sub
err_handler:
        MsgBox(Hex(Err.Number) & ": " & Err.Description)
        Exit Sub
    End Sub

    Private Sub drive_SelectedIndexChanged(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles drive.SelectedIndexChanged
        On Error GoTo err_handler
        dir_Renamed.Path = drive.Drive & "\"
        Exit Sub
err_handler:
        MsgBox(Hex(Err.Number) & ": " & Err.Description)
        Exit Sub
    End Sub

    Private Sub file_SelectedIndexChanged(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles file.SelectedIndexChanged
        'set filename to sign
        SignedCode.FileName = file.Path & "\" & file.FileName
    End Sub
    'UPGRADE_WARNING: El evento txtDescription.TextChanged se puede desencadenar cuando se inicializa el formulario. Haga clic aquí para obtener más información: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="88B12AE1-6DE0-48A0-86F1-60C0686C026A"'
    Private Sub txtDescription_TextChanged(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtDescription.TextChanged
        'set description fields
        SignedCode.Description = txtDescription.Text
    End Sub

    'UPGRADE_WARNING: El evento txtDescriptionURL.TextChanged se puede desencadenar cuando se inicializa el formulario. Haga clic aquí para obtener más información: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="88B12AE1-6DE0-48A0-86F1-60C0686C026A"'
    Private Sub txtDescriptionURL_TextChanged(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles txtDescriptionURL.TextChanged
        'set description URL fields
        SignedCode.DescriptionURL = txtDescriptionURL.Text
    End Sub

    Private Sub cmdExit_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdExit.Click
        'Clean up
        'UPGRADE_NOTE: El objeto st no se puede destruir hasta que no se realice la recolección de los elementos no utilizados. Haga clic aquí para obtener más información: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6E35BFF6-CD74-4B09-9689-3E1A43DF8969"'
        st = Nothing
        'UPGRADE_NOTE: El objeto certs no se puede destruir hasta que no se realice la recolección de los elementos no utilizados. Haga clic aquí para obtener más información: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6E35BFF6-CD74-4B09-9689-3E1A43DF8969"'
        certs = Nothing
        'UPGRADE_NOTE: El objeto selectedCerts no se puede destruir hasta que no se realice la recolección de los elementos no utilizados. Haga clic aquí para obtener más información: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6E35BFF6-CD74-4B09-9689-3E1A43DF8969"'
        selectedCerts = Nothing
        'UPGRADE_NOTE: El objeto cert no se puede destruir hasta que no se realice la recolección de los elementos no utilizados. Haga clic aquí para obtener más información: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6E35BFF6-CD74-4B09-9689-3E1A43DF8969"'
        cert = Nothing
        'UPGRADE_NOTE: El objeto Signer no se puede destruir hasta que no se realice la recolección de los elementos no utilizados. Haga clic aquí para obtener más información: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6E35BFF6-CD74-4B09-9689-3E1A43DF8969"'
        Signer = Nothing
        'UPGRADE_NOTE: El objeto SignedCode no se puede destruir hasta que no se realice la recolección de los elementos no utilizados. Haga clic aquí para obtener más información: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6E35BFF6-CD74-4B09-9689-3E1A43DF8969"'
        SignedCode = Nothing
        End
    End Sub
End Class
¿Alguna solución?

Gracias.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)

Etiquetas: documento
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:22.