青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運(yùn)轉(zhuǎn),開(kāi)心的工作
簡(jiǎn)單、開(kāi)放、平等的公司文化;尊重個(gè)性、自由與個(gè)人價(jià)值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

使用 Openssl驗(yàn)證證書(shū)鏈(轉(zhuǎn))

Link:http://blog.csdn.net/rabbit729/archive/2009/02/06/3866525.aspx

項(xiàng) 目中遇到使用Openssl驗(yàn)證證書(shū)鏈的問(wèn)題,在網(wǎng)上找了很長(zhǎng)時(shí)間,發(fā)現(xiàn)這方面的資料很少,通過(guò)多方努力,總算實(shí)現(xiàn)了基本功能,為了給大家提供一下參考, 本人實(shí)現(xiàn)了一個(gè)驗(yàn)證證書(shū)鏈的類,以供參考,由于本人也是剛剛接觸Openssl,如果有不正確的地方,請(qǐng)大家多多指導(dǎo)

  1. /************************************************************************/??
  2. /*??????????????????????????VerifyDCChain.h?????????????????????????????*/??
  3. /************************************************************************/??
  4. #ifndef?VERIFYDCCHAIN_H_??
  5. #define?VERIFYDCCHAIN_H_??
  6. ??
  7. #include?<openssl/bio.h>??
  8. #include?<openssl/err.h>??
  9. #include?<openssl/x509.h>??
  10. #include?<openssl/x509v3.h>??
  11. #include?<openssl/pem.h>??
  12. #include?<openssl/crypto.h>??
  13. #include?<string>??
  14. #include?<iostream>??
  15. using?namespace?std;??
  16. ??
  17. class?VerifyDCChain??
  18. {??
  19. public:??
  20. ????VerifyDCChain();??
  21. ????~VerifyDCChain();??
  22. ??
  23. ????/*?
  24. ????*?初 始化證書(shū)鏈堆棧m_chain?
  25. ????*?@param[in]?certChains?證書(shū)鏈中各個(gè)證 書(shū)文件名數(shù)組?
  26. ????*?@param[in]?num?證書(shū)鏈中證書(shū)個(gè)數(shù)?
  27. ????*/??
  28. ????int?Init(const?string*?certChains,?const?int?num);??
  29. ??
  30. ????/*?
  31. ????*?使 用給定的證書(shū)鏈驗(yàn)證葉子證書(shū)?
  32. ????*?@param[in]?certFile?需要驗(yàn)證的葉子證書(shū)文 件名?
  33. ????*/??
  34. ????int?verify(const?char*?certFile);??
  35. private:??
  36. ??
  37. ????/*?
  38. ????*?加 載證書(shū)文件?
  39. ????*?@param[in]?certFile?需要加載的證書(shū)文件名?
  40. ????*/??
  41. ????X509*?load_certfile(const?char*?certFile);??
  42. private:??
  43. ????X509*?m_leaf;??
  44. ????STACK_OF(X509)*?m_chain;??????
  45. };??
  46. ??
  47. #endif??
  48. ??
  49. /************************************************************************/??
  50. /*??????????????????????????VerifyDCChain.cpp???????????????????????????*/??
  51. /************************************************************************/??
  52. ??
  53. #include?"VerifyDCChain.h"??
  54. ??
  55. VerifyDCChain::VerifyDCChain():m_leaf(NULL),?m_chain(NULL)??
  56. {??
  57. ????CRYPTO_malloc_init();???
  58. ????OpenSSL_add_all_algorithms();??
  59. }??
  60. ??
  61. VerifyDCChain::~VerifyDCChain()??
  62. {??
  63. ????if(m_leaf?!=?NULL)???
  64. ????{??
  65. ????????X509_free(m_leaf);??
  66. ????}??
  67. ????if?(m_chain?!=NULL)??
  68. ????{??
  69. ????????sk_X509_free(m_chain);??
  70. ????}??
  71. }??
  72. ??
  73. int?VerifyDCChain::Init(const?string*?certChains,?const?int?num)??
  74. {??
  75. ????int?ret?=?0;??
  76. ????X509*?temp?=?new?X509;??
  77. ????m_chain?=?sk_X509_new_null();??
  78. ??
  79. ????//?注 意此處加載證書(shū)鏈中證書(shū)的順序沒(méi)有要求,因?yàn)??
  80. ????//?在X509_verify_cert()函 數(shù)中會(huì)對(duì)證書(shū)鏈中的證書(shū)??
  81. ????//?進(jìn)行排序??
  82. ????for?(int?i?=?0;?i?<?num;?i++)??
  83. ????{??
  84. ????????temp?=?load_certfile(certChains[i].c_str());??
  85. ????????sk_X509_push(m_chain,?temp);??
  86. ????}??
  87. ????return?1;??
  88. }??
  89. ??
  90. int?VerifyDCChain::verify(const?char*?certFile)??
  91. {??
  92. ????int?ret?=?0;??
  93. ????X509_STORE?*store=NULL;??
  94. ????X509_STORE_CTX?ctx;??
  95. ????m_leaf?=?new?X509();??
  96. ??
  97. ????// 創(chuàng)建X509_store對(duì)象,用來(lái)存儲(chǔ)證書(shū)、撤銷(xiāo)列表等??
  98. ????store=X509_STORE_new();??
  99. ??
  100. ????//?載 入葉子證書(shū)??
  101. ????m_leaf?=?load_certfile(certFile);??
  102. ??
  103. ????// 設(shè)置驗(yàn)證標(biāo)記?都驗(yàn)證那些項(xiàng)?X509_V_FLAG_CRL_CHECK_ALL表示全部驗(yàn)證??
  104. ????X509_STORE_set_flags(store,X509_V_FLAG_CRL_CHECK_ALL);??
  105. ????// 初始化CTX?這個(gè)類就是所謂的上下文?該類收集完必要的信息數(shù)據(jù)?可以進(jìn)行驗(yàn)證??
  106. ????//?此處 X509_STORE_CTX_init最后一個(gè)參數(shù)為NULL,表示不加載證書(shū)撤銷(xiāo)列表CPL??
  107. ????if(!X509_STORE_CTX_init(&ctx,store?,m_leaf,NULL))??
  108. ????{??
  109. ????????ret?=?0;??
  110. ????????goto?end;??
  111. ????}??
  112. ??
  113. ????if(m_chain?==?NULL)??
  114. ????{??
  115. ????????cout<<" 加載證書(shū)鏈?zhǔn)?\n"<<endl;??
  116. ????????ret?=?0;??
  117. ????????goto?end;??
  118. ????}??
  119. ????else??
  120. ????{??
  121. ????????// 將證書(shū)鏈存入CTX??
  122. ????????X509_STORE_CTX_trusted_stack(&ctx,?m_chain);??
  123. ????}??
  124. ??
  125. ????// 證書(shū)鏈?zhǔn)津?yàn)證??
  126. ????if(1?==?X509_verify_cert(&ctx))??
  127. ????????ret?=?1;??
  128. ????else??
  129. ????????ret?=?0;??
  130. end:??
  131. ????X509_STORE_CTX_cleanup(&ctx);??
  132. ????if(store)X509_STORE_free(store);??
  133. ????return?ret;??
  134. }??
  135. ??
  136. X509*?VerifyDCChain::load_certfile(const?char*?certFile)??
  137. {??
  138. ????X509*?cert?=?NULL;??
  139. ????BIO*?in?=?NULL;??
  140. ??
  141. ????if(certFile==NULL)??
  142. ????????goto?end;??
  143. ????in?=?BIO_new_file(certFile,"r");??
  144. ????if(in==NULL)??
  145. ????????goto?end;??
  146. ????// 將IO中數(shù)據(jù)以PEM格式讀入到X509對(duì)象??
  147. ????cert?=?PEM_read_bio_X509(in,NULL,NULL,NULL);??
  148. ????if(cert?==?NULL)??
  149. ????????goto?end;??
  150. end:??
  151. ????if(in)BIO_free(in);??
  152. ????return?cert;??
  153. }??
  154. ??
  155. /************************************************************************/??
  156. /*?????????????????????????????????test.cpp?????????????????????????????*/??
  157. /************************************************************************/??
  158. ??
  159. #include?"VerifyDCChain.h"??
  160. #include?<iostream>??
  161. using?namespace?std;??
  162. ??
  163. void?main(void)??
  164. {??
  165. ????VerifyDCChain?m_check;??
  166. ??
  167. ????//?注 意此處加載證書(shū)鏈中證書(shū)文件名的順序沒(méi)有要求,??
  168. ????//?因?yàn)樵? X509_verify_cert()函數(shù)中會(huì)對(duì)證書(shū)鏈中的??
  169. ????//?證書(shū)進(jìn)行排序??
  170. ????string?certChains[4]?=?{"5.crt",?"4.crt",?"3.crt",?"2.crt"};??
  171. ????m_check.Init(certChains,?4);??
  172. ??
  173. ????if?(1?==?m_check.verify("1.crt"))??
  174. ????{??
  175. ????????cout<<"OK!"<<endl;??
  176. ????}??
  177. ????else??
  178. ????{??
  179. ????????cout<<"ERROR!"<<endl;??
  180. ????}?????
  181. }??
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久久久久999精品视频| 亚洲美女淫视频| 免费不卡在线视频| 久久婷婷国产综合尤物精品| 欧美一区二区三区免费大片| 午夜宅男久久久| 亚洲一区二区免费看| 在线视频中文亚洲| 亚洲永久免费精品| 性视频1819p久久| 午夜精品国产更新| 狂野欧美一区| 亚洲欧洲在线一区| 国产精品中文在线| 国产日韩欧美在线| 在线精品福利| 一本一本久久a久久精品牛牛影视| 亚洲网站在线播放| 久久米奇亚洲| 亚洲精品乱码久久久久久蜜桃91| 在线亚洲美日韩| 欧美自拍偷拍午夜视频| 男女激情久久| 性做久久久久久久免费看| 久久久久成人精品| 欧美日韩一区在线播放| 国产午夜精品久久久久久久| 最新日韩精品| 性欧美xxxx大乳国产app| 蜜桃av一区二区三区| 99精品国产在热久久| 久久丁香综合五月国产三级网站| 欧美aaa级| 国产网站欧美日韩免费精品在线观看 | 久久国产夜色精品鲁鲁99| 蜜桃久久精品一区二区| 一区二区日韩精品| 欧美高清影院| 伊伊综合在线| 欧美一区二区三区视频| 91久久国产综合久久| 久久精品99国产精品日本| 欧美色视频在线| 亚洲看片免费| 欧美激情第五页| 久久高清国产| 国产日韩亚洲| 亚洲欧洲99久久| 日韩一区二区精品视频| 欧美高清成人| 亚洲激情影院| 欧美国产日韩在线| 久久亚洲精品视频| 国内精品国产成人| 久久精品在线播放| 亚洲欧美在线另类| 久久精品一区二区三区中文字幕| 在线视频精品| 欧美激情在线观看| 亚洲日本中文字幕| 欧美 亚欧 日韩视频在线| 美女图片一区二区| 久久福利资源站| 黄色av一区| 麻豆国产精品777777在线| 久久久久国内| 亚洲电影免费观看高清完整版在线观看| 久久精品一区二区三区四区| 性欧美暴力猛交69hd| 国内久久精品视频| 欧美夫妇交换俱乐部在线观看| 另类激情亚洲| 日韩一本二本av| 一本色道久久综合狠狠躁的推荐| 国产精品对白刺激久久久| 午夜精品久久久久久久99黑人| 亚洲一本大道在线| 国产一区二区三区av电影| 亚洲激情网站| 亚洲精选91| 国产精品无人区| 久久网站免费| 欧美激情91| 小黄鸭视频精品导航| 欧美在线www| 亚洲精品久久久久中文字幕欢迎你| 亚洲欧洲一级| 国产精品免费电影| 卡一卡二国产精品| 欧美激情第五页| 亚洲欧美一区二区三区在线| 久久精品日韩欧美| 亚洲乱亚洲高清| 亚洲欧美日韩一区二区三区在线观看| 国产主播一区二区| 亚洲日本中文字幕区| 欧美午夜不卡视频| 久久综合色婷婷| 欧美午夜一区二区三区免费大片| 久久久久久久97| 欧美日韩亚洲一区二区三区| 久久综合99re88久久爱| 欧美日韩国产小视频在线观看| 久久精品五月| 欧美日韩在线亚洲一区蜜芽| 久久久久在线| 国产精品普通话对白| 亚洲成色777777在线观看影院| 久久www免费人成看片高清 | 亚洲欧洲一区| 午夜精品www| 99亚洲视频| 久久中文在线| 久久深夜福利免费观看| 欧美三级在线视频| 亚洲电影欧美电影有声小说| 国产亚洲毛片| 亚洲男人的天堂在线| 亚洲视频碰碰| 亚洲网站啪啪| 玖玖玖国产精品| 欧美自拍丝袜亚洲| 欧美在线国产精品| 亚洲自啪免费| 欧美三区美女| 亚洲欧洲在线免费| 91久久极品少妇xxxxⅹ软件| 久久精品国产96久久久香蕉| 欧美亚洲综合网| 国产精品爱啪在线线免费观看 | 亚洲综合成人婷婷小说| 欧美国产精品久久| 嫩草国产精品入口| 在线观看亚洲| 久久亚洲欧美国产精品乐播| 欧美综合77777色婷婷| 国产精品swag| 亚洲一二三四久久| 亚洲欧美视频| 国产精品一区二区久久国产| 亚洲无吗在线| 久久不射2019中文字幕| 国产日韩精品久久| 欧美亚洲在线观看| 久久久久久久久蜜桃| 国内在线观看一区二区三区 | 国产精品一区在线观看| 国产精品99久久久久久久久| 亚洲欧美日韩在线播放| 欧美视频你懂的| 亚洲欧美国产精品桃花| 久久精品国产99精品国产亚洲性色 | 亚洲丰满在线| 夜色激情一区二区| 欧美日韩在线精品| 亚洲校园激情| 久久久久久久999| 亚洲国产精品久久久| 欧美国产日韩一区二区在线观看| 亚洲精品国产拍免费91在线| 亚洲在线视频一区| 国产一区二区三区免费在线观看| 欧美在线播放视频| 亚洲电影免费| 欧美一级视频一区二区| 精品成人免费| 欧美日韩午夜| 久久精品道一区二区三区| 亚洲福利在线视频| 亚洲欧美影音先锋| 亚洲国产综合91精品麻豆| 欧美美女日韩| 欧美一级黄色网| 亚洲日本中文| 榴莲视频成人在线观看| 一区二区三区导航| 影音先锋在线一区| 欧美日韩综合不卡| 久久久久久久久蜜桃| 亚洲伦理一区| 欧美va亚洲va香蕉在线| 亚洲女人av| 亚洲日本久久| 欧美日韩精品一区二区三区四区| 欧美高潮视频| 亚洲资源在线观看| 亚洲国产一区在线观看| 国产精品久久久一本精品| 久久婷婷久久一区二区三区| 在线一区亚洲| 亚洲三级视频在线观看| 美女精品视频一区| 欧美伊久线香蕉线新在线| 一区二区欧美在线| 亚洲欧洲在线免费| 韩国成人福利片在线播放| 欧美丝袜一区二区| 欧美成人黑人xx视频免费观看| 午夜精品久久久久久久蜜桃app| 亚洲精品乱码久久久久久久久|