Commits (2)
...@@ -18,8 +18,6 @@ module LibItsCommon_Templates { ...@@ -18,8 +18,6 @@ module LibItsCommon_Templates {
group taPrimitives { group taPrimitives {
//FIXME RGY the simple boolean result has been changed to a union
// template (value) AcSecResponse m_acSecResponseSuccess := true;
template (value) AdapterControlResults m_acSecResponseSuccess := {acSecResponse:=true}; template (value) AdapterControlResults m_acSecResponseSuccess := {acSecResponse:=true};
/** /**
...@@ -44,18 +42,16 @@ module LibItsCommon_Templates { ...@@ -44,18 +42,16 @@ module LibItsCommon_Templates {
} }
} // End of template m_acDisableSecurity } // End of template m_acDisableSecurity
//FIXME RGY As discussed, port in type is changed to a top-level union type
// template AcGnssResponse m_acGnssResponseSuccess := true;
template AdapterControlResults m_acGnssResponseSuccess := {acGnssResponse:=true}; template AdapterControlResults m_acGnssResponseSuccess := {acGnssResponse:=true};
//FIXME RGY As discussed, port in type is changed to a top-level union type template (value) AdapterControlResults m_acGnssDistanceCovered := {
// template AcGnssDistanceCovered m_acGnssDistanceCovered := true; acGnssDistanceCovered:=true
template AdapterControlResults m_acGnssDistanceCovered := {acGnssDistanceCovered:=true}; };
/** /**
* @desc Testsystem will load GNSS scenario * @desc Testsystem will load GNSS scenario
*/ */
template AcGnssPrimitive m_loadScenario(Scenario p_scenario) := { template (value) AcGnssPrimitive m_loadScenario(Scenario p_scenario) := {
loadScenario := { loadScenario := {
scenario := p_scenario scenario := p_scenario
} }
...@@ -64,7 +60,7 @@ module LibItsCommon_Templates { ...@@ -64,7 +60,7 @@ module LibItsCommon_Templates {
/** /**
* @desc Testsystem will start GNSS scenario * @desc Testsystem will start GNSS scenario
*/ */
template AcGnssPrimitive m_startScenario := { template (value) AcGnssPrimitive m_startScenario := {
startScenario := { startScenario := {
} }
} }
...@@ -72,7 +68,7 @@ module LibItsCommon_Templates { ...@@ -72,7 +68,7 @@ module LibItsCommon_Templates {
/** /**
* @desc Testsystem will stop GNSS scenario * @desc Testsystem will stop GNSS scenario
*/ */
template AcGnssPrimitive m_stopScenario := { template (value) AcGnssPrimitive m_stopScenario := {
stopScenario := { stopScenario := {
} }
} }
...@@ -80,7 +76,7 @@ module LibItsCommon_Templates { ...@@ -80,7 +76,7 @@ module LibItsCommon_Templates {
/** /**
* @desc Testsystem will request indication if distance was covered * @desc Testsystem will request indication if distance was covered
*/ */
template AcGnssPrimitive m_distanceToCover(float p_distance) := { template (value) AcGnssPrimitive m_distanceToCover(float p_distance) := {
distanceToCover := { distanceToCover := {
distance := p_distance distance := p_distance
} }
...@@ -89,7 +85,7 @@ module LibItsCommon_Templates { ...@@ -89,7 +85,7 @@ module LibItsCommon_Templates {
/** /**
* @desc Testsystem will change the speed (delta value) * @desc Testsystem will change the speed (delta value)
*/ */
template AcGnssPrimitive m_changeScenarioSpeed(SpeedValue p_deltaSpeedValue) := { template (value) AcGnssPrimitive m_changeScenarioSpeed(SpeedValue p_deltaSpeedValue) := {
changeSpeed := { changeSpeed := {
deltaSpeed := p_deltaSpeedValue deltaSpeed := p_deltaSpeedValue
} }
...@@ -98,7 +94,7 @@ module LibItsCommon_Templates { ...@@ -98,7 +94,7 @@ module LibItsCommon_Templates {
/** /**
* @desc Testsystem will change the heading (delta value) * @desc Testsystem will change the heading (delta value)
*/ */
template AcGnssPrimitive m_changeScenarioHeading(HeadingValue p_deltaHeadingValue) := { template (value) AcGnssPrimitive m_changeScenarioHeading(HeadingValue p_deltaHeadingValue) := {
changeHeading := { changeHeading := {
deltaHeading := p_deltaHeadingValue deltaHeading := p_deltaHeadingValue
} }
......
...@@ -314,7 +314,7 @@ module LibItsDenm_Templates { ...@@ -314,7 +314,7 @@ module LibItsDenm_Templates {
* @param p_protocolVersion The expected protocol version (Default: current DEN protocol version) * @param p_protocolVersion The expected protocol version (Default: current DEN protocol version)
* @param p_messageID The expected message id (Default: DEN message id) * @param p_messageID The expected message id (Default: DEN message id)
*/ */
template ItsPduHeader mw_itsPduHeader( template (present) ItsPduHeader mw_itsPduHeader(
template (present) StationID p_stationID := ?, template (present) StationID p_stationID := ?,
template (present) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, template (present) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_,
template (present) ItsPduHeader.messageID p_messageID := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_denm_ template (present) ItsPduHeader.messageID p_messageID := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_denm_
...@@ -431,7 +431,7 @@ module LibItsDenm_Templates { ...@@ -431,7 +431,7 @@ module LibItsDenm_Templates {
* @param p_location The expected location Container (Default: any or omit) * @param p_location The expected location Container (Default: any or omit)
* @param p_alacarte The expected Alacarte Container (Default: any or omit) * @param p_alacarte The expected Alacarte Container (Default: any or omit)
*/ */
template (present) DecentralizedEnvironmentalNotificationMessage mw_denm( template DecentralizedEnvironmentalNotificationMessage mw_denm(
template (present) ManagementContainer p_management := ?, template (present) ManagementContainer p_management := ?,
template SituationContainer p_situation := *, template SituationContainer p_situation := *,
template LocationContainer p_location := *, template LocationContainer p_location := *,
...@@ -500,7 +500,7 @@ module LibItsDenm_Templates { ...@@ -500,7 +500,7 @@ module LibItsDenm_Templates {
* @param p_detectionTime The detection time (Default: current time) * @param p_detectionTime The detection time (Default: current time)
* @param p_referenceTime The reference time (Default: current time) * @param p_referenceTime The reference time (Default: current time)
*/ */
template (value) ManagementContainer m_denmMgmtConTermination ( template (omit) ManagementContainer m_denmMgmtConTermination (
template (value) ActionID p_actionID, template (value) ActionID p_actionID,
template (value) StationType p_stationType := f_getTsStationType(), template (value) StationType p_stationType := f_getTsStationType(),
template (value) ValidityDuration p_validityDuration := defaultValidity, template (value) ValidityDuration p_validityDuration := defaultValidity,
...@@ -522,7 +522,7 @@ module LibItsDenm_Templates { ...@@ -522,7 +522,7 @@ module LibItsDenm_Templates {
* @param p_detectionTime The detection time (Default: current time) * @param p_detectionTime The detection time (Default: current time)
* @param p_referenceTime The reference time (Default: current time) * @param p_referenceTime The reference time (Default: current time)
*/ */
template (present) ManagementContainer mw_denmMgmtConTermination ( template ManagementContainer mw_denmMgmtConTermination (
template (present) ActionID p_actionID, template (present) ActionID p_actionID,
template (present) StationType p_stationType := f_getIutStationType(), template (present) StationType p_stationType := f_getIutStationType(),
template (present) TimestampIts p_referenceTime := ?, template (present) TimestampIts p_referenceTime := ?,
...@@ -541,7 +541,7 @@ module LibItsDenm_Templates { ...@@ -541,7 +541,7 @@ module LibItsDenm_Templates {
* @param p_validityDuration The expected validity duration (Default: any or omit) * @param p_validityDuration The expected validity duration (Default: any or omit)
* @param p_transmissionInterval The expected transmission interval (Default: any or omit) * @param p_transmissionInterval The expected transmission interval (Default: any or omit)
*/ */
template (present) ManagementContainer mw_denmMgmtCon( template ManagementContainer mw_denmMgmtCon(
template (present) ActionID p_actionID, template (present) ActionID p_actionID,
template (present) StationType p_stationType := f_getIutStationType(), template (present) StationType p_stationType := f_getIutStationType(),
template (present) TimestampIts p_referenceTime := ?, template (present) TimestampIts p_referenceTime := ?,
......
...@@ -161,7 +161,7 @@ module LibItsGeoNetworking_Functions { ...@@ -161,7 +161,7 @@ module LibItsGeoNetworking_Functions {
* NodeB being close to the area center * NodeB being close to the area center
*/ */
//FIXME RGY Titan doesn't support mtc and system clauses yet //FIXME RGY Titan doesn't support mtc and system clauses yet
function f_cf01Up(Scenario p_scenario := e_staticPosition) runs on ItsGeoNetworking /* TITAN TODO: system ItsGeoNetworkingSystem */ { function f_cf01Up(Scenario p_scenario := e_staticPosition) runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
// Variables // Variables
var PositionTable v_positionTable := {}; var PositionTable v_positionTable := {};
...@@ -190,7 +190,7 @@ module LibItsGeoNetworking_Functions { ...@@ -190,7 +190,7 @@ module LibItsGeoNetworking_Functions {
} // end f_cf01Up } // end f_cf01Up
//FIXME RGY Titan doesn't support mtc and system clauses yet //FIXME RGY Titan doesn't support mtc and system clauses yet
function f_cf01Down() runs on ItsGeoNetworking /* TITAN TODO: system ItsGeoNetworkingSystem */ { function f_cf01Down() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
f_uninitialiseSecuredMode(); f_uninitialiseSecuredMode();
...@@ -217,7 +217,7 @@ module LibItsGeoNetworking_Functions { ...@@ -217,7 +217,7 @@ module LibItsGeoNetworking_Functions {
*/ */
//FIXME RGY Titan doesn't support mtc and system clauses yet //FIXME RGY Titan doesn't support mtc and system clauses yet
function f_cf02Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { function f_cf02Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem {
// Variables // Variables
var LongPosVector v_longPosVectorIut := valueof(m_dummyLongPosVector); var LongPosVector v_longPosVectorIut := valueof(m_dummyLongPosVector);
...@@ -286,7 +286,7 @@ module LibItsGeoNetworking_Functions { ...@@ -286,7 +286,7 @@ module LibItsGeoNetworking_Functions {
*/ */
//FIXME RGY Titan doesn't support mtc and system clauses yet //FIXME RGY Titan doesn't support mtc and system clauses yet
function f_cf02Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { function f_cf02Down() runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem {
// Local variables // Local variables
var integer i; var integer i;
...@@ -318,7 +318,7 @@ module LibItsGeoNetworking_Functions { ...@@ -318,7 +318,7 @@ module LibItsGeoNetworking_Functions {
* @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages
*/ */
//FIXME RGY Titan doesn't support mtc and system clauses yet //FIXME RGY Titan doesn't support mtc and system clauses yet
function f_cf03Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { function f_cf03Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem {
// Variables // Variables
var LongPosVector v_longPosVectorIut := valueof(m_dummyLongPosVector); var LongPosVector v_longPosVectorIut := valueof(m_dummyLongPosVector);
...@@ -386,7 +386,7 @@ module LibItsGeoNetworking_Functions { ...@@ -386,7 +386,7 @@ module LibItsGeoNetworking_Functions {
*/ */
//FIXME RGY Titan doesn't support mtc and system clauses yet //FIXME RGY Titan doesn't support mtc and system clauses yet
function f_cf03Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { function f_cf03Down() runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem {
// Local variables // Local variables
var integer i; var integer i;
...@@ -421,7 +421,7 @@ module LibItsGeoNetworking_Functions { ...@@ -421,7 +421,7 @@ module LibItsGeoNetworking_Functions {
*/ */
//FIXME RGY Titan doesn't support mtc and system clauses yet //FIXME RGY Titan doesn't support mtc and system clauses yet
function f_cf04Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { function f_cf04Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem {
// Variables // Variables
var LongPosVector v_longPosVectorIut := valueof(m_dummyLongPosVector); var LongPosVector v_longPosVectorIut := valueof(m_dummyLongPosVector);
...@@ -489,7 +489,7 @@ module LibItsGeoNetworking_Functions { ...@@ -489,7 +489,7 @@ module LibItsGeoNetworking_Functions {
*/ */
//FIXME RGY Titan doesn't support mtc and system clauses yet //FIXME RGY Titan doesn't support mtc and system clauses yet
function f_cf04Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */{ function f_cf04Down() runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem {
// Local variables // Local variables
var integer i; var integer i;
...@@ -520,7 +520,7 @@ module LibItsGeoNetworking_Functions { ...@@ -520,7 +520,7 @@ module LibItsGeoNetworking_Functions {
*/ */
//FIXME RGY Titan doesn't support mtc and system clauses yet //FIXME RGY Titan doesn't support mtc and system clauses yet
function f_cf05Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { function f_cf05Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem {
// Variables // Variables
var LongPosVector v_longPosVectorIut := valueof(m_dummyLongPosVector); var LongPosVector v_longPosVectorIut := valueof(m_dummyLongPosVector);
...@@ -587,7 +587,7 @@ module LibItsGeoNetworking_Functions { ...@@ -587,7 +587,7 @@ module LibItsGeoNetworking_Functions {
*/ */
//FIXME RGY Titan doesn't support mtc and system clauses yet //FIXME RGY Titan doesn't support mtc and system clauses yet
function f_cf05Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { function f_cf05Down() runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem {
// Local variables // Local variables
var integer i; var integer i;
...@@ -618,7 +618,7 @@ module LibItsGeoNetworking_Functions { ...@@ -618,7 +618,7 @@ module LibItsGeoNetworking_Functions {
* @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages
*/ */
//FIXME RGY Titan doesn't support mtc and system clauses yet //FIXME RGY Titan doesn't support mtc and system clauses yet
function f_cf06Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { function f_cf06Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem {
// Variables // Variables
var LongPosVector v_longPosVectorIut := valueof(m_dummyLongPosVector); var LongPosVector v_longPosVectorIut := valueof(m_dummyLongPosVector);
...@@ -685,7 +685,7 @@ module LibItsGeoNetworking_Functions { ...@@ -685,7 +685,7 @@ module LibItsGeoNetworking_Functions {
*/ */
//FIXME RGY Titan doesn't support mtc and system clauses yet //FIXME RGY Titan doesn't support mtc and system clauses yet
function f_cf06Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { function f_cf06Down() runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem {
// Local variables // Local variables
var integer i; var integer i;
...@@ -716,7 +716,7 @@ module LibItsGeoNetworking_Functions { ...@@ -716,7 +716,7 @@ module LibItsGeoNetworking_Functions {
*/ */
//FIXME RGY Titan doesn't support mtc and system clauses yet //FIXME RGY Titan doesn't support mtc and system clauses yet
function f_cf07Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc /* TITAN TODO mtc ItsMtc system ItsGeoNetworkingSystem */{ function f_cf07Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem {
// Variables // Variables
var LongPosVector v_longPosVectorIut := valueof(m_dummyLongPosVector); var LongPosVector v_longPosVectorIut := valueof(m_dummyLongPosVector);
...@@ -782,7 +782,7 @@ module LibItsGeoNetworking_Functions { ...@@ -782,7 +782,7 @@ module LibItsGeoNetworking_Functions {
* @desc Deletes configuration cf06 * @desc Deletes configuration cf06
*/ */
//FIXME RGY Titan doesn't support mtc and system clauses yet //FIXME RGY Titan doesn't support mtc and system clauses yet
function f_cf07Down() runs on ItsMtc /* TITAN TODO: mtc ItsMtc system ItsGeoNetworkingSystem */ { function f_cf07Down() runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem {
// Local variables // Local variables
var integer i; var integer i;
...@@ -978,9 +978,8 @@ module LibItsGeoNetworking_Functions { ...@@ -978,9 +978,8 @@ module LibItsGeoNetworking_Functions {
position := p_positionValue position := p_positionValue
}; };
} }
//FIXME RGY Titan doesn't support @deterministic yet
// function @deterministic f_fillTimestamp(inout LongPosVector v_vector) function @deterministic f_fillTimestamp(in LongPosVector v_vector)
function f_fillTimestamp(inout LongPosVector v_vector)
return LongPosVector { return LongPosVector {
if (v_vector.timestamp_ == 0) { if (v_vector.timestamp_ == 0) {
v_vector.timestamp_ := f_computeGnTimestamp(); v_vector.timestamp_ := f_computeGnTimestamp();
...@@ -1339,7 +1338,7 @@ module LibItsGeoNetworking_Functions { ...@@ -1339,7 +1338,7 @@ module LibItsGeoNetworking_Functions {
/** /**
* @desc Default handling cf01 de-initialisation. * @desc Default handling cf01 de-initialisation.
*/ */
altstep a_cf01Down() runs on ItsGeoNetworking { altstep a_cf01Down() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
[] a_shutdown() { [] a_shutdown() {
f_poDefault(); f_poDefault();
f_cf01Down(); f_cf01Down();
...@@ -1351,7 +1350,7 @@ module LibItsGeoNetworking_Functions { ...@@ -1351,7 +1350,7 @@ module LibItsGeoNetworking_Functions {
/** /**
* @desc Default handling cf02 de-initialisation. * @desc Default handling cf02 de-initialisation.
*/ */
altstep a_cf02Down() runs on ItsMtc { altstep a_cf02Down() runs on ItsMtc system ItsGeoNetworkingSystem {
[] a_shutdown() { [] a_shutdown() {
f_cf02Down(); f_cf02Down();
log("*** a_cf02Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); log("*** a_cf02Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***");
...@@ -1362,7 +1361,7 @@ module LibItsGeoNetworking_Functions { ...@@ -1362,7 +1361,7 @@ module LibItsGeoNetworking_Functions {
/** /**
* @desc Default handling cf03 de-initialisation. * @desc Default handling cf03 de-initialisation.
*/ */
altstep a_cf03Down() runs on ItsMtc { altstep a_cf03Down() runs on ItsMtc system ItsGeoNetworkingSystem {
[] a_shutdown() { [] a_shutdown() {
f_cf03Down(); f_cf03Down();
log("*** a_cf03Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); log("*** a_cf03Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***");
...@@ -1373,7 +1372,7 @@ module LibItsGeoNetworking_Functions { ...@@ -1373,7 +1372,7 @@ module LibItsGeoNetworking_Functions {
/** /**
* @desc Default handling cf04 de-initialisation. * @desc Default handling cf04 de-initialisation.
*/ */
altstep a_cf04Down() runs on ItsMtc { altstep a_cf04Down() runs on ItsMtc system ItsGeoNetworkingSystem {
[] a_shutdown() { [] a_shutdown() {
f_cf04Down(); f_cf04Down();
log("*** a_cf04Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); log("*** a_cf04Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***");
...@@ -1384,7 +1383,7 @@ module LibItsGeoNetworking_Functions { ...@@ -1384,7 +1383,7 @@ module LibItsGeoNetworking_Functions {
/** /**
* @desc Default handling cf05 de-initialisation. * @desc Default handling cf05 de-initialisation.
*/ */
altstep a_cf05Down() runs on ItsMtc { altstep a_cf05Down() runs on ItsMtc system ItsGeoNetworkingSystem {
[] a_shutdown() { [] a_shutdown() {
f_cf05Down(); f_cf05Down();
log("*** a_cf05Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); log("*** a_cf05Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***");
...@@ -1395,7 +1394,7 @@ module LibItsGeoNetworking_Functions { ...@@ -1395,7 +1394,7 @@ module LibItsGeoNetworking_Functions {
/** /**
* @desc Default handling cf06 de-initialisation. * @desc Default handling cf06 de-initialisation.
*/ */
altstep a_cf06Down() runs on ItsMtc { altstep a_cf06Down() runs on ItsMtc system ItsGeoNetworkingSystem {
[] a_shutdown() { [] a_shutdown() {
f_cf06Down(); f_cf06Down();
log("*** a_cf06Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); log("*** a_cf06Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***");
...@@ -1406,7 +1405,7 @@ module LibItsGeoNetworking_Functions { ...@@ -1406,7 +1405,7 @@ module LibItsGeoNetworking_Functions {
/** /**
* @desc Default handling cf07 de-initialisation. * @desc Default handling cf07 de-initialisation.
*/ */
altstep a_cf07Down() runs on ItsMtc { altstep a_cf07Down() runs on ItsMtc system ItsGeoNetworkingSystem {
[] a_shutdown() { [] a_shutdown() {
f_cf07Down(); f_cf07Down();
log("*** a_cf07Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); log("*** a_cf07Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***");
......
...@@ -18,7 +18,8 @@ module LibItsHttp_Pics { ...@@ -18,7 +18,8 @@ module LibItsHttp_Pics {
/** /**
* @desc * @desc
*/ */
modulepar charstring PICS_HEADER_CONTENT_TYPE := "application/x-its-request"; modulepar charstring PICS_HEADER_CONTENT_TYPE := "application/x-its-request";
modulepar charstring PICS_HEADER_CTL_CONTENT_TYPE := "application/x-its-crl";
/** /**
* @desc Set to false in TOKEN header shall not be used * @desc Set to false in TOKEN header shall not be used
......
...@@ -25,9 +25,10 @@ module LibItsHttp_TestSystem { ...@@ -25,9 +25,10 @@ module LibItsHttp_TestSystem {
type component HttpComponent extends SelfSyncComp { // FIXME To be rename into HttpTest type component HttpComponent extends SelfSyncComp { // FIXME To be rename into HttpTest
port HttpPort httpPort; port HttpPort httpPort;
port HttpPort httpPort_notif; port HttpPort httpPort_notif;
// timers
timer tc_wait := PX_TWAIT;
timer tc_ac := PX_TAC; timer tc_ac := PX_TAC;
timer tc_noac := PX_TNOAC; timer tc_noac := PX_TNOAC;
timer tc_wait := PX_TWAIT;
} // End of component HttpComponent } // End of component HttpComponent
......
...@@ -54,7 +54,7 @@ module LibItsIvim_Templates { ...@@ -54,7 +54,7 @@ module LibItsIvim_Templates {
* @param p_iviMsg The expected IVI Message * @param p_iviMsg The expected IVI Message
*/ */
template (present) IvimInd mw_ivimInd( template (present) IvimInd mw_ivimInd(
template (present) IVIM p_iviMsg template (present) IVIM p_iviMsg := ?
) := { ) := {
msgIn := p_iviMsg, msgIn := p_iviMsg,
gnNextHeader := *, gnNextHeader := *,
...@@ -77,10 +77,8 @@ module LibItsIvim_Templates { ...@@ -77,10 +77,8 @@ module LibItsIvim_Templates {
* @param p_gnLifetime GN packet lifetime value (ms) * @param p_gnLifetime GN packet lifetime value (ms)
* @param p_gnTrafficClass GN traffic class value * @param p_gnTrafficClass GN traffic class value
*/ */
//FIXME RGY template should be (present), no omit is assigned to it as a whole; Titan currently requires that the modified templte has at least the same restirction as the base template IvimInd mw_ivimIndWithGnParameters(
// template IvimInd mw_ivimIndWithGnParameters ( template (present) IVIM p_iviMsg := ?,
template(present) IvimInd mw_ivimIndWithGnParameters (
template (present) IVIM p_iviMsg,
in template UInt8 p_gnNextHeader := *, in template UInt8 p_gnNextHeader := *,
in template UInt8 p_gnHeaderType := *, in template UInt8 p_gnHeaderType := *,
in template UInt8 p_gnHeaderSubtype := *, in template UInt8 p_gnHeaderSubtype := *,
...@@ -100,10 +98,8 @@ module LibItsIvim_Templates { ...@@ -100,10 +98,8 @@ module LibItsIvim_Templates {
* @param p_btpDestinationPort BTP destination port value * @param p_btpDestinationPort BTP destination port value
* @param p_btpInfo BTP destination port info value (if BTP-B) or BTP source port value (if BTP-A) * @param p_btpInfo BTP destination port info value (if BTP-B) or BTP source port value (if BTP-A)
*/ */
//FIXME RGY template should be (present), no omit is assigned to it as a whole; Titan currently requires that the modified templte has at least the same restirction as the base template IvimInd mw_ivimIndWithBtpParameters(
// template IvimInd mw_ivimIndWithBtpParameters ( template (present) IVIM p_iviMsg := ?,
template(present) IvimInd mw_ivimIndWithBtpParameters (
template (present) IVIM p_iviMsg,
template UInt16 p_btpDestinationPort := *, template UInt16 p_btpDestinationPort := *,
template UInt16 p_btpInfo := * template UInt16 p_btpInfo := *
) modifies mw_ivimInd := { ) modifies mw_ivimInd := {
...@@ -117,9 +113,8 @@ module LibItsIvim_Templates { ...@@ -117,9 +113,8 @@ module LibItsIvim_Templates {
* @param p_ssp SSP security parameter * @param p_ssp SSP security parameter
* @param p_its_aid ITS-AID value * @param p_its_aid ITS-AID value
*/ */
//FIXME RGY template should be (present), no omit is assigned to it as a whole; Titan currently requires that the modified templte has at least the same restirction as the base template IvimInd mw_ivimIndWithSecurityParameters(
template(present) IvimInd mw_ivimIndWithSecurityParameters ( template (present) IVIM p_iviMsg := ?,
template (present) IVIM p_iviMsg,
template Bit256 p_ssp := *, template Bit256 p_ssp := *,
template UInt32 p_its_aid := * template UInt32 p_its_aid := *
) modifies mw_ivimInd := { ) modifies mw_ivimInd := {
...@@ -167,7 +162,7 @@ module LibItsIvim_Templates { ...@@ -167,7 +162,7 @@ module LibItsIvim_Templates {
* @param p_connectedIviStructures List of ConnectedIviStructure (Default: omit) * @param p_connectedIviStructures List of ConnectedIviStructure (Default: omit)
* @param p_optional_ Optional field (Default: omit) * @param p_optional_ Optional field (Default: omit)
*/ */
template (value) UtIvimUpdate m_utIvimUpdateEvent( template (omit) UtIvimUpdate m_utIvimUpdateEvent(
template (value) IviIdentificationNumber p_iviIdentificationNumber, template (value) IviIdentificationNumber p_iviIdentificationNumber,
template (omit) TimestampIts p_timeStamp := c_duration_2sec, template (omit) TimestampIts p_timeStamp := c_duration_2sec,
template (omit) TimestampIts p_validFrom := omit, template (omit) TimestampIts p_validFrom := omit,
...@@ -221,7 +216,7 @@ module LibItsIvim_Templates { ...@@ -221,7 +216,7 @@ module LibItsIvim_Templates {
* @param p_protocolVersion The expected protocol version (Default: current IVI protocol version) * @param p_protocolVersion The expected protocol version (Default: current IVI protocol version)
* @param p_messageID The expected message id (Default: IVI message id) * @param p_messageID The expected message id (Default: IVI message id)
*/ */
template ItsPduHeader mw_itsPduHeader( template (present) ItsPduHeader mw_itsPduHeader(
template (present) StationID p_stationID := ?, template (present) StationID p_stationID := ?,
template (present) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, template (present) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_,
template (present) ItsPduHeader.messageID p_messageID := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_ivim_ template (present) ItsPduHeader.messageID p_messageID := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_ivim_
...@@ -269,7 +264,7 @@ module LibItsIvim_Templates { ...@@ -269,7 +264,7 @@ module LibItsIvim_Templates {
* @param p_messageID The expected message id (Default: IVI message id) * @param p_messageID The expected message id (Default: IVI message id)
*/ */
template (present) IVIM mw_ivimPdu( template (present) IVIM mw_ivimPdu(
template (present) IviStructure p_ivim, template (present) IviStructure p_ivim := ?,
template (present) StationID p_stationID := ?, template (present) StationID p_stationID := ?,
template (present) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, template (present) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_,
template (present) ItsPduHeader.messageID p_messageID := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_ivim_ template (present) ItsPduHeader.messageID p_messageID := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_ivim_
...@@ -300,7 +295,7 @@ module LibItsIvim_Templates { ...@@ -300,7 +295,7 @@ module LibItsIvim_Templates {
* @param p_mandatory The Management Container * @param p_mandatory The Management Container
* @param p_optional_ A list of IVI Container (Default: omit) * @param p_optional_ A list of IVI Container (Default: omit)
*/ */
template (present) IviStructure mw_ivimStructure( template IviStructure mw_ivimStructure(
template (present) IVIManagementContainer p_mandatory := ?, template (present) IVIManagementContainer p_mandatory := ?,
template IviStructure.optional_ p_optional_ := * template IviStructure.optional_ p_optional_ := *
) := { ) := {
...@@ -315,7 +310,7 @@ module LibItsIvim_Templates { ...@@ -315,7 +310,7 @@ module LibItsIvim_Templates {
template (value) IviStructure m_ivimStructureCancellation( template (value) IviStructure m_ivimStructureCancellation(
in template (value) IviIdentificationNumber p_iviIdentificationNumber in template (value) IviIdentificationNumber p_iviIdentificationNumber
) := { ) := {
mandatory := valueof(m_iviManagementContainer(f_getProvider(), valueof(p_iviIdentificationNumber), LibItsIvim_ASN1_IVInamedNumbers.IviStatus_cancellation_)), mandatory := valueof(m_iviManagementContainer(f_getProvider(), valueof(p_iviIdentificationNumber), IviStatus_cancellation_)),
optional_ := omit optional_ := omit
} // End of template m_ivimStructureCancellation } // End of template m_ivimStructureCancellation
...@@ -509,7 +504,7 @@ module LibItsIvim_Templates { ...@@ -509,7 +504,7 @@ module LibItsIvim_Templates {
zone := p_zone zone := p_zone
} // End of template m_glcPart } // End of template m_glcPart
template (present) GlcPart mw_glcPart( template GlcPart mw_glcPart(
template (present) Zid p_zoneId := ?, template (present) Zid p_zoneId := ?,
template LanePosition p_laneNumber := *, template LanePosition p_laneNumber := *,
template GlcPart.zoneExtension p_zoneExtension := *, template GlcPart.zoneExtension p_zoneExtension := *,
......
...@@ -313,7 +313,7 @@ module LibItsMapemSpatem_Templates { ...@@ -313,7 +313,7 @@ module LibItsMapemSpatem_Templates {
* @param p_protocolVersion The expected protocol version (Default: current MAPEM SPATEM protocol version) * @param p_protocolVersion The expected protocol version (Default: current MAPEM SPATEM protocol version)
* @param p_messageID The expected message id (Default: MAPEM id) * @param p_messageID The expected message id (Default: MAPEM id)
*/ */
template ItsPduHeader mw_itsPduHeaderMapem( template (present) ItsPduHeader mw_itsPduHeaderMapem(
template (present) StationID p_stationID := ?, template (present) StationID p_stationID := ?,
template (present) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, template (present) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_,
template (present) ItsPduHeader.messageID p_messageID := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_mapem_ template (present) ItsPduHeader.messageID p_messageID := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_mapem_
...@@ -329,7 +329,7 @@ module LibItsMapemSpatem_Templates { ...@@ -329,7 +329,7 @@ module LibItsMapemSpatem_Templates {
* @param p_protocolVersion The expected protocol version (Default: current MAPEM SPATEM protocol version) * @param p_protocolVersion The expected protocol version (Default: current MAPEM SPATEM protocol version)
* @param p_messageID The expected message id (Default: SPATEM id) * @param p_messageID The expected message id (Default: SPATEM id)
*/ */
template ItsPduHeader mw_itsPduHeaderSpatem( template (present) ItsPduHeader mw_itsPduHeaderSpatem(
template (present) StationID p_stationID := ?, template (present) StationID p_stationID := ?,
template (present) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_, template (present) ItsPduHeader.protocolVersion p_protocolVersion := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_protocolVersion_currentVersion_,
template (present) ItsPduHeader.messageID p_messageID := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_spatem_ template (present) ItsPduHeader.messageID p_messageID := LibItsCommon_ASN1_NamedNumbers.ItsPduHeader_messageID_spatem_
...@@ -571,9 +571,7 @@ module LibItsMapemSpatem_Templates { ...@@ -571,9 +571,7 @@ module LibItsMapemSpatem_Templates {
/** /**
* @desc Send template for SPAT Message * @desc Send template for SPAT Message
*/ */
//FIXME RGY template should be (present), no omit is assigned to it as a whole; Titan currently requires that the modified templte has at least the same restirction as the base template (omit) SPAT m_spatem(
// template (omit) SPAT m_spatem(
template (value) SPAT m_spatem(
in template (value) IntersectionStateList p_intersections, in template (value) IntersectionStateList p_intersections,
in template (omit) DescriptiveName p_name := omit in template (omit) DescriptiveName p_name := omit
) modifies m_defaultSpatem:= { ) modifies m_defaultSpatem:= {
...@@ -585,12 +583,12 @@ module LibItsMapemSpatem_Templates { ...@@ -585,12 +583,12 @@ module LibItsMapemSpatem_Templates {
template (value) IntersectionStateList m_intersections := { m_intersection }; template (value) IntersectionStateList m_intersections := { m_intersection };
template (value) IntersectionState m_intersection := { template (omit) IntersectionState m_intersection := {
name := omit, // Human readable name for intersection to be used only in debug mode name := omit, // Human readable name for intersection to be used only in debug mode
id := m_intersectionReferenceID, // A globally unique value set, consisting of a regionID and id := m_intersectionReferenceID, // A globally unique value set, consisting of a regionID and
// intersection ID assignment provides a unique mapping to the intersection MAP in question which provides complete location and approach/move/lane data // intersection ID assignment provides a unique mapping to the intersection MAP in question which provides complete location and approach/move/lane data
revision := PX_INTERSECTIONSTATE_REVISION, revision := PX_INTERSECTIONSTATE_REVISION,
status := LibItsCommon_ASN1_ISDSRC_NamedNumbers.IntersectionStatusObject_manualControlIsEnabled_, status := IntersectionStatusObject_manualControlIsEnabled_,
// General status of the controller(s) // General status of the controller(s)
moy := omit, // Minute of current UTC year used only with messages to be archived moy := omit, // Minute of current UTC year used only with messages to be archived
timeStamp := omit, // The mSec point in the current UTC minute that this message was constructed timeStamp := omit, // The mSec point in the current UTC minute that this message was constructed
...@@ -602,7 +600,7 @@ module LibItsMapemSpatem_Templates { ...@@ -602,7 +600,7 @@ module LibItsMapemSpatem_Templates {
template (value) MovementList m_movements := { m_movement }; template (value) MovementList m_movements := { m_movement };
template (value) MovementState m_movement := { template (omit) MovementState m_movement := {
movementName := omit, movementName := omit,
signalGroup := PX_SIGNAL_GROUP_ID, signalGroup := PX_SIGNAL_GROUP_ID,
state_time_speed := m_movementEventList, state_time_speed := m_movementEventList,
......
...@@ -26,6 +26,7 @@ module LibItsPki_Functions { ...@@ -26,6 +26,7 @@ module LibItsPki_Functions {
import from EtsiTs102941TypesAuthorization language "ASN.1:1997" all; import from EtsiTs102941TypesAuthorization language "ASN.1:1997" all;
import from EtsiTs102941TypesAuthorizationValidation language "ASN.1:1997" all; import from EtsiTs102941TypesAuthorizationValidation language "ASN.1:1997" all;
import from EtsiTs102941MessagesCa language "ASN.1:1997" all; import from EtsiTs102941MessagesCa language "ASN.1:1997" all;
import from EtsiTs102941TrustLists language "ASN.1:1997" all;
import from EtsiTs103097Module language "ASN.1:1997" all; import from EtsiTs103097Module language "ASN.1:1997" all;
import from ITS_Container language "ASN.1:1997" all; import from ITS_Container language "ASN.1:1997" all;
import from CAM_PDU_Descriptions language "ASN.1:1997" all; import from CAM_PDU_Descriptions language "ASN.1:1997" all;
...@@ -107,7 +108,7 @@ module LibItsPki_Functions { ...@@ -107,7 +108,7 @@ module LibItsPki_Functions {
} }
f_connect4SelfOrClientSync(); f_connect4SelfOrClientSync();
f_initialiseSecuredMode(p_ea_certificate_id, p_aa_certificate_id); // TODO To be removed??? f_initialiseSecuredMode(p_ea_certificate_id, p_aa_certificate_id);
// Setup EA certificate shared with PKI EA entity // Setup EA certificate shared with PKI EA entity
f_readCertificate(p_ea_certificate_id, vc_eaCertificate); f_readCertificate(p_ea_certificate_id, vc_eaCertificate);
...@@ -144,6 +145,27 @@ module LibItsPki_Functions { ...@@ -144,6 +145,27 @@ module LibItsPki_Functions {
} }
} // End of function f_cfHttpUp } // End of function f_cfHttpUp
/**
* @desc Setups default configuration
*/
function f_cfHttpUp_ca() runs on ItsPkiHttp /* TITAN TODO: system ItsPkiHttpSystem */ {
if (PICS_MULTIPLE_END_POINT == false) {
map(self:httpPort, system:httpPort);
} else {
map(self:httpCaPort, system:httpCaPort);
}
f_connect4SelfOrClientSync();
f_initialiseSecuredMode();
if (PICS_MULTIPLE_END_POINT == false) {
activate(a_default_pki_http());
} else {
activate(a_default_pki_http_ca());
}
} // End of function f_cfHttpUp_ca
/** /**
* @desc Setups default configuration * @desc Setups default configuration
* @param p_certificate_id The certificate identifier the TA shall use in case of secured IUT * @param p_certificate_id The certificate identifier the TA shall use in case of secured IUT
...@@ -292,6 +314,19 @@ module LibItsPki_Functions { ...@@ -292,6 +314,19 @@ module LibItsPki_Functions {
f_uninitialiseSecuredMode(); f_uninitialiseSecuredMode();
} // End of function f_cfHttpDown } // End of function f_cfHttpDown
/**
* @desc Deletes default configuration
*/
function f_cfHttpDown_ca() runs on ItsPkiHttp /* TITAN TODO: system ItsPkiHttpSystem */ {
if (PICS_MULTIPLE_END_POINT == false) {
unmap(self:httpPort, system:httpPort);
} else {
unmap(self:httpCaPort, system:httpCaPort);
}
f_disconnect4SelfOrClientSync();
f_uninitialiseSecuredMode();
} // End of function f_cfHttpDown_ca
/** /**
* @desc Deletes default configuration * @desc Deletes default configuration
*/ */
...@@ -636,6 +671,15 @@ module LibItsPki_Functions { ...@@ -636,6 +671,15 @@ module LibItsPki_Functions {
p_http_message.response.header := p_headers; p_http_message.response.header := p_headers;
} }
httpAtPort.send(p_http_message); httpAtPort.send(p_http_message);
} else if (v_content_text == { "ca_request" }) {
log("f_http_send: Send on CA end point");
f_set_headers_list({ c_header_host }, { PICS_HEADER_HOST_CA }, p_headers);
if (ischosen(p_http_message.request)) {
p_http_message.request.header := p_headers;
} else {
p_http_message.response.header := p_headers;
}
httpCaPort.send(p_http_message);
} else { } else {
log("f_http_send: Invalid header value: ", v_content_text); log("f_http_send: Invalid header value: ", v_content_text);
} }
...@@ -2863,6 +2907,116 @@ module LibItsPki_Functions { ...@@ -2863,6 +2907,116 @@ module LibItsPki_Functions {
} // End of group authorization_validation_xxx } // End of group authorization_validation_xxx
group rca {
function f_verify_rca_response_message(
in Ieee1609Dot2Data p_ieee1609dot2_signed_data,
in boolean p_check_security := true,
out ToBeSignedRcaCtl p_to_be_signed_rca_ctl
) return boolean {
var bitstring v_etsi_ts_102941_data_msg;
var bitstring v_tbs;
var Certificate v_certificate;
var charstring v_certificate_id;
var Oct32 v_issuer;
var EtsiTs102941Data v_etsi_ts_102941_data;
log(">>> f_verify_rca_response_message: p_ieee1609dot2_signed_data= ", p_ieee1609dot2_signed_data);
// 1. Verify signature
log("f_verify_rca_response_message: p_ieee1609dot2_signed_data.content.signedData.tbsData= ", p_ieee1609dot2_signed_data.content.signedData.tbsData);
v_tbs := encvalue(p_ieee1609dot2_signed_data.content.signedData.tbsData);
if (f_getCertificateFromDigest(p_ieee1609dot2_signed_data.content.signedData.signer.digest, v_certificate, v_certificate_id) == false) {
if (p_check_security == true) {
return false;
}
}
f_getCertificateHash256(v_certificate_id, v_issuer);
if (f_verifyEcdsa(bit2oct(v_tbs), v_issuer, p_ieee1609dot2_signed_data.content.signedData.signature_, v_certificate.toBeSigned.verifyKeyIndicator.verificationKey) == false) {
if (p_check_security == true) {
return false;
}
}
v_etsi_ts_102941_data_msg := oct2bit(p_ieee1609dot2_signed_data.content.signedData.tbsData.payload.data.content.unsecuredData);
if (decvalue(v_etsi_ts_102941_data_msg, v_etsi_ts_102941_data) != 0) {
log("f_verify_rca_response_message: Failed to decode EtsiTs102941Data");
return false;
} else {
log("f_verify_rca_response_message: v_etsi_ts_102941_data= ", v_etsi_ts_102941_data);
log("f_verify_pki_response_message: RcaCertificateTrustListMessage matching= ", match(v_etsi_ts_102941_data, mw_etsiTs102941Data_to_be_signed_rca_ctl));
if (match(v_etsi_ts_102941_data, mw_etsiTs102941Data_to_be_signed_rca_ctl) == false) {
log("f_verify_rca_response_message: Failed to decode certificateTrustListRca");
return false;
} else {
p_to_be_signed_rca_ctl := v_etsi_ts_102941_data.content.certificateTrustListRca;
log("f_verify_rca_response_message: p_to_be_signed_rca_ctl= ", p_to_be_signed_rca_ctl);
}
}
return true;
}
function f_verify_full_ctl(
in ToBeSignedRcaCtl p_to_be_signed_rca_ctl
) return boolean {
log(">>> f_verify_full_ctl: p_to_be_signed_rca_ctl= ", p_to_be_signed_rca_ctl);
// 1. Check mandatory fields
log("f_verify_full_ctl matching= ", match(p_to_be_signed_rca_ctl, mw_to_be_signed_rca_full_ctl));
if (match(p_to_be_signed_rca_ctl, mw_to_be_signed_rca_full_ctl) == false) {
return false;
}
log("f_verify_full_ctl: ctlCommands length: ", lengthof(p_to_be_signed_rca_ctl.ctlCommands));
for (var integer v_i := 0; v_i < lengthof(p_to_be_signed_rca_ctl.ctlCommands); v_i := v_i + 1) {
var CtlCommand v_ctl_command := p_to_be_signed_rca_ctl.ctlCommands[v_i];
if (ischosen(v_ctl_command.delete)) {
log("f_verify_full_ctl: ctlCommands shall not contains 'delete' variant");
return false;
} else {
if (f_verify_ctl_entry(v_ctl_command.add) == false) {
log("f_verify_full_ctl: ctlCommands contains inavlid entries");
return false;
}
}
} // End of 'for' statements
return true;
}
function f_verify_ctl_entry(
in CtlEntry p_ctl_entry
) return boolean {
if (ischosen(p_ctl_entry.rca)) {
if (match(p_ctl_entry.rca, mw_root_ca_entry(mw_etsiTs103097Certificate)) == false) {
return false;
}
} else if (ischosen(p_ctl_entry.ea)) {
if (match(p_ctl_entry.ea, mw_ea_entry(mw_etsiTs103097Certificate)) == false) {
return false;
}
} else if (ischosen(p_ctl_entry.aa)) {
if (match(p_ctl_entry.aa, mw_aa_entry(mw_etsiTs103097Certificate)) == false) {
return false;
}
} else if (ischosen(p_ctl_entry.dc)) {
if (match(p_ctl_entry.dc, mw_dc_entry) == false) {
return false;
}
} else if (ischosen(p_ctl_entry.tlm)) {
if (match(p_ctl_entry.tlm, mw_tlm_entry(mw_etsiTs103097Certificate)) == false) {
return false;
}
} else {
return false;
}
return true;
}
} // End of group rca
group awaiting_messages { group awaiting_messages {
function f_await_http_inner_ec_request_response( function f_await_http_inner_ec_request_response(
...@@ -3568,6 +3722,7 @@ module LibItsPki_Functions { ...@@ -3568,6 +3722,7 @@ module LibItsPki_Functions {
var octetstring v_msg; var octetstring v_msg;
var Ieee1609Dot2Data v_ieee1609dot2_signed_data; var Ieee1609Dot2Data v_ieee1609dot2_signed_data;
var Certificate v_certificate; var Certificate v_certificate;
var charstring v_certificate_id;
log(">>> f_verify_pki_request_message: p_private_enc_key= ", p_private_enc_key); log(">>> f_verify_pki_request_message: p_private_enc_key= ", p_private_enc_key);
log(">>> f_verify_pki_request_message: p_salt= ", p_salt); log(">>> f_verify_pki_request_message: p_salt= ", p_salt);
...@@ -3641,7 +3796,7 @@ module LibItsPki_Functions { ...@@ -3641,7 +3796,7 @@ module LibItsPki_Functions {
} }
//return false; //return false;
} else { } else {
if (f_getCertificateFromDigest(f_HashedId8FromSha256(p_issuer), v_certificate) == false) { if (f_getCertificateFromDigest(f_HashedId8FromSha256(p_issuer), v_certificate, v_certificate_id) == false) {
if (p_check_security == true) { if (p_check_security == true) {
return false; return false;
} }
...@@ -3702,6 +3857,7 @@ module LibItsPki_Functions { ...@@ -3702,6 +3857,7 @@ module LibItsPki_Functions {
var octetstring v_plain_message; var octetstring v_plain_message;
var Ieee1609Dot2Data v_ieee1609dot2_signed_data; var Ieee1609Dot2Data v_ieee1609dot2_signed_data;
var Certificate v_certificate; var Certificate v_certificate;
var charstring v_certificate_id;
var bitstring v_etsi_ts_102941_data_msg; var bitstring v_etsi_ts_102941_data_msg;
var bitstring v_tbs; var bitstring v_tbs;
var boolean v_ret; var boolean v_ret;
...@@ -3732,7 +3888,7 @@ module LibItsPki_Functions { ...@@ -3732,7 +3888,7 @@ module LibItsPki_Functions {
// 3. Check the signature // 3. Check the signature
log("f_verify_pki_response_message: v_ieee1609dot2_signed_data.content.signedData.tbsData= ", v_ieee1609dot2_signed_data.content.signedData.tbsData); log("f_verify_pki_response_message: v_ieee1609dot2_signed_data.content.signedData.tbsData= ", v_ieee1609dot2_signed_data.content.signedData.tbsData);
v_tbs := encvalue(v_ieee1609dot2_signed_data.content.signedData.tbsData); v_tbs := encvalue(v_ieee1609dot2_signed_data.content.signedData.tbsData);
if (f_getCertificateFromDigest(v_ieee1609dot2_signed_data.content.signedData.signer.digest, v_certificate) == false) { if (f_getCertificateFromDigest(v_ieee1609dot2_signed_data.content.signedData.signer.digest, v_certificate, v_certificate_id) == false) {
if (p_check_security == true) { if (p_check_security == true) {
return false; return false;
} }
...@@ -4029,6 +4185,37 @@ module LibItsPki_Functions { ...@@ -4029,6 +4185,37 @@ module LibItsPki_Functions {
} }
} // End of altstep a_default_pki_http_at } // End of altstep a_default_pki_http_at
altstep a_default_pki_http_ca() runs on ItsPkiHttp {
[PICS_MULTIPLE_END_POINT] httpCaPort.receive(
mw_http_response(
mw_http_response_ko
)) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Unexpected message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
}
[PICS_MULTIPLE_END_POINT] httpCaPort.receive(mw_http_request) {
tc_ac.stop;
log("*** a_default: ERROR: Unexpected HTTP Request received ***");
f_selfOrClientSyncAndVerdict("error", e_error);
}
[PICS_MULTIPLE_END_POINT] httpCaPort.receive(mw_http_response) {
tc_ac.stop;
log("*** a_default: ERROR: Unexpected HTTP Response received ***");
f_selfOrClientSyncAndVerdict("error", e_error);
}
[PICS_MULTIPLE_END_POINT] httpCaPort.receive {
tc_ac.stop;
log("*** a_default: ERROR: Unexpected HTTP message received ***");
f_selfOrClientSyncAndVerdict("error", e_error);
}
[] a_shutdown() {
log("*** a_default: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***");
stop;
}
} // End of altstep a_default_pki_http_ca
altstep a_await_ec_http_request_from_iut( altstep a_await_ec_http_request_from_iut(
template HttpMessage p_http_message, template HttpMessage p_http_message,
out HttpMessage p_response out HttpMessage p_response
......
...@@ -15,6 +15,11 @@ module LibItsPki_Pics { ...@@ -15,6 +15,11 @@ module LibItsPki_Pics {
*/ */
modulepar boolean PICS_IUT_AA_ROLE := true; modulepar boolean PICS_IUT_AA_ROLE := true;
/**
* @desc Does the IUT act as CA device?
*/
modulepar boolean PICS_IUT_CA_ROLE := true;
/** /**
* @desc Does the IUT support enrolment? * @desc Does the IUT support enrolment?
*/ */
...@@ -100,6 +105,11 @@ module LibItsPki_Pics { ...@@ -100,6 +105,11 @@ module LibItsPki_Pics {
*/ */
modulepar charstring PICS_HEADER_HOST_AT := "www.its.at.org"; modulepar charstring PICS_HEADER_HOST_AT := "www.its.at.org";
/**
* @desc End point for the CA
*/
modulepar charstring PICS_HEADER_HOST_CA := "www.its.ca.org";
/** /**
* @desc Certificate used by the Test System * @desc Certificate used by the Test System
*/ */
...@@ -136,6 +146,11 @@ module LibItsPki_Pics { ...@@ -136,6 +146,11 @@ module LibItsPki_Pics {
*/ */
modulepar charstring PICS_HTTP_POST_URI_ATV := "/authorize_validate"; modulepar charstring PICS_HTTP_POST_URI_ATV := "/authorize_validate";
/**
* @desc HTTP GET URI for Certificate Trusted List
*/
modulepar charstring PICS_HTTP_GET_URI_CTL := "/dc/getctl";
/** /**
* @desc Factory private key for verification Nist P256 * @desc Factory private key for verification Nist P256
*/ */
......
...@@ -29,9 +29,11 @@ module LibItsPki_Templates { ...@@ -29,9 +29,11 @@ module LibItsPki_Templates {
import from EtsiTs102941TypesAuthorization language "ASN.1:1997" all; import from EtsiTs102941TypesAuthorization language "ASN.1:1997" all;
import from EtsiTs102941TypesAuthorizationValidation language "ASN.1:1997" all; import from EtsiTs102941TypesAuthorizationValidation language "ASN.1:1997" all;
import from EtsiTs102941MessagesCa language "ASN.1:1997" all; import from EtsiTs102941MessagesCa language "ASN.1:1997" all;
import from EtsiTs102941TrustLists language "ASN.1:1997" all;
import from EtsiTs103097Module language "ASN.1:1997" all; import from EtsiTs103097Module language "ASN.1:1997" all;
// LibItsSecurity // LibItsSecurity
import from LibItsSecurity_TypesAndValues all;
import from LibItsSecurity_Templates all; import from LibItsSecurity_Templates all;
// LibItsPki // LibItsPki
...@@ -129,6 +131,15 @@ module LibItsPki_Templates { ...@@ -129,6 +131,15 @@ module LibItsPki_Templates {
) modifies mw_etsiTs103097Data_encrypted := { ) modifies mw_etsiTs103097Data_encrypted := {
} // End of template mw_authorizationValidationResponseMessage } // End of template mw_authorizationValidationResponseMessage
template (present) EtsiTs102941Data mw_etsiTs102941Data_to_be_signed_rca_ctl(
template (present) ToBeSignedRcaCtl p_to_be_signed_rca_ctl := ?
) := {
version := PkiProtocolVersion,
content := {
certificateTrustListRca := p_to_be_signed_rca_ctl
}
} // End of template mw_etsiTs102941Data_to_be_signed_rca_ctl
template (value) AuthorizationRequestMessage m_authorizationRequestMessage( template (value) AuthorizationRequestMessage m_authorizationRequestMessage(
in template (value) EncryptedData p_encryptedData in template (value) EncryptedData p_encryptedData
) modifies m_etsiTs103097Data_encrypted := { ) modifies m_etsiTs103097Data_encrypted := {
...@@ -518,5 +529,62 @@ module LibItsPki_Templates { ...@@ -518,5 +529,62 @@ module LibItsPki_Templates {
appPermissions := p_appPermissions, appPermissions := p_appPermissions,
certIssuePermissions := p_certIssuePermissions certIssuePermissions := p_certIssuePermissions
} // End of template mw_certificate_subject_attributes } // End of template mw_certificate_subject_attributes
template (present) ToBeSignedRcaCtl mw_to_be_signed_rca_full_ctl := {
version := 1,
nextUpdate := ?,
isFullCtl := true,
ctlSequence := ?,
ctlCommands := ?
} // End of template mw_to_be_signed_rca_ful_ctl
template (present) ToBeSignedRcaCtl mw_to_be_signed_rca_delta_ctl := {
version := 1,
nextUpdate := ?,
isFullCtl := false,
ctlSequence := ?,
ctlCommands := ?
} // End of template mw_to_be_signed_rca_delta_ctl
template (present) TlmEntry mw_tlm_entry(
template (present) EtsiTs103097Certificate p_selfSignedTLMCertificate := ?,
template (present) Url p_accessPoint := ?
) := {
selfSignedTLMCertificate := p_selfSignedTLMCertificate,
linkTLMCertificate := *,
accessPoint := p_accessPoint
} // End of template mw_tlm_entry
template (present) RootCaEntry mw_root_ca_entry(
template (present) EtsiTs103097Certificate p_selfsignedRootCa := ?
) := {
selfsignedRootCa := p_selfsignedRootCa,
linkRootCaCertificate := *
} // End of template mw_root_ca_entry
template (present) EaEntry mw_ea_entry(
template (present) EtsiTs103097Certificate p_eaCertificate := ?,
template (present) Url p_aaAccessPoint := ?
) := {
eaCertificate := p_eaCertificate,
aaAccessPoint := p_aaAccessPoint,
itsAccessPoint := *
} // End of linkRootCaCertificate mw_ea_entry
template (present) AaEntry mw_aa_entry(
template (present) EtsiTs103097Certificate p_aaCertificate := ?,
template (present) Url p_accessPoint := ?
) := {
aaCertificate := p_aaCertificate,
accessPoint := p_accessPoint
} // End of template mw_aa_entry
template (present) DcEntry mw_dc_entry(
template (present) Url p_url := ?,
template (present) HashedId8s p_cert := ?
) := {
url := p_url,
cert := p_cert
} // End of template mw_dc_entry
} // End of module LibItsPki_Templates } // End of module LibItsPki_Templates
...@@ -63,6 +63,7 @@ module LibItsPki_TestSystem { ...@@ -63,6 +63,7 @@ module LibItsPki_TestSystem {
port HttpPort httpEcPort; /** Enrolment end point */ port HttpPort httpEcPort; /** Enrolment end point */
port HttpPort httpAtVPort; /** Authorization Validation end point */ port HttpPort httpAtVPort; /** Authorization Validation end point */
port HttpPort httpAtPort; /** Authorization end point */ port HttpPort httpAtPort; /** Authorization end point */
port HttpPort httpCaPort; /** CA CTL/CRL end point */
} // End of component ItsPkiHttpSystem } // End of component ItsPkiHttpSystem
/** /**
...@@ -73,6 +74,7 @@ module LibItsPki_TestSystem { ...@@ -73,6 +74,7 @@ module LibItsPki_TestSystem {
port HttpPort httpEcPort; /** Enrolment end point */ port HttpPort httpEcPort; /** Enrolment end point */
port HttpPort httpAtVPort; /** Authorization Validation end point */ port HttpPort httpAtVPort; /** Authorization Validation end point */
port HttpPort httpAtPort; /** Authorization end point */ port HttpPort httpAtPort; /** Authorization end point */
port HttpPort httpCaPort; /** CA CTL/CRL end point */
var Certificate vc_eaCertificate; /** Test Adapter EA certificate */ var Certificate vc_eaCertificate; /** Test Adapter EA certificate */
var octetstring vc_eaPrivateKey; /** Test Adapter EA private key for signature */ var octetstring vc_eaPrivateKey; /** Test Adapter EA private key for signature */
var octetstring vc_eaPrivateEncKey; /** Test Adapter EA private key for encryption */ var octetstring vc_eaPrivateEncKey; /** Test Adapter EA private key for encryption */
......
...@@ -764,12 +764,13 @@ module LibItsSecurity_Functions { ...@@ -764,12 +764,13 @@ module LibItsSecurity_Functions {
out EtsiTs103097Certificate p_aaCertificate, out EtsiTs103097Certificate p_aaCertificate,
out EtsiTs103097Certificate p_atCertificate out EtsiTs103097Certificate p_atCertificate
) runs on ItsSecurityBaseComponent return boolean { ) runs on ItsSecurityBaseComponent return boolean {
var charstring v_certificate_id;
//log(">>> f_prepareCertificates: ", p_certificateName); //log(">>> f_prepareCertificates: ", p_certificateName);
// Load certificates if required // Load certificates if required
if ((lengthof(p_certificateName) > 0) and (valueof(p_certificateName) != cc_taCert_A)) { if ((lengthof(p_certificateName) > 0) and (valueof(p_certificateName) != cc_taCert_A)) {
var HashedId8 v_digest; var HashedId8 v_digest;
var charstring v_cert;
if (f_readCertificate(valueof(p_certificateName), p_atCertificate) == false){ if (f_readCertificate(valueof(p_certificateName), p_atCertificate) == false){
log("f_prepareCertificates: Failed to read certificate ", p_certificateName); log("f_prepareCertificates: Failed to read certificate ", p_certificateName);
...@@ -783,7 +784,7 @@ module LibItsSecurity_Functions { ...@@ -783,7 +784,7 @@ module LibItsSecurity_Functions {
log("f_prepareCertificates: Invalid certificate issuer ", p_atCertificate.issuer); log("f_prepareCertificates: Invalid certificate issuer ", p_atCertificate.issuer);
return false; return false;
} }
if (f_getCertificateFromDigest(v_digest, p_aaCertificate) == false) { if (f_getCertificateFromDigest(v_digest, p_aaCertificate, v_certificate_id) == false) {
log("f_prepareCertificates: Failed to read certificate issuer ", v_digest); log("f_prepareCertificates: Failed to read certificate issuer ", v_digest);
return false; return false;
} }
...@@ -1211,7 +1212,7 @@ module LibItsSecurity_Functions { ...@@ -1211,7 +1212,7 @@ module LibItsSecurity_Functions {
// Local variables // Local variables
var EtsiTs103097Certificate v_aaCertificate, v_atCertificate; var EtsiTs103097Certificate v_aaCertificate, v_atCertificate;
var HeaderInfo v_mandatoryHeaders; var HeaderInfo v_mandatoryHeaders := valueof(m_ieee1609Dot2_headerInfo(0));
var HeaderInfo v_signerInfo; var HeaderInfo v_signerInfo;
// Load certificates if required // Load certificates if required
...@@ -1286,7 +1287,7 @@ module LibItsSecurity_Functions { ...@@ -1286,7 +1287,7 @@ module LibItsSecurity_Functions {
// Local variables // Local variables
var EtsiTs103097Certificate v_aaCertificate, v_atCertificate; var EtsiTs103097Certificate v_aaCertificate, v_atCertificate;
var HeaderInfo v_mandatoryHeaders; var HeaderInfo v_mandatoryHeaders := valueof(m_ieee1609Dot2_headerInfo(0));
var HeaderInfo v_signerInfo; var HeaderInfo v_signerInfo;
// Load certificates if required // Load certificates if required
...@@ -1363,7 +1364,7 @@ module LibItsSecurity_Functions { ...@@ -1363,7 +1364,7 @@ module LibItsSecurity_Functions {
// Local variables // Local variables
var EtsiTs103097Certificate v_aaCertificate, v_atCertificate; var EtsiTs103097Certificate v_aaCertificate, v_atCertificate;
var HeaderInfo v_mandatoryHeaders; var HeaderInfo v_mandatoryHeaders := valueof(m_ieee1609Dot2_headerInfo(0));
var HeaderInfo v_signerInfo; var HeaderInfo v_signerInfo;
// Load certificates if required // Load certificates if required
...@@ -1433,7 +1434,7 @@ module LibItsSecurity_Functions { ...@@ -1433,7 +1434,7 @@ module LibItsSecurity_Functions {
// Local variables // Local variables
var EtsiTs103097Certificate v_aaCertificate, v_atCertificate; var EtsiTs103097Certificate v_aaCertificate, v_atCertificate;
var HeaderInfo v_mandatoryHeaders; var HeaderInfo v_mandatoryHeaders := valueof(m_ieee1609Dot2_headerInfo(0));
var HeaderInfo v_signerInfo; var HeaderInfo v_signerInfo;
// Load certificates if required // Load certificates if required
...@@ -1508,7 +1509,7 @@ module LibItsSecurity_Functions { ...@@ -1508,7 +1509,7 @@ module LibItsSecurity_Functions {
// Local variables // Local variables
var EtsiTs103097Certificate v_aaCertificate, v_atCertificate; var EtsiTs103097Certificate v_aaCertificate, v_atCertificate;
var HeaderInfo v_mandatoryHeaders; var HeaderInfo v_mandatoryHeaders := valueof(m_ieee1609Dot2_headerInfo(0));
var HeaderInfo v_signerInfo; var HeaderInfo v_signerInfo;
// Load certificates if required // Load certificates if required
...@@ -1570,8 +1571,6 @@ module LibItsSecurity_Functions { ...@@ -1570,8 +1571,6 @@ module LibItsSecurity_Functions {
in charstring p_certificateName in charstring p_certificateName
) runs on ItsSecurityBaseComponent return HashedId8 { ) runs on ItsSecurityBaseComponent return HashedId8 {
// Local variables // Local variables
// FIXME (DF) UNUSED
// var EtsiTs103097Certificate v_atCertificate;
var HashedId8 v_hashedId8 := '0000000000000000'O; var HashedId8 v_hashedId8 := '0000000000000000'O;
// Sanity check // Sanity check
...@@ -2175,6 +2174,8 @@ module LibItsSecurity_Functions { ...@@ -2175,6 +2174,8 @@ module LibItsSecurity_Functions {
function f_loadCertificates( function f_loadCertificates(
in charstring p_configId in charstring p_configId
) runs on ItsSecurityBaseComponent return boolean { ) runs on ItsSecurityBaseComponent return boolean {
var charstring v_certificate_id;
// Setup certificates memory cache // Setup certificates memory cache
if (fx_loadCertificates(PX_CERTIFICATE_POOL_PATH, p_configId) == true) { if (fx_loadCertificates(PX_CERTIFICATE_POOL_PATH, p_configId) == true) {
// Setup security component variables // Setup security component variables
...@@ -2190,7 +2191,7 @@ module LibItsSecurity_Functions { ...@@ -2190,7 +2191,7 @@ module LibItsSecurity_Functions {
return false; return false;
} }
log("Selected issuer: ", v_issuer); log("Selected issuer: ", v_issuer);
if (f_getCertificateFromDigest(v_issuer, vc_aaCertificate)) { if (f_getCertificateFromDigest(v_issuer, vc_aaCertificate, v_certificate_id)) {
if (f_readSigningKey(cc_taCert_A, vc_signingPrivateKey) == true) { if (f_readSigningKey(cc_taCert_A, vc_signingPrivateKey) == true) {
f_readEncryptingKey(cc_taCert_A, vc_encryptPrivateKey); f_readEncryptingKey(cc_taCert_A, vc_encryptPrivateKey);
return true; return true;
...@@ -2300,15 +2301,15 @@ module LibItsSecurity_Functions { ...@@ -2300,15 +2301,15 @@ module LibItsSecurity_Functions {
function f_getCertificateFromDigest( function f_getCertificateFromDigest(
in HashedId8 p_digest, in HashedId8 p_digest,
out EtsiTs103097Certificate p_certificate out EtsiTs103097Certificate p_certificate,
out charstring p_certificate_id
) return boolean { ) return boolean {
var charstring v_certificate_id; if (not(fx_readCertificateFromDigest(p_digest, p_certificate_id))) {
if (not(fx_readCertificateFromDigest(p_digest, v_certificate_id))) {
log("f_getCertificateFromDigest: Failed to retrieve digest for ", p_digest); log("f_getCertificateFromDigest: Failed to retrieve digest for ", p_digest);
return false; return false;
} }
if (not(f_readCertificate(v_certificate_id, p_certificate))) { if (not(f_readCertificate(p_certificate_id, p_certificate))) {
log("f_getCertificateFromDigest: Failed to retrieve digest for ", v_certificate_id); log("f_getCertificateFromDigest: Failed to retrieve digest for ", p_certificate_id);
return false; return false;
} }
return true; return true;
......
...@@ -51,8 +51,6 @@ module LibItsSecurity_Templates { ...@@ -51,8 +51,6 @@ module LibItsSecurity_Templates {
* @desc Its AID for Other * @desc Its AID for Other
* @see Draft ETSI TS 103 097 V1.3.1 Clause 7.3 Security profile for DENMs * @see Draft ETSI TS 103 097 V1.3.1 Clause 7.3 Security profile for DENMs
*/ */
//FIXME RGY definition type is changed to modulepar, as Titan doesn't support dynamic constants
// const IntX c_its_aid_Other := PX_OTHER_ITS_AID;
template Psid c_its_aid_Other := PX_OTHER_ITS_AID; template Psid c_its_aid_Other := PX_OTHER_ITS_AID;
/** /**
...@@ -1015,12 +1013,16 @@ module LibItsSecurity_Templates { ...@@ -1015,12 +1013,16 @@ module LibItsSecurity_Templates {
template (omit) HeaderInfo m_headerInfo_inner_pki_request( template (omit) HeaderInfo m_headerInfo_inner_pki_request(
in template (value) Psid p_psid := c_its_aid_SCR, in template (value) Psid p_psid := c_its_aid_SCR,
in template (value) Time64 p_generationTime in template (value) Time64 p_generationTime
) modifies m_headerInfo_gn := {}; ) modifies m_ieee1609Dot2_headerInfo := {
generationTime := p_generationTime
};
template (omit) HeaderInfo m_headerInfo_inner_pki_response( template (omit) HeaderInfo m_headerInfo_inner_pki_response(
in template (value) Psid p_psid := c_its_aid_SCR, in template (value) Psid p_psid := c_its_aid_SCR,
in template (value) Time64 p_generationTime in template (value) Time64 p_generationTime
) modifies m_headerInfo_gn := {}; ) modifies m_ieee1609Dot2_headerInfo := {
generationTime := p_generationTime
};
template (present) HeaderInfo mw_headerInfo_inner_pki_request( template (present) HeaderInfo mw_headerInfo_inner_pki_request(
template (present) Psid p_psid := c_its_aid_SCR, template (present) Psid p_psid := c_its_aid_SCR,
...@@ -1711,7 +1713,7 @@ module LibItsSecurity_Templates { ...@@ -1711,7 +1713,7 @@ module LibItsSecurity_Templates {
ssp := p_ssp ssp := p_ssp
} // End of template m_appPermissions } // End of template m_appPermissions
template (present) PsidSsp mw_appPermissions( template PsidSsp mw_appPermissions(
template (present) Psid p_psid := ?, template (present) Psid p_psid := ?,
template ServiceSpecificPermissions p_ssp := * template ServiceSpecificPermissions p_ssp := *
) := { ) := {
...@@ -2074,7 +2076,7 @@ module LibItsSecurity_Templates { ...@@ -2074,7 +2076,7 @@ module LibItsSecurity_Templates {
group utPrimitives { group utPrimitives {
template UtGnInitialize m_secGnInitialize( template (value) UtGnInitialize m_secGnInitialize(
in Oct8 p_hashedId8 in Oct8 p_hashedId8
) := { ) := {
hashedId8 := p_hashedId8 hashedId8 := p_hashedId8
......
...@@ -22,7 +22,12 @@ module LibItsSecurity_TypesAndValues { ...@@ -22,7 +22,12 @@ module LibItsSecurity_TypesAndValues {
import from IEEE1609dot2BaseTypes language "ASN.1:1997" all; import from IEEE1609dot2BaseTypes language "ASN.1:1997" all;
import from IEEE1609dot2 language "ASN.1:1997" all; import from IEEE1609dot2 language "ASN.1:1997" all;
import from EtsiTs103097Module language "ASN.1:1997" all; import from EtsiTs103097Module language "ASN.1:1997" all;
/**
* @desc Sequence of HashedId8
*/
type record of HashedId8 HashedId8s;
// Test Adapter certificates & private keys - Valid behavior // Test Adapter certificates & private keys - Valid behavior
const charstring cc_taCert_A := PX_CERT_FOR_TS; /** Default certificate, without region validity restriction, to be used when secured messages are sent from TA to IUT */ const charstring cc_taCert_A := PX_CERT_FOR_TS; /** Default certificate, without region validity restriction, to be used when secured messages are sent from TA to IUT */
const charstring cc_taCert_A_AA := "CERT_TS_A_AA"; const charstring cc_taCert_A_AA := "CERT_TS_A_AA";
...@@ -259,7 +264,6 @@ module LibItsSecurity_TypesAndValues { ...@@ -259,7 +264,6 @@ module LibItsSecurity_TypesAndValues {
e_brainpool_384 e_brainpool_384
} }
group taConfiguration { group taConfiguration {
/** /**
......