認證方式爲 RSA signatures 3 ---- RFC2409 中有描述
被動方先發送Certificate Request (7)報文,攜帶的Certificate Type:x.509 Certificate -Signature (4)
具體到代碼流程
任務isakmp_cert_pre.c 、 isakmp_cert_post.c
this->state = CR_SA
第一條報文 : 主動方 cert_pre : build_i : 什麼都不做,return NEED_MORE
cert_post: build_i : 什麼都不做,return NEED_MORE
接收方 cert_pre : process_r : 發現使用證書,return NEED_MORE
cert_post: process_r : 發現使用證書,return NEED_MORE
第二條報文 : 接收方 cert_pre : build_r : 狀態爲CR_SA,直接設置狀態,this->state = CR_KE,返回NEED_MORE
cert_post: build_r: 狀態爲CR_SA,設置狀態this->state = CR_KE,return NEED_MORE
主動方 cert_pre : process_i : 狀態爲CR_SA,發現要使用證書,this->state = CR_KE, return NEED_MORE
cert_post : process_i : 狀態爲CR_SA,發現要使用證書,this->state = CR_KE,return NEED_MORE
第三條報文 : 主動方 cert_pre : build_i : 狀態爲CR_KE,什麼都不做,return NEED_MORE
cert_post : build_i : 狀態爲CR_KE,什麼都不做,return NEED_MORE
接收方 cert_pre : process_r : 狀態爲CR_KE,調用process_certreqs,這個時候由於報文裏沒有certreq載荷,因此什麼都不處理,returnr NEED_MORE
cert_post : process_r : 狀態爲CR_KE,什麼都不做,return NEED_MORE
第四條報文 : 接收方 cert_pre : build_r : 狀態爲CR_KE,this->send_req爲真,build_certreqs,this->state = CR_AUTH, return NEED_MORE
cert_post : build_r : 狀態爲CR_KE,this->state = CR_AUTH,return NEED_MORE
主動方 cert_pre : process_i : 狀態爲CR_KE,process_certreqs,this->state = CR_AUTH
cert_post : process_i : 狀態爲CR_KE,this->state = CR_AUTH,return NEED_MORE
第五條報文 : 主動方 cert_pre : build_i : 狀態爲CR_AUTH,build_certreqs,return NEED_MORE
cert_post : build_i : 狀態爲CR_AUTH,build_certs,return
NEED_MORE
接收方 cert_pre : process_r : 狀態爲CR_AUTH,調用process_certreqs,處理certreq,process_certs處理證書 return
SUCCESS -- 任務銷燬
cert_post : process_r : 狀態爲CR_AUTH,什麼都不做,return
NEED_MORE
第六條報文 : 接收方 cert_pre : build_r : 狀態爲CR_AUTH,return
NEED_MORE ----- 這個時候,應該已經沒有此任務了,所以此場景不會走
cert_post : build_r : 狀態爲CR_AUTH,build_certs,return
SUCCESS -- 任務銷燬
主動方 cert_pre : process_i : 狀態爲CR_AUTH,process_certs,return
SUCCESS -- 任務銷燬
cert_post : process_i : 狀態爲CR_AUTH,return
SUCCESS -- 任務銷燬