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

S.l.e!ep.¢%

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

使用 Openssl驗證證書鏈(轉)

Posted on 2010-07-02 08:23 S.l.e!ep.¢% 閱讀(3715) 評論(0)  編輯 收藏 引用 所屬分類: OpenSSL

使用 Openssl驗證證書鏈(轉)

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

項 目中遇到使用Openssl驗證證書鏈的問題,在網上找了很長時間,發現這方面的資料很少,通過多方努力,總算實現了基本功能,為了給大家提供一下參考, 本人實現了一個驗證證書鏈的類,以供參考,由于本人也是剛剛接觸Openssl,如果有不正確的地方,請大家多多指導

  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. ????*?初 始化證書鏈堆棧m_chain?
  25. ????*?@param[in]?certChains?證書鏈中各個證 書文件名數組?
  26. ????*?@param[in]?num?證書鏈中證書個數?
  27. ????*/??
  28. ????int?Init(const?string*?certChains,?const?int?num);??
  29. ??
  30. ????/*?
  31. ????*?使 用給定的證書鏈驗證葉子證書?
  32. ????*?@param[in]?certFile?需要驗證的葉子證書文 件名?
  33. ????*/??
  34. ????int?verify(const?char*?certFile);??
  35. private:??
  36. ??
  37. ????/*?
  38. ????*?加 載證書文件?
  39. ????*?@param[in]?certFile?需要加載的證書文件名?
  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. ????//?注 意此處加載證書鏈中證書的順序沒有要求,因為??
  80. ????//?在X509_verify_cert()函 數中會對證書鏈中的證書??
  81. ????//?進行排序??
  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. ????// 創建X509_store對象,用來存儲證書、撤銷列表等??
  98. ????store=X509_STORE_new();??
  99. ??
  100. ????//?載 入葉子證書??
  101. ????m_leaf?=?load_certfile(certFile);??
  102. ??
  103. ????// 設置驗證標記?都驗證那些項?X509_V_FLAG_CRL_CHECK_ALL表示全部驗證??
  104. ????X509_STORE_set_flags(store,X509_V_FLAG_CRL_CHECK_ALL);??
  105. ????// 初始化CTX?這個類就是所謂的上下文?該類收集完必要的信息數據?可以進行驗證??
  106. ????//?此處 X509_STORE_CTX_init最后一個參數為NULL,表示不加載證書撤銷列表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<<" 加載證書鏈失敗!\n"<<endl;??
  116. ????????ret?=?0;??
  117. ????????goto?end;??
  118. ????}??
  119. ????else??
  120. ????{??
  121. ????????// 將證書鏈存入CTX??
  122. ????????X509_STORE_CTX_trusted_stack(&ctx,?m_chain);??
  123. ????}??
  124. ??
  125. ????// 證書鏈式驗證??
  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中數據以PEM格式讀入到X509對象??
  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. ????//?注 意此處加載證書鏈中證書文件名的順序沒有要求,??
  168. ????//?因為在 X509_verify_cert()函數中會對證書鏈中的??
  169. ????//?證書進行排序??
  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>
            娇妻被交换粗又大又硬视频欧美| 亚洲综合首页| 久久尤物电影视频在线观看| 亚洲一区日本| 久久国产精品久久国产精品| 久久er精品视频| 久久网站热最新地址| 久久尤物视频| 国产精品理论片| 韩日视频一区| 亚洲视频在线观看免费| 午夜亚洲福利| 欧美成人一区二免费视频软件| 亚洲国产精品毛片| 正在播放日韩| 欧美久久视频| 亚洲第一页在线| 欧美中日韩免费视频| 亚洲国产午夜| 麻豆国产va免费精品高清在线| 欧美午夜在线一二页| 亚洲国产成人91精品| 久久久www成人免费无遮挡大片| 久久精品国产免费观看| 日韩一级不卡| 欧美亚韩一区| 亚洲图片你懂的| 99国产精品久久久久老师| 欧美顶级少妇做爰| 亚洲老司机av| 99精品久久久| 农村妇女精品| 久久大逼视频| 精品动漫3d一区二区三区| 久久成人这里只有精品| 性色一区二区| 国产在线日韩| 欧美14一18处毛片| 欧美国产日韩一区二区| 亚洲国产99精品国自产| 亚洲精品一二区| 欧美新色视频| 久久乐国产精品| 欧美成人免费观看| 性8sex亚洲区入口| 欧美一级淫片aaaaaaa视频| 韩国免费一区| 亚洲精品偷拍| 国产夜色精品一区二区av| 亚洲丰满在线| 国产欧美日韩视频一区二区| 欧美国产精品日韩| 欧美午夜精品久久久| 玖玖玖免费嫩草在线影院一区| 欧美日韩国产精品自在自线| 欧美淫片网站| 国产精品mm| 亚洲国产精品久久久久秋霞不卡| 欧美视频免费看| 免费成人在线视频网站| 国产日产欧产精品推荐色| 亚洲美女视频网| 亚洲欧洲日本专区| 久久亚洲色图| 欧美a级一区| 国产精品一区二区三区乱码| 亚洲久久成人| 免费在线观看成人av| 久久免费视频网| 国产日韩精品久久| 香港久久久电影| 欧美与黑人午夜性猛交久久久| 欧美午夜片在线免费观看| 91久久线看在观草草青青| 亚洲伦理自拍| 欧美日韩的一区二区| 夜夜嗨av一区二区三区免费区 | 亚洲第一视频网站| 国产婷婷精品| 久久精品一本| 99天天综合性| 久久露脸国产精品| 亚洲精品视频免费观看| 欧美日韩国产综合视频在线| 国产精品99久久99久久久二8| 欧美一区二区三区日韩视频| 韩国女主播一区二区三区| 免费久久久一本精品久久区| 亚洲日本中文| 久久天天躁狠狠躁夜夜爽蜜月| 尤物yw午夜国产精品视频明星 | 老牛影视一区二区三区| 亚洲精品国久久99热| 久久久久高清| 亚洲一区亚洲二区| 亚洲乱码精品一二三四区日韩在线| 欧美视频一区二区三区…| 久久高清国产| 亚洲免费影院| 99视频在线精品国自产拍免费观看| 久久婷婷蜜乳一本欲蜜臀| 亚洲欧美日韩专区| 一本一本久久a久久精品综合妖精| 欧美一进一出视频| 亚洲国产高清在线| 国产亚洲欧洲一区高清在线观看| 欧美69wwwcom| 欧美理论电影在线播放| 久久午夜影视| 久久精品视频在线播放| 久久成人精品电影| 欧美自拍偷拍| 久久精品国产免费看久久精品| 一本大道久久a久久精品综合| 亚洲美女诱惑| 亚洲综合电影| 久久综合影视| 欧美三级免费| 国产午夜精品久久久久久久| 国模大胆一区二区三区| 1024亚洲| 亚洲制服av| 美女视频黄 久久| 最新亚洲视频| 亚洲欧美日韩综合国产aⅴ| 久久久久这里只有精品| 欧美日韩亚洲一区二| 一色屋精品视频在线看| 99国产精品久久久久久久成人热 | 狠狠色2019综合网| 99这里有精品| 欧美成人精品在线| 亚洲欧美中文在线视频| 欧美精品久久99久久在免费线| 国产欧美精品在线| 一本色道久久综合精品竹菊| 免费看的黄色欧美网站| 亚洲一区二区三区精品视频| 欧美久久电影| 亚洲国产合集| 久久久久久九九九九| 亚洲免费观看| 欧美日韩成人网| 欧美精品三级日韩久久| 伊人色综合久久天天五月婷| 午夜亚洲福利| 亚洲欧美国产毛片在线| 欧美体内谢she精2性欧美| 亚洲人体1000| 国产精品v亚洲精品v日韩精品| 日韩一区二区精品视频| 亚洲精品乱码久久久久久蜜桃91| 老司机aⅴ在线精品导航| 亚洲国产精品久久91精品| 免费日韩成人| 欧美黄色小视频| 一区二区欧美日韩视频| 国产精品99久久99久久久二8 | 欧美 日韩 国产在线| 亚洲二区精品| 日韩视频精品在线| 国产日韩欧美不卡在线| 老牛嫩草一区二区三区日本 | 久久成人综合视频| 亚洲高清一区二| 99国产精品视频免费观看一公开| 国产精品久久久999| 久久久久久亚洲综合影院红桃 | 久久国产色av| 欧美高清你懂得| 欧美一区二区三区四区在线观看地址 | 91久久在线视频| 国产精品久久久久aaaa九色| 欧美成人黑人xx视频免费观看| 欧美高清自拍一区| 久久精品一区二区三区不卡牛牛| 欧美成人一区二区三区在线观看| 性视频1819p久久| 欧美极品一区二区三区| 麻豆精品在线观看| 国产精品自拍小视频| 一区二区欧美亚洲| 亚洲美女电影在线| 母乳一区在线观看| 欧美成人午夜视频| 亚洲国产精品va在线看黑人动漫 | 亚洲一区久久| 欧美黄色日本| 亚洲人在线视频| 一本久久a久久精品亚洲| 欧美激情中文字幕乱码免费| 亚洲精品国产拍免费91在线| 亚洲欧洲综合| 欧美午夜无遮挡| 亚洲一区二区三区精品在线| 亚洲一区二区三区在线视频| 国产精品久久久久久久一区探花 | 老司机67194精品线观看| 在线观看视频一区| 欧美日韩在线观看一区二区|