Newer
Older
/*
* @author
*
* @version
* 1.0
* @desc
*
* @remark
*
* @see
*
*/
module TestCodec_SecuredMessages {
// LibCommon
import from LibCommon_BasicTypesAndValues all;
import from LibCommon_DataStrings all;
// LibIts
import from IEEE1609dot2BaseTypes language "ASN.1:1997" all;
import from IEEE1609dot2 language "ASN.1:1997" all;
import from EtsiTs103097Module language "ASN.1:1997" all;
// LibItsGeoNetworking
import from LibItsGeoNetworking_EncdecDeclarations all;
import from LibItsGeoNetworking_TypesAndValues all;
// LibItsSecurity
import from LibItsSecurity_EncdecDeclarations all;
import from LibItsSecurity_TypesAndValues all;
import from LibItsSecurity_Templates all;
import from LibItsSecurity_Pixits all;
// TestCodec
import from TestCodec_TestAndSystem all;
testcase tc_ssp_cam_1() runs on TCType system TCType {
var SspCAM v_sspCAM := valueof(m_sspCAMContainer_sign_all);
var bitstring v_encMsg;
v_encMsg := encvalue(valueof(v_sspCAM));
if (lengthof(v_encMsg) != 32) {
setverdict(fail);
} else {
var SspCAM v_sspCAM_dec;
if (decvalue(v_encMsg, v_sspCAM_dec) != 0) {
setverdict(fail);
} else if (not(match(v_sspCAM_dec, v_sspCAM))) {
setverdict(fail);
} else {
setverdict(pass);
}
}
} // End of testcase tc_ssp_cam_1
testcase tc_ssp_cam_2() runs on TCType system TCType {
var SspCAM v_sspCAM := valueof(m_sspCAMContainer_sign_all);
var bitstring v_encMsg;
v_sspCAM.publicTransport := '0'B;
v_sspCAM.specialTransport := '0'B;
v_sspCAM.dangerousGoods := '0'B;
v_sspCAM.roadwork := '0'B;
v_sspCAM.rescue := '0'B;
v_encMsg := encvalue(valueof(v_sspCAM));
if (lengthof(v_encMsg) != 32) {
setverdict(fail);
} else {
var SspCAM v_sspCAM_dec;
if (decvalue(v_encMsg, v_sspCAM_dec) != 0) {
setverdict(fail);
} else if (not(match(v_sspCAM_dec, v_sspCAM))) {
setverdict(fail);
testcase tc_ssp_denm() runs on TCType system TCType {
var SspDENM v_sspDENM := valueof(m_sspDENMContainer_sign_all);
var bitstring v_encMsg;
v_encMsg := encvalue(valueof(v_sspDENM));
if (lengthof(v_encMsg) != 32) {
setverdict(fail);
} else {
var SspDENM v_sspDENM_dec;
if (decvalue(v_encMsg, v_sspDENM_dec) != 0) {
setverdict(fail);
} else if (not(match(v_sspDENM_dec, v_sspDENM))) {
testcase tc_secured_message_unsecured() runs on TCType system TCType {
var template (value) EtsiTs103097Data v_secured_data;
var EtsiTs103097Data v_secured_data_dec;
var bitstring v_encMsg;
v_secured_data := m_etsiTs103097Data_unsecured(
v_encMsg := encvalue(valueof(v_secured_data));
if (decvalue(v_encMsg, v_secured_data_dec) != 0) {
setverdict(fail);
stop;
} else if (not(match(valueof(v_secured_data), v_secured_data_dec))) {
setverdict(fail);
stop;
}
setverdict(pass, "Decoding passed.");
} // End of testcase tc_secured_message_unsecured
testcase tc_secured_message_signed_1() runs on TCType system TCType {
var EtsiTs103097Data v_secured_data_dec;
var octetstring v_raw_payload_to_be_signed := 'CAFFEDECA0000001'O;
var HashedId8 v_digest := '0000000000000000'O;
var bitstring v_encMsg;
v_secured_data := m_etsiTs103097Data_signed(
m_signedData(
sha256,
m_toBeSignedData(
m_signedDataPayload(
m_etsiTs103097Data_unsecured(v_raw_payload_to_be_signed)
),
m_headerInfo_gn(
-,
12345,
123456
)
),
{ digest := v_digest },
m_signature_ecdsaNistP256(
m_ecdsaNistP256Signature(
m_eccP256CurvePoint_x_only(
'08B2030104020A0D010C0105C0F80BB1460239348D17405C1A845151D4061200'O
),
'2617CF4E6B25097F03F502AD0C6F2F125974700D31A60FD1EF12040E4D8231AB'O
)
)
)
);
log("v_secured_data = ", v_secured_data);
v_encMsg := encvalue(valueof(v_secured_data));
if (decvalue(v_encMsg, v_secured_data_dec) != 0) {
setverdict(fail);
stop;
} else if (not(match(valueof(v_secured_data), v_secured_data_dec))) {
setverdict(fail);
stop;
}
setverdict(pass, "Decoding passed.");
} // End of testcase tc_secured_message_signed_1
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
// FIXME How to create secured GeoNetworking message?
testcase tc_secured_message_signed_2() runs on TCType system TCType {
var template (value) EtsiTs103097Data v_secured_data;
var EtsiTs103097Data v_secured_data_dec;
var octetstring v_raw_payload_to_be_signed;
var HashedId8 v_digest := '0000000000000000'O;
var bitstring v_encMsg;
v_secured_data := m_etsiTs103097Data_signed(
m_signedData(
sha256,
m_toBeSignedData(
m_signedDataPayload(
m_etsiTs103097Data_unsecured(v_raw_payload_to_be_signed)
),
m_headerInfo_gn(
-,
12345,
123456
)
),
{ digest := v_digest },
m_signature_ecdsaNistP256(
m_ecdsaNistP256Signature(
m_eccP256CurvePoint_x_only(
'08B2030104020A0D010C0105C0F80BB1460239348D17405C1A845151D4061200'O
),
'2617CF4E6B25097F03F502AD0C6F2F125974700D31A60FD1EF12040E4D8231AB'O
)
)
)
);
log("v_secured_data = ", v_secured_data);
v_encMsg := encvalue(valueof(v_secured_data));
setverdict(pass, "Encoding passed.");
if (decvalue(v_encMsg, v_secured_data_dec) != 0) {
setverdict(fail);
stop;
} else if (not(match(valueof(v_secured_data), v_secured_data_dec))) {
setverdict(fail);
stop;
}
setverdict(pass, "Decoding passed.");
} // End of testcase tc_secured_message_signed_2
execute(tc_ssp_cam_1());
execute(tc_ssp_cam_2());
execute(tc_ssp_denm());
execute(tc_secured_message_unsecured());
execute(tc_secured_message_signed_1());
execute(tc_secured_message_signed_2());
} // End of module TestCodec_SecuredMessages