Как получить адрес электронной почты в сертификате X509 программно?
Я пытаюсь получить поле CN и emailAddress из объекта сертификата X509 в C. В настоящее время я получаю CN следующим образом:
cert_entry = X509_NAME_get_entry(X509_get_subject_name(cert), 0);
ASN1_STRING *entryData = X509_NAME_ENTRY_get_data( cert_entry );
ASN1_STRING_to_UTF8(&CN, entryData);
printf("%s",CN);
У меня вопрос, как мне получить поле emailAddress? Я думал о разборе строки, но я думаю, должен быть более разумный способ сделать это?
1 ответ
Решение
Догадаться
X509_NAME * subject_name = X509_get_subject_name(cert);
int nid_email = OBJ_txt2nid("emailAddress");
X509_NAME_get_text_by_NID(subject_name, nid_email, peer_email, 256);