Create

Create(byte[], SecureString)

CreaCertificateHolder oggetto che utilizza l’array di byte dell’archivio PKCS12 e la relativa password.

public static CertificateHolder Create(byte[] certBytes, SecureString password)
ParametroTipoDescrizione
certBytesByte[]Una matrice di byte che contiene i dati di un certificato X.509.
passwordSecureStringLa password richiesta per accedere ai dati del certificato X.509.

Valore di ritorno

Un’istanza diCertificateHolder

Eccezioni

eccezionecondizione
InvalidParameterExceptionGettato secertBytes Ènullo
InvalidParameterExceptionGettato sepassword Ènullo
SecurityExceptionEmesso se l’archivio PKCS12 non contiene alias
IOExceptionEmesso se è presente una password errata o un file danneggiato.

Esempi

Mostra come creare oggetti CertificateHolder.

// Di seguito sono riportati quattro modi per creare oggetti CertificateHolder.
// 1 - Carica un file PKCS #12 in un array di byte e applica la sua password:
byte[] certBytes = File.ReadAllBytes(MyDir + "morzal.pfx");
CertificateHolder.Create(certBytes, "aw");

// 2 - Carica un file PKCS #12 in un array di byte e applica una password sicura:
SecureString password = new NetworkCredential("", "aw").SecurePassword;
CertificateHolder.Create(certBytes, password);

// Se il certificato ha chiavi private corrispondenti ad alias,
// possiamo usare gli alias per recuperare le rispettive chiavi. Innanzitutto, controlleremo gli alias validi.
using (FileStream certStream = new FileStream(MyDir + "morzal.pfx", FileMode.Open))
{
    Pkcs12Store pkcs12Store = new Pkcs12StoreBuilder().Build();
    pkcs12Store.Load(certStream, "aw".ToCharArray());
    IEnumerator enumerator = pkcs12Store.Aliases.GetEnumerator();

    while (enumerator.MoveNext())
    {
        if (enumerator.Current != null)
        {
            string currentAlias = enumerator.Current.ToString();
            if (pkcs12Store.IsKeyEntry(currentAlias) && pkcs12Store.GetKey(currentAlias).Key.IsPrivate)
            {
                Console.WriteLine($"Valid alias found: {enumerator.Current}");
            }
        }
    }
}

// 3 - Utilizza un alias valido:
CertificateHolder.Create(MyDir + "morzal.pfx", "aw", "c20be521-11ea-4976-81ed-865fbbfc9f24");

// 4 - Passa "null" come alias per utilizzare il primo alias disponibile che restituisce una chiave privata:
CertificateHolder.Create(MyDir + "morzal.pfx", "aw", null);

Guarda anche


Create(byte[], string)

CreaCertificateHolder oggetto che utilizza l’array di byte dell’archivio PKCS12 e la relativa password.

public static CertificateHolder Create(byte[] certBytes, string password)
ParametroTipoDescrizione
certBytesByte[]Una matrice di byte che contiene i dati di un certificato X.509.
passwordStringLa password richiesta per accedere ai dati del certificato X.509.

Valore di ritorno

Un’istanza diCertificateHolder

Eccezioni

eccezionecondizione
InvalidParameterExceptionGettato secertBytes Ènullo
InvalidParameterExceptionGettato sepassword Ènullo
SecurityExceptionEmesso se l’archivio PKCS12 non contiene alias
IOExceptionEmesso se è presente una password errata o un file danneggiato.

Esempi

Mostra come creare oggetti CertificateHolder.

// Di seguito sono riportati quattro modi per creare oggetti CertificateHolder.
// 1 - Carica un file PKCS #12 in un array di byte e applica la sua password:
byte[] certBytes = File.ReadAllBytes(MyDir + "morzal.pfx");
CertificateHolder.Create(certBytes, "aw");

// 2 - Carica un file PKCS #12 in un array di byte e applica una password sicura:
SecureString password = new NetworkCredential("", "aw").SecurePassword;
CertificateHolder.Create(certBytes, password);

// Se il certificato ha chiavi private corrispondenti ad alias,
// possiamo usare gli alias per recuperare le rispettive chiavi. Innanzitutto, controlleremo gli alias validi.
using (FileStream certStream = new FileStream(MyDir + "morzal.pfx", FileMode.Open))
{
    Pkcs12Store pkcs12Store = new Pkcs12StoreBuilder().Build();
    pkcs12Store.Load(certStream, "aw".ToCharArray());
    IEnumerator enumerator = pkcs12Store.Aliases.GetEnumerator();

    while (enumerator.MoveNext())
    {
        if (enumerator.Current != null)
        {
            string currentAlias = enumerator.Current.ToString();
            if (pkcs12Store.IsKeyEntry(currentAlias) && pkcs12Store.GetKey(currentAlias).Key.IsPrivate)
            {
                Console.WriteLine($"Valid alias found: {enumerator.Current}");
            }
        }
    }
}

