PKI - 实验三 - 版本一
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。
以下步骤依次完成证书的读取和验证过程,参照指导书,列出流程:
证书信息读取的流程图如图1所示
开始开始加载根证书、CA证书、证书撤销列表和用户证书DER编码证书转换根证书、用户证书、证书撤销列表格式转换读取证书颁发者信息将根证书、证书撤销类列表添加到证书存储区读取证书拥有者信息将CA证书、用户证书添加到证书存储区读取证书有效期验证用户证书读取证书公钥释放内存释放内存结束结束
实验代码:
#include #include #include #include #include #include #define MAX_CERT_LEN 4096 externenum File_type{ ROOT_CA=1, USER_CA=2, CRL=4 }File_type; externenum Imformation_type{ class CertVerfier{ private: }; //code by dnpbob #include\ //private function void CertVerfier:: Der2X509(constunsignedchar* der_buffer,int der_buffer_len,int file_type){ X509 *rootCA; X509 *userCA; X509_CRL *crl; X509_STORE *rootCAstore; X509_STORE_CTX *ctx; STACK_OF(X509) *CAstack; char msginfo[1024]; void Der2X509(constunsignedchar* der_buffer,int der_buffer_len,int file_type); CertVerfier(); int LoadCertFile(constchar*filename,int file_type); int Verify(); constchar* Get_error_str(); constchar* Get_CA_information(int file_type,int information_type,bool is_issuer_info=false); int Reset(int reset_type); ~CertVerfier(); CA_VERSION, CA_SERIAL_NUMBER, CA_NOT_BEFORE, CA_NOT_AFTER, CA_PUBLIC_KEY, CA_COUNTRY_NUMBER=14, CA_STATE_PROVINCE_NAME=16, CA_LOCALITY_NAME=15, CA_ORGANIZATION_NAME=17, CA_ORGANIZATIONAL_UNIT_NAME=18, CA_COMMON_NAME=13, CA_PKCS9_EMAILADDRESS=48 }Imformation_type; public: } switch(file_type){ case ROOT_CA: } if(!rootCA) rootCA=d2i_X509(NULL,&der_buffer,der_buffer_len); break; if(!userCA) userCA=d2i_X509(NULL,&der_buffer,der_buffer_len); break; if(!crl) crl=d2i_X509_CRL(NULL,&der_buffer,der_buffer_len); break; case USER_CA: case CRL: //public function CertVerfier:: } int CertVerfier::LoadCertFile(constchar*filename,int file_type){ if(file_type==ROOT_CA&&rootCA){ } Reset(ROOT_CA); fp=fopen(filename,\); if(!fp){ } return -1; FILE *fp; unsignedchar der_buffer[MAX_CERT_LEN]; int der_buffer_len; if(file_type!=ROOT_CA&&file_type!=USER_CA&&file_type!=CRL){ } return -1; CertVerfier(){ rootCA=NULL; userCA=NULL; crl=NULL; ctx=NULL; rootCAstore=NULL; CAstack=NULL;
PKI - 实验三 - 版本一.doc
将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印