Commit a0f36c26 authored by garciay's avatar garciay
Browse files

Rebuild LibIts with TCT3

parent 30b30d7d
Loading
Loading
Loading
Loading
+10 −5
Original line number Original line Diff line number Diff line
@@ -2561,17 +2561,22 @@ module LibItsGeoNetworking_Functions {
            var template (value) SecuredMessage v_securedMessage;
            var template (value) SecuredMessage v_securedMessage;
                
                
            // Build signed SecuredMessage
            // Build signed SecuredMessage
            v_gnNonSecuredPacket := m_geoNwShbPacket(
            v_gnNonSecuredPacket := valueof(m_geoNwShbPacket(
                f_getPosition(c_compMTC)
                f_getPosition(c_compMTC)
            );
            ));
            // Add CAM payload
            // Add CAM payload
            v_gnNonSecuredPacket.payload := f_adaptPayload_m(p_payload);
            v_gnNonSecuredPacket.payload := valueof(f_adaptPayload_m(p_payload));
            
            
            f_buildGnSecuredCam(
            f_buildGnSecuredCam(
                v_securedMessage,
                v_securedMessage,
                bit2oct(encvalue(v_gnNonSecuredPacket)),
                bit2oct(encvalue(v_gnNonSecuredPacket)),
                e_certificate,
                e_certificate,
                { m_header_field_unrecognised_certificate(f_HashedId3FromHashedId8(p_digest)) } 
                { 
                    m_header_field_unrecognised_certificate(
                        f_HashedId3FromHashedId8(
                            p_digest
                    )) 
                } 
            );
            );
                
                
            // Build secured Gn packet
            // Build secured Gn packet
+34 −30
Original line number Original line Diff line number Diff line
@@ -207,15 +207,15 @@ module LibItsSecurity_Functions {
                var template (value) ToBeSignedSecuredMessage v_toBeSignedSecuredMessage;
                var template (value) ToBeSignedSecuredMessage v_toBeSignedSecuredMessage;
                var integer i, j, k, n;
                var integer i, j, k, n;
                var HeaderFields v_mandatoryHeaders := {};
                var HeaderFields v_mandatoryHeaders := {};
                var template (value) HeaderFields v_headerFields := {};
                var HeaderFields v_headerFields := {};
                var template (value) HeaderField v_signerInfo;
                var HeaderField v_signerInfo;
                 
                 
                // Sanity check
                // Sanity check
                if (ispresent(p_certificateName) and (p_certificateName != "TA_CONFIG_A")) {
                if (ispresent(p_certificateName) and (valueof(p_certificateName) != "TA_CONFIG_A")) {
                    if (f_readCertificate(p_certificateName & ".AA_CERT", v_aaCertificate) == false) {
                    if (f_readCertificate(valueof(p_certificateName) & ".AA_CERT", v_aaCertificate) == false) {
                        return 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;
                        return false;
                    }
                    }
                } else {
                } else {
@@ -228,29 +228,29 @@ module LibItsSecurity_Functions {
                }
                }
                else {
                else {
                    // Prepare mandatory headers
                    // Prepare mandatory headers
                    if (p_signerInfoType == e_certificate) { // Add the AT certificate
                    if (valueof(p_signerInfoType) == e_certificate) { // Add the AT certificate
                        v_signerInfo := m_header_field_signer_info(m_signerInfo_certificate(v_atCertificate));
                        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
                    if (valueof(p_signerInfoType) == e_certificate_chain) { // Add the AT certificate + AA Certificate
                        v_signerInfo := m_header_field_signer_info(
                        v_signerInfo := valueof(m_header_field_signer_info(
                            m_signerInfo_certificates(
                            m_signerInfo_certificates(
                                {
                                {
                                    v_aaCertificate,
                                    v_aaCertificate,
                                    v_atCertificate
                                    v_atCertificate
                                }
                                }
                            )
                            )
                        );
                        ));
                    }
                    }
                    if (p_signerInfoType == e_certificate_digest_with_ecdsap256) { // Add the AT certificate digest
                    if (valueof(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));
                        v_signerInfo := valueof(m_header_field_signer_info(m_signerInfo_digest(v_atCertificate.signer_infos[0].signerInfo.digest)));
                    }
                    }
                    v_mandatoryHeaders := {
                    v_mandatoryHeaders := {
                        v_signerInfo,
                        v_signerInfo,
                        m_header_field_generation_time(f_getCurrentTime()),
                        valueof(m_header_field_generation_time(f_getCurrentTime())),
                        m_header_field_message_type(c_messageType_CAM)
                        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;
                        v_toBeSignedSecuredMessage.header_fields := v_mandatoryHeaders;
                    }
                    }
                    else {
                    else {
@@ -261,8 +261,8 @@ module LibItsSecurity_Functions {
                        k := 0; // index for v_headerFields
                        k := 0; // index for v_headerFields
                        
                        
                        // Special processing for signer_info
                        // Special processing for signer_info
                        if(lengthof(p_headerFields) > 0 and p_headerFields[i].type_ == e_signer_info) {
                        if(lengthof(valueof(p_headerFields)) > 0 and valueof(p_headerFields[i]).type_ == e_signer_info) {
                            v_headerFields[k] := p_headerFields[i];
                            v_headerFields[k] := valueof(p_headerFields[i]);
                            k := k + 1;
                            k := k + 1;
                            i := i + 1;
                            i := i + 1;
                        }
                        }
@@ -270,7 +270,7 @@ module LibItsSecurity_Functions {
                        for(j:=j; j < lengthof(v_mandatoryHeaders); j:=j+1) {
                        for(j:=j; j < lengthof(v_mandatoryHeaders); j:=j+1) {
                            // Search for mandatory header in p_HeaderFields
                            // Search for mandatory header in p_HeaderFields
                            for(n:=0; n < lengthof(p_headerFields); n:=n+1) {
                            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
                                    // mandatory header already in p_HeaderFields
                                    break;
                                    break;
                                }
                                }
@@ -278,8 +278,8 @@ module LibItsSecurity_Functions {
                            if(n >= lengthof(p_headerFields)) {
                            if(n >= lengthof(p_headerFields)) {
                                if(v_mandatoryHeaders[j].type_ != e_signer_info) {
                                if(v_mandatoryHeaders[j].type_ != e_signer_info) {
                                    // Add headers from p_headerFields having lower number than mandatory header
                                    // 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) {
                                    for(n:=i ; n < lengthof(p_headerFields) and valueof(p_headerFields[n]).type_ < v_mandatoryHeaders[j].type_; n:=n+1) {
                                        v_headerFields[k] := p_headerFields[n];
                                        v_headerFields[k] := valueof(p_headerFields[n]);
                                        k := k + 1;
                                        k := k + 1;
                                        i := i + 1;
                                        i := i + 1;
                                    }
                                    }
@@ -294,7 +294,7 @@ module LibItsSecurity_Functions {
                        // Add remaining headers from p_HeaderFields
                        // Add remaining headers from p_HeaderFields
                        for(i:=i; i < lengthof(p_headerFields); i:=i+1) {
                        for(i:=i; i < lengthof(p_headerFields); i:=i+1) {
                            // Add headers from p_headerFields having lower number than mandatory header
                            // 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;
                            k := k + 1;
                        }
                        }
                    }
                    }
@@ -840,7 +840,11 @@ module LibItsSecurity_Functions {
                var octetstring v_certificate;
                var octetstring v_certificate;
                
                
                if (fx_readCertificate(p_certificateId, v_certificate) == true) {
                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) {
                    if (v_result == 0) {
                        return true;
                        return true;
                    }
                    }