// 3 - Utilizza un alias valido:
CertificateHolder.Create(MyDir + "morzal.pfx", "aw", "c20be521-11ea-4976-81ed-865fbbfc9f24");

// 4 - Passa "null" come alias per utilizzare il primo alias disponibile che restituisce una chiave privata:
CertificateHolder.Create(MyDir + "morzal.pfx", "aw", null);

Guarda anche


Create(string, string)

CreaCertificateHolder oggetto utilizzando il percorso dell’archivio PKCS12 e la relativa password.

public static CertificateHolder Create(string fileName, string password)
ParametroTipoDescrizione
fileNameStringIl nome di un file di certificato.
passwordStringLa password richiesta per accedere ai dati del certificato X.509.

Valore di ritorno

Un’istanza diCertificateHolder

Eccezioni

eccezionecondizione
InvalidParameterExceptionGettato sefileName Ènullo
InvalidParameterExceptionGettato sepassword Ènullo
SecurityExceptionEmesso se l’archivio PKCS12 non contiene alias
IOExceptionEmesso se è presente una password errata o un file danneggiato.

Esempi

Mostra come firmare digitalmente i documenti.

// Crea un certificato X.509 da un archivio PKCS#12, che dovrebbe contenere una chiave privata.
CertificateHolder certificateHolder = CertificateHolder.Create(MyDir + "morzal.pfx", "aw");

// Crea un commento e una data che verranno applicati con la nostra nuova firma digitale.
SignOptions signOptions = new SignOptions
{
    Comments = "My comment", 
    SignTime = DateTime.Now
};

// Preleva un documento non firmato dal file system locale tramite un flusso di file,
// quindi crea una copia firmata determinata dal nome file del flusso di file di output.
using (Stream streamIn = new FileStream(MyDir + "Document.docx", FileMode.Open))
{
    using (Stream streamOut = new FileStream(ArtifactsDir + "DigitalSignatureUtil.SignDocument.docx", FileMode.OpenOrCreate))
    {
        DigitalSignatureUtil.Sign(streamIn, streamOut, certificateHolder, signOptions);
    }
}

Guarda anche


Create(string, string, string)

CreaCertificateHolder oggetto utilizzando il percorso dell’archivio PKCS12, la relativa password e l’alias utilizzando la chiave privata e il certificato che verranno trovati.

public static CertificateHolder Create(string fileName, string password, string alias)
ParametroTipoDescrizione
fileNameStringIl nome di un file di certificato.
passwordStringLa password richiesta per accedere ai dati del certificato X.509.
aliasStringL’alias associato a un certificato e alla relativa chiave privata

Valore di ritorno

Un’istanza diCertificateHolder

Eccezioni

eccezionecondizione
InvalidParameterExceptionGettato sefileName Ènullo
InvalidParameterExceptionGettato sepassword Ènullo
SecurityExceptionEmesso se l’archivio PKCS12 non contiene alias
IOExceptionEmesso se è presente una password errata o un file danneggiato.
SecurityExceptionEmesso se non è presente una chiave privata con l’alias specificato

Esempi

Mostra come creare oggetti CertificateHolder.

// Di seguito sono riportati quattro modi per creare oggetti CertificateHolder.
// 1 - Carica un file PKCS #12 in un array di byte e applica la sua password:
byte[] certBytes = File.ReadAllBytes(MyDir + "morzal.pfx");
CertificateHolder.Create(certBytes, "aw");

// 2 - Carica un file PKCS #12 in un array di byte e applica una password sicura:
SecureString password = new NetworkCredential("", "aw").SecurePassword;
CertificateHolder.Create(certBytes, password);

// Se il certificato ha chiavi private corrispondenti ad alias,
// possiamo usare gli alias per recuperare le rispettive chiavi. Innanzitutto, controlleremo gli alias validi.
using (FileStream certStream = new FileStream(MyDir + "morzal.pfx", FileMode.Open))
{
    Pkcs12Store pkcs12Store = new Pkcs12StoreBuilder().Build();
    pkcs12Store.Load(certStream, "aw".ToCharArray());
    IEnumerator enumerator = pkcs12Store.Aliases.GetEnumerator();

    while (enumerator.MoveNext())
    {
        if (enumerator.Current != null)
        {
            string currentAlias = enumerator.Current.ToString();
            if (pkcs12Store.IsKeyEntry(currentAlias) && pkcs12Store.GetKey(currentAlias).Key.IsPrivate)
            {
                Console.WriteLine($"Valid alias found: {enumerator.Current}");
            }
        }
    }
}

// 3 - Utilizza un alias valido:
CertificateHolder.Create(MyDir + "morzal.pfx", "aw", "c20be521-11ea-4976-81ed-865fbbfc9f24");

// 4 - Passa "null" come alias per utilizzare il primo alias disponibile che restituisce una chiave privata:
CertificateHolder.Create(MyDir + "morzal.pfx", "aw", null);

Guarda anche