Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подключение privart key к сертификату, CryptoApi 
:(
    Опции темы
bas
Дата 10.7.2007, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

Репутация: нет
Всего: 2



Получен подписанный сертификат пытаюсь подключить к нему секретный ключ
Но CertCreateCertificateContext всегда возвращает NULL и следовательно первый параметр в CertSetCertificateContextProperty отваливаеться.
Код
char  *pszContainer= new char (Econt1->Text.Length()+1);
 strcpy(pszContainer,Econt1->Text.c_str());

CryptAcquireContext(&hProv,pszContainer,DEKART_RSA_PROV,PROV_RSA_FULL,0)
 PCCERT_CONTEXT pCert;
 BYTE*  pbCert, *pbNameEncoded;
 FILE *f;
DWORD EncType,cbNameEncoded;
EncType=PKCS_7_ASN_ENCODING | X509_ASN_ENCODING;
HCRYPTPROV  hCryptProv;

 String   err;
if(!CryptAcquireContext(
    &hCryptProv,        // Address for handle to be returned.
    pszContainer,               // Use the current user's logon name.
    DEKART_RSA_PROV,               // Use the default provider.
    PROV_RSA_FULL,      // Need to both encrypt and sign.
    NULL))              // No flags needed.
{
// Обработка ошибки
    free(pbNameEncoded);
}


f=fopen("newcert.pem","r");
long nFileLen = 0;
if (f)
{
   fseek (f, 0, SEEK_END);
   nFileLen = ftell(f);
   pbCert = (BYTE*)malloc(nFileLen);
   fseek (f, 0, SEEK_SET);
   fread(pbCert,sizeof(char),nFileLen+1,f);

   fclose(f);
}
pCert=CertCreateCertificateContext(EncType,pbCert,nFileLen);


  CRYPT_KEY_PROV_INFO prov_info;
  prov_info.pwszContainerName =(wchar_t*) pszContainer;
  prov_info.pwszProvName =(wchar_t*) DEKART_RSA_PROV;
  prov_info.dwProvType = PROV_RSA_FULL;
  prov_info.dwFlags = 0;
  prov_info.cProvParam = 0;
  prov_info.rgProvParam = 0;
  prov_info.dwKeySpec = AT_SIGNATURE;


  CertSetCertificateContextProperty(pCert,CERT_KEY_PROV_INFO_PROP_ID,  0, &prov_info  );


Это сообщение отредактировал(а) bas - 10.7.2007, 13:58
PM MAIL   Вверх
korbian
Дата 10.7.2007, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 336
Регистрация: 20.2.2007
Где: Penza

Репутация: 9
Всего: 14



Ой, лоханулся.

Это сообщение отредактировал(а) korbian - 10.7.2007, 13:50


--------------------
korbian ©
PM   Вверх
bas
Дата 10.7.2007, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

Репутация: нет
Всего: 2



Цитата(korbian @  10.7.2007,  13:41 Найти цитируемый пост)
Ой, лоханулся.

Ну хоть ктото пытался, а то это второй форум а ответ только твой. smile 
PM MAIL   Вверх
korbian
Дата 10.7.2007, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 336
Регистрация: 20.2.2007
Где: Penza

Репутация: 9
Всего: 14



Давным давно, я пытался писать свой криптопровайдер CryptoAPI 1.0 в академических целях.
Дальше дело не пошло.
Ты мне цели(у тебя о CryptoApi несколько постов) своих изысканий опиши, мож чем смогу помогу.

Это сообщение отредактировал(а) korbian - 10.7.2007, 14:20


--------------------
korbian ©
PM   Вверх
bas
Дата 10.7.2007, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

Репутация: нет
Всего: 2



Тоесть клиент должен создать ключ , мы его сертифицируем он этот сертификат устанавливет у себя и связывет с секретным ключем. Потом шлет док- ы подписаные своим секретным ключем.
Контейнер создал,запрос на сертификацию тоже и получил сертификат он установливаеться в систему без проблем но без ссылки на приватный ключ.
Сам pem
Код

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            d8:36:9d:d2:0d:f5:06:bf
        Signature Algorithm: md5WithRSAEncryption
        Issuer: C=MD, ST=Moldova, L=Kishinev, O=Buratino SA, OU=SIB, CN=PapaKarlo 
        Validity
            Not Before: Jul  3 12:27:55 2007 GMT
            Not After : Jul  2 12:27:55 2008 GMT
        Subject: C=Moldova, ST=MD, L=Chisinau, O=Cat Basilio Ko, CN=Artemon
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (2045 bit)
                Modulus (2045 bit):
                    1b:42:d8:6e:43:d4:cd:e9:00:b9:a1:79:3e:1a:f9:
                    83:d1:74:5f:c3:6f:bc:12:61:ef:ba:0d:a7:94:ca:
                    56:37:d5:a6:e6:f7:f5:9d:e3:d5:91:d1:3a:77:d9:
                    41:53:6c:77:72:13:89:3f:f4:8e:e2:41:54:80:1d:
                    7f:2f:ee:34:7e:00:b8:f8:be:62:c3:2b:90:73:95:
                    73:94:88:0b:0a:a0:90:3e:b5:60:82:47:ae:f2:e4:
                    3d:62:5c:32:5b:c5:1a:47:54:5b:d5:14:5c:47:60:
                    22:68:7a:5f:c8:ed:e3:28:15:0b:f4:8f:d1:1f:82:
                    c8:09:d7:e8:ae:a5:4c:22:54:63:15:6b:dd:40:9b:
                    4f:08:b5:29:bb:df:29:11:dd:9f:50:81:c1:8d:0e:
                    8a:ca:dd:e5:6c:b9:0f:32:40:fc:1d:9e:f3:a1:86:
                    c7:d9:cc:f7:b4:d2:ec:44:02:64:06:64:eb:2d:84:
                    03:3e:90:f9:84:e8:37:f1:de:55:77:93:75:ae:e6:
                    29:d0:2e:c7:50:3e:98:6f:1d:9d:92:0b:0b:aa:5d:
                    47:99:86:b3:d1:67:79:2f:48:a9:a0:49:bb:bd:31:
                    4f:e6:56:28:33:89:de:5d:73:58:0d:51:b7:65:11:
                    3b:10:7f:f7:16:2f:96:81:e5:16:8d:41:19:1d:fb:
                    27
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Cert Type: 
                SSL Server
            X509v3 Key Usage: 
                Digital Signature, Non Repudiation, Key Encipherment, Data Encipherment
            Netscape Comment: 
                BSA Generated Certificate for fool state
            X509v3 Subject Key Identifier: 
                71:92:3C:0B:A9:98:69:2D:95:9F:F3:6D:AA:0D:34:CB:1C:70:6A:D8
            X509v3 Authority Key Identifier: 
                keyid:2A:9B:56:53:4B:33:29:A7:F5:73:DD:75:AA:1F:44:6B:78:D7:D3:12
                DirName:/C=MD/ST=Moldova/L=Kishinev/O=Buratino SA/OU=SIB/CN=PapaKarlo 
                serial:D8:36:9D:D2:0D:F5:06:BE

    Signature Algorithm: md5WithRSAEncryption
        7d:bd:3c:a7:94:6f:ac:a0:be:a4:89:5e:c2:d2:50:10:64:35:
        92:b4:c4:30:57:1f:0c:23:73:a3:59:f0:0c:d5:6c:23:45:72:
        9e:a4:ba:66:d2:96:74:f1:78:05:64:41:d6:7a:32:29:36:c7:
        28:7e:d7:6f:98:68:a9:a7:23:f6:9f:f4:eb:7d:12:6a:d6:b0:
        da:74:0f:a1:d5:9f:e4:f5:2e:c9:32:b6:d3:4a:2b:d9:37:20:
        bf:f4:46:94:bf:a3:f0:76:59:67:d2:c8:b9:d0:68:00:5f:1a:
        50:0b:4a:03:cc:80:5f:e8:28:49:ad:44:9c:8e:1c:49:a8:f3:
        7c:44
-----BEGIN CERTIFICATE-----
MIIERDCCA62gAwIBAgIJANg2ndIN9Qa/MA0GCSqGSIb3DQEBBAUAMIGWMQswCQYD
VQQGEwJNRDEQMA4GA1UECBMHTW9sZG92YTERMA8GA1UEBxMIS2lzaGluZXYxFjAU
BgNVBAoTDUZJTkNPTUJBTksgU0ExDDAKBgNVBAsTA1NJQjEWMBQGA1UEAxMNUm9k
aW9uIFR1cmxhYzEkMCIGCSqGSIb3DQEJARYVcm9kaW9uQGZpbmNvbWJhbmsuY29t
MB4XDTA3MDcwMzEyMjc1NVoXDTA4MDcwMjEyMjc1NVowXDEQMA4GA1UEBhMHTW9s
ZG92YTELMAkGA1UECBMCTUQxETAPBgNVBAcTCENoaXNpbmF1MRUwEwYDVQQKEwxB
Z3JvIE1hc2ggS28xETAPBgNVBAMTCEJhc2lzdGlpMIIBITANBgkqhkiG9w0BAQEF
AAOCAQ4AMIIBCQKCAQAbQthuQ9TN6QC5oXk+GvmD0XRfw2+8EmHvug2nlMpWN9Wm
5vf1nePVkdE6d9lBU2x3chOJP/SO4kFUgB1/L+40fgC4+L5iwyuQc5VzlIgLCqCQ
PrVggkeu8uQ9YlwyW8UaR1Rb1RRcR2AiaHpfyO3jKBUL9I/RH4LICdforqVMIlRj
FWvdQJtPCLUpu98pEd2fUIHBjQ6Kyt3lbLkPMkD8HZ7zoYbH2cz3tNLsRAJkBmTr
LYQDPpD5hOg38d5Vd5N1ruYp0C7HUD6Ybx2dkgsLql1HmYaz0Wd5L0ipoEm7vTFP
5lYoM4neXXNYDVG3ZRE7EH/3Fi+WgeUWjUEZHfsnAgMBAAGjggFOMIIBSjAJBgNV
HRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIGQDALBgNVHQ8EBAMCBPAwMAYJYIZIAYb4
QgENBCMWIUZDQiBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUgZm9yIENMQjAdBgNVHQ4E
FgQUcZI8C6mYaS2Vn/Ntqg00yxxwatgwgcsGA1UdIwSBwzCBwIAUKptWU0szKaf1
c911qh9Ea3jX0xKhgZykgZkwgZYxCzAJBgNVBAYTAk1EMRAwDgYDVQQIEwdNb2xk
b3ZhMREwDwYDVQQHEwhLaXNoaW5ldjEWMBQGA1UEChMNRklOQ09NQkFOSyBTQTEM
MAoGA1UECxMDU0lCMRYwFAYDVQQDEw1Sb2Rpb24gVHVybGFjMSQwIgYJKoZIhvcN
AQkBFhVyb2Rpb25AZmluY29tYmFuay5jb22CCQDYNp3SDfUGvjANBgkqhkiG9w0B
AQQFAAOBgQB9vTynlG+soL6kiV7C0lAQZDWStMQwVx8MI3OjWfAM1WwjRXKepLpm
0pZ08XgFZEHWejIpNscoftdvmGippyP2n/TrfRJq1rDadA+h1Z/k9S7JMrbTSivZ
NyC/9EaUv6Pwdlln0si50GgAXxpQC0oDzIBf6ChJrUScjhxJqPN8RA==
-----END CERTIFICATE-----


Это сообщение отредактировал(а) bas - 10.7.2007, 14:46
PM MAIL   Вверх
korbian
Дата 10.7.2007, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 336
Регистрация: 20.2.2007
Где: Penza

Репутация: 9
Всего: 14



а как ты устанавливаешь сертификат? код?
ты это программно делаешь?

Это сообщение отредактировал(а) korbian - 10.7.2007, 15:05


--------------------
korbian ©
PM   Вверх
bas
Дата 10.7.2007, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

Репутация: нет
Всего: 2



Цитата(korbian @  10.7.2007,  14:56 Найти цитируемый пост)
а как ты устанавливаешь сертификат? код? 

Да в том то и дело мне сказали прежде чем установить сертификат ему надо добавить свойство, или я  не правильно понял?
PM MAIL   Вверх
korbian
Дата 10.7.2007, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 336
Регистрация: 20.2.2007
Где: Penza

Репутация: 9
Всего: 14



Подожди сам файл сертификата ты как получаешь?

Добавлено @ 15:08
на эту тему есть хорошая книга:
Щербаков А. Ю., Домашев А. В. прикладная криптография. Использование и синтез криптографических интерфейсов. – М.: Издательско-торговый дом «Русская Редакция», 2003. – 416 с.: ил.

Добавлено @ 15:11
обрати внимание на эту функцию CertFindCertificateInStore()

Логика должна быть примерно такая:
1. открываешь хранилище 
2. ищешь там свой сертификат
3. создаешь его контекст
4. меняешь свойства.
5. обновляеш хранилище

Это сообщение отредактировал(а) korbian - 10.7.2007, 15:25


--------------------
korbian ©
PM   Вверх
bas
Дата 10.7.2007, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

Репутация: нет
Всего: 2



Код

HCERTSTORE hStoreHandle;

  if ( !( hStoreHandle = CertOpenStore(CERT_STORE_PROV_SYSTEM, 0,NULL,
      CERT_SYSTEM_STORE_CURRENT_USER, "MY" )))
  {
    printf("Нельзя открыть хранилище MY.");
  }
LPSTR my_name="PapaKarlo";
if(pCert = CertFindCertificateInStore(
    hStoreHandle,
    EncType,
    0,
    CERT_FIND_SUBJECT_STR,
    (void *)my_name,
    NULL))
  {
    printf("Сертификат найден.\n");
  }
  else
  {
   printf( "Сертификат не найден.");
  }


Результат - Сертификат не найден
PM MAIL   Вверх
jonie
Дата 11.7.2007, 02:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



на rsdn.ru была статейка вроде на тему CryptoAPI.. мож поможет (хотя я думаю ты ее уже видел)...


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
korbian
Дата 11.7.2007, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 336
Регистрация: 20.2.2007
Где: Penza

Репутация: 9
Всего: 14



bas, следовательно сертификат в систему не установлен или не в том хранилище смотришь...
подсомтреть за сертификатами можно через оснастку certmgr.msc.
 как устанавливаешь сертификат? программно или туп double click по файлу сертификата?


--------------------
korbian ©
PM   Вверх
bas
Дата 11.7.2007, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

Репутация: нет
Всего: 2



Цитата(korbian @  11.7.2007,  08:02 Найти цитируемый пост)
программно или туп double click по файлу сертификата? 

 smile 
Через certmgr.msc смотрю в папке "личные сертификаты" он там существует.

Это сообщение отредактировал(а) bas - 11.7.2007, 08:20
PM MAIL   Вверх
korbian
Дата 11.7.2007, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 336
Регистрация: 20.2.2007
Где: Penza

Репутация: 9
Всего: 14



я тебя не понял.  smile 
что значит смайлик?


--------------------
korbian ©
PM   Вверх
bas
Дата 11.7.2007, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

Репутация: нет
Всего: 2



Также этот сетификат есть и в "Другие пользователи-Сертификаты" аж в двух экземплярах.
PM MAIL   Вверх
korbian
Дата 11.7.2007, 08:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 336
Регистрация: 20.2.2007
Где: Penza

Репутация: 9
Всего: 14



я так и не услышал ответа:
Цитата(korbian @  11.7.2007,  09:02 Найти цитируемый пост)
как устанавливаешь сертификат? программно или туп double click по файлу сертификата?


Цитата(bas @  11.7.2007,  09:23 Найти цитируемый пост)
Также этот сетификат есть и в "Другие пользователи-Сертификаты" аж в двух экземплярах.

ты думаешь это нормально?




--------------------
korbian ©
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0636 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.