Finalized State class implementations for Attestation IMV/C
This commit is contained in:
committed by
Andreas Steffen
parent
887cd7d253
commit
12c0a261cc
@@ -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);
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user