Как получить адрес электронной почты в сертификате 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);
Другие вопросы по тегам