Create

Create(byte[], SecureString)

СоздаетCertificateHolder объект, использующий байтовый массив хранилища PKCS12 и его пароль.

public static CertificateHolder Create(byte[] certBytes, SecureString password)
ПараметрТипОписание
certBytesByte[]Массив байтов, содержащий данные из сертификата X.509.
passwordSecureStringПароль, необходимый для доступа к данным сертификата X.509.

Возвращаемое значение

ПримерCertificateHolder

Исключения

исключениеусловие
InvalidParameterExceptionВыброшено, еслиcertBytes являетсянулевой
InvalidParameterExceptionВыброшено, еслиpassword являетсянулевой
SecurityExceptionВызывается, если хранилище PKCS12 не содержит псевдонимов.
IOExceptionВызывается, если введен неверный пароль или файл поврежден.

Примеры

Показывает, как создавать объекты CertificateHolder.

// Ниже приведены четыре способа создания объектов CertificateHolder.
// 1 — Загрузить файл PKCS #12 в массив байтов и применить его пароль:
byte[] certBytes = File.ReadAllBytes(MyDir + "morzal.pfx");
CertificateHolder.Create(certBytes, "aw");

// 2 — Загрузить файл PKCS #12 в массив байтов и применить безопасный пароль:
SecureString password = new NetworkCredential("", "aw").SecurePassword;
CertificateHolder.Create(certBytes, password);

// Если сертификат имеет закрытые ключи, соответствующие псевдонимам,
// мы можем использовать псевдонимы для извлечения соответствующих им ключей. Сначала мы проверим допустимые псевдонимы.
using (FileStream certStream = new FileStream(MyDir + "morzal.pfx", FileMode.Open))
{
    Pkcs12Store pkcs12Store = new Pkcs12StoreBuilder().Build();
    pkcs12Store.Load(certStream, "aw".ToCharArray());
    foreach (string currentAlias in pkcs12Store.Aliases)
    {
        if ((currentAlias != null) &&
            (pkcs12Store.IsKeyEntry(currentAlias) &&
             pkcs12Store.GetKey(currentAlias).Key.IsPrivate))
        {
            Console.WriteLine($"Valid alias found: {currentAlias}");
        }
    }
}

// 3 - Используйте допустимый псевдоним:
CertificateHolder.Create(MyDir + "morzal.pfx", "aw", "c20be521-11ea-4976-81ed-865fbbfc9f24");

// 4 - Передайте «null» в качестве псевдонима, чтобы использовать первый доступный псевдоним, который возвращает закрытый ключ:
CertificateHolder.Create(MyDir + "morzal.pfx", "aw", null);

Смотрите также


Create(byte[], string)

СоздаетCertificateHolder объект, использующий байтовый массив хранилища PKCS12 и его пароль.

public static CertificateHolder Create(byte[] certBytes, string password)
ПараметрТипОписание
certBytesByte[]Массив байтов, содержащий данные из сертификата X.509.
passwordStringПароль, необходимый для доступа к данным сертификата X.509.

Возвращаемое значение

ПримерCertificateHolder

Исключения

исключениеусловие
InvalidParameterExceptionВыброшено, еслиcertBytes являетсянулевой
InvalidParameterExceptionВыброшено, еслиpassword являетсянулевой
SecurityExceptionВызывается, если хранилище PKCS12 не содержит псевдонимов.
IOExceptionВызывается, если введен неверный пароль или файл поврежден.

Примеры

Показывает, как создавать объекты CertificateHolder.

// Ниже приведены четыре способа создания объектов CertificateHolder.
// 1 — Загрузить файл PKCS #12 в массив байтов и применить его пароль:
byte[] certBytes = File.ReadAllBytes(MyDir + "morzal.pfx");
CertificateHolder.Create(certBytes, "aw");

// 2 — Загрузить файл PKCS #12 в массив байтов и применить безопасный пароль:
SecureString password = new NetworkCredential("", "aw").SecurePassword;
CertificateHolder.Create(certBytes, password);

// Если сертификат имеет закрытые ключи, соответствующие псевдонимам,
// мы можем использовать псевдонимы для извлечения соответствующих им ключей. Сначала мы проверим допустимые псевдонимы.
using (FileStream certStream = new FileStream(MyDir + "morzal.pfx", FileMode.Open))
{
    Pkcs12Store pkcs12Store = new Pkcs12StoreBuilder().Build();
    pkcs12Store.Load(certStream, "aw".ToCharArray());
    foreach (string currentAlias in pkcs12Store.Aliases)
    {
        if ((currentAlias != null) &&
            (pkcs12Store.IsKeyEntry(currentAlias) &&
             pkcs12Store.GetKey(currentAlias).Key.IsPrivate))
        {
            Console.WriteLine($"Valid alias found: {currentAlias}");
        }
    }
}

