Finalized State class implementations for Attestation IMV/C

This commit is contained in:
Sansar Choinyambuu
2011-09-08 12:08:10 +02:00
committed by Andreas Steffen
parent 887cd7d253
commit 12c0a261cc
4 changed files with 99 additions and 4 deletions
@@ -38,6 +38,11 @@ struct private_imc_attestation_state_t {
* TNCCS connection state
*/
TNC_ConnectionState state;
/**
* IMC Attestation handshake state
*/
imc_attestation_handshake_state_t handshake_state;
};
@@ -59,6 +64,18 @@ METHOD(imc_state_t, destroy, void,
free(this);
}
METHOD(imc_attestation_state_t, get_handshake_state, imc_attestation_handshake_state_t,
private_imc_attestation_state_t *this)
{
return this->handshake_state;
}
METHOD(imc_attestation_state_t, set_handshake_state, void,
private_imc_attestation_state_t *this, imc_attestation_handshake_state_t new_state)
{
this->handshake_state = new_state;
}
/**
* Described in header.
*/
@@ -73,9 +90,12 @@ imc_state_t *imc_attestation_state_create(TNC_ConnectionID connection_id)
.change_state = _change_state,
.destroy = _destroy,
},
.get_handshake_state = _get_handshake_state,
.set_handshake_state = _set_handshake_state,
},
.state = TNC_CONNECTION_STATE_CREATE,
.connection_id = connection_id,
.handshake_state = IMC_ATTESTATION_STATE_INIT,
);
return &this->public.interface;
@@ -26,6 +26,23 @@
#include <library.h>
typedef struct imc_attestation_state_t imc_attestation_state_t;
typedef enum imc_attestation_handshake_state_t imc_attestation_handshake_state_t;
/**
* IMC Attestation Handshake States (state machine)
*/
enum imc_attestation_handshake_state_t {
IMC_ATTESTATION_STATE_INIT,
IMC_ATTESTATION_STATE_REQ_PROTO_CAP,
IMC_ATTESTATION_STATE_REQ_MEAS_ALGO,
IMC_ATTESTATION_STATE_GET_TPM_INFO,
IMC_ATTESTATION_STATE_GET_AIK,
IMC_ATTESTATION_STATE_REQ_FUNCT_COMP_EVID,
IMC_ATTESTATION_STATE_GEN_ATTEST_EVID,
IMC_ATTESTATION_STATE_REQ_FILE_METADATA,
IMC_ATTESTATION_STATE_REQ_FILE_MEAS,
IMC_ATTESTATION_STATE_REQ_IML,
};
/**
* Internal state of an imc_attestation_t connection instance
@@ -36,13 +53,26 @@ struct imc_attestation_state_t {
* imc_state_t interface
*/
imc_state_t interface;
/**
* get state of the handshake
*
* @return the handshake state of IMC
*/
imc_attestation_handshake_state_t (*get_handshake_state)(imc_attestation_state_t *this);
/**
* get state of the handshake
*
* @param new_state the handshake state of IMC
*/
void (*set_handshake_state)(imc_attestation_state_t *this, imc_attestation_handshake_state_t new_state);
};
/**
* Create an imc_attestation_state_t instance
*
* @param id connection ID
* @param rounds total number of IMC re-measurements
*/
imc_state_t* imc_attestation_state_create(TNC_ConnectionID id);
@@ -39,6 +39,11 @@ struct private_imv_attestation_state_t {
* TNCCS connection state
*/
TNC_ConnectionState state;
/**
* IMV Attestation handshake state
*/
imv_attestation_handshake_state_t handshake_state;
/**
* IMV action recommendation
@@ -148,6 +153,18 @@ METHOD(imv_state_t, destroy, void,
free(this);
}
METHOD(imv_attestation_state_t, get_handshake_state, imv_attestation_handshake_state_t,
private_imv_attestation_state_t *this)
{
return this->handshake_state;
}
METHOD(imv_attestation_state_t, set_handshake_state, void,
private_imv_attestation_state_t *this, imv_attestation_handshake_state_t new_state)
{
this->handshake_state = new_state;
}
/**
* Described in header.
*/
@@ -165,13 +182,14 @@ imv_state_t *imv_attestation_state_create(TNC_ConnectionID connection_id)
.get_reason_string = _get_reason_string,
.destroy = _destroy,
},
.get_handshake_state = _get_handshake_state,
.set_handshake_state = _set_handshake_state,
},
.state = TNC_CONNECTION_STATE_CREATE,
.handshake_state = IMC_ATTESTATION_STATE_INIT,
.rec = TNC_IMV_ACTION_RECOMMENDATION_NO_RECOMMENDATION,
.eval = TNC_IMV_EVALUATION_RESULT_DONT_KNOW,
);
return &this->public.interface;
}
@@ -26,6 +26,23 @@
#include <library.h>
typedef struct imv_attestation_state_t imv_attestation_state_t;
typedef enum imv_attestation_handshake_state_t imv_attestation_handshake_state_t;
/**
* IMV Attestation Handshake States (state machine)
*/
enum imv_attestation_handshake_state_t {
IMV_ATTESTATION_STATE_INIT,
IMV_ATTESTATION_STATE_PROTO_CAP,
IMV_ATTESTATION_STATE_MEAS_ALGO,
IMV_ATTESTATION_STATE_TPM_INFO,
IMV_ATTESTATION_STATE_AIK,
IMV_ATTESTATION_STATE_SIMPLE_COMP_EVID,
IMV_ATTESTATION_STATE_SIMPLE_EVID_FINAL,
IMV_ATTESTATION_STATE_FILE_METADATA,
IMV_ATTESTATION_STATE_FILE_MEAS,
IMV_ATTESTATION_STATE_IML,
};
/**
* Internal state of an imv_attestation_t connection instance
@@ -38,8 +55,18 @@ struct imv_attestation_state_t {
imv_state_t interface;
/**
* Add any setters and getters here
* get state of the handshake
*
* @return the handshake state of IMV
*/
imv_attestation_handshake_state_t (*get_handshake_state)(imv_attestation_state_t *this);
/**
* get state of the handshake
*
* @param new_state the handshake state of IMV
*/
void (*set_handshake_state)(imv_attestation_state_t *this, imv_attestation_handshake_state_t new_state);
};
/**