iOS 使用Openssl解析X509证书

       在iOS中使用Openssl解析X509证书,加入openssl的库文件,头文件,传入X509证书结构,代码如下:

-(NSString *)tGetX509Info:(X509 *)cerfilepath withoption:(NSInteger)Number

{

NSMutableString *certInfo = [[NSMutableString alloc]init];

    NSMutableString *certCN = [[NSMutableString alloc]init];

    _serialNumber = [[NSMutableString alloc]init];

    _allCertsList = [[NSMutableString alloc]init];

    

    X509 *x509Cert = cerfilepath; //X509证书结构体

unsigned char *pTmp = NULL;

X509_NAME *issuer = NULL; //X509_NAME结构体,保存证书颁发者信息

X509_NAME *subject = NULL; //X509_NAME结构体,保存证书拥有者信息

int i;

int entriesNum;

X509_NAME_ENTRY *name_entry;

ASN1_INTEGER *Serial = NULL; //保存证书序列号

long Nid;

ASN1_TIME *time; //保存证书有效期时间

EVP_PKEY *pubKey; //保存证书公钥

long Version; //保存证书版本

unsigned char derpubkey[1024];

//int derpubkeyLen;

unsigned char msginfo[1024];

int msginfoLen;

    //打印整个X509结构信息

    //int ret;

    BIO *b;

    b= BIO_new ( BIO_s_file ());

    BIO_set_fp (b, stdout , BIO_NOCLOSE );

    // 把 X509 结构打印输出到文件 BIO

    //X509_print (b,x509Cert);

    // 释放流

    BIO_free (b);

    

Version = X509_get_version(x509Cert);                                              //获取证书版本

//printf("X509 Version:%ld\n",Version);

    

//获取证书颁发者信息,X509_NAME结构体保存了多项信息,包括国家、组织、部门、通用名、mail等。

issuer = X509_get_issuer_name(x509Cert);

    

entriesNum = sk_X509_NAME_ENTRY_num(issuer->entries);            //获取X509_NAME条目个数

//循环读取各条目信息

for(i=0;i<entriesNum;i++)

{

//获取第I个条目值

name_entry = sk_X509_NAME_ENTRY_value(issuer->entries,i);

//获取对象ID

Nid = OBJ_obj2nid(name_entry->object);

        msginfoLen=name_entry->value->length;

        memcpy(msginfo,name_entry->value->data,msginfoLen);

        msginfo[msginfoLen]='\0';

//根据NID打印出信息

      //  NSLog(@"issuer type is %d",name_entry->value->type);

switch(Nid)

{

            case

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值