case AUTH_RSA:
case AUTH_XAUTH_INIT_RSA:
case AUTH_XAUTH_RESP_RSA:
+ case AUTH_HYBRID_INIT_RSA:
+ case AUTH_HYBRID_RESP_RSA:
{
this->prf->set_key(this->prf, nonces);
this->prf->allocate_bytes(this->prf, g_xy, &this->skeyid);
return AUTH_XAUTH_RESP_PSK;
}
}
- /* TODO-IKEv1: Hybrid methods? */
+ if (i1 == AUTH_CLASS_XAUTH && r1 == AUTH_CLASS_PUBKEY &&
+ i2 == AUTH_CLASS_ANY && r2 == AUTH_CLASS_ANY)
+ {
+ return AUTH_HYBRID_INIT_RSA;
+ }
return AUTH_NONE;;
}
{
case AUTH_XAUTH_INIT_PSK:
case AUTH_XAUTH_INIT_RSA:
+ case AUTH_HYBRID_INIT_RSA:
this->ike_sa->queue_task(this->ike_sa,
(task_t*)xauth_create(this->ike_sa, TRUE));
return SUCCESS;
case AUTH_XAUTH_RESP_PSK:
case AUTH_XAUTH_RESP_RSA:
+ case AUTH_HYBRID_RESP_RSA:
/* TODO-IKEv1: not yet supported */
return FAILED;
default:
{
case AUTH_XAUTH_INIT_PSK:
case AUTH_XAUTH_INIT_RSA:
+ case AUTH_HYBRID_INIT_RSA:
/* wait for XAUTH request */
return SUCCESS;
case AUTH_XAUTH_RESP_PSK:
case AUTH_XAUTH_RESP_RSA:
+ case AUTH_HYBRID_RESP_RSA:
/* TODO-IKEv1: not yet */
return FAILED;
default: