Возвращает или устанавливает флаг, указывающий, должен ли ключ храниться в CSP.

Пространство имен:  CryptoPro.Sharpei
Сборка:  CryptoPro.Sharpei.Base (в CryptoPro.Sharpei.Base.dll)

Синтаксис

Visual Basic
Public Property PersistKeyInCsp As Boolean
	Get
	Set
C#
public bool PersistKeyInCsp { get; set; }
Visual C++
public:
property bool PersistKeyInCsp {
	bool get ();
	void set (bool value);
}
JavaScript
function get_persistKeyInCsp();
function set_persistKeyInCsp(value);

Значение поля

trueTruetruetrue (True в Visual Basic), если ключ должен храниться в CSP, falseFalsefalsefalse (False в Visual Basic) - иначе.

Заметки

Используйте это свойство, если хотите хранить ключ в контейнере или хотите удалить существующий ключ.

При заданном имени контейнера в CspParameters cвойство PersistKeyInCsp устанавливается в trueTruetruetrue (True в Visual Basic) автоматически и имя испольузуется при инициализации Gost3410CryptoServiceProvider. Задать имя CSP можно используя свойство KeyContainerName()()()()

Если свойство PersistKeyInCsp установлено в trueTruetruetrue (True в Visual Basic) без инициализации Gost3410CryptoServiceProvider экземпляром класса CspParameters будет создано случайный контейнера, с приставкой "CLR" в имени.

Примеры

Пример работы с контейнером закрытого ключа.
Visual Basic Copy imageCopy Code
' Copyright (C) 2006-2012 Крипто-Про. Все права защищены.
'
' Этот файл содержит информацию, являющуюся
' собственностью компании Крипто Про.
' 
' Любая часть этого файла не может быть скопирована,
' исправлена, переведена на другие языки,
' локализована или модифицирована любым способом,
' откомпилирована, передана по сети с или на
' любую компьютерную систему без предварительного
' заключения соглашения с компанией Крипто Про.
' 
' Программный код, содержащийся в этом файле, предназначен
' исключительно для целей обучения и не может быть использован
' для защиты информации.
' 
' Компания Крипто-Про не несет никакой
' ответственности за функционирование этого кода.

Imports System
Imports System.Security.Cryptography
Imports CryptoPro.Sharpei

Class PersistKeyInCspSample
    Shared Sub Main()

        Dim KeyContainerName As String = "MyKeyContainer"

        'Создаем ключ и помещаем его в контейнер.  
        GostPersistKeyInCSP(KeyContainerName)

        'Удаляем ключ из контейнера.
        GostDeleteKeyInCSP(KeyContainerName)
    End Sub

    Shared Sub GostPersistKeyInCSP(ByVal ContainerName As String)
        Try

            ' Создаем новые CspParameters.  
            Dim cspParams As CspParameters = New CspParameters()

            ' Устанавливаем имя контейнера ключа.
            cspParams.KeyContainerName = ContainerName
            ' Устанавливаем тип CSP - ГОСТ-овый.
            cspParams.ProviderType = 75

            ' Создаем новый Gost3410CryptoServiceProvider, чтобы сгенерировать
            ' ключевую пару. 
            ' Свойство PersistKeyInCsp по умолчанию имеет значение true
            Dim gost As Gost3410CryptoServiceProvider = New Gost3410CryptoServiceProvider(cspParams)

            Console.WriteLine("Ключ помещен в контейнер {0}", ContainerName)

        Catch e As CryptographicException
            Console.WriteLine(e.Message)
        End Try
    End Sub

    Shared Sub GostDeleteKeyInCSP(ByVal ContainerName As String)

        Try

            ' Создаем новые CspParameters. 
            Dim cspParams As CspParameters = New CspParameters()

            ' Устанавливаем имя контейнера ключа.
            cspParams.KeyContainerName = ContainerName
            ' Устанавливаем тип CSP - ГОСТ-овый.
            cspParams.ProviderType = 75

            ' Создаем новый Gost3410CryptoServiceProvider, чтобы получить доступ к
            ' ключу в контейнере.
            Dim gost As Gost3410CryptoServiceProvider = _
                  New Gost3410CryptoServiceProvider(cspParams)

            ' Меняен значение свойства PersistKeyInCsp на false
            ' чтобы иметь возможность удалить ключ из контейнера.
            gost.PersistKeyInCsp = False

            ' Clear освобождает ресурсы и удаляет ключ из контейнера.
            gost.Clear()

            Console.WriteLine("Ключ удален из контейнера {0}", ContainerName)

        Catch e As CryptographicException
            Console.WriteLine(e.Message)
        End Try

    End Sub
