Create

Create(byte[], SecureString)

ErstelltCertificateHolder Objekt unter Verwendung des Byte-Arrays des PKCS12-Speichers und seines Passworts.

public static CertificateHolder Create(byte[] certBytes, SecureString password)
ParameterTypBeschreibung
certBytesByte[]Ein Byte-Array, das Daten aus einem X.509-Zertifikat enthält.
passwordSecureStringDas für den Zugriff auf die X.509-Zertifikatsdaten erforderliche Passwort.

Rückgabewert

Ein Beispiel fürCertificateHolder

Ausnahmen

AusnahmeBedingung
InvalidParameterExceptionWird geworfen, wenncertBytes IstNull
InvalidParameterExceptionWird geworfen, wennpassword IstNull
SecurityExceptionWird ausgelöst, wenn der PKCS12-Speicher keine Aliase enthält
IOExceptionWird ausgelöst, wenn das Passwort falsch ist oder die Datei beschädigt ist.

Beispiele

Zeigt, wie CertificateHolder-Objekte erstellt werden.

// Nachfolgend finden Sie vier Möglichkeiten zum Erstellen von CertificateHolder-Objekten.
// 1 – Laden Sie eine PKCS #12-Datei in ein Byte-Array und wenden Sie ihr Passwort an:
byte[] certBytes = File.ReadAllBytes(MyDir + "morzal.pfx");
CertificateHolder.Create(certBytes, "aw");

// 2 – Laden Sie eine PKCS #12-Datei in ein Byte-Array und wenden Sie ein sicheres Passwort an:
SecureString password = new NetworkCredential("", "aw").SecurePassword;
CertificateHolder.Create(certBytes, password);

// Wenn das Zertifikat private Schlüssel hat, die Aliasen entsprechen,
// Wir können die Aliase verwenden, um ihre jeweiligen Schlüssel abzurufen. Zuerst prüfen wir, ob gültige Aliase vorhanden sind.
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 – Verwenden Sie einen gültigen Alias:
CertificateHolder.Create(MyDir + "morzal.pfx", "aw", "c20be521-11ea-4976-81ed-865fbbfc9f24");

// 4 – Übergeben Sie „null“ als Alias, um den ersten verfügbaren Alias zu verwenden, der einen privaten Schlüssel zurückgibt:
CertificateHolder.Create(MyDir + "morzal.pfx", "aw", null);

Siehe auch


Create(byte[], string)

ErstelltCertificateHolder Objekt unter Verwendung des Byte-Arrays des PKCS12-Speichers und seines Passworts.

public static CertificateHolder Create(byte[] certBytes, string password)
ParameterTypBeschreibung
certBytesByte[]Ein Byte-Array, das Daten aus einem X.509-Zertifikat enthält.
passwordStringDas für den Zugriff auf die X.509-Zertifikatsdaten erforderliche Passwort.

Rückgabewert

Ein Beispiel fürCertificateHolder

Ausnahmen

AusnahmeBedingung
InvalidParameterExceptionWird geworfen, wenncertBytes IstNull
InvalidParameterExceptionWird geworfen, wennpassword IstNull
SecurityExceptionWird ausgelöst, wenn der PKCS12-Speicher keine Aliase enthält
IOExceptionWird ausgelöst, wenn das Passwort falsch ist oder die Datei beschädigt ist.

Beispiele

Zeigt, wie CertificateHolder-Objekte erstellt werden.

// Nachfolgend finden Sie vier Möglichkeiten zum Erstellen von CertificateHolder-Objekten.
// 1 – Laden Sie eine PKCS #12-Datei in ein Byte-Array und wenden Sie ihr Passwort an:
byte[] certBytes = File.ReadAllBytes(MyDir + "morzal.pfx");
CertificateHolder.Create(certBytes, "aw");

// 2 – Laden Sie eine PKCS #12-Datei in ein Byte-Array und wenden Sie ein sicheres Passwort an:
SecureString password = new NetworkCredential("", "aw").SecurePassword;
CertificateHolder.Create(certBytes, password);

// Wenn das Zertifikat private Schlüssel hat, die Aliasen entsprechen,
// Wir können die Aliase verwenden, um ihre jeweiligen Schlüssel abzurufen. Zuerst prüfen wir, ob gültige Aliase vorhanden sind.
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 – Verwenden Sie einen gültigen Alias:
CertificateHolder.Create(MyDir + "morzal.pfx", "aw", "c20be521-11ea-4976-81ed-865fbbfc9f24");

