Condividi tramite


Cosigning di un documento

[CAPICOM è un componente solo a 32 bit disponibile per l'uso nei sistemi operativi seguenti: Windows Server 2008, Windows Vista e Windows XP. Usare invece .NET Framework per implementare le funzionalità di sicurezza. Per altre informazioni, vedere Alternative all'uso di CAPICOM.

Un documento può essere firmato da più di un firmatario. Ciò accade quando, ad esempio, due o più parti firmano un contratto o un rapporto spese. Nell'esempio seguente viene ricevuto un documento già firmato da un secondo firmatario. Questo signer usa il metodo CoSign per collegare una firma aggiuntiva al documento.

Se si verifica un errore CAPICOM, viene restituito un valore negativo nella proprietà Err.Number . Per altre informazioni sui codici di errore CAPICOM, vedere CAPICOM_ERROR_CODE. Se il codice di errore nella proprietà Err.Number è un valore positivo, l'errore è un errore di Windows. Per informazioni sui codici di errore di Windows, vedere Winerror.h.

Nota

La cosigning di un documento richiede anche che il cosigner disponga di un certificato disponibile con una chiave privata per creare la firma. Se un firmatario non è specificato nella chiamata del metodo Sign e non è presente alcun certificato in CAPICOM_MY_STORE con una chiave privata associata, il metodo ha esito negativo. Se è presente un solo certificato in CAPICOM_MY_STORE con una chiave privata associata, vengono usati tale chiave e certificato. Se è presente più di un certificato utilizzabile, viene visualizzato un prompt per consentire all'utente di scegliere il certificato desiderato.

Se il metodo CoSign viene usato in un'applicazione basata sul Web, viene sempre visualizzato un prompt per ottenere l'autorizzazione dell'utente prima che venga creata una firma usando la chiave privata del firmatario.

 

Nell'esempio seguente, i file che contengono il documento da firmare e le firme correnti in tale documento vengono letti, la firma viene firmata e la nuova firma viene scritta in un file. Nell'esempio viene usata una firma scollegata con i dati firmati e la firma in file separati.

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