// 3 - Используйте допустимый псевдоним:
CertificateHolder.Create(MyDir + "morzal.pfx", "aw", "c20be521-11ea-4976-81ed-865fbbfc9f24");

// 4 - Передайте «null» в качестве псевдонима, чтобы использовать первый доступный псевдоним, который возвращает закрытый ключ:
CertificateHolder.Create(MyDir + "morzal.pfx", "aw", null);

Смотрите также


Create(string, string)

СоздаетCertificateHolderобъект, использующий путь к хранилищу PKCS12 и его пароль.

public static CertificateHolder Create(string fileName, string password)
ПараметрТипОписание
fileNameStringИмя файла сертификата.
passwordStringПароль, необходимый для доступа к данным сертификата X.509.

Возвращаемое значение

ПримерCertificateHolder

Исключения

исключениеусловие
InvalidParameterExceptionВыброшено, еслиfileName являетсянулевой
InvalidParameterExceptionВыброшено, еслиpassword являетсянулевой
SecurityExceptionВызывается, если хранилище PKCS12 не содержит псевдонимов.
IOExceptionВызывается, если введен неверный пароль или файл поврежден.

Примеры

Показывает, как подписывать документы цифровой подписью.

// Создайте сертификат X.509 из хранилища PKCS#12, который должен содержать закрытый ключ.
CertificateHolder certificateHolder = CertificateHolder.Create(MyDir + "morzal.pfx", "aw");

// Создайте комментарий и дату, которые будут применены к нашей новой цифровой подписи.
SignOptions signOptions = new SignOptions
{
    Comments = "My comment", 
    SignTime = DateTime.Now
};

// Берем неподписанный документ из локальной файловой системы через файловый поток,
// затем создаем его подписанную копию, определяемую именем файла выходного потока.
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);
    }
}

Смотрите также


Create(string, string, string)

СоздаетCertificateHolder объект, использующий путь к хранилищу PKCS12, его пароль и псевдоним, с помощью которого будут найдены закрытый ключ и сертификат.

public static CertificateHolder Create(string fileName, string password, string alias)
ПараметрТипОписание
fileNameStringИмя файла сертификата.
passwordStringПароль, необходимый для доступа к данным сертификата X.509.
aliasStringСвязанный псевдоним для сертификата и его закрытый ключ

Возвращаемое значение

ПримерCertificateHolder

Исключения

исключениеусловие
InvalidParameterExceptionВыброшено, еслиfileName являетсянулевой
InvalidParameterExceptionВыброшено, еслиpassword являетсянулевой
SecurityExceptionВызывается, если хранилище PKCS12 не содержит псевдонимов.
IOExceptionВызывается, если введен неверный пароль или файл поврежден.
SecurityExceptionВызывается, если нет закрытого ключа с указанным псевдонимом

Примеры

Показывает, как создавать объекты CertificateHolder.

// Ниже приведены четыре способа создания объектов CertificateHolder.
// 1 — Загрузить файл PKCS #12 в массив байтов и применить его пароль:
byte[] certBytes = File.ReadAllBytes(MyDir + "morzal.pfx");
CertificateHolder.Create(certBytes, "aw");

// 2 — Загрузить файл PKCS #12 в массив байтов и применить безопасный пароль:
SecureString password = new NetworkCredential("", "aw").SecurePassword;
CertificateHolder.Create(certBytes, password);

// Если сертификат имеет закрытые ключи, соответствующие псевдонимам,
// мы можем использовать псевдонимы для извлечения соответствующих им ключей. Сначала мы проверим допустимые псевдонимы.
using (FileStream certStream = new FileStream(MyDir + "morzal.pfx", FileMode.Open))
{
    Pkcs12Store pkcs12Store = new Pkcs12StoreBuilder().Build();
    pkcs12Store.Load(certStream, "aw".ToCharArray());
    foreach (string currentAlias in pkcs12Store.Aliases)
    {
        if ((currentAlias != null) &&
            (pkcs12Store.IsKeyEntry(currentAlias) &&
             pkcs12Store.GetKey(currentAlias).Key.IsPrivate))
        {
            Console.WriteLine($"Valid alias found: {currentAlias}");
        }
    }
}

// 3 - Используйте допустимый псевдоним:
CertificateHolder.Create(MyDir + "morzal.pfx", "aw", "c20be521-11ea-4976-81ed-865fbbfc9f24");

// 4 - Передайте «null» в качестве псевдонима, чтобы использовать первый доступный псевдоним, который возвращает закрытый ключ:
CertificateHolder.Create(MyDir + "morzal.pfx", "aw", null);

Смотрите также