Здравствуйте, rayluke, Вы писали:
R>Добрый день!
R>Как сохранить выбранный сертификат в CAPICOM, не в смысле на диск, а получить идентификатор R>с тем, чтобы потом получать его из Store по идентификатору?
R>Или же все умные программы типа Outlook сохраняют сертификаты на диск?
Сохранять можно двумя вариантами: с закрытым ключом и паролем и без них.
Пример
Certificate сert = .... // сертификат
if ( password == null || password == "" )
{ // пароля не указан — экспорт без закрытого ключа (файл .cer)
cert.Save ( filename, "",
CAPICOM_CERTIFICATE_SAVE_AS_TYPE.CAPICOM_CERTIFICATE_SAVE_AS_CER,
CAPICOM_CERTIFICATE_INCLUDE_OPTION.CAPICOM_CERTIFICATE_INCLUDE_END_ENTITY_ONLY );
} // if
else
{ // пароль указан (файл типа .pfx)
cert.Save ( filename, password,
CAPICOM_CERTIFICATE_SAVE_AS_TYPE.CAPICOM_CERTIFICATE_SAVE_AS_PFX,
CAPICOM_CERTIFICATE_INCLUDE_OPTION.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN);
} // else
Правда не проверял, что будет если попытаться записать сертификат без закрытого ключа как сертификат с ключом.
Но наличие ключа можно проверить заранее:
bool isPrivateKeyPresent = cert.HasPrivateKey ( ); // true — есть ключ, false — нет