void delete_cryptographic_continuation(struct state *st) {}

#include "pluto_crypt.h"
struct pluto_crypto_req_cont *continuation;


struct pluto_crypto_req rd;
struct pluto_crypto_req *r = &rd;

stf_status build_ke(struct pluto_crypto_req_cont *cn
		    , struct state *st 
		    , const struct oakley_group_desc *group
		    , enum crypto_importance importance)
{
	continuation = cn;
	memset(&rd, 0, sizeof(rd));
	
	r->pcr_len  = sizeof(struct pluto_crypto_req);
	r->pcr_type = pcr_build_kenonce;
	r->pcr_pcim = importance;
	
	pcr_init(r, pcr_build_kenonce, importance);
	r->pcr_d.kn.oakley_group   = group->group;

	return STF_SUSPEND;
}

stf_status start_dh_v2(struct pluto_crypto_req_cont *cn
		       , struct state *st
		       , enum crypto_importance importance
		       , enum phase1_role init       /* TRUE=g_init,FALSE=g_r */
		       , u_int16_t oakley_group2)
{
	continuation = cn;
	memset(&rd, 0, sizeof(rd));
	
	r->pcr_len  = sizeof(struct pluto_crypto_req);
	r->pcr_type = pcr_compute_dh_v2;
	r->pcr_pcim = importance;
	
	pcr_init(&r,pcr_compute_dh_v2, importance );
	r->pcr_d.kn.oakley_group   = oakley_group2;

	return STF_SUSPEND;
}


void run_continuation(struct pluto_crypto_req *r)
{
	while(continuation != NULL) {
		struct pluto_crypto_req_cont *cn = continuation;
		continuation = NULL;
		(*cn->pcrc_func)(cn, r, NULL);
	}
}

bool ikev2_calculate_rsa_sha1(struct state *st
			      , enum phase1_role role
			      , unsigned char *idhash
			      , pb_stream *a_pbs)
{
	out_zero(192, a_pbs, "fake rsa sig");
	return TRUE;
}

bool ikev2_calculate_psk_auth(struct state *st
                              , enum phase1_role role
                              , unsigned char *idhash
                              , pb_stream *a_pbs)
{
	out_zero(20, a_pbs, "fake psk auth");
	return TRUE;
}

stf_status 
ikev2_verify_psk_auth(struct state *st
		      , enum phase1_role role
		      , unsigned char *idhash
		      , pb_stream *sig_pbs)
{
	return STF_OK; 
}

stf_status
ikev2_verify_rsa_sha1(struct state *st
		      , enum phase1_role role
			    , unsigned char *idhash
			    , const struct pubkey_list *keys_from_dns
			    , const struct gw_info *gateways_from_dns
			    , pb_stream *sig_pbs)
{
	return STF_OK;
}

