既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
p12 = d2i_PKCS12_bio(bio, NULL); //得到p12结构
BIO_free_all(bio);
PKCS12_parse(p12, pass, &pkey, &usrCert, &ca); //得到x509结构
//PKCS12_free(p12);
{
int zt = PKCS12_newpass(p12, "", "");
bio_pkcs12 = BIO_new(BIO_s_mem());
bytes = i2d_PKCS12_bio(bio_pkcs12, p12);
if (bytes <= 0) {
NSLog(@"Error writing PKCS12 certificate.");
error = -1;
}
len = BIO_get_mem_data(bio_pkcs12, &data);
NSData *resultxxx = [NSData dataWithBytes:data length:len];
NSLog(@"Error writing PKCS12 certificate.");
}
if (usrCert)
{
// int PKCS12_newpass(PKCS12 *p12, const char *oldpass, const char *newpass);
fprintf(stdout, "***User Certificate***\n");
//PEM_write_X509_AUX(stdout, usrCert);
fprintf(stdout, "Subject:");
p = X509_NAME_oneline(X509_get_subject_name(usrCert), NULL, 0);
fprintf(stdout, "%s\n", p);
fprintf(stdout, "Issuer:");
p = X509_NAME_oneline(X509_get_issuer_name(usrCert), NULL, 0);
fprintf(stdout, "%s\n", p);
fprintf(stdout, "Not Before:");
// UTCTIME_print(buf, X509_get_notBefore(usrCert));
fprintf(stdout, "%s\n", buf);
fprintf(stdout, "Not After:");
// UTCTIME_print(buf, X509_get_notAfter(usrCert));
fprintf(stdout, "%s\n", buf);
//X509_print_fp(stdout, usrCert); //add by slz token by openssl
}
}
![img](https://img-blog.csdnimg.cn/img_convert/40d0a938ec8e85e0ab1269f8f4ac12fe.png)
![img](https://img-blog.csdnimg.cn/img_convert/8850bbfe07d65db6ead6e932cb05e582.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.csdn.net/topics/618668825)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
ics/618668825)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**