Commit a0f36c26 authored by garciay's avatar garciay
Browse files

Rebuild LibIts with TCT3

parent 30b30d7d
......@@ -801,7 +801,7 @@ module LibItsGeoNetworking_Functions {
inout GeoAreaTable p_areaTable
) runs on ItsBaseGeoNetworking {
var LongPosVector v_longPosVectorIut, v_longPosVectorNodeA, v_longPosVectorNodeB, v_longPosVectorNodeC, v_longPosVectorNodeD, v_longPosVectorNodeE, v_longPosVectorNodeF;
var LongPosVector v_longPosVectorIut, v_longPosVectorNodeA, v_longPosVectorNodeB, v_longPosVectorNodeC, v_longPosVectorNodeD, v_longPosVectorNodeE, v_longPosVectorNodeF;
// Get positions
v_longPosVectorIut := f_getIutLongPosVector();
......@@ -2561,17 +2561,22 @@ module LibItsGeoNetworking_Functions {
var template (value) SecuredMessage v_securedMessage;
// Build signed SecuredMessage
v_gnNonSecuredPacket := m_geoNwShbPacket(
v_gnNonSecuredPacket := valueof(m_geoNwShbPacket(
f_getPosition(c_compMTC)
);
));
// Add CAM payload
v_gnNonSecuredPacket.payload := f_adaptPayload_m(p_payload);
v_gnNonSecuredPacket.payload := valueof(f_adaptPayload_m(p_payload));
f_buildGnSecuredCam(
v_securedMessage,
bit2oct(encvalue(v_gnNonSecuredPacket)),
e_certificate,
{ m_header_field_unrecognised_certificate(f_HashedId3FromHashedId8(p_digest)) }
{
m_header_field_unrecognised_certificate(
f_HashedId3FromHashedId8(
p_digest
))
}
);
// Build secured Gn packet
......
......@@ -192,12 +192,12 @@ module LibItsSecurity_Functions {
* @verdict Unchanged
*/
function f_buildGnSecuredCam(
out template (value) SecuredMessage p_securedMessage,
in octetstring p_unsecuredPayload,
in template (omit) SignerInfoType p_signerInfoType := e_certificate_digest_with_ecdsap256,
in template (omit) HeaderFields p_headerFields := omit,
in template (omit) charstring p_certificateName := omit,
in boolean p_addMissingHeaders := true
out template (value) SecuredMessage p_securedMessage,
in octetstring p_unsecuredPayload,
in template (omit) SignerInfoType p_signerInfoType := e_certificate_digest_with_ecdsap256,
in template (omit) HeaderFields p_headerFields := omit,
in template (omit) charstring p_certificateName := omit,
in boolean p_addMissingHeaders := true
) runs on ItsSecurityBaseComponent return boolean {
// Local variables
......@@ -207,15 +207,15 @@ module LibItsSecurity_Functions {
var template (value) ToBeSignedSecuredMessage v_toBeSignedSecuredMessage;
var integer i, j, k, n;
var HeaderFields v_mandatoryHeaders := {};
var template (value) HeaderFields v_headerFields := {};
var template (value) HeaderField v_signerInfo;
var HeaderFields v_headerFields := {};
var HeaderField v_signerInfo;
// Sanity check
if (ispresent(p_certificateName) and (p_certificateName != "TA_CONFIG_A")) {
if (f_readCertificate(p_certificateName & ".AA_CERT", v_aaCertificate) == false) {
if (ispresent(p_certificateName) and (valueof(p_certificateName) != "TA_CONFIG_A")) {
if (f_readCertificate(valueof(p_certificateName) & ".AA_CERT", v_aaCertificate) == false) {
return false;
}
if (f_readCertificate(p_certificateName & ".AT_CERT", v_atCertificate) == false) {
if (f_readCertificate(valueof(p_certificateName) & ".AT_CERT", v_atCertificate) == false) {
return false;
}
} else {
......@@ -228,29 +228,29 @@ module LibItsSecurity_Functions {
}
else {
// Prepare mandatory headers
if (p_signerInfoType == e_certificate) { // Add the AT certificate
v_signerInfo := m_header_field_signer_info(m_signerInfo_certificate(v_atCertificate));
if (valueof(p_signerInfoType) == e_certificate) { // Add the AT certificate
v_signerInfo := valueof(m_header_field_signer_info(m_signerInfo_certificate(v_atCertificate)));
}
if (p_signerInfoType == e_certificate_chain) { // Add the AT certificate + AA Certificate
v_signerInfo := m_header_field_signer_info(
if (valueof(p_signerInfoType) == e_certificate_chain) { // Add the AT certificate + AA Certificate
v_signerInfo := valueof(m_header_field_signer_info(
m_signerInfo_certificates(
{
v_aaCertificate,
v_atCertificate
}
)
);
));
}
if (p_signerInfoType == e_certificate_digest_with_ecdsap256) { // Add the AT certificate digest
v_signerInfo := m_header_field_signer_info(m_signerInfo_digest(v_atCertificate.signer_infos[0].signerInfo.digest));
if (valueof(p_signerInfoType) == e_certificate_digest_with_ecdsap256) { // Add the AT certificate digest
v_signerInfo := valueof(m_header_field_signer_info(m_signerInfo_digest(v_atCertificate.signer_infos[0].signerInfo.digest)));
}
v_mandatoryHeaders := {
v_signerInfo,
m_header_field_generation_time(f_getCurrentTime()),
m_header_field_message_type(c_messageType_CAM)
valueof(m_header_field_generation_time(f_getCurrentTime())),
valueof(m_header_field_message_type(c_messageType_CAM))
}
if(not(ispresent(p_headerFields))) {
if(not(ispresent(valueof(p_headerFields)))) {
v_toBeSignedSecuredMessage.header_fields := v_mandatoryHeaders;
}
else {
......@@ -261,8 +261,8 @@ module LibItsSecurity_Functions {
k := 0; // index for v_headerFields
// Special processing for signer_info
if(lengthof(p_headerFields) > 0 and p_headerFields[i].type_ == e_signer_info) {
v_headerFields[k] := p_headerFields[i];
if(lengthof(valueof(p_headerFields)) > 0 and valueof(p_headerFields[i]).type_ == e_signer_info) {
v_headerFields[k] := valueof(p_headerFields[i]);
k := k + 1;
i := i + 1;
}
......@@ -270,7 +270,7 @@ module LibItsSecurity_Functions {
for(j:=j; j < lengthof(v_mandatoryHeaders); j:=j+1) {
// Search for mandatory header in p_HeaderFields
for(n:=0; n < lengthof(p_headerFields); n:=n+1) {
if(p_headerFields[n].type_ == v_mandatoryHeaders[j].type_) {
if(valueof(p_headerFields[n]).type_ == v_mandatoryHeaders[j].type_) {
// mandatory header already in p_HeaderFields
break;
}
......@@ -278,8 +278,8 @@ module LibItsSecurity_Functions {
if(n >= lengthof(p_headerFields)) {
if(v_mandatoryHeaders[j].type_ != e_signer_info) {
// Add headers from p_headerFields having lower number than mandatory header
for(n:=i ; n < lengthof(p_headerFields) and p_headerFields[n].type_ < v_mandatoryHeaders[j].type_; n:=n+1) {
v_headerFields[k] := p_headerFields[n];
for(n:=i ; n < lengthof(p_headerFields) and valueof(p_headerFields[n]).type_ < v_mandatoryHeaders[j].type_; n:=n+1) {
v_headerFields[k] := valueof(p_headerFields[n]);
k := k + 1;
i := i + 1;
}
......@@ -294,7 +294,7 @@ module LibItsSecurity_Functions {
// Add remaining headers from p_HeaderFields
for(i:=i; i < lengthof(p_headerFields); i:=i+1) {
// Add headers from p_headerFields having lower number than mandatory header
v_headerFields[k] := p_headerFields[i];
v_headerFields[k] := valueof(p_headerFields[i]);
k := k + 1;
}
}
......@@ -834,13 +834,17 @@ module LibItsSecurity_Functions {
* @return true on success, false otherwise
*/
function f_readCertificate(
in charstring p_certificateId,
out Certificate p_certificate
in charstring p_certificateId,
out Certificate p_certificate
) runs on ItsSecurityBaseComponent return boolean {
var octetstring v_certificate;
if (fx_readCertificate(p_certificateId, v_certificate) == true) {
var integer v_result := decvalue(oct2bit(v_certificate), p_certificate);
var bitstring v_oct2bit;
var integer v_result;
v_oct2bit := oct2bit(v_certificate);
v_result := decvalue(v_oct2bit, p_certificate);
if (v_result == 0) {
return true;
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment