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
019f1b7f
Commit
019f1b7f
authored
Apr 04, 2018
by
garciay
Browse files
STF545: Validate full support of ECIES encryption
parent
f8c50b98
Changes
3
Hide whitespace changes
Inline
Side-by-side
ttcn/AtsGeoNetworking/ItsGeoNetworking_TpFunctions.ttcn
View file @
019f1b7f
...
@@ -117,13 +117,13 @@ module ItsGeoNetworking_TpFunctions {
...
@@ -117,13 +117,13 @@ module ItsGeoNetworking_TpFunctions {
f_sleep(PX_TAC);
f_sleep(PX_TAC);
if(0 < lengthof(vc_utInds)) {
if(0 < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer***");
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer
***");
//flush received upper indications
//flush received upper indications
vc_utInds := {};
vc_utInds := {};
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
}
else {
else {
log("*** " & testcasename() & ": INCONC: GN was not transmitted to upper layer***");
log("*** " & testcasename() & ": INCONC: GN was not transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_prDone, e_error);
f_selfOrClientSyncAndVerdict(c_prDone, e_error);
}
}
...
@@ -135,11 +135,11 @@ module ItsGeoNetworking_TpFunctions {
...
@@ -135,11 +135,11 @@ module ItsGeoNetworking_TpFunctions {
f_sleep(PX_TAC);
f_sleep(PX_TAC);
if(0 != lengthof(vc_utInds)) {
if(0 != lengthof(vc_utInds)) {
log("*** " & testcasename() & ": FAIL: GN was transmitted to upper layer***");
log("*** " & testcasename() & ": FAIL: GN was transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
else {
else {
log("*** " & testcasename() & ": PASS: GN was discarded and not transmitted to upper layer***");
log("*** " & testcasename() & ": PASS: GN was discarded and not transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
...
@@ -6701,11 +6701,11 @@ module ItsGeoNetworking_TpFunctions {
...
@@ -6701,11 +6701,11 @@ module ItsGeoNetworking_TpFunctions {
// empty on purpose
// empty on purpose
}
}
if(i < lengthof(vc_utInds)) {
if(i < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer***");
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
else {
else {
log("*** " & testcasename() & ": FAIL: GN was not transmitted to upper layer***");
log("*** " & testcasename() & ": FAIL: GN was not transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
...
@@ -7738,13 +7738,13 @@ module ItsGeoNetworking_TpFunctions {
...
@@ -7738,13 +7738,13 @@ module ItsGeoNetworking_TpFunctions {
// empty on purpose
// empty on purpose
}
}
if(i < lengthof(vc_utInds)) {
if(i < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer***");
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer
***");
//flush received upper indications
//flush received upper indications
vc_utInds := {};
vc_utInds := {};
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
}
else {
else {
log("*** " & testcasename() & ": INCONC: GN was not transmitted to upper layer***");
log("*** " & testcasename() & ": INCONC: GN was not transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_prDone, e_error);
f_selfOrClientSyncAndVerdict(c_prDone, e_error);
}
}
...
@@ -7754,11 +7754,11 @@ module ItsGeoNetworking_TpFunctions {
...
@@ -7754,11 +7754,11 @@ module ItsGeoNetworking_TpFunctions {
f_sleep(PX_TAC);
f_sleep(PX_TAC);
if(0 != lengthof(vc_utInds)) {
if(0 != lengthof(vc_utInds)) {
log("*** " & testcasename() & ": FAIL: GN was transmitted to upper layer***");
log("*** " & testcasename() & ": FAIL: GN was transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
else {
else {
log("*** " & testcasename() & ": PASS: GN was not transmitted to upper layer***");
log("*** " & testcasename() & ": PASS: GN was not transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
...
@@ -8955,11 +8955,11 @@ module ItsGeoNetworking_TpFunctions {
...
@@ -8955,11 +8955,11 @@ module ItsGeoNetworking_TpFunctions {
// empty on purpose
// empty on purpose
}
}
if(i < lengthof(vc_utInds)) {
if(i < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer***");
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
else {
else {
log("*** " & testcasename() & ": FAIL: GN was not transmitted to upper layer***");
log("*** " & testcasename() & ": FAIL: GN was not transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
...
@@ -9057,13 +9057,13 @@ module ItsGeoNetworking_TpFunctions {
...
@@ -9057,13 +9057,13 @@ module ItsGeoNetworking_TpFunctions {
// empty on purpose
// empty on purpose
}
}
if(i < lengthof(vc_utInds)) {
if(i < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer***");
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer
***");
//flush received upper indications
//flush received upper indications
vc_utInds := {};
vc_utInds := {};
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
}
else {
else {
log("*** " & testcasename() & ": INCONC: GN was not transmitted to upper layer***");
log("*** " & testcasename() & ": INCONC: GN was not transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_prDone, e_error);
f_selfOrClientSyncAndVerdict(c_prDone, e_error);
}
}
...
@@ -9071,11 +9071,11 @@ module ItsGeoNetworking_TpFunctions {
...
@@ -9071,11 +9071,11 @@ module ItsGeoNetworking_TpFunctions {
f_sleep(PX_TAC);
f_sleep(PX_TAC);
if(0 != lengthof(vc_utInds)) {
if(0 != lengthof(vc_utInds)) {
log("*** " & testcasename() & ": FAIL: GN was transmitted to upper layer***");
log("*** " & testcasename() & ": FAIL: GN was transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
else {
else {
log("*** " & testcasename() & ": PASS: GN was NOT transmitted to upper layer***");
log("*** " & testcasename() & ": PASS: GN was NOT transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
...
@@ -9169,11 +9169,11 @@ module ItsGeoNetworking_TpFunctions {
...
@@ -9169,11 +9169,11 @@ module ItsGeoNetworking_TpFunctions {
f_sleep(PX_TAC);
f_sleep(PX_TAC);
if(0 != lengthof(vc_utInds)) {
if(0 != lengthof(vc_utInds)) {
log("*** " & testcasename() & ": FAIL: GN was transmitted to upper layer***");
log("*** " & testcasename() & ": FAIL: GN was transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
else {
else {
log("*** " & testcasename() & ": PASS: GN was NOT transmitted to upper layer***");
log("*** " & testcasename() & ": PASS: GN was NOT transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
...
@@ -10525,11 +10525,11 @@ module ItsGeoNetworking_TpFunctions {
...
@@ -10525,11 +10525,11 @@ module ItsGeoNetworking_TpFunctions {
// empty on purpose
// empty on purpose
}
}
if(i < lengthof(vc_utInds)) {
if(i < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer***");
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
else {
else {
log("*** " & testcasename() & ": FAIL: GN was not transmitted to upper layer***");
log("*** " & testcasename() & ": FAIL: GN was not transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
...
@@ -10627,7 +10627,7 @@ module ItsGeoNetworking_TpFunctions {
...
@@ -10627,7 +10627,7 @@ module ItsGeoNetworking_TpFunctions {
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
}
else {
else {
log("*** " & testcasename() & ": INCONC: TSB was not transmitted to upper layer***");
log("*** " & testcasename() & ": INCONC: TSB was not transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_prDone, e_error);
f_selfOrClientSyncAndVerdict(c_prDone, e_error);
}
}
}
}
...
@@ -10645,7 +10645,7 @@ module ItsGeoNetworking_TpFunctions {
...
@@ -10645,7 +10645,7 @@ module ItsGeoNetworking_TpFunctions {
// empty on purpose
// empty on purpose
}
}
if(i < lengthof(vc_utInds)) {
if(i < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": FAIL: Same TSB packet was transmitted to upper layer***");
log("*** " & testcasename() & ": FAIL: Same TSB packet was transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
else {
else {
...
@@ -10871,11 +10871,11 @@ module ItsGeoNetworking_TpFunctions {
...
@@ -10871,11 +10871,11 @@ module ItsGeoNetworking_TpFunctions {
// empty on purpose
// empty on purpose
}
}
if(i < lengthof(vc_utInds)) {
if(i < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer***");
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
else {
else {
log("*** " & testcasename() & ": FAIL: GN was not transmitted to upper layer***");
log("*** " & testcasename() & ": FAIL: GN was not transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
...
@@ -11851,15 +11851,15 @@ module ItsGeoNetworking_TpFunctions {
...
@@ -11851,15 +11851,15 @@ module ItsGeoNetworking_TpFunctions {
// empty on purpose
// empty on purpose
}
}
if(i < lengthof(vc_utInds)) {
if(i < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer***");
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
else {
else {
log("*** " & testcasename() & ": FAIL: GN was not transmitted to upper layer***");
log("*** " & testcasename() & ": FAIL: GN was not transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
log("*** " & testcasename() & ": GAC packet passed to Upper layer
\
***");
log("*** " & testcasename() & ": GAC packet passed to Upper layer ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
// Postamble
...
@@ -11935,12 +11935,12 @@ module ItsGeoNetworking_TpFunctions {
...
@@ -11935,12 +11935,12 @@ module ItsGeoNetworking_TpFunctions {
// empty on purpose
// empty on purpose
}
}
if(i < lengthof(vc_utInds)) {
if(i < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer***");
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer
***");
vc_utInds := {};
vc_utInds := {};
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
}
else {
else {
log("*** " & testcasename() & ": INCONC: GN was not transmitted to upper layer***");
log("*** " & testcasename() & ": INCONC: GN was not transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_prDone, e_error);
f_selfOrClientSyncAndVerdict(c_prDone, e_error);
}
}
...
@@ -11951,11 +11951,11 @@ module ItsGeoNetworking_TpFunctions {
...
@@ -11951,11 +11951,11 @@ module ItsGeoNetworking_TpFunctions {
f_sleep(PX_TAC);
f_sleep(PX_TAC);
if(0 != lengthof(vc_utInds)) {
if(0 != lengthof(vc_utInds)) {
log("*** " & testcasename() & ": FAIL: GN was transmitted to upper layer***");
log("*** " & testcasename() & ": FAIL: GN was transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
else {
else {
log("*** " & testcasename() & ": PASS: GN was NOT transmitted to upper layer***");
log("*** " & testcasename() & ": PASS: GN was NOT transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
...
@@ -12038,11 +12038,11 @@ module ItsGeoNetworking_TpFunctions {
...
@@ -12038,11 +12038,11 @@ module ItsGeoNetworking_TpFunctions {
f_sleep(PX_TAC);
f_sleep(PX_TAC);
if(0 != lengthof(vc_utInds)) {
if(0 != lengthof(vc_utInds)) {
log("*** " & testcasename() & ": FAIL: GN was transmitted to upper layer***");
log("*** " & testcasename() & ": FAIL: GN was transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
else {
else {
log("*** " & testcasename() & ": PASS: GN was NOT transmitted to upper layer***");
log("*** " & testcasename() & ": PASS: GN was NOT transmitted to upper layer
***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
...
...
ttcn/AtsSecurity/ItsSecurity_TestCases.ttcn
View file @
019f1b7f
...
@@ -6848,7 +6848,7 @@ module ItsSecurity_TestCases {
...
@@ -6848,7 +6848,7 @@ module ItsSecurity_TestCases {
)))))) -> value v_geoNwInd {
)))))) -> value v_geoNwInd {
tc_ac.stop;
tc_ac.stop;
if (f_decrypt(f_getSecuredMessage(v_geoNwInd.msgIn), v_decryptedMsg) == false) {
if (f_decrypt(
vc_encryptPrivateKey,
f_getSecuredMessage(v_geoNwInd.msgIn), v_decryptedMsg) == false) {
log("*** " & testcasename() & ": FAIL: Unable to process encryption data ***");
log("*** " & testcasename() & ": FAIL: Unable to process encryption data ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
} else if (match(v_decryptedMsg, mw_etsiTs103097Data) == false) {
} else if (match(v_decryptedMsg, mw_etsiTs103097Data) == false) {
...
@@ -6937,7 +6937,7 @@ module ItsSecurity_TestCases {
...
@@ -6937,7 +6937,7 @@ module ItsSecurity_TestCases {
)))))) -> value v_geoNwInd {
)))))) -> value v_geoNwInd {
tc_ac.stop;
tc_ac.stop;
if (f_decrypt(f_getSecuredMessage(v_geoNwInd.msgIn), v_decryptedMsg) == false) {
if (f_decrypt(
vc_encryptPrivateKey,
f_getSecuredMessage(v_geoNwInd.msgIn), v_decryptedMsg) == false) {
log("*** " & testcasename() & ": FAIL: Unable to process encryption data ***");
log("*** " & testcasename() & ": FAIL: Unable to process encryption data ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
} else if (match(v_decryptedMsg, mw_etsiTs103097Data_signed) == false) {
} else if (match(v_decryptedMsg, mw_etsiTs103097Data_signed) == false) {
ttcn/TestCodec/TestCodec_SignedAndEncryptedMessages.ttcn
View file @
019f1b7f
...
@@ -36,6 +36,11 @@ module TestCodec_SignedAndEncryptedMessages {
...
@@ -36,6 +36,11 @@ module TestCodec_SignedAndEncryptedMessages {
// TestCodec
// TestCodec
import
from
TestCodec_TestAndSystem
all
;
import
from
TestCodec_TestAndSystem
all
;
/**
* @desc Test HMAC-SH256 using test vectors provided by IEEE Std 1609.2-2017 Annex D
* @see IEEE Std 1609.2-2017 Clause 5.3.5 Public key encryption algorithms: ECIES
* @return The encrypted message
*/
testcase
tc_test_hmac_sha256_test1
()
runs
on
TCType
system
TCType
{
testcase
tc_test_hmac_sha256_test1
()
runs
on
TCType
system
TCType
{
var
octetstring
v_k
:=
'
0
b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
'
O
;
var
octetstring
v_k
:=
'
0
b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
'
O
;
var
octetstring
v_m
:=
'
4869205468657265
'
O
;
var
octetstring
v_m
:=
'
4869205468657265
'
O
;
...
@@ -49,6 +54,10 @@ module TestCodec_SignedAndEncryptedMessages {
...
@@ -49,6 +54,10 @@ module TestCodec_SignedAndEncryptedMessages {
}
}
}
}
/**
* @desc Test HMAC-SH256 using test vectors provided by IEEE Std 1609.2-2017 Annex D
* @return The encrypted message
*/
testcase
tc_test_hmac_sha256_test2
()
runs
on
TCType
system
TCType
{
testcase
tc_test_hmac_sha256_test2
()
runs
on
TCType
system
TCType
{
var
octetstring
v_k
:=
'
4
a656665
'
O
;
var
octetstring
v_k
:=
'
4
a656665
'
O
;
var
octetstring
v_m
:=
'
7768617420646
f2079612077616e7420666f72206e6f7468696e673f
'
O
;
var
octetstring
v_m
:=
'
7768617420646
f2079612077616e7420666f72206e6f7468696e673f
'
O
;
...
@@ -62,6 +71,10 @@ module TestCodec_SignedAndEncryptedMessages {
...
@@ -62,6 +71,10 @@ module TestCodec_SignedAndEncryptedMessages {
}
}
}
}
/**
* @desc Test HMAC-SH256 using test vectors provided by IEEE Std 1609.2-2017 Annex D
* @return The encrypted message
*/
testcase
tc_test_hmac_sha256_test3
()
runs
on
TCType
system
TCType
{
testcase
tc_test_hmac_sha256_test3
()
runs
on
TCType
system
TCType
{
var
octetstring
v_k
:=
'
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
'
O
;
var
octetstring
v_k
:=
'
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
'
O
;
var
octetstring
v_m
:=
'
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
'
O
;
var
octetstring
v_m
:=
'
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
'
O
;
...
@@ -75,6 +88,10 @@ module TestCodec_SignedAndEncryptedMessages {
...
@@ -75,6 +88,10 @@ module TestCodec_SignedAndEncryptedMessages {
}
}
}
}
/**
* @desc Test AES 128 CCM using test vectors provided by IEEE Std 1609.2-2017 Annex D
* @return The encrypted message
*/
testcase
tc_test_encrypt_aes_128_ccm_test1
()
runs
on
TCType
system
TCType
{
testcase
tc_test_encrypt_aes_128_ccm_test1
()
runs
on
TCType
system
TCType
{
var
octetstring
v_k
:=
'
E58D5C8F8C9ED9785679E08ABC7C8116
'
O
;
var
octetstring
v_k
:=
'
E58D5C8F8C9ED9785679E08ABC7C8116
'
O
;
var
octetstring
v_n
:=
'
A9F593C09EAEEA8BF0C1CF6A
'
O
;
var
octetstring
v_n
:=
'
A9F593C09EAEEA8BF0C1CF6A
'
O
;
...
@@ -96,6 +113,10 @@ module TestCodec_SignedAndEncryptedMessages {
...
@@ -96,6 +113,10 @@ module TestCodec_SignedAndEncryptedMessages {
}
}
}
}
/**
* @desc Test AES 128 CCM using test vectors provided by IEEE Std 1609.2-2017 Annex D
* @return The encrypted message
*/
testcase
tc_test_encrypt_aes_128_ccm_test2
()
runs
on
TCType
system
TCType
{
testcase
tc_test_encrypt_aes_128_ccm_test2
()
runs
on
TCType
system
TCType
{
var
octetstring
v_k
:=
'
E58D5C8F8C9ED9785679E08ABC7C8116
'
O
;
var
octetstring
v_k
:=
'
E58D5C8F8C9ED9785679E08ABC7C8116
'
O
;
var
octetstring
v_n
:=
'
A9F593C09EAEEA8BF0C1CF6A
'
O
;
var
octetstring
v_n
:=
'
A9F593C09EAEEA8BF0C1CF6A
'
O
;
...
@@ -117,6 +138,11 @@ module TestCodec_SignedAndEncryptedMessages {
...
@@ -117,6 +138,11 @@ module TestCodec_SignedAndEncryptedMessages {
}
}
}
}
/**
* @desc Test AES 128 CCM using test vectors provided by IEEE Std 1609.2-2017 Annex D
* @see IEEE Std 1609.2-2017 Clause 5.3.5 Public key encryption algorithms: ECIES
* @return The encrypted message
*/
testcase
tc_test_encrypt_aes_128_ccm_test3
()
runs
on
TCType
system
TCType
{
testcase
tc_test_encrypt_aes_128_ccm_test3
()
runs
on
TCType
system
TCType
{
var
octetstring
v_wrong_k
:=
'
A58D5C8F8C9ED9785679E08ABC7C8116
'
O
;
var
octetstring
v_wrong_k
:=
'
A58D5C8F8C9ED9785679E08ABC7C8116
'
O
;
var
octetstring
v_n
:=
'
A9F593C09EAEEA8BF0C1CF6A
'
O
;
var
octetstring
v_n
:=
'
A9F593C09EAEEA8BF0C1CF6A
'
O
;
...
@@ -131,7 +157,14 @@ module TestCodec_SignedAndEncryptedMessages {
...
@@ -131,7 +157,14 @@ module TestCodec_SignedAndEncryptedMessages {
}
}
}
}
testcase
tc_encrypted_signed_message
()
runs
on
TCType
system
TCType
{
/**
* @desc Test ECIES encryption using NIST-P256
* @see IEEE Std 1609.2-2017 Clause 5.3.5 Public key encryption algorithms: ECIES
* @see https://www.nominet.uk/researchblog/how-elliptic-curve-cryptography-encryption-works/
* @see http://digital.csic.es/bitstream/10261/32671/1/V2-I2-P7-13.pdf
* @return The encrypted message
*/
testcase
tc_encrypted_signed_message_1
()
runs
on
TCType
system
TCType
{
var
template
(
value
)
EtsiTs103097Data
v_signed_data
;
var
template
(
value
)
EtsiTs103097Data
v_signed_data
;
var
EtsiTs103097Data
v_signed_data_dec
;
var
EtsiTs103097Data
v_signed_data_dec
;
...
@@ -219,9 +252,16 @@ module TestCodec_SignedAndEncryptedMessages {
...
@@ -219,9 +252,16 @@ module TestCodec_SignedAndEncryptedMessages {
}
}
setverdict
(
pass
,
"Decoding passed."
);
setverdict
(
pass
,
"Decoding passed."
);
}
// End of testcase tc_encrypted_signed_message
}
// End of testcase tc_encrypted_signed_message
_1
testcase
tc_decrypted_signed_message
()
runs
on
TCType
system
TCType
{
/**
* @desc Test ECIES encryption/decryption using NIST-P256
* @see IEEE Std 1609.2-2017 Clause 5.3.5 Public key encryption algorithms: ECIES
* @see https://www.nominet.uk/researchblog/how-elliptic-curve-cryptography-encryption-works/
* @see http://digital.csic.es/bitstream/10261/32671/1/V2-I2-P7-13.pdf
* @return The encrypted message
*/
testcase
tc_decrypted_signed_message_1
()
runs
on
TCType
system
TCType
{
var
template
(
value
)
EtsiTs103097Data
v_signed_data
;
var
template
(
value
)
EtsiTs103097Data
v_signed_data
;
var
EtsiTs103097Data
v_signed_data_dec
;
var
EtsiTs103097Data
v_signed_data_dec
;
...
@@ -320,6 +360,213 @@ module TestCodec_SignedAndEncryptedMessages {
...
@@ -320,6 +360,213 @@ module TestCodec_SignedAndEncryptedMessages {
}
}
setverdict
(
pass
,
"Full encryption/decryption passed."
);
setverdict
(
pass
,
"Full encryption/decryption passed."
);
}
// End of testcase tc_decrypted_signed_message
}
// End of testcase tc_decrypted_signed_message_1
/**
* @desc Test ECIES encryption/decryption using NIST-P256
* @see IEEE Std 1609.2-2017 Clause 5.3.5 Public key encryption algorithms: ECIES
* @see https://www.nominet.uk/researchblog/how-elliptic-curve-cryptography-encryption-works/
* @see http://digital.csic.es/bitstream/10261/32671/1/V2-I2-P7-13.pdf
* @return The encrypted message
*/
testcase
tc_decrypted_signed_message_2
()
runs
on
TCType
system
TCType
{
var
template
(
value
)
EtsiTs103097Data
v_signed_data
;
var
EtsiTs103097Data
v_signed_data_dec
;
var
octetstring
v_raw_payload_to_be_signed
:=
'
CAFFEDECA0000001
'
O
;
var
HashedId8
v_digest
:=
'0000000000000000'O
;
var
template
(
value
)
EtsiTs103097Data
v_encrypted_data
;
var
EtsiTs103097Data
v_decrypted_data
;
var
bitstring
v_encMsg
;
var
Oct32
v_obuPrivateKey
,
v_obuPublicKeyX
,
v_obuPublicKeyY
;
var
Oct32
v_tsPrivateKey
,
v_tsPublicKeyX
,
v_tsPublicKeyY
;
var
Oct32
v_publicEphemeralKeyX
;
var
Oct32
v_publicEphemeralKeyY
;
var
Oct16
v_authentication_vector
;
var
Oct16
v_encrypted_sym_key
;
var
Opaque
v_cypheredPayload
;
var
Oct12
v_nonce
;
var
HashedId8
v_recipientId
;
// Simulate OCU & Test System certificate, OBU and Test system exchange their public key
f_generate_key_pair_nistp256
(
v_obuPrivateKey
,
v_obuPublicKeyX
,
v_obuPublicKeyY
);
f_generate_key_pair_nistp256
(
v_tsPrivateKey
,
v_tsPublicKeyX
,
v_tsPublicKeyY
);
// The OBU is the sender, the Test System is te receiver
v_signed_data
:=
m_etsiTs103097Data_signed
(
m_signedData
(
sha256
,
m_toBeSignedData
(
m_signedDataPayload
(
m_etsiTs103097Data_unsecured
(
v_raw_payload_to_be_signed
)
),
m_headerInfo_gn
(
-
,
12345
)
),
{
digest
:=
v_digest
},
m_signature_ecdsaNistP256
(
m_ecdsaP256Signature
(
m_eccP256CurvePoint_x_only
(
'
08
B2030104020A0D010C0105C0F80BB1460239348D17405C1A845151D4061200
'
O
),
'
2617
CF4E6B25097F03F502AD0C6F2F125974700D31A60FD1EF12040E4D8231AB
'
O
)
)
)
);
log
(
"v_signed_data = "
,
v_signed_data
);
v_encMsg
:=
encvalue
(
valueof
(
v_signed_data
));
v_cypheredPayload
:=
f_encryptWithEciesNistp256WithSha256
(
bit2oct
(
v_encMsg
),
v_tsPublicKeyX
,
v_tsPublicKeyY
,
v_publicEphemeralKeyX
,
v_publicEphemeralKeyY
,
v_encrypted_sym_key
,
v_authentication_vector
,
v_nonce
);
v_recipientId
:=
f_HashedId8FromSha256
(
f_hashWithSha256
(
bit2oct
(
v_encMsg
)));
// IEEE Std 1609.2a-2017 Clause 6.3.34 PKRecipientInfo
v_encrypted_data
:=
m_etsiTs103097Data_encrypted
(
m_encryptedData
(
{
m_recipientInfo_signedDataRecipInfo
(
m_pKRecipientInfo
(
v_recipientId
,
m_encryptedDataEncryptionKey_eciesNistP256
(
m_evciesP256EncryptedKey
(
m_eccP256CurvePoint_uncompressed
(
v_publicEphemeralKeyX
,
v_publicEphemeralKeyY
),
v_encrypted_sym_key
,
v_authentication_vector
))))
},
m_SymmetricCiphertext_aes128ccm
(
m_aesCcmCiphertext
(
v_nonce
,
v_cypheredPayload
)
)
)
);