Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline tomparis  
#1 Оставлено : 20 марта 2012 г. 3:19:22(UTC)
tomparis

Статус: Новичок

Группы: Участники
Зарегистрирован: 20.03.2012(UTC)
Сообщений: 1
Откуда: Russia

Добрый день! Хочу удалить уже существующий криптоконтейнер:

Код:

        // проверка наличия криптоконтейнера
        if(CryptAcquireContext(&hCryptProv,"client",NULL,PROV_GOST_2001_DH,0)) {
                // удаление
                if(!CryptAcquireContext(&hCryptProv,"server",NULL,PROV_GOST_2001_DH,CRYPT_DELETEKEYSET)) {
                        DWORD err=GetLastError();
                        AnsiString str_err,desc;
                        str_err.printf("0x%08x",err);
                }
        }
        // делаем новый
        if(!CryptAcquireContext(&hCryptProv,"client",NULL,PROV_GOST_2001_DH,CRYPT_NEWKEYSET)) {
                DWORD err=GetLastError();
                        AnsiString str_err,desc;
                        str_err.printf("0x%08x",err);
                ShowMessage("Error in CryptAcquireContext in CRYPT_NEWKEYSET");
                Close();
        }


После CryptAcquireContext(CRYPT_DELETEKEYSET) выдает ошибку:"NTE_BAD_KEYSET";

После CryptAcquireContext(CRYPT_NEWKEYSET): "NTE_EXISTS".

Исходные данные:
Windows 7 x64
Borland C++ Builder 6
Крипто-Про 3.6.6497 (демонстрационная)

Железный дровосек от Micosoft молвит:

Цитата:

NTE_EXISTS (0X8009000F)
Контейнер ключа уже существует, но вы пытаетесь создать его. Не удалось выполнить предыдущие попытки открыть раздел с NTE_BAD_KEYSET, подразумевает, что запрещен доступ к контейнеру ключей.


ЧЯДНТ?
Offline Максим Коллегин  
#2 Оставлено : 20 марта 2012 г. 3:28:47(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,399
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 37 раз
Поблагодарили: 719 раз в 623 постах
А окошек при первом вызове не было? Про вставку носителя.
Знания в базе знаний, поддержка в техподдержке
Online Андрей Писарев  
#3 Оставлено : 20 марта 2012 г. 3:35:53(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,523
Мужчина
Российская Федерация

Сказал «Спасибо»: 555 раз
Поблагодарили: 2252 раз в 1757 постах
tomparis написал:
Добрый день! Хочу удалить уже существующий криптоконтейнер:

Код:

        // проверка наличия криптоконтейнера
        if(CryptAcquireContext(&hCryptProv,"client",NULL,PROV_GOST_2001_DH,0)) {
                // удаление
                if(!CryptAcquireContext(&hCryptProv,"server",NULL,PROV_GOST_2001_DH,CRYPT_DELETEKEYSET)) {
                        DWORD err=GetLastError();
                        AnsiString str_err,desc;
                        str_err.printf("0x%08x",err);
                }
        }
        // делаем новый
        if(!CryptAcquireContext(&hCryptProv,"client",NULL,PROV_GOST_2001_DH,CRYPT_NEWKEYSET)) {
                DWORD err=GetLastError();
                        AnsiString str_err,desc;
                        str_err.printf("0x%08x",err);
                ShowMessage("Error in CryptAcquireContext in CRYPT_NEWKEYSET");
                Close();
        }


После CryptAcquireContext(CRYPT_DELETEKEYSET) выдает ошибку:"NTE_BAD_KEYSET";

После CryptAcquireContext(CRYPT_NEWKEYSET): "NTE_EXISTS".

Исходные данные:
Windows 7 x64
Borland C++ Builder 6
Крипто-Про 3.6.6497 (демонстрационная)

Железный дровосек от Micosoft молвит:

Цитата:

NTE_EXISTS (0X8009000F)
Контейнер ключа уже существует, но вы пытаетесь создать его. Не удалось выполнить предыдущие попытки открыть раздел с NTE_BAD_KEYSET, подразумевает, что запрещен доступ к контейнеру ключей.


ЧЯДНТ?



Цитата:


После CryptAcquireContext(CRYPT_DELETEKEYSET) выдает ошибку:"NTE_BAD_KEYSET";

а где проверка, что он (с именем server) есть или она не нужна?



// проверка наличия криптоконтейнера
if(CryptAcquireContext(&hCryptProv,"client",NULL,PROV_GOST_2001_DH,0)) {
... код ...
}

if(!CryptAcquireContext(&hCryptProv,"client",NULL,PROV_GOST_2001_DH,CRYPT_NEWKEYSET))
{

}

а если он ("client") существует?
все равно идем на if(!CryptAcquireContext(&hCryptProv,"client",NULL,PROV_GOST_2001_DH,CRYPT_NEWKEYSET))
?
Цитата:

После CryptAcquireContext(CRYPT_NEWKEYSET): "NTE_EXISTS".


и удивляемся?
Цитата:

ЧЯДНТ

Отредактировано пользователем 20 марта 2012 г. 3:48:22(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.