CryptoAPI из сервиса.
От: Аноним  
Дата: 15.03.04 11:29
Оценка:
При попытке из сервиса импортировать из файла 3DES ключик выдает ошибку NTE_BAD_KEY.
Если собрать как консольное приложение все работает.
Может кто знает в чем фишка.

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
else
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
if(!CryptImportKey(hProv,(BYTE *)&EncryptedPartHeader.kb,EncryptedPartHeader.KeyLen/*sizeof(RSA1024KeyExchBLOB)*/,wrkKey,0,&h3DESKey))
{
//NTE_BAD_DATA
DWORD Err = GetLastError();
ResCode = -105;
goto Ennd;
}
Re: CryptoAPI из сервиса.
От: Аноним  
Дата: 15.03.04 13:18
Оценка:
Здравствуйте, Аноним, Вы писали:

А>При попытке из сервиса импортировать из файла 3DES ключик выдает ошибку NTE_BAD_KEY.

А>Если собрать как консольное приложение все работает.
А>Может кто знает в чем фишка.

Под каким эккаунтом работает сервис ?
Re[2]: CryptoAPI из сервиса.
От: .Mistery Беларусь  
Дата: 15.03.04 13:37
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Под каким эккаунтом работает сервис ?


Странный вопрос на то он и сервис, что бы уметь работать без залогиненного юзера!
... << RSDN@Home 1.1.3 beta 1 >>
Мы — маньяки, должны помогать друг другу!
Re[3]: CryptoAPI из сервиса.
От: TB  
Дата: 15.03.04 14:20
Оценка:
Здравствуйте, .Mistery, Вы писали:

M>Здравствуйте, <Аноним>, Вы писали:


А>>Под каким эккаунтом работает сервис ?


M>Странный вопрос на то он и сервис, что бы уметь работать без залогиненного юзера!


Как и все "Local system". Если запустить админом то все как часы работает.
Пробовал юзать флаг CRYPT_MACHINE_KEYSET — те же яица вид сбоку.
Re[3]: CryptoAPI из сервиса.
От: Аноним  
Дата: 17.03.04 14:05
Оценка:
Здравствуйте, .Mistery, Вы писали:

M>Странный вопрос на то он и сервис, что бы уметь работать без залогиненного юзера!


Странный ответ. Эккаунт на то и эккаунт, кое-что запрещать одним и разрешать другим
Re[4]: CryptoAPI из сервиса.
От: Аноним  
Дата: 17.03.04 14:23
Оценка:
Здравствуйте, TB, Вы писали:

TB>Здравствуйте, .Mistery, Вы писали:


TB>Как и все "Local system". Если запустить админом то все как часы работает.


Может, тут собака и порылась? AFAIR, Local System не имеет доступа к сетевым ресурсам, может чего-то там и с CryptoAPI ?

Да, еще вспомнилось. Я сам с виндовым криптованием пока не сталкивался, но знакомый рассказывал, как они имели долгий и вдумчивый трах на эту тему. Что-то он упоминал, что перед тем, как использовать виндовую криптовку, нужно чегой-то там проинитить (seed, или что-то в этом роде). И хранится это дело на per-user basis. А для Local System IMHO такое не прокатит. Попробуй завести какого-нибудь юзера и запусти сервис под его эккаунтом.
Re[4]: CryptoAPI из сервиса.
От: amark  
Дата: 18.03.04 10:12
Оценка: +1
Здравствуйте, TB, Вы писали:

TB>Здравствуйте, .Mistery, Вы писали:


M>>Здравствуйте, <Аноним>, Вы писали:


А>>>Под каким эккаунтом работает сервис ?


M>>Странный вопрос на то он и сервис, что бы уметь работать без залогиненного юзера!


TB>Как и все "Local system". Если запустить админом то все как часы работает.


LocalSystem не имеет своей ветки в HKEY_USERS. А при обращении к реджистри текущего пользователя или использовании функций, которым нужна эта ветка запросы идут к HKEY_USERS\.Default. Подробнее об этом — http://www.microsoft.com/msj/0398/service2.aspx. Там же описано несколько способов, как с этим бороться. А CryptoAPI AFAIK в реджистри лазит. А там (у меня, по крайней мере) никакого упоминания о криптографии нет, в отличие от HKEY_CURRENT_USER. Ы?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.