gpt4 book ai didi

iphone - 我们可以在 IOS SDK iphone 中检索序列号、颁发者 DN、x509 证书的主题详细信息吗

转载 作者:行者123 更新时间:2023-12-01 17:45:09 25 4
gpt4 key购买 nike

我们可以使用 ios sdk 或 Openssl 检索 X509 证书详细信息(序列号、颁发者 DN、主题详细信息)吗?

最佳答案

不幸的是,在 iOS 上,安全框架无法提供与在 OSX 上相同级别的序列号、DN 和 altNames 访问权限。

但是,您可以访问原始形式的 DER 证书 (SecIdentityCopyCertificate()),并使用一些粗略的函数(如 SecCertificateCopySubjectSummary())来提取最基本的内容。

如果你想看连续剧。 DN 和 (alt)subject - 然后你将不得不在今天的 iOS 上解析 DER。一种相当简单的方法是为此使用 OpenSSL。

我找到了 http://atastypixel.com/blog/easy-inclusion-of-openssl-into-iphone-app-projects/易于安装/使用。

一旦准备就绪,您就可以检查 DER:

CFDataRef der = SecCertificateCopyData(cert);
const unsigned char * ptr = CFDataGetBytePtr(der);
int len = CFDataGetLength(der);

d2i_X509(&x509,&ptr,len);
_sha1 = [(__bridge NSData *)der sha1];

然后你就可以开始比赛了,比如:

X509_NAME * names_s = X509_get_subject_name(x509);
X509_NAME * names_i = X509_get_issuer_name(x509);
GENERAL_NAMES * subjects = X509_get_ext_d2i( x509, NID_subject_alt_name, 0, 0 );

ASN1_INTEGER *serial = X509_get_serialNumber(x509);
unsigned long s = ASN1_INTEGER_get(serial);

根据需要对所有内容进行有点痛苦的翻译:

+(NSArray *)names:(GENERAL_NAMES *)sANs {

int i, numAN = sk_GENERAL_NAME_num( sANs );
NSMutableArray * out = [NSMutableArray arrayWithCapacity:numAN];

for( i = 0; i < numAN; ++i ) {
GENERAL_NAME *sAN = sk_GENERAL_NAME_value( sANs, i );

if( sAN->type == GEN_DNS) {
unsigned char *dns;
int len = ASN1_STRING_to_UTF8( &dns, sAN->d.dNSName );
if (len >0) {
[out addObject:[[NSString alloc] initWithData:[NSData dataWithBytes:dns length:len] encoding:NSUTF8StringEncoding]];
OPENSSL_free( dns );
}
}
.. more types as needed ..
}
return out;
}

谢谢,

数据。

关于iphone - 我们可以在 IOS SDK iphone 中检索序列号、颁发者 DN、x509 证书的主题详细信息吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8485286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com