Как сохранить выбранный сертификат?
От: rayluke Россия  
Дата: 20.09.04 13:54
Оценка:
Добрый день!

Как сохранить выбранный сертификат в CAPICOM, не в смысле на диск, а получить идентификатор
с тем, чтобы потом получать его из Store по идентификатору?

Или же все умные программы типа Outlook сохраняют сертификаты на диск?

Вот пример кода:
        public void selectCertificateButton_Click( object o, System.EventArgs a) 
        {
            CAPICOM.StoreClass store = new CAPICOM.StoreClass();
            store.Open(
                CAPICOM.CAPICOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE,
                "My",
                CAPICOM.CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_EXISTING_ONLY |
                CAPICOM.CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_READ_ONLY
            );
            try 
            {
                CAPICOM.ICertificates selectedCertificates = ((CAPICOM.ICertificates2)store.Certificates).Select(
                    @"Выберите сертификат",
                    @"Выберите сертификат для использования.",
                    false
                    );
                CAPICOM.ICertificate2 selectedCertificate = (CAPICOM.ICertificate2) selectedCertificates[1];
                if(selectedCertificate.HasPrivateKey() == false) 
                {
                    System.Windows.Forms.MessageBox.Show(
                        @"Этот сертификат не имеет ассоциированного с собой закрытого ключа",
                        @"Ошибка выбора сертификата", 
                        System.Windows.Forms.MessageBoxButtons.OK, 
                        System.Windows.Forms.MessageBoxIcon.Stop
                    );
                    return;
                } else if (selectedCertificate.PublicKey().Algorithm.FriendlyName != "RSA") 
                {
                    System.Windows.Forms.MessageBox.Show(
                        @"Ключ, ассоциированный с этим сертификатом не является RSA ключом",
                        @"Неподходящий сертификат",
                        System.Windows.Forms.MessageBoxButtons.OK,
                        System.Windows.Forms.MessageBoxIcon.Stop
                    );            
                    return;
                }
                // КАК ЕГО СОХРАНИТЬ ТО???
            } 
            catch(System.Exception) 
            {
                System.Windows.Forms.MessageBox.Show(
                    @"Не удалось получить закрытый ключ. Вы выбрали сертификат?",
                    @"Ошибка выбора сертификата",
                    System.Windows.Forms.MessageBoxButtons.OK,
                    System.Windows.Forms.MessageBoxIcon.Stop
                );
            }

        }


С уважением,
Иван Рэйлюков
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.