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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Mikhail_Arbuzov  
#1 Оставлено : 10 декабря 2024 г. 10:05:19(UTC)
Mikhail_Arbuzov

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

Группы: Участники
Зарегистрирован: 28.11.2024(UTC)
Сообщений: 6
Российская Федерация
Откуда: Новосибирск

Сказал(а) «Спасибо»: 3 раз
Здравствуйте! Нужно расшифровать данные, использую функцию CryptDecryptMessage, однако при использовании в консоли появляется Crypto-Pro GOST R 34.10-2012 KC1 CSP requests container password
Type password:
Что предлагает мне каждый раз через консоль вручную вводить пароль к контейнеру.

Так использую функцию:
DWORD cbDecryptedMessage;
CRYPT_DECRYPT_MESSAGE_PARA decryptParams;
BYTE* pbDecryptedMessage;
DWORD cbEncryptedBlob = (DWORD) message.length();
BYTE* pbEncryptedBlob = (BYTE*) message.c_str();

OpenCertStore();

memset(&decryptParams, 0, sizeof(CRYPT_DECRYPT_MESSAGE_PARA));
decryptParams.cbSize = sizeof(CRYPT_DECRYPT_MESSAGE_PARA);
decryptParams.dwMsgAndCertEncodingType = MY_ENCODING_TYPE;
decryptParams.cCertStore = 1;
decryptParams.rghCertStore = &hStoreHandle;

if (!CryptDecryptMessage(
&decryptParams,
pbEncryptedBlob,
cbEncryptedBlob,
nullptr,
&cbDecryptedMessage,
nullptr)) {
free(pbEncryptedBlob);
printf("Error getting decrypted message size");
throw DomainException{""};
}
printf("The size for the decrypted message is: %d.\n", cbDecryptedMessage);

pbDecryptedMessage = (BYTE*) malloc(cbDecryptedMessage);
if (!pbDecryptedMessage) {
printf("Memory allocation error while decrypting");
}

if (!CryptDecryptMessage(
&decryptParams,
pbEncryptedBlob,
cbEncryptedBlob,
pbDecryptedMessage,
&cbDecryptedMessage,
nullptr)) {
printf("Error decrypting the message");
}

printf("Message Decrypted Successfully. \n");
printf("The decrypted string is: %s\n", (LPSTR) pbDecryptedMessage);
auto result = base64_encode(pbDecryptedMessage,cbDecryptedMessage);

return result;

Так получаю доступ к хранилищу:

void PKCS7Encrypter::OpenCertStore() {
hStoreHandle = CertOpenSystemStoreA(hCryptProv, _TEXT("MY"));
if (!hStoreHandle) {
throw DomainException{"Error getting store handle."};
}
printf("The MY store is open. \n");
}

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