End Class
C# Copy imageCopy Code
// Copyright (C) 2006-2012 Крипто-Про. Все права защищены.
//
// Этот файл содержит информацию, являющуюся
// собственностью компании Крипто-Про.
// 
// Любая часть этого файла не может быть скопирована,
// исправлена, переведена на другие языки,
// локализована или модифицирована любым способом,
// откомпилирована, передана по сети с или на
// любую компьютерную систему без предварительного
// заключения соглашения с компанией Крипто-Про.
// 
// Программный код, содержащийся в этом файле, предназначен
// исключительно для целей обучения и не может быть использован
// для защиты информации.
// 
// Компания Крипто-Про не несет никакой
// ответственности за функционирование этого кода.

// Пример работы с контейнером закрытого ключа.
//
// Данный пример:
// 1. Создает контейнер закрытого ключа с именем "MyKeyContainer"
// для ГОСТ-ового криптопровайдера.
// 2. Удаляет ключ из контейнера.

using System;
using System.Text;
using System.Security.Cryptography;

using CryptoPro.Sharpei;

namespace Samples.MySamples
{
    class PersistKeyInCspSample
    {
        static void Main()
        {

            string KeyContainerName = "MyKeyContainer";

            //Создаем ключ и помещаем его в контейнер.  
            GostPersistKeyInCSP(KeyContainerName);

            //Удаляем ключ из контейнера.
            GostDeleteKeyInCSP(KeyContainerName);
        }

        static void GostPersistKeyInCSP(string ContainerName)
        {
            try
            {
                // Создаем новые CspParameters.  
                CspParameters cspParams = new CspParameters();

                // Устанавливаем имя контейнера ключа.
                cspParams.KeyContainerName = ContainerName;
                // Устанавливаем тип CSP - ГОСТ-овый.
                cspParams.ProviderType = 75;

                //Создаем новый Gost3410CryptoServiceProvider, чтобы сгенерировать
                //ключевую пару. 
                //Свойство PersistKeyInCsp по умолчанию имеет значение true
                Gost3410CryptoServiceProvider gost = new Gost3410CryptoServiceProvider(cspParams);

                Console.WriteLine("Ключ помещен в контейнер \"{0}\".", ContainerName);
            }
            catch (CryptographicException e)
            {
                Console.WriteLine(e.Message);
            }
        }

        static void GostDeleteKeyInCSP(string ContainerName)
        {
            try
            {
                // Создаем новые CspParameters. 
                CspParameters cspParams = new CspParameters();

                // Устанавливаем имя контейнера ключа.
                cspParams.KeyContainerName = ContainerName;
                // Устанавливаем тип CSP - ГОСТ-овый.
                cspParams.ProviderType = 75;

                //Создаем новый Gost3410CryptoServiceProvider, чтобы получить доступ к
                //ключу в контейнере.
                Gost3410CryptoServiceProvider gost = new Gost3410CryptoServiceProvider(cspParams);

                //Меняен значение свойства PersistKeyInCsp на false
                //чтобы иметь возможность удалить ключ из контейнера.
                gost.PersistKeyInCsp = false;

                //Clear освобождает ресурсы и удаляет ключ из контейнера.
                gost.Clear();

                Console.WriteLine("Ключ удален из контейнера \"{0}\".", ContainerName);
            }
            catch (CryptographicException e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}

Разрешения

РазрешениеОписание
KeyContainerPermissionДля открытия существующего контейнера. Связанные перечисления: Open. Действия по обеспечению безопасности: Demand .
KeyContainerPermissionДля создания контейнера. Связанные перечисления: Create. Действия по обеспечению безопасности: Demand .
KeyContainerPermissionДля удаления контейнера. Связанные перечисления: Delete. Действия по обеспечению безопасности: Demand .

Версии CSP:

КриптоПро CSP 3.6 (начиная со сборки:5276)

См. также: