если вы видите этот текст, отключите в настройках форума использование JavaScript
Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания .
Новичкам также крайне полезно ознакомиться с данным документом .
[Win32] CryptoAPI из под сервиса 16.03.04 09:48
Автор: toobig Статус: Незарегистрированный пользователь
Что-то не получается экспортировать 3DES ключик из файла в сервисе. Притом если собрать тот-же код как консольное приложение все в шоколаде. Пробовал использовать флаг CRYPT_MACHINE_KEYSET - те же яица вид сбоку.
Может кто знает в чем фишка.
if(!CryptAcquireContext(&hProv,"_hprvkey1",MS_ENHANCED_PROV,PROV_RSA_FULL,0 CRYPT_MACHINE_KEYSET ) && !CryptAcquireContext(&hProv,"_hprvkey1",MS_ENHANCED_PROV,PROV_RSA_FULL,CRYPT_NEWKEYSET/* CRYPT_MACHINE_KEYSET*/))
{
ResCode = -1;
}
// Open key from file
RSAPubKey1024 PubKey;
dwLen=sizeof(RSAPubKey1024);
CFile dskFile;
if(!dskFile.Open(KeyFileName.c_str(),CFile::modeRead))
{
ResCode = -10034;
goto Ennd;
}
// Read
if(dskFile.Read(&PubKey,dwLen) != dwLen)
{
ResCode = -101;
goto Ennd;
}
dskFile.Close();
// Import key
if(!CryptImportKey(hProv,(unsigned char *) &PubKey,dwLen,0,0 ,&wrkKey))
{
DWORD Err = GetLastError();
ResCode = -102;
goto Ennd;
}
// Create HASH
if(!CryptCreateHash(hProv,CALG_MD5,0,0,&hHash))
{
ResCode = -103;
goto Ennd;
}
// Read 3DES key from file
if (Data->Read(&EncryptedPartHeader, sizeof(EncryptedPartHeader)) != sizeof(EncryptedPartHeader))
{
ResCode = -104;
goto Ennd;
}
// Import 3DES key
/****** Вот здесь возвращает NTE_BAD_KEY
if(!CryptImportKey(hProv,(BYTE)&EncryptedPartHeader.kb,EncryptedPartHeader.KeyLen/*sizeof(RSA1024KeyExchBLOB) ,wrkKey,0,&h3DESKey))
{
ResCode = -105;
goto Ennd;
}