Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
ITS - Intelligent Transport Systems
ITS
Commits
be9063fb
Commit
be9063fb
authored
Jul 01, 2016
by
filatov
Browse files
Integrate the STF507 results to the trunk
parents
d2f64f6e
f5926bea
Changes
611
Show whitespace changes
Inline
Side-by-side
tools/itscertgen/msgcheck/msgcheck.vcxproj
View file @
be9063fb
...
...
@@ -28,14 +28,14 @@
<ConfigurationType>
Application
</ConfigurationType>
<UseDebugLibraries>
true
</UseDebugLibraries>
<PlatformToolset>
v120
</PlatformToolset>
<CharacterSet>
Unicod
e
</CharacterSet>
<CharacterSet>
MultiByt
e
</CharacterSet>
</PropertyGroup>
<PropertyGroup
Condition=
"'$(Configuration)|$(Platform)'=='Release|Win32'"
Label=
"Configuration"
>
<ConfigurationType>
Application
</ConfigurationType>
<UseDebugLibraries>
false
</UseDebugLibraries>
<PlatformToolset>
v120
</PlatformToolset>
<WholeProgramOptimization>
true
</WholeProgramOptimization>
<CharacterSet>
Unicod
e
</CharacterSet>
<CharacterSet>
MultiByt
e
</CharacterSet>
</PropertyGroup>
<Import
Project=
"$(VCTargetsPath)\Microsoft.Cpp.props"
/>
<ImportGroup
Label=
"ExtensionSettings"
>
...
...
tt3plugins/TT_TestSystem/TT3plugin.xml
View file @
be9063fb
...
...
@@ -218,13 +218,13 @@
<parameter
id=
"taParamDeclaration"
>
<parameter
id=
"name"
value=
"TsSecuredRootPath"
/>
<parameter
id=
"type"
value=
"charstring"
/>
<parameter
id=
"default"
value=
""
/>
<parameter
id=
"default"
/>
<parameter
id=
"description"
value=
"Secured root path to access certificates and private keys"
/>
</parameter>
<parameter
id=
"taParamDeclaration"
>
<parameter
id=
"name"
value=
"TsSecuredConfiId"
/>
<parameter
id=
"type"
value=
"charstring"
/>
<parameter
id=
"default"
value=
""
/>
<parameter
id=
"default"
/>
<parameter
id=
"description"
value=
"Secured configuration identifier"
/>
</parameter>
<parameter
id=
"taParamDeclaration"
>
...
...
@@ -233,6 +233,48 @@
<parameter
id=
"default"
value=
"38"
/>
<parameter
id=
"description"
value=
"ITS-AID for other profile"
/>
</parameter>
<parameter
id=
"taParamDeclaration"
>
<parameter
id=
"name"
value=
"GnssControllerAddress"
/>
<parameter
id=
"type"
value=
"charstring"
/>
<parameter
id=
"default"
value=
"192.168.89.106"
/>
<parameter
id=
"description"
value=
"IP address of GNSS Controller"
/>
</parameter>
<parameter
id=
"taParamDeclaration"
value=
"${LibItsCommon_Pixits.PICS_GNSS_SCENARIO_SUPPORT}"
>
<parameter
id=
"name"
value=
"GnssScenarioSupport"
/>
<parameter
id=
"type"
value=
"boolean"
/>
<parameter
id=
"default"
>
<value>
<Values:boolean
xmlns:Values=
"Values.xsd"
type=
"boolean"
>
<Values:value>
true
</Values:value>
</Values:boolean>
</value>
</parameter>
<parameter
id=
"description"
value=
"Is GNSS scenario support available?"
/>
</parameter>
<parameter
id=
"taParamDeclaration"
>
<parameter
id=
"name"
value=
"GnssScenario_StaticPos"
/>
<parameter
id=
"type"
value=
"charstring"
/>
<parameter
id=
"default"
value=
"C:\Program Files (x86)\Spirent Communications\Positioning Application\Scenarios\C2C\StaticPos\StaticPos.scn"
/>
<parameter
id=
"description"
value=
"Path to the GNSS scenario - static position."
/>
</parameter>
<parameter
id=
"taParamDeclaration"
>
<parameter
id=
"name"
value=
"GnssScenario_DynamicPos200m"
/>
<parameter
id=
"type"
value=
"charstring"
/>
<parameter
id=
"default"
value=
"C:\Program Files (x86)\Spirent Communications\Positioning Application\Scenarios\C2C\DynamicPos200m\DynamicPos200m.scn"
/>
<parameter
id=
"description"
value=
"Path to the GNSS scenario - dynamic position 200m."
/>
</parameter>
<parameter
id=
"taParamDeclaration"
>
<parameter
id=
"name"
value=
"GnssScenario_DynamicPos1000m"
/>
<parameter
id=
"type"
value=
"charstring"
/>
<parameter
id=
"default"
value=
"C:\Program Files (x86)\Spirent Communications\Positioning Application\Scenarios\C2C\DynamicPos1000m\DynamicPos1000m.scn"
/>
<parameter
id=
"description"
value=
"Path to the GNSS scenario - dynamic position 1000m."
/>
</parameter>
<parameter
id=
"taParamDeclaration"
>
<parameter
id=
"name"
value=
"GnssScenario_DynamicPos1500m"
/>
<parameter
id=
"type"
value=
"charstring"
/>
<parameter
id=
"default"
value=
"C:\Program Files (x86)\Spirent Communications\Positioning Application\Scenarios\C2C\DynamicPos1500m\DynamicPos1500m.scn"
/>
<parameter
id=
"description"
value=
"Path to the GNSS scenario - dynamic position 1500m."
/>
</parameter>
</parameter>
<parameter
id=
"name"
value=
"ITS System Adapter"
/>
<parameter
id=
"description"
value=
"The ITS System Adapter providing the communication functionality to and from the SUT."
/>
...
...
ttcn/AtsCAM/ItsCam_TpFunctions.ttcn
View file @
be9063fb
...
...
@@ -14,11 +14,11 @@ module ItsCam_TpFunctions {
import
from
LibCommon_Time
all
;
import
from
LibCommon_BasicTypesAndValues
all
;
// LibItsCommon
import
from
LibItsCommon_Pixits
all
;
// LibIts
import
from
LibItsCommon_Functions
all
;
import
from
LibItsCommon_TypesAndValues
{
type
UtChangePosition
};
import
from
LibItsCommon_TypesAndValues
all
;
import
from
LibItsCam_TestSystem
all
;
import
from
LibItsCam_Functions
all
;
import
from
LibItsCam_Templates
all
;
...
...
@@ -168,7 +168,7 @@ module ItsCam_TpFunctions {
// Test Body
for
(
v_cntSpeed
:=
0
;
v_cntSpeed
<
lengthof
(
v_speedValues
);
v_cntSpeed
:=
v_cntSpeed
+
1
)
{
f_
utTriggerEvent
(
m_
changeSpeed
(
v_speedValues
[
v_cntSpeed
])
)
;
f_changeSpeed
(
v_speedValues
[
v_cntSpeed
]);
v_cntTime
:=
0
;
tc_ac
.
start
;
alt
{
...
...
@@ -320,7 +320,7 @@ module ItsCam_TpFunctions {
// Test Body
for
(
v_cntSpeed
:=
0
;
v_cntSpeed
<
lengthof
(
v_speedValues
);
v_cntSpeed
:=
v_cntSpeed
+
1
)
{
f_
utTriggerEvent
(
m_
changeSpeed
(
v_speedValues
[
v_cntSpeed
])
)
;
f_changeSpeed
(
v_speedValues
[
v_cntSpeed
]);
v_cntTime
:=
0
;
tc_ac
.
start
;
alt
{
...
...
@@ -419,6 +419,7 @@ module ItsCam_TpFunctions {
/**
* @desc TP Function for TC_CAM_MSD_INA_BV_01_01
*/
// TODO yann/ifsttar: why 3601? 0 and 3600 indicates the north!!!!
function
f_CAM_MSD_INA_BV_01_01
()
runs
on
ItsCam
{
// Local variables
...
...
@@ -466,7 +467,7 @@ module ItsCam_TpFunctions {
}
else
{
// TODO Add negative value case
v_curVal
:=
v_camInd
.
msgIn
.
cam
.
camParameters
.
highFrequencyContainer
.
basicVehicleContainerHighFrequency
.
curvature
.
curvatureValue
-
c_curValOffset
;
if
(
valueof
(
v_curVal
)
<
-
30000
)
{
v_curVal
:=
0
;
v_curVal
:=
0
;
// yann/ifsttar TODO It's not a true negative modulus operation
}
}
f_utTriggerEvent
(
m_changeCurvature
(
c_curValOffset
));
...
...
@@ -1597,7 +1598,7 @@ module ItsCam_TpFunctions {
log
(
"*** "
&
testcasename
()
&
": Checking INFO==Heading value ***"
);
// change the heading value to retrieve the current value
f_
utTriggerEvent
(
m_
changeHeading
(
c_headingValOffset
)
)
;
f_changeHeading
(
c_headingValOffset
);
tc_ac
.
start
;
alt
{
...
...
@@ -1612,7 +1613,7 @@ module ItsCam_TpFunctions {
v_initialReceived
:=
true
;
//change again the heading value and set the expectation to the measured value
v_headingVal
:=
(
v_camInd
.
msgIn
.
cam
.
camParameters
.
highFrequencyContainer
.
basicVehicleContainerHighFrequency
.
heading
.
headingValue
+
c_headingValOffset
)
mod
3601
;
f_
utTriggerEvent
(
m_
changeHeading
(
c_headingValOffset
)
)
;
f_changeHeading
(
c_headingValOffset
);
tc_ac
.
start
;
repeat
;
}
...
...
@@ -1660,7 +1661,7 @@ module ItsCam_TpFunctions {
log
(
"*** "
&
testcasename
()
&
": Checking INFO==Speed value ***"
);
// change the speed value to retrieve the current value
f_
utTriggerEvent
(
m_
changeSpeed
(
c_speedValOffset
)
)
;
f_changeSpeed
(
c_speedValOffset
);
tc_ac
.
start
;
alt
{
...
...
@@ -1675,7 +1676,7 @@ module ItsCam_TpFunctions {
v_initialReceived
:=
true
;
//change again the speed value and set the expectation to the measured value
v_speedVal
:=
(
v_camInd
.
msgIn
.
cam
.
camParameters
.
highFrequencyContainer
.
basicVehicleContainerHighFrequency
.
speed
.
speedValue
+
c_speedValOffset
)
mod
16384
;
f_
utTriggerEvent
(
m_
changeSpeed
(
c_speedValOffset
)
)
;
f_changeSpeed
(
c_speedValOffset
);
tc_ac
.
start
;
repeat
;
}
...
...
@@ -1798,7 +1799,8 @@ module ItsCam_TpFunctions {
v_initialReceived
:=
true
;
//change again the yaw rate value and set the expectation to the measured value
v_yawRateVal
:=
v_camInd
.
msgIn
.
cam
.
camParameters
.
highFrequencyContainer
.
basicVehicleContainerHighFrequency
.
yawRate
.
yawRateValue
;
if
(
valueof
(
v_yawRateVal
)
>=
32767
)
{
if
(
valueof
(
v_yawRateVal
)
>=
32767
)
{
// FIXME Yann/ifsttar: quid if we receive -32768
// FIXME if current value is 32760 and offset applied, we shall not expect posiive value
v_yawRateVal
:=
-
32766
;
}
else
{
...
...
@@ -2236,7 +2238,7 @@ module ItsCam_TpFunctions {
}
t_minTransInterval
.
start
;
}
f_
utTriggerEvent
(
m_
changeSpeed
(
v_speedValues
[
v_cntSpeed
])
)
;
f_changeSpeed
(
v_speedValues
[
v_cntSpeed
]);
}
t_minTransInterval
.
stop
;
log
(
"*** "
&
testcasename
()
&
": PASS: Generation of CAM messages was successful ***"
);
...
...
@@ -2403,7 +2405,7 @@ module ItsCam_TpFunctions {
f_selfOrClientSyncAndVerdictPreamble
(
c_prDone
,
e_timeout
);
}
}
f_
utTriggerEvent
(
m_
changeSpeed
(
1000
)
)
;
f_changeSpeed
(
1000
);
tc_ac
.
start
;
alt
{
[]
camPort
.
receive
(
mw_camInd
(
mw_camMsg_any
)){
...
...
@@ -2513,7 +2515,7 @@ module ItsCam_TpFunctions {
f_selfOrClientSyncAndVerdictPreamble
(
c_prDone
,
e_success
);
// Test Body
f_
utTriggerEvent
(
m_
changeHeading
(
v_changeHeadingValue
)
)
;
f_changeHeading
(
v_changeHeadingValue
);
t_genCam_dcc
.
timeout
;
t_genCam_min
.
start
;
alt
{
...
...
@@ -2543,7 +2545,7 @@ module ItsCam_TpFunctions {
timer
t_genCam_dcc
:=
PICS_T_GENCAMDCC
*
0.90
;
var
CamInd
v_camPdu
;
var
ReferencePosition
v_referencePosition
,
v_expectedReferencePosition
;
var
integer
v_changePosValue
:=
8
;
// 8 >> 4m
var
float
v_changePosValue
:=
8
.0
;
// 8 >> 4m
// Test control
if
(
not
PICS_CAM_GENERATION
)
{
...
...
@@ -2577,10 +2579,16 @@ module ItsCam_TpFunctions {
// Test Body
v_expectedReferencePosition
:=
f_computePositionUsingDistance
(
v_referencePosition
,
v_changePosValue
);
f_utChangePosition
(
valueof
(
UtChangePosition
:
{
if
(
PICS_GNSS_SCENARIO_SUPPORT
==
false
)
{
f_utChangePosition
(
valueof
(
UtChangePosition
:
{
latitude
:=
v_expectedReferencePosition
.
latitude
-
v_referencePosition
.
latitude
,
longitude
:=
v_expectedReferencePosition
.
longitude
-
v_referencePosition
.
longitude
,
elevation
:=
0
}
)
);
elevation
:=
0
}
));
}
t_genCam_dcc
.
timeout
;
t_genCam_dcc
.
start
;
alt
{
...
...
@@ -2644,7 +2652,7 @@ module ItsCam_TpFunctions {
f_selfOrClientSyncAndVerdictPreamble
(
c_prDone
,
e_success
);
// Test Body
f_
utTriggerEvent
(
m_
changeSpeed
(
v_changeSpeedValue
)
)
;
f_changeSpeed
(
v_changeSpeedValue
);
t_genCam_dcc
.
timeout
;
t_genCam_min
.
start
;
alt
{
...
...
@@ -2706,7 +2714,7 @@ module ItsCam_TpFunctions {
f_selfOrClientSyncAndVerdictPreamble
(
c_prDone
,
e_timeout
);
}
}
f_
utTriggerEvent
(
m_
changeSpeed
(
1000
)
)
;
f_changeSpeed
(
1000
);
tc_ac
.
start
;
alt
{
[]
camPort
.
receive
(
mw_camInd
(
mw_camMsg_any
)){
...
...
ttcn/AtsGeoNetworking/ItsGeoNetworking_TpFunctions.ttcn
View file @
be9063fb
...
...
@@ -269,7 +269,10 @@ module ItsGeoNetworking_TpFunctions {
/**
* @desc TP Function for TC_GEONW_FDV_COH_BV_03
*/
function f_GEONW_FDV_COH_BV_03() runs on ItsGeoNetworking {
function f_GEONW_FDV_COH_BV_03(
in template (present) UInt8 p_hopLimit := f_getDefaultHopLimit(),
in template (present) Bit8 p_flags := f_isMobile()
) runs on ItsGeoNetworking {
// Local variables
var LongPosVector v_longPosVectorIut;
...
...
@@ -300,7 +303,7 @@ module ItsGeoNetworking_TpFunctions {
tc_ac.start;
alt {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacketWithHlAndFlags(mw_longPosVectorPosition_withDelta(v_longPosVectorIut), ?,
f_getDefaultHopLimit(), f_isMobile()
)))) {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacketWithHlAndFlags(mw_longPosVectorPosition_withDelta(v_longPosVectorIut), ?,
p_hopLimit, p_flags
)))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Correct GeoNetworking Common Header received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
...
...
@@ -1792,7 +1795,7 @@ module ItsGeoNetworking_TpFunctions {
}
// Test component configuration
f_cf01Up();
f_cf01Up();
//FIXME ac change position, not used by C2C
v_longPosVectorIut := f_getPosition(c_compIut);
v_previouslongPosVectorIut := v_longPosVectorIut;
v_previouslongPosVectorIut.timestamp := ?;
...
...
@@ -6706,7 +6709,7 @@ module ItsGeoNetworking_TpFunctions {
// Local variables
var ItsGeoNetworking v_nodeB;
var ItsGeoNetworking v_nodeC;
var
integer
v_distance := f_getCbfMaxCommunicationRange() - 10;
var
float
v_distance :=
int2float(
f_getCbfMaxCommunicationRange() - 10
)
;
var LongPosVector v_longPosVectorIut, v_longPosVectorNodeA;
// Test control
...
...
@@ -6749,7 +6752,7 @@ module ItsGeoNetworking_TpFunctions {
* @param p_distanceToNodeA Distance between IUT and NodeA
* @param p_longPosVectorNodeA Position vector of NodeA
*/
function f_GEONW_PON_GUC_BV_06_nodeB(in
integer
p_distanceToNodeA, in LongPosVector p_longPosVectorNodeA) runs on ItsGeoNetworking {
function f_GEONW_PON_GUC_BV_06_nodeB(in
float
p_distanceToNodeA, in LongPosVector p_longPosVectorNodeA) runs on ItsGeoNetworking {
// Local variables
timer t_toCbf := (int2float(f_getGeoUnicastCbfMaxTime())
...
...
@@ -7038,7 +7041,7 @@ module ItsGeoNetworking_TpFunctions {
// Local variables
var ItsGeoNetworking v_nodeB;
var ItsGeoNetworking v_nodeC;
var
integer
v_distance := f_getCbfMaxCommunicationRange() - 10;
var
float
v_distance :=
int2float(
f_getCbfMaxCommunicationRange() - 10
)
;
var LongPosVector v_longPosVectorIut, v_longPosVectorNodeA;
// Test control
...
...
@@ -7202,7 +7205,7 @@ module ItsGeoNetworking_TpFunctions {
// Local variables
var ItsGeoNetworking v_nodeB;
var ItsGeoNetworking v_nodeC;
var
integer
v_distance := f_getCbfMaxCommunicationRange() - 10;
var
float
v_distance :=
int2float(
f_getCbfMaxCommunicationRange() - 10
)
;
var LongPosVector v_longPosVectorIut, v_longPosVectorNodeA;
// Test control
...
...
ttcn/AtsSecurity/AtsSecurity_Functions.ttcn3
View file @
be9063fb
...
...
@@ -112,15 +112,19 @@ module AtsSecurity_Functions {
* @param p_headerFields HeaderFields to be inserted in the message
* @param p_signerInfoType Add digest or AT certificate or certificate chain
* @param p_addMissingHeaders Whether to add mandatory headers not present in p_headerFields
* @param p_alterATCertificateSignature Set to true to alter the AT certificate signature
* @param p_alterAACertificateSignature Set to true to alter the AA certificate signature
* @return Secured GeoNetworking packet containing a CAM
*/
function
f_prepareSecuredCam_Bo
(
in
charstring
p_configId
,
in
integer
p_protocolVersion
:=
c_protocol_version
,
in
UInt8
p_protocolVersion
:=
c_protocol_version
,
in
integer
p_trailerStatus
:=
0
,
in
template
(
omit
)
HeaderFields
p_headerFields
:=
omit
,
in
SignerInfoType
p_signerInfoType
:=
e_certificate_digest_with_sha256
,
in
boolean
p_addMissingHeaders
:=
true
in
boolean
p_addMissingHeaders
:=
true
,
in
boolean
p_alterATCertificateSignature
:=
false
,
in
boolean
p_alterAACertificateSignature
:=
false
)
runs
on
ItsGeoNetworking
return
GeoNetworkingPdu
{
// Local variables
var
GnNonSecuredPacket
v_gnNonSecuredPacket
;
...
...
@@ -158,10 +162,13 @@ module AtsSecurity_Functions {
p_signerInfoType
,
p_headerFields
,
p_configId
,
p_addMissingHeaders
p_addMissingHeaders
,
p_alterATCertificateSignature
,
p_alterAACertificateSignature
);
// Return secured Gn packet
// log("f_prepareSecuredCam_Bo: ", m_geoNwSecPdu(v_gnNonSecuredPacket, v_securedMessage));
return
valueof
(
m_geoNwSecPdu
(
v_gnNonSecuredPacket
,
v_securedMessage
));
}
// End of function f_prepareSecuredCam_Bo
...
...
@@ -201,7 +208,7 @@ module AtsSecurity_Functions {
*/
function
f_sendSecuredCam_Bo
(
in
charstring
p_configId
,
in
integer
p_protocolVersion
:=
c_protocol_version
,
in
UInt8
p_protocolVersion
:=
c_protocol_version
,
in
integer
p_trailerStatus
:=
1
,
in
template
(
omit
)
HeaderFields
p_headerFields
:=
omit
,
in
SignerInfoType
p_signerInfoType
:=
e_certificate_digest_with_sha256
...
...
@@ -210,6 +217,7 @@ module AtsSecurity_Functions {
// Local variables
var
GeoNetworkingPdu
v_securedGnPdu
:=
f_prepareSecuredCam_Bo
(
p_configId
,
p_protocolVersion
,
p_trailerStatus
,
p_headerFields
,
p_signerInfoType
);
// log("v_securedGnPdu = ", v_securedGnPdu);
f_sendGeoNetMessage
(
m_geoNwReq_linkLayerBroadcast
(
v_securedGnPdu
));
return
v_securedGnPdu
;
...
...
@@ -304,7 +312,7 @@ module AtsSecurity_Functions {
*/
function
f_prepareSecuredDenm_Bo
(
in
charstring
p_configId
,
in
integer
p_protocolVersion
:=
c_protocol_version
,
in
UInt8
p_protocolVersion
:=
c_protocol_version
,
in
integer
p_trailerStatus
:=
0
,
in
template
(
omit
)
HeaderFields
p_headerFields
:=
omit
,
in
SignerInfoType
p_signerInfoType
:=
e_certificate
,
...
...
@@ -402,7 +410,7 @@ module AtsSecurity_Functions {
*/
function
f_sendSecuredDenm_Bo
(
in
charstring
p_configId
,
in
integer
p_protocolVersion
:=
c_protocol_version
,
in
UInt8
p_protocolVersion
:=
c_protocol_version
,
in
integer
p_trailerStatus
:=
1
,
in
template
(
omit
)
HeaderFields
p_headerFields
:=
omit
,
in
SignerInfoType
p_signerInfoType
:=
e_certificate_digest_with_sha256
...
...
@@ -418,6 +426,174 @@ module AtsSecurity_Functions {
}
// End of group secDenm
group
secBeacon
{
/**
* @desc Prepare a secured Beacon
* @param p_configId The configuration identifier to be used
* @param p_headerFields HeaderFields to be inserted in the message
* @param p_signerInfoType Add digest or AT certificate or certificate chain
* @param p_addMissingHeaders Whether to add mandatory headers not present in p_headerFields
* @return Secured GeoNetworking packet containing a CAM
*/
function
f_prepareSecuredBeacon
(
in
charstring
p_configId
,
in
template
(
omit
)
HeaderFields
p_headerFields
:=
omit
,
in
SignerInfoType
p_signerInfoType
:=
e_certificate
,
in
boolean
p_addMissingHeaders
:=
true
)
runs
on
ItsGeoNetworking
return
GeoNetworkingPdu
{
// Local variables
var
GnNonSecuredPacket
v_gnNonSecuredPacket
;
var
octetstring
v_gnPayload
;
var
LongPosVector
v_longPosVectorNodeB
:=
f_getPosition
(
c_compNodeB
);
// Use NodeB
var
template
(
value
)
SecuredMessage
v_securedMessage
;
// Build signed SecuredMessage
v_gnNonSecuredPacket
:=
valueof
(
m_geoNwBroadcastPacket
(
v_longPosVectorNodeB
,
vc_localSeqNumber
,
f_getGeoBroadcastArea
(
c_area1
// Select area1 (see ETSI TS 102 871-2 Clause 4.2 Configuration 1)
)));
// Encode it
v_gnPayload
:=
bit2oct
(
encvalue
(
v_gnNonSecuredPacket
)
);
f_buildGnSecuredOtherMessage
(
v_securedMessage
,
m_payload_signed
(
v_gnPayload
),
p_signerInfoType
,
valueof
(
m_threeDLocation
(
v_longPosVectorNodeB
.
latitude
,
v_longPosVectorNodeB
.
longitude
,
'0000'O
)),
p_headerFields
,
p_configId
,
p_addMissingHeaders
);
// Return secured Gn packet
return
valueof
(
m_geoNwSecPdu
(
v_gnNonSecuredPacket
,
v_securedMessage
));
}
// End of function f_prepareSecuredBeacon
/**
* @desc Prepare a secured Beacon including wrong elements of protocols. It is used for BO test cases
* @param p_configId The configuration identifier to be used
* @param p_protocolVersion The protocol version to be set. Default: 2
* @param p_trailerStatus The Traile behaviour:
* <li>0 for no trailer</li>
* <li>1 for invalid trailer</li>
* <li>2 for duplicated trailer</li>
* @param p_headerFields HeaderFields to be inserted in the message
* @param p_signerInfoType Add digest or AT certificate or certificate chain
* @param p_addMissingHeaders Whether to add mandatory headers not present in p_headerFields
* @return Secured GeoNetworking packet containing a CAM
*/
function
f_prepareSecuredBeacon_Bo
(
in
charstring
p_configId
,
in
UInt8
p_protocolVersion
:=
c_protocol_version
,
in
integer
p_trailerStatus
:=
0
,
in
template
(
omit
)
HeaderFields
p_headerFields
:=
omit
,
in
SignerInfoType
p_signerInfoType
:=
e_certificate
,
in
boolean
p_addMissingHeaders
:=
true
)
runs
on
ItsGeoNetworking
return
GeoNetworkingPdu
{
// Local variables
var
GnNonSecuredPacket
v_gnNonSecuredPacket
;
var
octetstring
v_gnPayload
;
var
LongPosVector
v_longPosVectorNodeB
:=
f_getPosition
(
c_compNodeB
);
// Use NodeB
var
template
(
value
)
SecuredMessage
v_securedMessage
;
// Build signed SecuredMessage
v_gnNonSecuredPacket
:=
valueof
(
m_geoNwBroadcastPacket
(
v_longPosVectorNodeB
,
vc_localSeqNumber
,
f_getGeoBroadcastArea
(
c_area1
// Select area1 (see ETSI TS 102 871-2 Clause 4.2 Configuration 1)
)));
// Encode it
v_gnPayload
:=
bit2oct
(
encvalue
(
v_gnNonSecuredPacket
)
);
f_buildGnSecuredOtherMessage_Bo
(
v_securedMessage
,
p_protocolVersion
,
p_trailerStatus
,
m_payload_signed
(
v_gnPayload
),
p_signerInfoType
,
valueof
(
m_threeDLocation
(
v_longPosVectorNodeB
.
latitude
,
v_longPosVectorNodeB
.
longitude
,
'0000'O
)),
p_headerFields
,
p_configId
,
p_addMissingHeaders
);
// Return secured Gn packet
return
valueof
(
m_geoNwSecPdu
(
v_gnNonSecuredPacket
,
v_securedMessage
));
}
// End of function f_prepareSecuredBeacon_Bo
/**
* @desc Sends a secured Beacon
* @param p_configId The configuration identifier to be used
* @param p_headerFields Additional HeaderFields
* @param p_signerInfoType Add digest or AT certificate or certificate chain
* @return GeoNetworking payload
*/
function
f_sendSecuredBeacon
(
in
charstring
p_configId
,
in
template
(
omit
)
HeaderFields
p_headerFields
:=
omit
,
in
SignerInfoType
p_signerInfoType
:=
e_certificate_digest_with_sha256
)
runs
on
ItsGeoNetworking
return
GeoNetworkingPdu
{
// Local variables
var
GeoNetworkingPdu
v_securedGnPdu
:=
f_prepareSecuredBeacon
(
p_configId
,
p_headerFields
,
p_signerInfoType
);
f_sendGeoNetMessage
(
m_geoNwReq_linkLayerBroadcast
(
v_securedGnPdu
));
return
v_securedGnPdu
;
}
// End of function f_sendSecuredBeacon
/**
* @desc Sends a secured Beacon including wrong elements of protocols. It is used for BO test cases
* @param p_configId The configuration identifier to be used
* @param p_protocolVersion The protocol version to be set. Default: 2
* @param p_trailerStatus The Traile behaviour:
* <li>0 for no trailer</li>
* <li>1 for invalid trailer</li>
* <li>2 for duplicated trailer</li>
* @param p_headerFields Additional HeaderFields
* @param p_signerInfoType Add digest or AT certificate or certificate chain
* @return GeoNetworking payload
*/
function
f_sendSecuredBeacon_Bo
(
in
charstring
p_configId
,
in
UInt8
p_protocolVersion
:=
c_protocol_version
,
in
integer
p_trailerStatus
:=
1
,
in
template
(
omit
)
HeaderFields
p_headerFields
:=
omit
,
in
SignerInfoType
p_signerInfoType
:=
e_certificate_digest_with_sha256
)
runs
on
ItsGeoNetworking
return
GeoNetworkingPdu
{
// Local variables
var
GeoNetworkingPdu
v_securedGnPdu
:=
f_prepareSecuredBeacon_Bo
(
p_configId
,
p_protocolVersion
,
p_trailerStatus
,
p_headerFields
,
p_signerInfoType
);
f_sendGeoNetMessage
(
m_geoNwReq_linkLayerBroadcast
(
v_securedGnPdu
));
return
v_securedGnPdu
;
}
// End of function f_sendSecuredBeacon_Bo
}
// End of group secBeacon
group
camTrigger
{
/**
...
...
ttcn/AtsSecurity/AtsSecurity_Templates.ttcn3
View file @
be9063fb
...
...
@@ -37,7 +37,7 @@ module AtsSecurity_Templates {
template
(
present
)
Payload
mw_secCamPayload
:=
{
decodedPayload
:=
{
btpPacket
:=
mw_btp
B
(
btpPacket
:=
mw_btp
A
(
PX_DESTINATION_PORT
,
?
,
mw_btpCamPayload
...
...
ttcn/AtsSecurity/AtsSecurity_TestSystem.ttcn3
View file @
be9063fb
...
...
@@ -22,7 +22,7 @@ module AtsSecurity_TestSystem {
*/
type
component
ItsSecSystem
{
port
AdapterControlPort
acPort
;
port
LibItsGeoNetworking_TestSystem
.
AdapterControlPort
acPort
;
// NT2 ports
port
LibItsGeoNetworking_TestSystem
.
UpperTesterPort
utPort
;
...
...
ttcn/AtsSecurity/ItsSecurity_Pics.ttcn3
0 → 100644
View file @
be9063fb
/**
* @author ETSI / STF507
* @version $UR$
* $Id$
* @desc Module containing Pics for Security ATS
*
*/
module
ItsSecurity_Pics
{
/**
* @desc Set to true to enable specific behavior to validate ITS Security ATS against itself
*/
modulepar
boolean
PICS_DEBUG_ADDON
:=
false
;
}
// End of module ItsSecurity_Pics
ttcn/AtsSecurity/ItsSecurity_TestCases.ttcn3
View file @
be9063fb
This source diff could not be displayed because it is too large. You can
view the blob
instead.
ttcn/AtsSecurity/ItsSecurity_TestControl.ttcn3
View file @
be9063fb
...
...
@@ -17,75 +17,153 @@ module ItsSecurity_TestControl {
// Test Execution
control
{
/**
* @desc Sending behaviour test cases
* @see ETSI TS 103 096-2 V1.2.2 (2016-01) Clause 5.2 Sending behaviour
*/
if
(
PICS_GN_SECURITY
)
{
if
(
PICS_ITS_AID_OTHER_PROFILE
)
{
execute
(
TC_SEC_ITSS_SND_MSG_01
());
}
execute
(
TC_SEC_ITSS_SND_MSG_04_01
());
execute
(
TC_SEC_ITSS_SND_MSG_04_02
());
execute
(
TC_SEC_ITSS_SND_MSG_05_01
());