| ||||
| ||||
Подскажите пожалуйста, как мне из сертификата вытащит информацию об издателе, субъекте и т.д Т.е. имеем поле сертификата Subject и его размер. В регламенте УЦ Крипто-Про указано, что в этом поле содержится следующее: CN = Общее имя = Фамилия, Имя, Отчество OU = Подразделение О = Организация L = Город C = Страна/Регион = RU E = Электронная почта Как мне из всего массива байт Subject вытащит отдельные значения CN, OU,... ??? | ||||
Ответы: | ||||
| ||||
Ну если на дельфях, то у меня получилось вот что: Функция: function DecodeSubjStr(pDat: Pointer; StrType: Cardinal): String; var pch: PChar; l, ll: Cardinal; begin Result := ’’; if pDat <> nil then begin l := CertNameToStr(65537, pDat, StrType, nil, 0); if l > 1 then begin try GetMem(pch, l); except Result := ’Error memory allocation’; end; if Result = ’’ then try ll := CertNameToStr(65537, pDat, StrType, pch, l); if l = ll then Result := string(pch) else Result := ’l != ll’; finally FreeMem(pch, l); end; end else Result := ’’; end; end; Использование: DecodeSubjStr(@cc.pCertInfo.Issuer, CERT_OID_NAME_STR or CERT_NAME_STR_NO_PLUS_FLAG) сс - структура PCCERT_CONTEXT. | ||||
| ||||
Это строка, содержащая последовательность вида: КороткоеИмя1=Значение1,КороткоеИмяN=ЗначениеN] Например: E=ivanov@mydomain.ru,C=RU,S=Московская область,L=Переделкино,O=Администрация,CN=Иванов Иван Иванович Вот и разбирите эту строку и выделите значение атрибутов имени | ||||
| ||||
Используйте функцию CertGetNameString(). | ||||
| ||||
Sorry, я совсем на другой вопрос ответил. Мне показалось, что проблема в вытаскивании этой строки из поля. Пора мне просыпаться. | ||||
| ||||
Большое спасибо всем. С CertGetNameString всё получилось... | ||||
| ||||
Извиняюсь. Я имел ввиду CertNameToStr ))) | ||||