diff --git a/.gitignore b/.gitignore
old mode 100755
new mode 100644
index a8e8edc790d5aab40893bbe3ddb0deaa2fd72be9..b026989140fa8b81cf7306a237eaa24be814ed3e
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,6 @@
-build
-bin
-config.mk
+build
+bin
+config.mk
+data/certificates/*
+!data/certificates/profiles
+!data/certificates/Makefile
diff --git a/Makefile b/Makefile
index a771918ca973fcac2531b7e1440b845fe16fb951..97cfa1118df543922a24882841db224e75678545 100644
--- a/Makefile
+++ b/Makefile
@@ -1,150 +1,150 @@
--include config.mk
-
-ifeq (,$(ATS))
- $(error ATS shall be defined)
-endif
-
-ifeq (,$(TOPDIR))
- TOPDIR := .
-endif
-
-ifeq (,$(TTCN3_DIR))
- $(error TTCN3_DIR shall be defined in config.mk)
-endif
-
-export ASN1C_PATH
-
-first: all
-
-define IncludeModule
-undefine sources
-undefine modules
-undefine includes
-include $(1)/module.mk
-$$(foreach S, $$(sources), $$(eval all_sources += $$(if $$(filter /%, $$(S)), $$(TOPDIR)/$$(S), $(1)/$$(S))))
-$$(foreach I, $$(includes), $$(eval all_includes += $$(if $$(filter /%, $$(I)), $$(TOPDIR)/$$(I), $(1)/$$(I))))
-$$(foreach M, $$(modules), $$(eval $$(call IncludeModule, $$(if $$(filter /%, $$(M)), $$(TOPDIR)/$$(M), $(1)/$$(M)))))
-endef
-
-all_includes := $(TTCN3_DIR)/include $(TTCN3_DIR)/src $(TOPDIR)/ccsrc/Framework /usr/include/jsoncpp
-defines += TITAN_RUNTIME_2 _NO_SOFTLINKS_ $(ATS)
-libs += $(TTCN3_DIR)/lib/libttcn3-rt2-parallel.a -lstdc++fs
-
-ifeq (Windows_NT,$(OS))
-# Silence linker warnings.
-LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc
-defines += WIN32
-libs += $(patsubst %, -L%/lib, $(OPENSSL_DIR))
-all_includes += $(addsuffix /include, $(OPENSSL_DIR))
-libs += $(WPCAP_DLL_PATH)
-else
-defines += LINUX
-libs += -lpcap -lrt -lpthread
-endif
-
-libs += -lssl -lcrypto -lxml2 -ljsoncpp
-
-$(eval $(call IncludeModule, $(TOPDIR)/ttcn/$(ATS)))
-
-outdir := $(TOPDIR)/build/$(ATS)
-bindir := $(TOPDIR)/bin
-
-sources := $(sort $(all_sources))
-includes := $(outdir) $(outdir)/.. $(outdir)/../asn1 $(all_includes) $(NPCAP_INCLUDE)
-
-ifeq (Windows_NT,$(OS))
- EXE=.exe
-endif
-
-ttcn_sources := $(filter %.ttcn , $(sources))
-ttcn3_sources := $(filter %.ttcn3, $(sources))
-asn_sources := $(filter %.asn, $(sources))
-asn1_sources := $(filter %.asn1, $(sources))
-
-tt_sources := $(ttcn_sources) $(ttcn3_sources) $(asn_sources) $(asn1_sources)
-cc_sources := $(filter %.cc, $(sources))
-
-gen_ttcn_sources := $(addprefix $(outdir)/, $(notdir $(patsubst %.ttcn, %.cc, $(ttcn_sources))))
-gen_ttcn_headers := $(addprefix $(outdir)/, $(notdir $(patsubst %.ttcn, %.hh, $(ttcn_sources))))
-gen_ttcn3_sources := $(addprefix $(outdir)/, $(notdir $(patsubst %.ttcn3, %.cc, $(ttcn3_sources))))
-gen_ttcn3_headers := $(addprefix $(outdir)/, $(notdir $(patsubst %.ttcn3, %.hh, $(ttcn3_sources))))
-gen_asn_sources := $(addprefix $(outdir)/, $(notdir $(patsubst %.asn, %.cc, $(asn_sources))))
-gen_asn_headers := $(addprefix $(outdir)/, $(notdir $(patsubst %.asn, %.hh, $(asn_sources))))
-gen_asn1_sources := $(addprefix $(outdir)/, $(notdir $(patsubst %.asn1, %.cc, $(asn1_sources))))
-gen_asn1_headers := $(addprefix $(outdir)/, $(notdir $(patsubst %.asn1, %.hh, $(asn1_sources))))
-
-gen_sources := $(gen_ttcn_sources) $(gen_ttcn3_sources) $(gen_asn_sources) $(gen_asn1_sources)
-gen_headers := $(gen_ttcn_headers) $(gen_ttcn3_headers) $(gen_asn_headers) $(gen_asn1_headers)
-
-gen_objects := $(patsubst %.cc, %.o, $(gen_sources))
-cc_objects := $(patsubst %.cc, $(outdir)/%.o, $(cc_sources))
-
-.PHONY: all FORCE echo
-
-all: $(bindir) $(outdir) $(bindir)/$(ATS)$(EXE)
-
-echo_sources:
- @echo -e "$(addsuffix \n,$(all_sources))"
-
-echo: echo_sources
- @echo -e "sources:\n $(addsuffix \n, $(sources))"
- @echo -e "gen_sources:\n $(addsuffix \n, $(gen_sources))"
- @echo -e "gen_objects:\n $(addsuffix \n, $(gen_objects))"
- @echo -e "cc_objects:\n $(addsuffix \n, $(cc_objects))"
- @echo -e "includes:\n $(addsuffix \n, $(includes))"
- @echo -e "defines: $(addsuffix \n, $(defines))"
-
-clean:
- rm -f $(outdir)/$(ATS)$(EXE) $(gen_objects) $(gen_sources) $(gen_headers) $(cc_objects) $(outdir)/.generate $(outdir)/../libItsAsn.so
-# rm -f $(outdir)/asn1/*.so $(outdir)/asn1/*.o $(outdir)/asn1/*.c $(outdir)/asn1/*.h $(outdir)/asn1/Makefile.am.libasncodec
-
-regen: force_regen $(outdir)/.generate
-force_regen:
- rm -f $(outdir)/.generate
-
-t3q: all
- @echo -e "Code checking in progress..."
- @java -Xmx3g -Xss512m -jar $(T3Q_PATH)/t3q.jar --config $(T3Q_PATH)/$(T3Q_CONFIG) $(tt_sources) > $(outdir)/t3q.out 2>&1 ; cd -
- @echo -e "Code checking in done..."
- @echo -e "Output file is located here: $(outdir)/t3q.out"
-
-t3d: all
- @echo -e "TTCN-3 doc generation in progress..."
- @java -Xmx3g -Xss512m -jar $(T3D_PATH)/t3d.jar --config $(T3D_PATH)/$(T3D_CONFIG) $(tt_sources) > $(outdir)/t3d.out 2>&1 ; cd -
- @echo -e "TTCN-3 doc generation done..."
- @echo -e "Output file is located here: $(outdir)/t3d.out"
-
-$(outdir) $(bindir):
- mkdir -p $@
-
-$(bindir)/$(ATS)$(EXE): $(outdir)/../asn1/libItsAsn.a $(gen_objects) $(cc_objects)
- g++ -g -O0 -o $@ $(LDFLAGS) $(gen_objects) $(cc_objects) $(outdir)/../asn1/libItsAsn.a $(libs)
-
-$(gen_objects) :%.o :%.cc
- g++ -g -O0 -c $(addprefix -D, $(defines)) $(addprefix -I, $(includes)) -o $@ $<
-
-$(cc_objects) : $(outdir)/%.o : %.cc
- mkdir -p $(dir $@)
- g++ -g -O0 -c $(addprefix -D, $(defines)) $(addprefix -I, $(includes)) -o $@ $<
-
-#$(gen_sources):
-# $(TTCN3_DIR)/bin/compiler -n -e -L -R -U none -o $(outdir) $(tt_sources)
-
-$(gen_sources): $(outdir)/.generate
-
-$(outdir)/.generate: Makefile $(tt_sources)
- $(TTCN3_DIR)/bin/compiler -w -d -e -f -g -l -L -R -U none -x -X -o $(outdir) $(tt_sources)
- touch $@
-
-$(bindir)/libItsAsn.so: $(outdir)/asn1/libItsAsn.so
- cp -f $< $@
-
-$(outdir)/../asn1/libItsAsn.a: FORCE
- mkdir -p $(outdir)/../asn1
- $(MAKE) -C $(outdir)/../asn1 -f ../../asn1/Makefile
-
-$(foreach S, $(ttcn_sources), $(eval $(outdir)/$(notdir $(patsubst %.ttcn, %.cc, $(S))): $(S)))
-$(foreach S, $(ttcn3_sources), $(eval $(outdir)/$(notdir $(patsubst %.ttcn3, %.cc, $(S))): $(S)))
-$(foreach S, $(asn_sources), $(eval $(outdir)/$(notdir $(patsubst %.asn, %.cc, $(S))): $(S)))
-$(foreach S, $(asn1_sources), $(eval $(outdir)/$(notdir $(patsubst %.asn1, %.cc, $(S))): $(S)))
-
+-include config.mk
+
+ifeq (,$(ATS))
+ $(error ATS shall be defined)
+endif
+
+ifeq (,$(TOPDIR))
+ TOPDIR := .
+endif
+
+ifeq (,$(TTCN3_DIR))
+ $(error TTCN3_DIR shall be defined in config.mk)
+endif
+
+export ASN1C_PATH
+
+first: all
+
+define IncludeModule
+undefine sources
+undefine modules
+undefine includes
+include $(1)/module.mk
+$$(foreach S, $$(sources), $$(eval all_sources += $$(if $$(filter /%, $$(S)), $$(TOPDIR)/$$(S), $(1)/$$(S))))
+$$(foreach I, $$(includes), $$(eval all_includes += $$(if $$(filter /%, $$(I)), $$(TOPDIR)/$$(I), $(1)/$$(I))))
+$$(foreach M, $$(modules), $$(eval $$(call IncludeModule, $$(if $$(filter /%, $$(M)), $$(TOPDIR)/$$(M), $(1)/$$(M)))))
+endef
+
+all_includes := $(TTCN3_DIR)/include $(TTCN3_DIR)/src $(TOPDIR)/ccsrc/Framework /usr/include/jsoncpp
+defines += TITAN_RUNTIME_2 _NO_SOFTLINKS_ $(ATS)
+libs += $(TTCN3_DIR)/lib/libttcn3-rt2-parallel.a -lstdc++fs
+
+ifeq (Windows_NT,$(OS))
+# Silence linker warnings.
+LDFLAGS += -Wl,--enable-auto-import,--enable-runtime-pseudo-reloc
+defines += WIN32
+libs += $(patsubst %, -L%/lib, $(OPENSSL_DIR))
+all_includes += $(addsuffix /include, $(OPENSSL_DIR))
+libs += $(WPCAP_DLL_PATH)
+else
+defines += LINUX
+libs += -lpcap -lrt -lpthread
+endif
+
+libs += -lssl -lcrypto -lxml2 -ljsoncpp
+
+$(eval $(call IncludeModule, $(TOPDIR)/ttcn/$(ATS)))
+
+outdir := $(TOPDIR)/build/$(ATS)
+bindir := $(TOPDIR)/bin
+
+sources := $(sort $(all_sources))
+includes := $(outdir) $(outdir)/.. $(outdir)/../asn1 $(all_includes) $(NPCAP_INCLUDE)
+
+ifeq (Windows_NT,$(OS))
+ EXE=.exe
+endif
+
+ttcn_sources := $(filter %.ttcn , $(sources))
+ttcn3_sources := $(filter %.ttcn3, $(sources))
+asn_sources := $(filter %.asn, $(sources))
+asn1_sources := $(filter %.asn1, $(sources))
+
+tt_sources := $(ttcn_sources) $(ttcn3_sources) $(asn_sources) $(asn1_sources)
+cc_sources := $(filter %.cc, $(sources))
+
+gen_ttcn_sources := $(addprefix $(outdir)/, $(notdir $(patsubst %.ttcn, %.cc, $(ttcn_sources))))
+gen_ttcn_headers := $(addprefix $(outdir)/, $(notdir $(patsubst %.ttcn, %.hh, $(ttcn_sources))))
+gen_ttcn3_sources := $(addprefix $(outdir)/, $(notdir $(patsubst %.ttcn3, %.cc, $(ttcn3_sources))))
+gen_ttcn3_headers := $(addprefix $(outdir)/, $(notdir $(patsubst %.ttcn3, %.hh, $(ttcn3_sources))))
+gen_asn_sources := $(addprefix $(outdir)/, $(notdir $(patsubst %.asn, %.cc, $(asn_sources))))
+gen_asn_headers := $(addprefix $(outdir)/, $(notdir $(patsubst %.asn, %.hh, $(asn_sources))))
+gen_asn1_sources := $(addprefix $(outdir)/, $(notdir $(patsubst %.asn1, %.cc, $(asn1_sources))))
+gen_asn1_headers := $(addprefix $(outdir)/, $(notdir $(patsubst %.asn1, %.hh, $(asn1_sources))))
+
+gen_sources := $(gen_ttcn_sources) $(gen_ttcn3_sources) $(gen_asn_sources) $(gen_asn1_sources)
+gen_headers := $(gen_ttcn_headers) $(gen_ttcn3_headers) $(gen_asn_headers) $(gen_asn1_headers)
+
+gen_objects := $(patsubst %.cc, %.o, $(gen_sources))
+cc_objects := $(patsubst %.cc, $(outdir)/%.o, $(cc_sources))
+
+.PHONY: all FORCE echo
+
+all: $(bindir) $(outdir) $(bindir)/$(ATS)$(EXE)
+
+echo_sources:
+ @echo -e "$(addsuffix \n,$(all_sources))"
+
+echo: echo_sources
+ @echo -e "sources:\n $(addsuffix \n, $(sources))"
+ @echo -e "gen_sources:\n $(addsuffix \n, $(gen_sources))"
+ @echo -e "gen_objects:\n $(addsuffix \n, $(gen_objects))"
+ @echo -e "cc_objects:\n $(addsuffix \n, $(cc_objects))"
+ @echo -e "includes:\n $(addsuffix \n, $(includes))"
+ @echo -e "defines: $(addsuffix \n, $(defines))"
+
+clean:
+ rm -f $(outdir)/$(ATS)$(EXE) $(gen_objects) $(gen_sources) $(gen_headers) $(cc_objects) $(outdir)/.generate $(outdir)/../libItsAsn.so
+# rm -f $(outdir)/asn1/*.so $(outdir)/asn1/*.o $(outdir)/asn1/*.c $(outdir)/asn1/*.h $(outdir)/asn1/Makefile.am.libasncodec
+
+regen: force_regen $(outdir)/.generate
+force_regen:
+ rm -f $(outdir)/.generate
+
+t3q: all
+ @echo -e "Code checking in progress..."
+ @java -Xmx3g -Xss512m -jar $(T3Q_PATH)/t3q.jar --config $(T3Q_PATH)/$(T3Q_CONFIG) $(tt_sources) > $(outdir)/t3q.out 2>&1 ; cd -
+ @echo -e "Code checking in done..."
+ @echo -e "Output file is located here: $(outdir)/t3q.out"
+
+t3d: all
+ @echo -e "TTCN-3 doc generation in progress..."
+ @java -Xmx3g -Xss512m -jar $(T3D_PATH)/t3d.jar --config $(T3D_PATH)/$(T3D_CONFIG) $(tt_sources) > $(outdir)/t3d.out 2>&1 ; cd -
+ @echo -e "TTCN-3 doc generation done..."
+ @echo -e "Output file is located here: $(outdir)/t3d.out"
+
+$(outdir) $(bindir):
+ mkdir -p $@
+
+$(bindir)/$(ATS)$(EXE): $(outdir)/../asn1/libItsAsn.a $(gen_objects) $(cc_objects)
+ g++ -g -O0 -o $@ $(LDFLAGS) $(gen_objects) $(cc_objects) $(outdir)/../asn1/libItsAsn.a $(libs)
+
+$(gen_objects) :%.o :%.cc
+ g++ -g -O0 -c $(addprefix -D, $(defines)) $(addprefix -I, $(includes)) -o $@ $<
+
+$(cc_objects) : $(outdir)/%.o : %.cc
+ mkdir -p $(dir $@)
+ g++ -g -O0 -c $(addprefix -D, $(defines)) $(addprefix -I, $(includes)) -o $@ $<
+
+#$(gen_sources):
+# $(TTCN3_DIR)/bin/compiler -n -e -L -R -U none -o $(outdir) $(tt_sources)
+
+$(gen_sources): $(outdir)/.generate
+
+$(outdir)/.generate: Makefile $(tt_sources)
+ $(TTCN3_DIR)/bin/compiler -w -d -e -f -g -l -L -R -U none -x -X -o $(outdir) $(tt_sources)
+ touch $@
+
+$(bindir)/libItsAsn.so: $(outdir)/asn1/libItsAsn.so
+ cp -f $< $@
+
+$(outdir)/../asn1/libItsAsn.a: FORCE
+ mkdir -p $(outdir)/../asn1
+ $(MAKE) -C $(outdir)/../asn1 -f ../../asn1/Makefile
+
+$(foreach S, $(ttcn_sources), $(eval $(outdir)/$(notdir $(patsubst %.ttcn, %.cc, $(S))): $(S)))
+$(foreach S, $(ttcn3_sources), $(eval $(outdir)/$(notdir $(patsubst %.ttcn3, %.cc, $(S))): $(S)))
+$(foreach S, $(asn_sources), $(eval $(outdir)/$(notdir $(patsubst %.asn, %.cc, $(S))): $(S)))
+$(foreach S, $(asn1_sources), $(eval $(outdir)/$(notdir $(patsubst %.asn1, %.cc, $(S))): $(S)))
+
diff --git a/ccsrc/Protocols/Security/security_services.cc b/ccsrc/Protocols/Security/security_services.cc
index 876e2f8c955ca4251165244d9820f28b07dcbec4..59aae19d625cad1df14a91d8ac6abb7899f71212 100644
--- a/ccsrc/Protocols/Security/security_services.cc
+++ b/ccsrc/Protocols/Security/security_services.cc
@@ -189,19 +189,19 @@ int security_services::process_ieee_1609_dot2_signed_data(const Ieee1609Dot2::Si
// Check p2pcdLearningRequest keys if present
if (header_info.p2pcdLearningRequest().is_present()) {
- loggers::get_instance().error("security_services::process_ieee_1609_dot2_signed_data: p2pcdLearningRequest not supported yet");
+ loggers::get_instance().warning("security_services::process_ieee_1609_dot2_signed_data: p2pcdLearningRequest not supported yet");
// TODO Not supported by C-ITS Protocol
}
// Check missingCrlIdentifier keys if present
if (header_info.missingCrlIdentifier().is_present()) {
- loggers::get_instance().error("security_services::process_ieee_1609_dot2_signed_data: missingCrlIdentifier not supported yet");
+ loggers::get_instance().warning("security_services::process_ieee_1609_dot2_signed_data: missingCrlIdentifier not supported yet");
// TODO Not supported by C-ITS Protocol
}
// Check encryption keys if present
if (header_info.encryptionKey().is_present()) {
- loggers::get_instance().error("security_services::process_ieee_1609_dot2_signed_data: encryptionKey not supported yet");
+ loggers::get_instance().warning("security_services::process_ieee_1609_dot2_signed_data: encryptionKey not supported yet");
// TODO Not supported by C-ITS Protocol
}
@@ -219,7 +219,7 @@ int security_services::process_ieee_1609_dot2_signed_data(const Ieee1609Dot2::Si
// Check requested certificate
if (header_info.requestedCertificate().is_present()) {
- loggers::get_instance().error("security_services::process_ieee_1609_dot2_signed_data: requestedCertificate not supported yet");
+ // loggers::get_instance().error("security_services::process_ieee_1609_dot2_signed_data: requestedCertificate not supported yet");
// TODO Not supported by C-ITS Protocol
}
@@ -1268,7 +1268,7 @@ int security_services::extract_verification_keys(const Ieee1609Dot2::Certificate
p_public_key_x = p_cert.toBeSigned().verifyKeyIndicator().verificationKey().ecdsaNistP256().uncompressedP256().x();
p_public_key_y = p_cert.toBeSigned().verifyKeyIndicator().verificationKey().ecdsaNistP256().uncompressedP256().y();
} else {
- loggers::get_instance().error("security_services::extract_verification_keys: Unsupported VerificationKey");
+ loggers::get_instance().error("security_services::extract_verification_keys: Unsupported ecdsaNistP256 VerificationKey point type %d", p_cert.toBeSigned().verifyKeyIndicator().verificationKey().ecdsaNistP256().get_selection());
return -1;
}
} else if (p_cert.toBeSigned().verifyKeyIndicator().verificationKey().ischosen(Ieee1609Dot2BaseTypes::PublicVerificationKey::ALT_ecdsaBrainpoolP256r1)) {
@@ -1290,7 +1290,13 @@ int security_services::extract_verification_keys(const Ieee1609Dot2::Certificate
Ieee1609Dot2BaseTypes::EccP256CurvePoint::ALT_uncompressedP256)) {
p_public_key_x = p_cert.toBeSigned().verifyKeyIndicator().verificationKey().ecdsaBrainpoolP256r1().uncompressedP256().x();
p_public_key_y = p_cert.toBeSigned().verifyKeyIndicator().verificationKey().ecdsaBrainpoolP256r1().uncompressedP256().y();
- } else if (p_cert.toBeSigned().verifyKeyIndicator().verificationKey().ischosen(Ieee1609Dot2BaseTypes::PublicVerificationKey::ALT_ecdsaBrainpoolP384r1)) {
+ } else {
+ loggers::get_instance().error("security_services::extract_verification_keys: Unsupported ecdsaBrainpoolP256r1 VerificationKey point type %d", p_cert.toBeSigned().verifyKeyIndicator().verificationKey().ecdsaBrainpoolP256r1().get_selection());
+ return -1;
+ }
+ } else if (p_cert.toBeSigned().verifyKeyIndicator().verificationKey().ischosen(Ieee1609Dot2BaseTypes::PublicVerificationKey::ALT_ecdsaBrainpoolP384r1)) {
+ if (p_cert.toBeSigned().verifyKeyIndicator().verificationKey().ecdsaBrainpoolP384r1().ischosen(
+ Ieee1609Dot2BaseTypes::EccP384CurvePoint::ALT_compressed__y__0)) {
p_public_comp_key = p_cert.toBeSigned().verifyKeyIndicator().verificationKey().ecdsaBrainpoolP384r1().compressed__y__0();
security_ecc ecc(ec_elliptic_curves::brainpool_p_384_r1, p_public_comp_key, ecc_compressed_mode::compressed_y_0);
p_public_key_x = ecc.public_key_x();
@@ -1308,11 +1314,34 @@ int security_services::extract_verification_keys(const Ieee1609Dot2::Certificate
p_public_key_x = p_cert.toBeSigned().verifyKeyIndicator().verificationKey().ecdsaBrainpoolP384r1().uncompressedP384().x();
p_public_key_y = p_cert.toBeSigned().verifyKeyIndicator().verificationKey().ecdsaBrainpoolP384r1().uncompressedP384().y();
} else {
- loggers::get_instance().error("security_services::extract_verification_keys: Unsupported VerificationKey");
+ loggers::get_instance().error("security_services::extract_verification_keys: Unsupported ecdsaBrainpoolP384r1 VerificationKey point type %d", p_cert.toBeSigned().verifyKeyIndicator().verificationKey().ecdsaBrainpoolP384r1().get_selection());
+ return -1;
+ }
+ } else if (p_cert.toBeSigned().verifyKeyIndicator().verificationKey().ischosen(Ieee1609Dot2BaseTypes::PublicVerificationKey::ALT_ecdsaNistP384)) {
+ if (p_cert.toBeSigned().verifyKeyIndicator().verificationKey().ecdsaNistP384().ischosen(
+ Ieee1609Dot2BaseTypes::EccP384CurvePoint::ALT_compressed__y__0)) {
+ p_public_comp_key = p_cert.toBeSigned().verifyKeyIndicator().verificationKey().ecdsaNistP384().compressed__y__0();
+ security_ecc ecc(ec_elliptic_curves::nist_p_384, p_public_comp_key, ecc_compressed_mode::compressed_y_0);
+ p_public_key_x = ecc.public_key_x();
+ p_public_key_y = ecc.public_key_y();
+ p_public_comp_key_mode = INTEGER(0);
+ } else if (p_cert.toBeSigned().verifyKeyIndicator().verificationKey().ecdsaNistP384().ischosen(
+ Ieee1609Dot2BaseTypes::EccP384CurvePoint::ALT_compressed__y__1)) {
+ p_public_comp_key = p_cert.toBeSigned().verifyKeyIndicator().verificationKey().ecdsaNistP384().compressed__y__1();
+ security_ecc ecc(ec_elliptic_curves::nist_p_384, p_public_comp_key, ecc_compressed_mode::compressed_y_1);
+ p_public_key_x = ecc.public_key_x();
+ p_public_key_y = ecc.public_key_y();
+ p_public_comp_key_mode = INTEGER(1);
+ } else if (p_cert.toBeSigned().verifyKeyIndicator().verificationKey().ecdsaNistP384().ischosen(
+ Ieee1609Dot2BaseTypes::EccP384CurvePoint::ALT_uncompressedP384)) {
+ p_public_key_x = p_cert.toBeSigned().verifyKeyIndicator().verificationKey().ecdsaNistP384().uncompressedP384().x();
+ p_public_key_y = p_cert.toBeSigned().verifyKeyIndicator().verificationKey().ecdsaNistP384().uncompressedP384().y();
+ } else {
+ loggers::get_instance().error("security_services::extract_verification_keys: Unsupported ecdsaNistP384 VerificationKey point type %d", p_cert.toBeSigned().verifyKeyIndicator().verificationKey().ecdsaNistP384().get_selection());
return -1;
}
} else {
- loggers::get_instance().error("security_services::extract_verification_keys: Unsupported VerificationKey");
+ loggers::get_instance().error("security_services::extract_verification_keys: Unsupported VerificationKey curve %d", p_cert.toBeSigned().verifyKeyIndicator().verificationKey().get_selection());
return -1;
}
diff --git a/config.mk b/config.mk
index a53d762fb085e8a68fada33fbc9c8ddaedc342e5..d6cfe1577d033fc7c92940773d2bd1dca9493124 100644
--- a/config.mk
+++ b/config.mk
@@ -1,5 +1,5 @@
-#TTCN3_DIR := /cygdrive/c/Tools/Titan
-ASN1C_PATH := /home/yann/frameworks/asn1c.denis
+#TTCN3_DIR := /cygdrive/c/Tools/Titan
+#ASN1C_PATH := /home/yann/frameworks/asn1c.denis
#WPCAP_DLL_PATH := /cygdrive/c/windows/system32/npcap/wpcap.dll
#NPCAP_INCLUDE := /cygdrive/c/PROGRA~1/Npcap/sdk/include
#T3Q_PATH=./tools/t3q-v2.0.0b30
diff --git a/data/certificates/Makefile b/data/certificates/Makefile
index 48581942a8fcbe24ca56302c175a43c6ca9e2aaa..c5745c0972d0d951e87553424ce680673353e3a3 100644
--- a/data/certificates/Makefile
+++ b/data/certificates/Makefile
@@ -1,48 +1,88 @@
-ifeq ($(ARCH),)
- ARCH = $(shell gcc -dumpmachine)
-else
- ifeq ($(OS),Windows_NT)
- ARCH=msvc
- endif
-endif
-
-outdir=certificates
-in=profiles
-xerdir=xer
-depdir=temp
-keydir=certificates
-
-ifeq ($(ARCH),msvc)
- asn1certgen= ../../../itscertgen/build/msvc/x64/Debug/certgen.exe
-else
- asn1certgen=../../../itscertgen/build/$(ARCH)-d/certgen
-endif
-
-xsl_cvt=../../../itscertgen/certgen/asn1certgen.xslt
-xsl_dep=../../../itscertgen/certgen/prof2dep.xsl
-
-profiles=$(wildcard $(in)/*.xml)
-certificates_oer=$(patsubst $(in)/%.xml, $(outdir)/%.oer, $(profiles))
-certificates_xer=$(patsubst $(in)/%.xml, $(xerdir)/%.xer, $(profiles))
-deps=$(patsubst $(in)/%.xml, $(depdir)/%.dep, $(profiles))
-
-all: $(sort $(outdir) $(xerdir) $(depdir)) $(certificates_oer)
-
-$(sort $(outdir) $(xerdir) $(depdir)):
- mkdir -p $@
-clean:
- rm -f $(certificates_oer) $(certificates_xer)
-
-$(certificates_xer): $(xerdir)/%.xer : $(in)/%.xml
- xsltproc $(xsl_cvt) $< | xmllint --format -o $@ -
-
-$(certificates_oer): $(outdir)/%.oer : $(xerdir)/%.xer
- $(asn1certgen) -o $(outdir) -K $(keydir) $<
-
-$(deps): $(depdir)/%.dep : $(in)/%.xml
- -mkdir -p $(depdir)
- xsltproc --param profile "'$*'" -o $@ $(xsl_dep) $<
-
-$(certificates_xer) : $(xsl_cvt)
-
-include $(deps)
+ifeq ($(ARCH),)
+ ARCH = $(shell gcc -dumpmachine)
+else
+ ifeq ($(OS),Windows_NT)
+ ARCH=msvc
+ endif
+endif
+
+ifeq (,$(CERTGEN))
+ $(error CERTGEN variable shall point to the certgen project)
+endif
+
+outdir=certificates
+in=profiles
+xerdir=xer
+depdir=temp
+keydir=certificates
+iutdir=iut
+
+ifeq ($(ARCH),msvc)
+ asn1certgen= $(CERTGEN)/build/msvc/x64/Debug/certgen.exe
+else
+ asn1certgen=$(CERTGEN)/build/$(ARCH)-d/certgen
+endif
+
+xsl_cvt=$(CERTGEN)/itscertgen/certgen/asn1certgen.xslt
+xsl_dep=$(CERTGEN)/itscertgen/certgen/prof2dep.xsl
+
+profiles=$(wildcard $(in)/*.xml)
+certificates_oer=$(patsubst $(in)/%.xml, $(outdir)/%.oer, $(profiles))
+certificates_xer=$(patsubst $(in)/%.xml, $(xerdir)/%.xer, $(profiles))
+deps=$(patsubst $(in)/%.xml, $(depdir)/%.dep, $(profiles))
+
+all: $(sort $(outdir) $(xerdir) $(depdir)) $(certificates_oer)
+
+$(sort $(outdir) $(xerdir) $(depdir) $(iutdir)):
+ mkdir -p $@
+clean:
+ rm -f $(certificates_oer) $(certificates_xer)
+
+$(certificates_xer): $(xerdir)/%.xer : $(in)/%.xml
+ xsltproc $(xsl_cvt) $< | xmllint --format -o $@ -
+
+$(certificates_oer): $(outdir)/%.oer : $(xerdir)/%.xer
+ $(asn1certgen) -o $(outdir) -K $(keydir) $<
+
+$(deps): $(depdir)/%.dep : $(in)/%.xml
+ -mkdir -p $(depdir)
+ xsltproc --param profile "'$*'" -o $@ $(xsl_dep) $<
+
+$(certificates_xer) : $(xsl_cvt)
+
+certs_iut_at = $(filter $(outdir)/CERT_IUT_%_AT.oer, $(certificates_oer))
+vkeys_iut_at = $(patsubst %.oer, %.vkey, $(certs_iut_at))
+ekeys_iut_at = $(patsubst %.oer, %.ekey, $(certs_iut_at))
+
+certs_iut := $(filter $(outdir)/CERT_IUT_%_RCA.oer, $(certificates_oer))
+certs_iut += $(filter $(outdir)/CERT_IUT_%_AA.oer, $(certificates_oer))
+certs_iut += $(certs_iut_at)
+
+iut_files = $(patsubst $(outdir)/%, $(iutdir)/%, $(certs_iut) $(vkeys_iut_at) $(ekeys_iut_at))
+
+install: $(iutdir) $(iut_files)
+
+$(iut_files): $(iutdir)/%: $(outdir)/%
+ -cp -f $< $@
+
+$(vkeys_iut_at) $(ekeys_iut_at):
+
+IUT_TC23 = CERT_IUT_C1_AT.oer CERT_IUT_C1_AT.vkey CERT_IUT_C1_AT.ekey CERT_IUT_CC_AA.oer CERT_IUT_C_RCA.oer CERT_TS_A_AT.oer CERT_IUT_A_AA.oer
+IUT_TC24 = CERT_IUT_C2_AT.oer CERT_IUT_C2_AT.vkey CERT_IUT_C2_AT.ekey CERT_IUT_C2_AA.oer CERT_IUT_C_RCA.oer CERT_IUT_A_RCA.oer CERT_TS_A_AT.oer CERT_IUT_A_AA.oer
+IUT_TC25 = CERT_IUT_A1_AT.oer CERT_IUT_A1_AT.vkey CERT_IUT_A1_AT.ekey CERT_IUT_A_AA.oer CERT_IUT_A_RCA.oer CERT_TS_A_AT.oer
+IUT_TC26 = CERT_IUT_A2_AT.oer CERT_IUT_A2_AT.vkey CERT_IUT_A2_AT.ekey CERT_IUT_A_AA.oer CERT_IUT_A_RCA.oer CERT_TS_A_AT.oer
+IUT_TC27 = CERT_IUT_A3_AT.oer CERT_IUT_A3_AT.vkey CERT_IUT_A3_AT.ekey CERT_IUT_A_AA.oer CERT_IUT_A_RCA.oer CERT_TS_A_AT.oer
+IUT_TC28 = CERT_IUT_A_AT_A8.oer CERT_IUT_A_AT_A8.vkey CERT_IUT_A_AT_A8.ekey CERT_IUT_A_AA_A8.oer CERT_IUT_A_RCA.oer CERT_TS_A_AT.oer CERT_IUT_A_AA.oer
+
+IUT_TCS = TC23 TC24 TC25 TC26 TC27 TC28
+
+define InstallTC
+$(addprefix $(TC)/,$(IUT_$(TC))): $(TC)/% : $$(outdir)/%
+ mkdir -p $(TC)
+ -cp -f $$< $$@
+endef
+$(foreach TC, $(IUT_TCS), $(eval $(InstallTC)))
+
+install_tc: $(foreach TC, $(IUT_TCS), $(addprefix $(TC)/, $(IUT_$(TC))))
+
+include $(deps)
diff --git a/data/certificates/profiles/CERT_IUT_A_RCA.xml b/data/certificates/profiles/CERT_IUT_A_RCA.xml
index bbd4d0533d995d392ba1a3e8dae5d644412ac95d..b8865e7e8e621259569e910a2b1b2d525102de80 100644
--- a/data/certificates/profiles/CERT_IUT_A_RCA.xml
+++ b/data/certificates/profiles/CERT_IUT_A_RCA.xml
@@ -30,7 +30,7 @@
-
+
01 FE/FF 01
diff --git a/data/certificates/profiles/CERT_IUT_C1_AT.xml b/data/certificates/profiles/CERT_IUT_C1_AT.xml
index b568a19193b54fef3b24d1bc7886c6dbf7bd6623..05061fa5c270e94e23c73190a06d7646413ac59d 100644
--- a/data/certificates/profiles/CERT_IUT_C1_AT.xml
+++ b/data/certificates/profiles/CERT_IUT_C1_AT.xml
@@ -27,10 +27,12 @@
+
+
diff --git a/data/certificates/profiles/CERT_IUT_C2_AA.xml b/data/certificates/profiles/CERT_IUT_C2_AA.xml
new file mode 100644
index 0000000000000000000000000000000000000000..5a08a554ccd40e22ecd0c994d12f91f6e981ca43
--- /dev/null
+++ b/data/certificates/profiles/CERT_IUT_C2_AA.xml
@@ -0,0 +1,46 @@
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 01 32
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/data/certificates/profiles/CERT_IUT_C2_AT.xml b/data/certificates/profiles/CERT_IUT_C2_AT.xml
new file mode 100644
index 0000000000000000000000000000000000000000..875e1207ae1fe33000831b04275c10e527c1f746
--- /dev/null
+++ b/data/certificates/profiles/CERT_IUT_C2_AT.xml
@@ -0,0 +1,35 @@
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+ >
+
+
+
+
+
+
+
+
+ 01 FF FC
+ 01 FF FF FF
+
+
+
+
+
+
+
+
+
+
+
diff --git a/data/certificates/profiles/CERT_IUT_C_RCA.xml b/data/certificates/profiles/CERT_IUT_C_RCA.xml
index d536970340be92c288728ff049416b57523831c5..e3c2c7369857e3d68ad405b011b0ef66f6851a40 100644
--- a/data/certificates/profiles/CERT_IUT_C_RCA.xml
+++ b/data/certificates/profiles/CERT_IUT_C_RCA.xml
@@ -29,7 +29,7 @@
-
+
01 FE/FF 01
diff --git a/data/certificates/profiles/CERT_TS_A_EA.xml b/data/certificates/profiles/CERT_TS_A_EA.xml
index 5a781e8a4c302be04c559b4aad422cc2a4e5d77e..a2846558e62a0e3e400688ecb7c1cf1052bb97ca 100644
--- a/data/certificates/profiles/CERT_TS_A_EA.xml
+++ b/data/certificates/profiles/CERT_TS_A_EA.xml
@@ -20,7 +20,7 @@
-
+
@@ -29,6 +29,8 @@
+
+
01 C0
diff --git a/data/certificates/profiles/CERT_TS_A_EA_AA_AUTHVAL_RCV_02_BI_01.xml b/data/certificates/profiles/CERT_TS_A_EA_AA_AUTHVAL_RCV_02_BI_01.xml
index 802585d02b478628b66f02a8c45c3b17e1cbfbc3..7e215b5bbd9917aeb9d9a3bbb7f801f88dfec17d 100644
--- a/data/certificates/profiles/CERT_TS_A_EA_AA_AUTHVAL_RCV_02_BI_01.xml
+++ b/data/certificates/profiles/CERT_TS_A_EA_AA_AUTHVAL_RCV_02_BI_01.xml
@@ -20,7 +20,7 @@
-
+
@@ -29,6 +29,8 @@
+
+
01 C0
diff --git a/data/certificates/profiles/CERT_TS_A_EA_AA_AUTHVAL_RCV_02_BI_02.xml b/data/certificates/profiles/CERT_TS_A_EA_AA_AUTHVAL_RCV_02_BI_02.xml
index 5a71c29d883d18ee20cdb12c3ad330cdf0578072..612b69a58b622a449ef4be52ace51e52e09b539c 100644
--- a/data/certificates/profiles/CERT_TS_A_EA_AA_AUTHVAL_RCV_02_BI_02.xml
+++ b/data/certificates/profiles/CERT_TS_A_EA_AA_AUTHVAL_RCV_02_BI_02.xml
@@ -20,7 +20,7 @@
-
+
@@ -29,6 +29,8 @@
+
+
01 C0
diff --git a/data/certificates/profiles/CERT_TS_A_EA_AA_AUTHVAL_RCV_02_BI_03.xml b/data/certificates/profiles/CERT_TS_A_EA_AA_AUTHVAL_RCV_02_BI_03.xml
index a165dd0228a95e5835dd0fc2617fe4201e2daa0e..78e89b7141ba0e22298e900831086fb1d7fcda06 100644
--- a/data/certificates/profiles/CERT_TS_A_EA_AA_AUTHVAL_RCV_02_BI_03.xml
+++ b/data/certificates/profiles/CERT_TS_A_EA_AA_AUTHVAL_RCV_02_BI_03.xml
@@ -20,7 +20,7 @@
-
+
@@ -29,6 +29,8 @@
+
+
01 40
diff --git a/data/certificates/profiles/CERT_TS_FA3_AA.xml b/data/certificates/profiles/CERT_TS_FA3_AA.xml
new file mode 100644
index 0000000000000000000000000000000000000000..deb8ec6d6a9f490e0da5250fc83af502d9c86a97
--- /dev/null
+++ b/data/certificates/profiles/CERT_TS_FA3_AA.xml
@@ -0,0 +1,44 @@
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 01 32
+
+
+
+
+
+
+
+
+
+
diff --git a/data/certificates/profiles/CERT_TS_FA3_AT.xml b/data/certificates/profiles/CERT_TS_FA3_AT.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8253bbd816fe5a67de391b9bca9614be54f07ab9
--- /dev/null
+++ b/data/certificates/profiles/CERT_TS_FA3_AT.xml
@@ -0,0 +1,36 @@
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+ >
+
+
+
+
+
+
+
+
+ 01 FF FC
+ 01 FF FF FF
+
+
+
+
+
+
+
+
+
+
+
diff --git a/data/certificates/profiles/CERT_TS_FA_AA.xml b/data/certificates/profiles/CERT_TS_FA_AA.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cb1e4a6010173efa60b85d6a9bf52530888639ff
--- /dev/null
+++ b/data/certificates/profiles/CERT_TS_FA_AA.xml
@@ -0,0 +1,44 @@
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 01 32
+
+
+
+
+
+
+
+
+
+
diff --git a/data/certificates/profiles/CERT_TS_FA_AT.xml b/data/certificates/profiles/CERT_TS_FA_AT.xml
new file mode 100644
index 0000000000000000000000000000000000000000..10199479c94e4e97bd9ec0ba741f1507ae84fb6f
--- /dev/null
+++ b/data/certificates/profiles/CERT_TS_FA_AT.xml
@@ -0,0 +1,36 @@
+
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+ >
+
+
+
+
+
+
+
+
+ 01 FF FC
+ 01 FF FF FF
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ttcn/AtsSecurity b/ttcn/AtsSecurity
index ac5071354fd23fa0f1ce59ded50dd894dda2e58b..84ba2164d26a0c8f744efaf89db3f715de9484ac 160000
--- a/ttcn/AtsSecurity
+++ b/ttcn/AtsSecurity
@@ -1 +1 @@
-Subproject commit ac5071354fd23fa0f1ce59ded50dd894dda2e58b
+Subproject commit 84ba2164d26a0c8f744efaf89db3f715de9484ac