// 4 – Übergeben Sie „null“ als Alias, um den ersten verfügbaren Alias zu verwenden, der einen privaten Schlüssel zurückgibt:
CertificateHolder.Create(MyDir + "morzal.pfx", "aw", null);

Siehe auch


Create(string, string)

ErstelltCertificateHolder Objekt unter Verwendung des Pfads zum PKCS12-Speicher und seines Passworts.

public static CertificateHolder Create(string fileName, string password)
ParameterTypBeschreibung
fileNameStringDer Name einer Zertifikatsdatei.
passwordStringDas für den Zugriff auf die X.509-Zertifikatsdaten erforderliche Passwort.

Rückgabewert

Ein Beispiel fürCertificateHolder

Ausnahmen

AusnahmeBedingung
InvalidParameterExceptionWird geworfen, wennfileName IstNull
InvalidParameterExceptionWird geworfen, wennpassword IstNull
SecurityExceptionWird ausgelöst, wenn der PKCS12-Speicher keine Aliase enthält
IOExceptionWird ausgelöst, wenn das Passwort falsch ist oder die Datei beschädigt ist.

Beispiele

Zeigt, wie man Dokumente digital signiert.

// Erstellen Sie ein X.509-Zertifikat aus einem PKCS#12-Speicher, das einen privaten Schlüssel enthalten sollte.
CertificateHolder certificateHolder = CertificateHolder.Create(MyDir + "morzal.pfx", "aw");

// Erstellen Sie einen Kommentar und ein Datum, das mit unserer neuen digitalen Signatur angewendet wird.
SignOptions signOptions = new SignOptions
{
    Comments = "My comment", 
    SignTime = DateTime.Now
};

// Über einen Dateistream ein unsigniertes Dokument aus dem lokalen Dateisystem übernehmen,
// dann eine signierte Kopie davon erstellen, die durch den Dateinamen des Ausgabedateistreams bestimmt wird.
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);
    }
}

Siehe auch


Create(string, string, string)

ErstelltCertificateHolder Objekt unter Verwendung des Pfads zum PKCS12-Speicher, seines Passworts und des Alias, mit dem der private Schlüssel und das Zertifikat gefunden werden.

public static CertificateHolder Create(string fileName, string password, string alias)
ParameterTypBeschreibung
fileNameStringDer Name einer Zertifikatsdatei.
passwordStringDas für den Zugriff auf die X.509-Zertifikatsdaten erforderliche Passwort.
aliasStringDer zugehörige Alias für ein Zertifikat und seinen privaten Schlüssel

Rückgabewert

Ein Beispiel fürCertificateHolder

Ausnahmen

AusnahmeBedingung
InvalidParameterExceptionWird geworfen, wennfileName IstNull
InvalidParameterExceptionWird geworfen, wennpassword IstNull
SecurityExceptionWird ausgelöst, wenn der PKCS12-Speicher keine Aliase enthält
IOExceptionWird ausgelöst, wenn das Passwort falsch ist oder die Datei beschädigt ist.
SecurityExceptionWird ausgelöst, wenn kein privater Schlüssel mit dem angegebenen Alias vorhanden ist

Beispiele

Zeigt, wie CertificateHolder-Objekte erstellt werden.

// Nachfolgend finden Sie vier Möglichkeiten zum Erstellen von CertificateHolder-Objekten.
// 1 – Laden Sie eine PKCS #12-Datei in ein Byte-Array und wenden Sie ihr Passwort an:
byte[] certBytes = File.ReadAllBytes(MyDir + "morzal.pfx");
CertificateHolder.Create(certBytes, "aw");

// 2 – Laden Sie eine PKCS #12-Datei in ein Byte-Array und wenden Sie ein sicheres Passwort an:
SecureString password = new NetworkCredential("", "aw").SecurePassword;
CertificateHolder.Create(certBytes, password);

// Wenn das Zertifikat private Schlüssel hat, die Aliasen entsprechen,
// Wir können die Aliase verwenden, um ihre jeweiligen Schlüssel abzurufen. Zuerst prüfen wir, ob gültige Aliase vorhanden sind.
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 – Verwenden Sie einen gültigen Alias:
CertificateHolder.Create(MyDir + "morzal.pfx", "aw", "c20be521-11ea-4976-81ed-865fbbfc9f24");

// 4 – Übergeben Sie „null“ als Alias, um den ersten verfügbaren Alias zu verwenden, der einen privaten Schlüssel zurückgibt:
CertificateHolder.Create(MyDir + "morzal.pfx", "aw", null);

Siehe auch