Create

Create(byte[], SecureString)

SkaparCertificateHolder objekt som använder byte-arrayen i PKCS12-arkivet och dess lösenord.

public static CertificateHolder Create(byte[] certBytes, SecureString password)
ParameterTypBeskrivning
certBytesByte[]En byte-array som innehåller data från ett X.509-certifikat.
passwordSecureStringLösenordet som krävs för att komma åt X.509-certifikatdata.

Returvärde

Ett exempel påCertificateHolder

Undantag

undantagskick
InvalidParameterExceptionKastas omcertBytes ärnull
InvalidParameterExceptionKastas ompassword ärnull
SecurityExceptionKastas om PKCS12-butiken inte innehåller några alias
IOExceptionKastas om det finns fel lösenord eller skadad fil.

Exempel

Visar hur man skapar CertificateHolder-objekt.

// Nedan finns fyra sätt att skapa CertificateHolder-objekt.
// 1 - Ladda en PKCS #12-fil i en byte-array och använd dess lösenord:
byte[] certBytes = File.ReadAllBytes(MyDir + "morzal.pfx");
CertificateHolder.Create(certBytes, "aw");

// 2 - Ladda en PKCS #12-fil i en byte-array och använd ett säkert lösenord:
SecureString password = new NetworkCredential("", "aw").SecurePassword;
CertificateHolder.Create(certBytes, password);

// Om certifikatet har privata nycklar som motsvarar alias,
// vi kan använda aliasen för att hämta deras respektive nycklar. Först kommer vi att leta efter giltiga alias.
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 - Använd ett giltigt alias:
CertificateHolder.Create(MyDir + "morzal.pfx", "aw", "c20be521-11ea-4976-81ed-865fbbfc9f24");

// 4 - Skicka "null" som alias för att använda det första tillgängliga aliaset som returnerar en privat nyckel:
CertificateHolder.Create(MyDir + "morzal.pfx", "aw", null);

Se även


Create(byte[], string)

SkaparCertificateHolder objekt som använder byte-arrayen i PKCS12-arkivet och dess lösenord.

public static CertificateHolder Create(byte[] certBytes, string password)
ParameterTypBeskrivning
certBytesByte[]En byte-array som innehåller data från ett X.509-certifikat.
passwordStringLösenordet som krävs för att komma åt X.509-certifikatdata.

Returvärde

Ett exempel påCertificateHolder

Undantag

undantagskick
InvalidParameterExceptionKastas omcertBytes ärnull
InvalidParameterExceptionKastas ompassword ärnull
SecurityExceptionKastas om PKCS12-butiken inte innehåller några alias
IOExceptionKastas om det finns fel lösenord eller skadad fil.

Exempel

Visar hur man skapar CertificateHolder-objekt.

// Nedan finns fyra sätt att skapa CertificateHolder-objekt.
// 1 - Ladda en PKCS #12-fil i en byte-array och använd dess lösenord:
byte[] certBytes = File.ReadAllBytes(MyDir + "morzal.pfx");
CertificateHolder.Create(certBytes, "aw");

// 2 - Ladda en PKCS #12-fil i en byte-array och använd ett säkert lösenord:
SecureString password = new NetworkCredential("", "aw").SecurePassword;
CertificateHolder.Create(certBytes, password);

// Om certifikatet har privata nycklar som motsvarar alias,
// vi kan använda aliasen för att hämta deras respektive nycklar. Först kommer vi att leta efter giltiga alias.
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 - Använd ett giltigt alias:
CertificateHolder.Create(MyDir + "morzal.pfx", "aw", "c20be521-11ea-4976-81ed-865fbbfc9f24");

// 4 - Skicka "null" som alias för att använda det första tillgängliga aliaset som returnerar en privat nyckel:
CertificateHolder.Create(MyDir + "morzal.pfx", "aw", null);

Se även


Create(string, string)

SkaparCertificateHolder objekt som använder sökvägen till PKCS12-butiken och dess lösenord.

public static CertificateHolder Create(string fileName, string password)
ParameterTypBeskrivning
fileNameStringNamnet på en certifikatfil.
passwordStringLösenordet som krävs för att komma åt X.509-certifikatdata.

Returvärde

Ett exempel påCertificateHolder

Undantag

undantagskick
InvalidParameterExceptionKastas omfileName ärnull
InvalidParameterExceptionKastas ompassword ärnull
SecurityExceptionKastas om PKCS12-butiken inte innehåller några alias
IOExceptionKastas om det finns fel lösenord eller skadad fil.

Exempel

Visar hur man digitalt signerar dokument.

// Skapa ett X.509-certifikat från en PKCS#12-butik, som bör innehålla en privat nyckel.
CertificateHolder certificateHolder = CertificateHolder.Create(MyDir + "morzal.pfx", "aw");

// Skapa en kommentar och ett datum som kommer att tillämpas med vår nya digitala signatur.
SignOptions signOptions = new SignOptions
{
    Comments = "My comment", 
    SignTime = DateTime.Now
};

// Ta ett osignerat dokument från det lokala filsystemet via en filström,
// skapa sedan en signerad kopia av den som bestäms av filnamnet på utdatafilströmmen.
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);
    }
}

Se även


Create(string, string, string)

SkaparCertificateHolder objekt som använder sökvägen till PKCS12-arkivet, dess lösenord och alias genom att använda vilken privat nyckel och certifikat som kommer att hittas.

public static CertificateHolder Create(string fileName, string password, string alias)
ParameterTypBeskrivning
fileNameStringNamnet på en certifikatfil.
passwordStringLösenordet som krävs för att komma åt X.509-certifikatdata.
aliasStringDet associerade aliaset för ett certifikat och dess privata nyckel

Returvärde

Ett exempel påCertificateHolder

Undantag

undantagskick
InvalidParameterExceptionKastas omfileName ärnull
InvalidParameterExceptionKastas ompassword ärnull
SecurityExceptionKastas om PKCS12-butiken inte innehåller några alias
IOExceptionKastas om det finns fel lösenord eller skadad fil.
SecurityExceptionKastas om det inte finns någon privat nyckel med det givna aliaset

Exempel

Visar hur man skapar CertificateHolder-objekt.

// Nedan finns fyra sätt att skapa CertificateHolder-objekt.
// 1 - Ladda en PKCS #12-fil i en byte-array och använd dess lösenord:
byte[] certBytes = File.ReadAllBytes(MyDir + "morzal.pfx");
CertificateHolder.Create(certBytes, "aw");

// 2 - Ladda en PKCS #12-fil i en byte-array och använd ett säkert lösenord:
SecureString password = new NetworkCredential("", "aw").SecurePassword;
CertificateHolder.Create(certBytes, password);

// Om certifikatet har privata nycklar som motsvarar alias,
// vi kan använda aliasen för att hämta deras respektive nycklar. Först kommer vi att leta efter giltiga alias.
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 - Använd ett giltigt alias:
CertificateHolder.Create(MyDir + "morzal.pfx", "aw", "c20be521-11ea-4976-81ed-865fbbfc9f24");

// 4 - Skicka "null" som alias för att använda det första tillgängliga aliaset som returnerar en privat nyckel:
CertificateHolder.Create(MyDir + "morzal.pfx", "aw", null);

Se även