Condividi tramite


Metodo SignData.Sign

[Il metodo Sign è disponibile per l'uso nei sistemi operativi specificati nella sezione Requisiti. Usare invece la classe SignedCms nello spazio dei nomi System.Security.Cryptography.Pkcs .

Il metodo Sign crea una firma digitale sul contenuto da firmare. Una firma digitale è costituita da un hash del contenuto da firmare tramite la chiave privata del firmatario. Questo metodo può essere usato solo dopo l'inizializzazione della proprietà SignedData.Content . Se il metodo Sign viene chiamato su un oggetto che ha già una firma, la firma precedente viene sostituita. La firma viene creata usando l'algoritmo di firma SHA1.

Sintassi

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

Parametri

Accedi [in, facoltativo]

Riferimento all'oggetto Signer del firmatario dei dati. L'oggetto Signer deve avere accesso alla chiave privata del certificato usato per firmare. Questo parametro può essere NULL; per altre informazioni, vedere Osservazioni.

bDetached [in, facoltativo]

Se True, i dati da firmare vengono scollegati; ovvero, il contenuto firmato non è incluso nell'ambito dell'oggetto firmato. Per verificare la firma sul contenuto scollegato, un'applicazione deve avere una copia del contenuto originale. Il contenuto scollegato viene spesso usato per ridurre le dimensioni di un oggetto firmato da inviare sul Web, se il destinatario del messaggio firmato ha una copia originale dei dati firmati. Il valore predefinito è False.

EncodingType [in, facoltativo]

Valore dell'enumerazione CAPICOM_ENCODING_TYPE che indica come i dati firmati devono essere codificati. Il valore predefinito è CAPICOM_ENCODE_BASE64. Questo parametro può avere uno dei valori seguenti.

Valore Significato
CAPICOM_ENCODE_ANY
Questo tipo di codifica viene usato solo quando i dati di input hanno un tipo di codifica sconosciuto. Se questo valore viene usato per specificare il tipo di codifica dell'output, CAPICOM_ENCODE_BASE64 verrà invece usato. Introdotta in CAPICOM 2.0.
CAPICOM_ENCODE_BASE64
I dati vengono salvati come stringa con codifica base64.
CAPICOM_ENCODE_BINARY
I dati vengono salvati come sequenza binaria pura.

 

Valore restituito

Questo metodo restituisce una stringa contenente i dati codificati e firmati.

Se questo metodo ha esito negativo, verrà generato un errore. L'oggetto Err conterrà informazioni aggiuntive sull'errore.

Commenti

Importante

Quando questo metodo viene chiamato da uno script Web, lo script deve usare la chiave privata per creare una firma digitale. Consentire ai siti Web non attendibili di usare la chiave privata è un rischio di sicurezza. Finestra di dialogo che chiede se il sito Web può usare la chiave privata viene visualizzata quando questo metodo viene chiamato per la prima volta. Se si consente allo script di usare la chiave privata per creare una firma digitale e selezionare "Non visualizzare di nuovo questa finestra di dialogo", la finestra di dialogo non verrà più visualizzata per qualsiasi script all'interno di tale dominio che usa la chiave privata per creare una firma digitale. Tuttavia, gli script esterni al dominio che tentano di usare la chiave privata per creare una firma digitale continueranno a causare la visualizzazione di questa finestra di dialogo. Se non si consente allo script di usare la chiave privata e selezionare "Non visualizzare di nuovo questa finestra di dialogo", gli script all'interno di tale dominio verranno rifiutati automaticamente la possibilità di usare la chiave privata per creare firme digitali.

 

Poiché la creazione di una firma digitale richiede l'uso di una chiave privata, le applicazioni basate sul Web che tentano di usare questo metodo richiedono richieste di interfaccia utente che consentono all'utente di approvare l'uso della chiave privata, per motivi di sicurezza.

I risultati seguenti si applicano al valore del parametro Signer :

  • Se il parametro Signer non è NULL, questo metodo usa la chiave privata puntata dal certificato associato per crittografare la firma. Se la chiave privata a cui punta il certificato non è disponibile, il metodo ha esito negativo.
  • Se il parametro Signer è NULL ed è presente esattamente un certificato nell'archivio my CURRENT_USER che ha accesso a una chiave privata, tale certificato viene usato per creare la firma.
  • Se il parametro Signer è NULL, il valore della proprietà Settings.EnablePromptForCertificateUI è true ed è presente più di un certificato nell'archivio my CURRENT_USER con una chiave privata disponibile, viene visualizzata una finestra di dialogo che consente all'utente di selezionare il certificato usato.
  • Se il parametro Signer è NULL e la proprietà Settings.EnablePromptForCertificateUI è false, il metodo ha esito negativo.
  • Se il parametro Signer è NULL e non esiste alcun certificato nell'archivio my CURRENT_USER con una chiave privata disponibile, il metodo ha esito negativo.

Requisiti

Requisito Valore
Componente ridistribuibile
CAPICOM 2.0 o versione successiva in Windows Server 2003 e Windows XP
DLL
Capicom.dll

Vedi anche

Oggetti di crittografia

SignedData