认证方式为
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 -- 任务销毁