iOSでopenSSLを利用してSSL証明書からIssuer CN(Common name)を抽出したい。証明書から情報を抽出するためにリンクhttp://pastebin.com/Vn797Sc0を使用しています。発行者名を取得していますが、iOS で発行者の共通名 (Common name) を抽出できませんでした。前もって感謝します
質問する
2621 次
2 に答える
3
リンクしたコードの組織フィールドのような共通名を抽出できます(テストされていません)
static NSString * CertificateGetIssuerCommonName(X509 *certificateX509) {
NSString *issuerCN = nil;
if (certificateX509 != NULL) {
X509_NAME *issuerX509Name = X509_get_issuer_name(certificateX509);
if (issuerX509Name != NULL) {
int nid = OBJ_txt2nid("CN");
int index = X509_NAME_get_index_by_NID(issuerX509Name, nid, -1);
if (index != -1) {
X509_NAME_ENTRY *issuerNameCommonName = X509_NAME_get_entry(issuerX509Name, index);
if (issuerNameEntry) {
ASN1_STRING *issuerCNASN1 = X509_NAME_ENTRY_get_data(issuerNameEntry);
if (issuerCNASN1 != NULL) {
unsigned char *issuerCName = ASN1_STRING_data(issuerCNASN1);
issuerCN = [NSString stringWithUTF8String:(char *)issuerCName];
}
}
}
}
}
return issuerCN;
}
于 2013-10-11T15:33:32.783 に答える
2
static NSString * CertificateGetIssuerName(X509 *certificateX509)
{
NSString *issuer = nil;
if (certificateX509 != NULL) {
X509_NAME *issuerX509Name = X509_get_issuer_name(certificateX509);
if (issuerX509Name != NULL) {
//NID_commonName extract the common name of the issuer
int index = X509_NAME_get_index_by_NID(issuerX509Name, NID_commonName, -1);
X509_NAME_ENTRY *issuerNameEntry = X509_NAME_get_entry(issuerX509Name, index);
if (issuerNameEntry) {
ASN1_STRING *issuerNameASN1 = X509_NAME_ENTRY_get_data(issuerNameEntry);
if (issuerNameASN1 != NULL) {
unsigned char *issuerName = ASN1_STRING_data(issuerNameASN1);
issuer = [NSString stringWithUTF8String:(char *)issuerName];
}
}
}
}
return issuer;
}
于 2013-10-15T09:53:50.267 に答える