コード例 #1
0
        /// <summary>
        /// Добавить сертификат в хранилище из контейнера
        /// </summary>
        /// <param name="containerName"></param>
        /// <param name="isMachine"></param>
        /// <returns></returns>
        public Task <bool> AddCertificateToStore(string containerName, bool isMachine)
        {
            // Открываем контейнер.
            CspParameters cspParameters = new CspParameters(75)
            {
                KeyContainerName = containerName
            };
            Gost3410CryptoServiceProvider prov = new Gost3410CryptoServiceProvider(cspParameters);

            // Достаем из него сертификат
            X509Certificate2 cert = prov.ContainerCertificate;

            if (cert == null)
            {
                return(Task.FromResult(false));
            }

            // Открываем хранилище MY текущего пользователя.
            X509Store myStore = new X509Store(StoreName.My, StoreLocation.CurrentUser);

            myStore.Open(OpenFlags.ReadWrite);

            // Добавляем в него сертификат.
            cert.PrivateKey = prov;
            myStore.Add(cert);

            // Закрываем хранилище.
            myStore.Close();
            // Освобождаем ресурсы занятые провайдером.
            prov.Clear();

            return(Task.FromResult(true));
        }
コード例 #2
0
        /// <summary>
        /// Добаление контейнера закрытого ключа
        /// </summary>
        /// <param name="containerName"></param>
        /// <returns></returns>
        public Task <bool> AddContainer(string containerName)
        {
            // Открываем контейнер
            CspParameters cspParameters = new CspParameters(75)
            {
                KeyContainerName = containerName
            };
            Gost3410CryptoServiceProvider prov = new Gost3410CryptoServiceProvider(cspParameters);

            // Освобождаем ресурсы занятые провайдером.
            prov.Clear();

            return(Task.FromResult(true));
        }
コード例 #3
0
        /// <summary>
        /// Добавление сертификата в контейнер с закрытым ключом
        /// </summary>
        /// <param name="certName"></param>
        /// <param name="containerName"></param>
        /// <returns></returns>
        public Task <bool> AddCertificate(string certName, string containerName)
        {
            // Открываем контейнер
            CspParameters cspParameters = new CspParameters(75)
            {
                KeyContainerName = containerName
            };
            Gost3410CryptoServiceProvider prov = new Gost3410CryptoServiceProvider(cspParameters);

            // Достаем из него сертификат
            X509Certificate2 cert = new X509Certificate2(certName);

            prov.ContainerCertificate = cert;

            // Освобождаем ресурсы занятые провайдером.
            prov.Clear();

            return(Task.FromResult(true));
        }