Summary: | СБиС++ ЭО: проблема с установкой сертификатов | ||
---|---|---|---|
Product: | WINE@Etersoft | Reporter: | Александр Морозов <amorozov> |
Component: | Шифрование / ЭЦП | Assignee: | Александр Морозов <amorozov> |
Status: | CLOSED FIXED | QA Contact: | Andrey Vusik <night> |
Severity: | critical | ||
Priority: | P1 | CC: | kondratyuk, lav |
Version: | 2.0 | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | All | ||
Whiteboard: | |||
Заявки RT: | Связано с: | 7891 | |
Дата напоминания: | |||
Bug Depends on: | |||
Bug Blocks: | 502 |
Description
Александр Морозов
2011-11-23 20:02:30 MSK
Ошибка выводится утилитой certmgr, расположенной в поддиректории RootCerts директории СБиС++. $ wine certmgr.exe -add -all CASimpleTest_RootNew.cer -s Root -r localMachine Error: Failed to save to the destination store Error: Failed to save to the destination store CertMgr Failed Ошибка вызвана вызовом данной функции: static BOOL WINAPI CRYPT_RootWriteCert(HCERTSTORE hCertStore, PCCERT_CONTEXT cert, DWORD dwFlags) { /* The root store can't have certs added */ return FALSE; } Если запускать утилиту без параметра -r localMachine, то сертификат добавляется успешно. Разбирался, как устроены хранилища сертификатов в Wine Добавил поддержку сохранения сертификатов в корневое хранилище в HKLM. Теперь при открытии корневого хранилища локальной машины, предоставляемого провайдером CERT_STORE_PROV_SYSTEM_REGISTRY, создаётся хранилище с новым типом StoreTypeRoot. Это хранилище содержит в себе collection-хранилище, в которое добавлены корневое хранилище в HKLM и старое корневое хранилище, формируемое из сертификатов, установленных в Linux-системе, и доступное только для чтения. Новый тип для хранилища установлен для того, чтобы для него не рабтали функции, предназначенные для collection-хранилища. Флаг CERT_STORE_DELETE_FLAG в CRYPT_RootRegOpenStore специально не обрабатывается, т.к. при его наличии CRYPT_RegOpenStore должна вернуть NULL, и CRYPT_RootRegOpenStore просто не будет вызвана. принято |