if(x509Cert==NULL) {
printf(\ return; }
//获取证书版本
Version = X509_get_version(x509Cert); printf(\ //获取证书序列号
Serial = X509_get_serialNumber(x509Cert); //打印证书序列号
printf(\
for(i = 0; i < Serial->length; i++) {
printf(\ }
printf(\
//获取证书颁发者信息,X509_NAME结构体保存了多项信息,包括国家、组织、部门、通用名、mail等。
issuer = X509_get_issuer_name(x509Cert); //获取X509_NAME条目个数
entriesNum = sk_X509_NAME_ENTRY_num(issuer->entries); //循环读取各条目信息
for(i=0;i //获取第I个条目值 name_entry = sk_X509_NAME_ENTRY_value(issuer->entries,i); //获取对象ID Nid = OBJ_obj2nid(name_entry->object); //判断条目编码的类型 if(name_entry->value->type==V_ASN1_UTF8STRING)//把UTF8编码数据转化成可见字符 { nUtf8 = 2*name_entry->value->length; pUtf8 = malloc(nUtf8); memset(pUtf8,0,nUtf8); rv = MultiByteToWideChar( CP_UTF8, 0, (char*)name_entry->value->data, name_entry->value->length, pUtf8, nUtf8); rv = WideCharToMultiByte( CP_ACP, 0, pUtf8, rv, (char*)msginfo, nUtf8, NULL, NULL); free(pUtf8); pUtf8 = NULL; msginfoLen = rv; msginfo[msginfoLen]='\\0'; } else { msginfoLen=name_entry->value->length; memcpy(msginfo,name_entry->value->data,msginfoLen); msginfo[msginfoLen]='\\0'; } //根据NID打印出信息 switch(Nid) { case NID_countryName://国家 printf(\ break; case NID_stateOrProvinceName://省 printf(\ break; case NID_localityName://地区 printf(\ break; case NID_organizationName://组织 printf(\ break; case NID_organizationalUnitName://单位 printf(\ break; case NID_commonName://通用名 printf(\ break; case NID_pkcs9_emailAddress://Mail printf(\ break; }//end switch } //获取证书主题信息 subject = X509_get_subject_name(x509Cert); //获得证书主题信息条目个数 entriesNum = sk_X509_NAME_ENTRY_num(subject->entries); //循环读取个条目信息 for(i=0;i //获取第I个条目值 name_entry = sk_X509_NAME_ENTRY_value(subject->entries,i); Nid = OBJ_obj2nid(name_entry->object); //判断条目编码的类型 if(name_entry->value->type==V_ASN1_UTF8STRING)//把UTF8编码数据转化成可见字符 { nUtf8 = 2*name_entry->value->length; pUtf8 = malloc(nUtf8); memset(pUtf8,0,nUtf8); rv = MultiByteToWideChar( CP_UTF8, 0, (char*)name_entry->value->data, name_entry->value->length, pUtf8, nUtf8); rv = WideCharToMultiByte( CP_ACP, 0, pUtf8, rv, (char*)msginfo, nUtf8, NULL, NULL); free(pUtf8); pUtf8 = NULL; msginfoLen = rv; msginfo[msginfoLen]='\\0'; } else { msginfoLen=name_entry->value->length; memcpy(msginfo,name_entry->value->data,msginfoLen); msginfo[msginfoLen]='\\0'; } switch(Nid) { case NID_countryName://国家 printf(\ break; case NID_stateOrProvinceName://省 printf(\ break; case NID_localityName://地区 printf(\ break; case NID_organizationName://组织 printf(\ break; case NID_organizationalUnitName://单位 printf(\ break; case NID_commonName://通用名 printf(\ break; case NID_pkcs9_emailAddress://Mail printf(\ break; }//end switch } //获取证书生效日期 time = X509_get_notBefore(x509Cert); printf(\//获取证书过期日期 time = X509_get_notAfter(x509Cert); printf(\//获取证书公钥 pubKey = X509_get_pubkey(x509Cert); pTmp=derpubkey; //把证书公钥专为为DER编码的数据 derpubkeyLen=i2d_PublicKey(pubKey,&pTmp); printf(\ for(i = 0; i < derpubkeyLen; i++) { printf(\ } printf(\ X509_free(x509Cert); return; } int main() { OpenSSL_add_all_algorithms(); tX509_Verify(); tGetX509Info(); return 0; } 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库证书操作(2)在线全文阅读。
相关推荐: